帮我修改此代码#include<stdio.h> int main() { float ave; int i,num = 0,he = 0, top, top1; char sum[100]; printf("光电12201高万坤\n"); printf("输入成绩\n"); scanf("%d",sum); for(i=0;i<100;i++) { if(sum[i]>60) { num++; } he = he + num[i]; ave = he/50; top = sum[0]; if(sum[i]>top) { top = sum[i]; } } printf("及格人num = %d\n",num); printf("平均分ave = %.2f\n",ave); printf("最高分top = %d\n",top); return 0; }
时间: 2023-12-03 10:43:16 浏览: 46
SeqList.h #include <stdio.h> //包含标准输入输出流的头文件 #include <assert.h
修改后的代码如下:
```
#include<stdio.h>
int main()
{
float ave;
int i, num = 0, he = 0, top = 0, sum[100];
printf("光电12201高万坤\n");
printf("输入成绩\n");
for(i=0;i<50;i++)
{
scanf("%d", &sum[i]); // 输入成绩时应该使用 %d 而不是 %s,同时要加上取地址符 &
if(sum[i]>60)
{
num++;
}
he = he + sum[i];
if(sum[i]>top)
{
top = sum[i];
}
}
ave = he/50.0; // 在除以总人数计算平均分时要注意使用浮点数
printf("及格人num = %d\n", num);
printf("平均分ave = %.2f\n", ave);
printf("最高分top = %d\n", top);
return 0;
}
```
主要修改如下:
1. `sum` 数组类型应该为 `int`,因为成绩是整数类型。
2. 在输入成绩时应该使用 `%d` 而不是 `%s`。
3. 在计算平均分时需要将 `he` 和 `50` 都转换为浮点数,否则会得到整数的结果。
4. 在计算最高分时应该将 `top` 的初始值设为 0,否则可能会出现错误。
5. 在 `num` 的计算中,应该使用 `sum[i]` 而不是 `num[i]`。
阅读全文