#include <stdio.h> int n=5; struct film { char name[80]; //电影名 float score; //群众评分 }; int main(void) { int i,result=0; struct f[5]= { {"阿甘正传"}, {"泰坦尼克号"}, {"当幸福来敲门"},{"蝴蝶效应"},{"罗马假日"} }; //printf("请依次输入电影群众评分\n"); for (i=0; i<n; i++) { scanf("%f",&f[i].score); } for (i=0; i<=n; i++) { printf("%s%6.2f\n",f[i].name,f[i].score); if(f[result].score>f[i].score) result=i; } printf("群众评分最高的电影为:%s,其评分为:%6.2f\n",name,score); return 0; }改错
时间: 2024-03-25 20:35:58 浏览: 58
#include <stdio.h>
4星 · 用户满意度95%
这段代码存在几个问题,我来一一指出并改正。
1. 在 `struct` 定义中,应该为每个电影的 `name` 和 `score` 成员指定具体的初始值,否则会导致编译错误。
2. 在 `main` 函数中,定义结构体数组 `f` 时应该指定结构体类型 `struct film`,否则会导致编译错误。
3. 在 `for` 循环中,应该使用 `<` 而不是 `<=`,因为数组下标是从 0 开始的,否则会导致访问越界错误。
4. 在 `for` 循环中,应该使用 `%s` 和 `%f` 分别格式化输出电影名和评分,否则会导致输出错误。
5. 在 `printf` 函数中,输出群众评分最高的电影时应该使用 `f[result].name` 和 `f[result].score`,否则会导致编译错误。
修改后的代码如下:
```c
#include <stdio.h>
int n=5;
struct film {
char name[80]; //电影名
float score; //群众评分
};
int main(void) {
int i,result=0;
struct film f[5]= {
{"阿甘正传", 0},
{"泰坦尼克号", 0},
{"当幸福来敲门", 0},
{"蝴蝶效应", 0},
{"罗马假日", 0}
};
//printf("请依次输入电影群众评分\n");
for (i=0; i<n; i++) {
scanf("%f",&f[i].score);
}
for (i=0; i<n; i++) {
printf("%s %6.2f\n",f[i].name,f[i].score);
if(f[result].score<f[i].score)
result=i;
}
printf("群众评分最高的电影为:%s,其评分为:%6.2f\n",f[result].name,f[result].score);
return 0;
}
```
修改后的代码已经能够正确读入群众评分、输出电影名和评分,并找出群众评分最高的电影。
阅读全文