一个数组问题
输入10个学生成绩,求平均成绩,将低于平均成绩的分数打印出来。void readdata(float score
{
int i;
for(i=0;i<10;i++)
scanf("%f",&score);
return;
}
float aver(float score)
{
float sum;
int i;
for(sum=0,i=0;i<10;i++)
sum=sum+score;
return(sum/10);
}
void print(float score,float aver)
{
int i;
for(i=0;i<10;i++)
if(score<aver)
printf("%8.2f",score);
return;
}
main()
{
void readdata(float score);
float aver(float score);
void print(float score,float aver);
float ave,score;
readdata(score); 我想问问从这行开始为什么把score改为score就不能运行呢?
ave=aver(score);
printf("average=%6.2f\n",ave);
print(score,ave);
} 给函数传递数组就是传一个指向数组的指针...也就是数组的起始地址score...
score是一个数(虽说是违规的)... 10个是0-9吧。 如果需要增加偏移的话,写类似于
readdata(score+4*sizeof(float));
这样的比较好…… 数组一早忘记了的人路过 如果是C语言的话用数组做形参实际上编译器会把那个数组当作一个指针来用~而函数调用的时候实参应该对应形参的数据类型~数组的名字就是个地址常量~所以直接写数组名是正确的~如果加了[]运算符的话~编译器实际上是吧score看成*(score+10)来算~*运算符是取内容~所以实参和形参不对应~当然会报错~而且调用最后一个元素应该写成score吧~数组引用是从0开始的
页:
[1]