找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3413|回复: 5

[通用编程] 一个数组问题

[复制链接]
发表于 2007-2-8 22:43:45 | 显示全部楼层 |阅读模式
输入10个学生成绩,求平均成绩,将低于平均成绩的分数打印出来。
void readdata(float score[10]
{
int i;
for(i=0;i<10;i++)
scanf("%f",&score);
return;
}
float aver(float score[10])
{
float sum;
int i;
for(sum=0,i=0;i<10;i++)
sum=sum+score;
return(sum/10);
}
void print(float score[10],float aver)
{
int i;
for(i=0;i<10;i++)
if(score<aver)
printf("%8.2f",score);
return;
}
main()
{
void readdata(float score[10]);
float aver(float score[10]);
void print(float score[10],float aver);
float ave,score[10];
readdata(score);              我想问问从这行开始为什么把score改为score[10]就不能运行呢?
ave=aver(score);
printf("average=%6.2f\n",ave);
print(score,ave);
}
发表于 2007-2-8 23:11:48 | 显示全部楼层
给函数传递数组就是传一个指向数组的指针...也就是数组的起始地址score...
score[10]是一个数(虽说是违规的)...
发表于 2007-2-8 23:37:18 | 显示全部楼层
10个是0-9吧。
发表于 2007-2-9 08:23:35 | 显示全部楼层
如果需要增加偏移的话,写类似于
readdata(score+4*sizeof(float));
这样的比较好……
发表于 2007-2-9 13:34:00 | 显示全部楼层
数组一早忘记了的人路过
发表于 2007-2-14 19:03:39 | 显示全部楼层
如果是C语言的话用数组做形参实际上编译器会把那个数组当作一个指针来用~而函数调用的时候实参应该对应形参的数据类型~数组的名字就是个地址常量~所以直接写数组名是正确的~如果加了[]运算符的话~编译器实际上是吧score[10]看成*(score+10)来算~*运算符是取内容~所以实参和形参不对应~当然会报错~而且调用最后一个元素应该写成score[9]吧~数组引用是从0开始的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|幻想森林

GMT+8, 2026-11-6 19:22 , Processed in 0.011177 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表