一个简单的C语言程序

[复制链接]
查看11 | 回复3 | 2010-4-5 23:37:06 | 显示全部楼层 |阅读模式
数组下标应该从0开始,就是说循环条件都应该是for(i=0;i<N;i++)
回复

使用道具 举报

千问 | 2010-4-5 23:37:06 | 显示全部楼层
问题1:这个应该不会有问题, 看你程序里面最后一个for循环前没有用到n 的,定义赋初值应该没问题;问题2:a[N]是可以存储N 个数, 但存储在 a[0],a[1],...a[N-1]里面,你在读取输入的数时 用到了a[N] 是不正确的,
所有for循环让 i 从0 开始取,需要打印第几个学生时用printf("%d", i+1);
回复

使用道具 举报

千问 | 2010-4-5 23:37:06 | 显示全部楼层
main()直接这样可以吗?最好写成int main(void)吧!必须写的,因为你开始定义n时没初始化,n是原内存地址的值,不确定的,可以是任意的;把for语句写为如下的格式for(i=0;i<N;i++)因为数组是从a[0]开始的,你输的分别是a[0],a[1],a[2],a[3];你写的把a[0]去掉的,第一个输的数没算
回复

使用道具 举报

千问 | 2010-4-5 23:37:06 | 显示全部楼层
问题1:累加时要定义初值为0;累乘要定义为1;因为这个定义的n默认的初值会是个随机数,致使结果异常;ps:当然不只是累加和累乘,所以定义的初值都默认的是随机数;问题2:#include "stdio.h"#include "math.h"#define N 4main(){ int i,n; float a[N],aver,sum=0; for(i=0;i<N;i++) {printf("please input the %d student's mark:",i+1);
scanf("%f",&a);sum+=a; } aver=sum/N;n=0; for(i=0;i<N;i++) {if(aver<=a) n++; }
printf("aver=%5.2f\nn=%d\n",aver,n);}vc6.0里数组是从0开始的啊,你那样只能算后3个当然会少计1个
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行