C语言程序出错
//输入一个正整数n,再输入n个学生的成绩,计算平均分,并统计不及格成绩的人数#include<stdio.h>
int main()
{
int i,fail = 0;
double sum = 0,n,grade;
printf("Enter n:");
scanf("%d",&n);
for(i = 0; i<=n; i++)
{
printf("第%d位成绩为:",i+1);
scanf("%lf",&grade);
sum += grade;
if(grade < 60)
{
fail++;
}
}
printf("平均成绩为%lf\n",sum / n);
printf("不及格的人数为%d",fail);
}
以上程序哪里错了? 为什么输入的成绩一定要是浮点?
整数不好吗?
//输入一个正整数n,再输入n个学生的成绩,计算平均分,并统计不及格成绩的人数
#include<stdio.h>
int main()
{
int i,fail = 0;
int sum = 0,n,grade;
printf("Enter n:");
scanf("%d",&n);
for(i = 0; i<n; i++)
{
printf("第%d位成绩为:",i+1);
scanf("%d",&grade);
sum += grade;
if(grade < 60)
{
fail++;
}
}
float avg = sum / n;
printf("平均成绩为%lf\n",avg);
printf("不及格的人数为%d",fail);
}
给你改了改输入格式和变量类型 n应该定义为int 本帖最后由 sunrise085 于 2020-3-25 15:52 编辑
有两处错误:
1、n定义错了,应该是int
2、for循环终止条件错了应该是 i<n
//输入一个正整数n,再输入n个学生的成绩,计算平均分,并统计不及格成绩的人数
#include<stdio.h>
int main()
{
int i,n,fail = 0;
double sum = 0,grade;
printf("Enter n:");
scanf("%d",&n);
for(i = 0; i<n; i++)
{
printf("第%d位成绩为:",i+1);
scanf("%lf",&grade);
sum += grade;
if(grade < 60)
{
fail++;
}
}
printf("平均成绩为%lf\n",sum / n);
printf("不及格的人数为%d",fail);
} qiuyouzhi 发表于 2020-3-25 15:46
为什么输入的成绩一定要是浮点?
整数不好吗?
第一,没人规定成绩必须是整数
第二,你这种算法,平均成绩多半是会出错的!因为一般情况下平均数会是小数,你的这种算法平均数只能是整数。 sunrise085 发表于 2020-3-25 15:51
有两处错误:
1、n定义错了,应该是int
2、for循环终止条件错了应该是 i
请问是因为这个关系运算符两边类型不一致,所以出错的吗。
这个不一致,运行程序到这之后会发生什么呢,稍微具体一点,感谢!!! 老牛来学习 发表于 2020-3-25 15:56
请问是因为这个关系运算符两边类型不一致,所以出错的吗。
这个不一致,运行程序到这之后会发生什么呢, ...
两个int类型做除法,结果会是整数,向下取整,
例如:sum=242,n=3,那样sum/n结果是80
在他写的这个程序中,float avg = sum / n;会先进行除法运算,然后赋值的时候在进行强制类型转换,最后得到的是80.00
页:
[1]