你把大括号的位置放错了,sushu函数被定义在了main函数里面,但是按照C语言的规定,函数不允许嵌套定义,所以你的sushu相当于没有定义(不知为何你的编译器没有报错说不允许在函数内定义函数)。解决方法是把你最后面多出来的大括号移到main函数最后面。
我们提供的服务有:成都网站制作、网站建设、外贸网站建设、微信公众号开发、网站优化、网站认证、沈北新ssl等。为1000多家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的沈北新网站制作公司
函数调用了,是你写的有问题。
比如你第一次调用 swap(n1,n2),这个时候程序把n1,n2的值传给p1,p2,然后p1,p2的值交换了,但是你需要的n1,n2没有变化。
你改成void swap(int n1,int n2),引用就可以了
//已为你改好
/*
输入输出样例:
请输入10个数字:
88 88 88 25 25 50 100 25 99 1001
25 25 25 50 88 88 88 99 100 1001
25 50 88 99 100 1001
*/
#includeiostream
using namespace std;
void Sort_array(int* p) ;
int remove_repeat(int *a, int l) ;
int main()
{
int i,a[10],len;
cout"请输入10个数字:"endl;
for(int i=0;i10;i++)
{
cina[i];
}
Sort_array(a);
for(i=0;i10;i++)
{
couta[i]" ";
}
coutendl;
len=remove_repeat(a, 10) ;
for(i=0;ilen;i++)
{
couta[i]" ";
}
return 0;
}
//排序
void Sort_array(int* p)
{
int i,j,val;
for(i=0;i10;i++)
{
for(j=i+1;j10;j++)
{
if(p[i]p[j])
{
val=p[i];
p[i]=p[j];
p[j]=val;
}
}
}
}
//删除重复
int remove_repeat(int *a, int l)
{
int i,j,k;
for(i = 0; i l; i ++)
{
for(j = i+1; j l; )
{
if(a[j] == a[i])
{
for(k = j+1; kl; k ++)
a[k-1] = a[k];
l--;
}
else
j++;
}
}
return l;
}
你的input执行之后,就判断退出了的。
因为你的input函数的参数是TS, 是结构体,而不是结构体指针,因此,在input里面得到的结果,只是input里面局部变量的M这个结构体得到了值,并没有赋值给M1和M2,导致你那里判断M1.n M2.m的时候,直接return 0了
不谢^-^
C语言语法不是这样的,感觉你之前用过其他编程语言
比如求x的平方根应该是sqrt(x)或者pow(x,0.5)
求x的平方是x*x或者 pow(x,2)
b除以2a,应该是b/(2*a),而不是b/2*a
再着,写scanf("%d%d%d")的话,你输入时不能输入其他字符,数字之间空格就行了
另外,一个函数只能返回一个值,没有return(x1,x2)这样的用法,return (x1,x2)只会返回x2
总之,你这份代码可以说是错误大合集,给你一个参考吧
#includestdlib.h
#includestdio.h
int main()
{
int x,z;
int add1(x);//声明用函数原型,int add1(int x);
scanf("%d",x);
z=add1(x); /*显示在这里出错,说是不能使用函数*/
printf("%d",z);
system("pause");
return 0;}
int add1(x)//定义带形参的函数,形参要有类型,正确的 int add1(int x)
{int x,y;//x形参中定义过了,不需要再定义直接写int y;就可以了
y=1+x;
return y;
}
呵呵,修改已经在注释中给出,你对照修改下就好了
继续努力呀,我也对c语言比较感兴趣,有空多多交流....