#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 12:41:08 浏览: 55
好的,我来帮你完善这个程序。首先,我注意到有一些错误,比如结构体 `film` 的定义中缺少了一个分号,数组 `f` 的类型没有指定为 `film`,以及在最后的输出语句中使用了未定义的变量 `name` 和 `score`。同时,为了让代码更加规范和易读,我还对其进行了一些修改。你可以看看下面的代码:
```c
#include <stdio.h>
#define N 5
struct film {
char name[80]; // 电影名
float score; // 群众评分
};
int main(void) {
int i, max_index = 0;
struct film f[N] = {
{"阿甘正传", 0},
{"泰坦尼克号", 0},
{"当幸福来敲门", 0},
{"蝴蝶效应", 0},
{"罗马假日", 0}
};
printf("请依次输入电影群众评分:\n");
for (i = 0; i < N; i++) {
scanf("%f", &f[i].score);
}
printf("各电影群众评分如下:\n");
for (i = 0; i < N; i++) {
printf("%s:%6.2f\n", f[i].name, f[i].score);
if (f[i].score > f[max_index].score) {
max_index = i;
}
}
printf("群众评分最高的电影为:%s,其评分为:%6.2f\n",
f[max_index].name, f[max_index].score);
return 0;
}
```
在这个程序中,我使用了 `#define` 宏定义来定义电影的数量 `N`,这样可以方便地修改电影数量。结构体 `film` 的定义中加上了缺少的分号,并且数组 `f` 的类型指定为了 `film`。在输入群众评分和输出各电影群众评分时,我加上了相应的提示信息。在输出群众评分最高的电影时,我使用了一个变量 `max_index` 来记录评分最高的电影在数组中的下标,这样可以方便地输出电影的名称和评分。最后,我在输出语句中使用了 `%s` 和 `%6.2f` 来格式化输出电影的名称和评分,其中 `%6.2f` 表示保留两位小数并且占据 6 个字符的宽度。
阅读全文