C语言问题,两个简单的小题目!!

2025-01-05 22:23:22
推荐回答(3个)
回答1:

1:
#include
void exchange(int &x,int &y) // 这里改为&x,&y
{
int z;
z=x;x=y;y=z;
}
void main()
{
int a,b;
scanf("%d%d",&a,&b);
exchange(a,b);
printf("%d%d",a,b);
}
解释:因为你main传过去的是值,如果你在exchange函数接收也是用int,而不是用它的地址,x,y只不过是a,b的一个副本,函数结束后回到main,a,b依然是那个值。

2:
#include // 要+头文件,不然有时会报错
void main()
{
int i,k,j=0,high=0,sum=0;
float aver;
for(i=0;i<30;i++) // 这里错了,你第一个是,而不是分号,语法错误
{
scanf("%d",&k);
sum+=k;
printf("%d\n",k);
high=(k>j)?k:j;
j=k;
}
aver=(float)sum/30.0;
printf("%f\n",aver);
printf("the highest score:%d",high);
}

回答2:

#include
void exchange(int x,int y)
{
int z;
z=x;x=y;y=z;
printf("%d,%d\n",x,y);

} //局部函数出了自己作用域之外,它的值无效,必须函数范围内才有效,或者用指针方式
void main()
{
int a,b;
scanf("%d%d",&a,&b);
exchange(a,b);
//printf("%d%d",a,b);
}

#include
void main()
{
int i,k,j=0,high=0,sum=0;
float aver;
for(i=0;i<30;i++) //for(i=0,i<30;i++)应该是逗号隔开的

{
scanf("%d",&k);
sum+=k;
printf("%d\n",k);
high=(k>j)?k:j;
j=k;
}
aver=(float)sum/30.0;
printf("%f\n",aver);
printf("the highest score:%d",high);

}

回答3:

你没有弄懂形参和实参的区别
参数传进去的都是一个拷贝,所以函数内部改变,但是外部却没有变化

至于第二个,for(i=0,i<30;i++)括号内的逗号改为分号