c语言 各位大神请问为什么所有函数都无法调用啊

#include <stdio.h>
#define N 10
int main()
{
void qppx();
void xzpx();
void zbcz();
int w,loop=1;
printf("1 选择排序法\n");
printf("2 起泡排序法\n");
printf("3 退出程序\n");
printf("请选择,输入选项前面的数字后回车: ");
scanf("%d",&w);
while(loop)
{
switch(w)
{ case 1:qppx();
break;
case 2:xzpx();
break;
case 3: loop=0;
break;
default: break;
}
}
return 0;
}
void input()
{
int a[N],i;
printf("请任意输入10个整数:\n");
for(i=0;i<N;i++)
{
printf("%d:",i+1);
scanf("%d",&a[i]);
}
}
void zbcz()
{
int a[N],n,sign,x,y,l,mid;
printf("请输入要查找的数字:");
scanf("%d",&n);
sign=0;
x=0;
y=N-1;
if((n<a[0])||(n>a[N-1]))
l=-1;
while((!sign)&&(x<=y))
{
mid=(x+y)/2;
if(n==a[mid])
{ l=mid;
printf("%d是第%d个元素的值\n",n,l+1);
sign=1;
}
else if(n<a[mid])
y=mid-1;
else
x=mid+1;
}
}
void qppx()
{
int a[N],i,j,temp,k;
input();
for(j=0;j<N-1;j++)
{
k=0;
for(i=0;i<N-1-j;i++)
{
if(a[i]>a[i+1])
{ k=1;
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
if(k==0) break;
}
printf("10个整数由小到大排列按顺序输出为:\n");
for(i=0;i<N;i++)
printf("%d ",a[i]);
printf("\n");
zbcz();
}
void xzpx()
{
int i,j,k,t,b[N];
input();
for(i=0;i<N;i++)
{ k=0;
for(j=i+1;j<N;j++)
{
if(b[j]<b[i])
{ k=1;
t=b[j];
b[j]=b[i];
b[i]=t;
}
}

}
printf("10个整数由小到大排列按顺序输出为:\n");
for(i=0;i<N;i++)
printf("%d ",b[i]);
printf("\n");
zbcz();
}
在下初学菜鸟,可能犯了很弱智的错误,求教各位大神_(:з」∠)_
程序里少声明了一个void input();
但是加上还是没用

1、楼上说的不对,可以这样用,在下面定义,需要用的就调用
2、你把程序写的太麻烦
3、至于错误,我感觉至少能执行一次,如果一次都无法执行,我建议在scanf(w)之前fflush(stdin),如果能执行一次,那就把scanf(w)移动到循环体里面去。
4、我马上写一个同样 的试试追问

试了也没有用orz

追答/**
 *时间:2016-5-10
 *功能:排序demo
 *编译器:vs2010
 */
#include<stdio.h>
#include<stdlib.h>
#define N 5
int whattodo(){
int todo = 0;
printf("\n1、选择排序\n");
printf("2、冒泡排序\n");
printf("3、退出\n");
scanf("%d",&todo);
return todo;
}
void sort(int *num,int length,int way){
if(num==NULL || length <= 0)
return;
//选择排序
if(way == 1){
for(int i=0;i<length-1;i++){
for(int j=i+1;j<length;j++){
if(num[i] > num[j]){
num[i]^=num[j];
num[j]^=num[i];
num[i]^=num[j];
}
}
}
//冒泡排序
}else if(way ==2){
for(int i=0;i<length-1;i++){
for(int j=length-1;j>i;j--){
if(num[j]<num[j-1]){
num[j]^=num[j-1];
num[j-1]^=num[j];
num[j]^=num[j-1];
}
}
}
}
printf("排序后数组内容如下:\n");
for(int i=0;i<length;i++){
printf("%4d",num[i]);
}
}
int main(void){
int number[N];
for(int i=0;i<N;i++){
printf("请输入第%d个元素\n",i+1);
scanf("%d",&number[i]);
}
while(1){
int todo = whattodo();
if(todo ==1){
sort(number,N,1);
}else if(todo == 2){
sort(number,N,2);
}
else 
break;
}
system("pause");
return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-05-10
你把所有的函数原型放到main函数的外面去就是#define N 10的下面
在C语言中,函数定义不能嵌套,即函数中不能定义函数追问

#include
#define N 10
void input();
void qppx();
void xzpx();
void zbcz();
int main()
{
……
return 0;
}
请问是这个意思吗?因为写不下了所以把后边的删了 可这样还是不行啊……

追答

把类型改成int试试