C语言程序出现错误missing ')' before 'type'

C语言初学者,刚接触指针,感觉好多东西不太明白,写了一个程序,一直有错又找不出来,跪求指导啊 T T
题目:输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数:①输入10个数;②进行处理;③输出10个数。所有函数的参数均用指针。
我写的程序:
#include <stdio.h>

int a[10];
int *shuru(void);
int *zhixing(int *a1);
void shuchu(int *a1);
int main (void)
{

shuru(void); 【两个错误提示都指向了这一行!!】
zhixing(a);
shuchu(a);
return 0;
}
int *shuru(void)
{
int i=0,*a1;
for(;i<10;i++)
{
scanf("%d",&a[i]);
}
a1=&a[0];
return *a1;
}
int *zhixing(int *a1)
{
int min,max,i,m=0,n=0,c,d;
a1=&a[0];
min=max=*a1;
for(i=0;i<10;i++)
{
if(*(a1+i)<min)
{
min=*(a1+i);
}
if(*(a1+i)>max)
{
max=*(a1+i);
}
}
for(;;)
{
if(*(a1+m)=max)
{
break;
}
m++;
}
for(;;)
{
if(*(a1+n)=min)
{
break;
}
n++;
}
c=*(a1+m);
*(a1+m)=*(a1+9);
*(a1+9)=c;
d=*(a1+n);
*(a1+n)=*a1;
*a1=*(a1+n);
return *a1;
}
void shuchu(int *a1)
{
int i;
for(i=0;i<10;i++)
{
printf("%d",*(a1+i));
}
}
错误提示:
error C2143: syntax error : missing ')' before 'type'
error C2059: syntax error : ')'

int main (void){
shuru(void);     //这一句把void去掉,它只能出现在函数声明中。。
zhixing(a);
shuchu(a);
return 0;
}

另外好像还有几处错误

int *shuru(void){
int i=0,*a1;
for(;i<10;i++){
scanf("%d",&a[i]);
}
a1=&a[0];
return *a1;//此处把*去掉,因为a1已经是指针了,你加*传递的就是int类型了。。
}追问

太感谢了!!原来是因为这个,好吧,是我学得太渣了。。 改了这两个地方以后没有错误了,但是运行程序,输入十个数字以后就会弹窗提示 ”遇到错误需要关闭“。这是为什么呀。。还有错误吗?

追答

应该是内存访问违规了。。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-03-26
根据我的程序编译结果来看吧~
这里提醒你没加后引号(正规地说是没加双撇号)
最后的你拼错了,应该是return;
最后的编译:
也就是你有这几点需要注意的地方。
但我认为有几个没编译出来的问题有待改善:
比如你在输出时应该写“\n”表示换行。
以下是我最后的结果。
第2个回答  2014-12-08
#include <stdio.h>
int a[10];
int shuru();
int zhixing(int *a1);
void shuchu(int *a1);
int main (void)
{
shuru(); // 【两个错误提示都指向了这一行!!】
zhixing(a);
shuchu(a);
return 0;
}
int shuru(void)
{
int i=0,*a1;
for(;i<10;i++)
{
scanf("%d",&a[i]);
}
a1=&a[0];
return *a1;
}
int zhixing(int *a1)
{ int min,max,i,m=0,n=0,c,d;
a1=&a[0];
min=max=*a1;
for(i=0;i<10;i++)
{
if(*(a1+i)<min)
{
min=*(a1+i);
}
if(*(a1+i)>max)
{
max=*(a1+i);
}
}
for(;;)
{
if(*(a1+m)=max)
{
break;
}
m++;
}
for(;;)
{
if(*(a1+n)=min)
{
break;
}
n++;
}
c=*(a1+m);
*(a1+m)=*(a1+9);
*(a1+9)=c;
d=*(a1+n);
*(a1+n)=*a1;
*a1=*(a1+n);
return *a1;
}
void shuchu(int *a1)
{ int i;
for(i=0;i<10;i++)
{
printf("%4d",*(a1+i));
}
printf("\n");
}
第3个回答  2014-12-08
#include <stdio.h>

int a[10];

void shuru(int a[10]);
void zhixing(int *a1);
void shuchu(int *a1);
int main (void)
{
shuru(a);
shuchu(a);
printf("\n");
zhixing(a);
shuchu(a);
return 0;
}
void shuru(int a[10])
{
int i=0;
for(;i<10;i++)
{
scanf("%d",&a[i]);
}

}
void zhixing(int *a1)
{int min,max,i,m,c,d;

min=max=a1[0];
for(i=0;i<10;i++)
{
if(*(a1+i)<=min)
{
min=*(a1+i); c=i;
}
if(*(a1+i)>=max)
{
max=*(a1+i); d=i;
}
}

m=a1[0];a1[0]=a1[c];a1[c]=m;
m=a1[9];a1[9]= a1[d];a1[d]=m;

}
void shuchu(int *a1)
{
int i;
for(i=0;i<10;i++)
{
printf("%d ",*(a1+i));
}
}
第4个回答  2014-12-08
使用函数时.. void参数的.. 不要还在里面写void....追问

太感谢了!!原来是因为这个,好吧,是我学得太渣了。。 改了这两个地方以后没有错误了,但是运行程序,输入十个数字以后就会弹窗提示 ”遇到错误需要关闭“。这是为什么呀。。还有错误吗?

追答

额 你这题 我前些天才回答过一次..源代码还在
#include
#include

//输入十个数字
void Input10Number(int *pNumber)
{
printf("请输入十个数字:");
for (int i = 0; i *(pNumber + i))
{
Temp = *(pNumber + i);
nPos = i;
}
}
*(pNumber + nPos) = (*pNumber);
(*pNumber) = Temp;

//最大 放最后一位
Temp = *pNumber; nPos = 0;
for (int i = 0; i < 10; i++)
{
if (Temp<*(pNumber + i))
{
Temp = *(pNumber + i);
nPos = i;
}
}
*(pNumber + nPos) = (*pNumber+9);
*(pNumber+9) = Temp;

}

void OutPut10Number(int *pNumber)
{
for (int i = 0; i < 10; i++)
printf((i<9) ? " %d" : " %d\n", *(pNumber + i));
}

int main(void)
{
int nNumer[10];
Input10Number(nNumer);
Swap(nNumer);
OutPut10Number(nNumer);
system("pause");
return 0;
}

本回答被网友采纳
相似回答