include<stdio.h>#include<string.h>struct student{ int num; char name[20]; char sex[20]; float score[3];}stu;void main(){ int i; float average,sum; sum=0.0; printf("请输入学号:\n"); scanf("%d",&stu.num); printf("学号:%d\n",stu.num); getchar(); printf("请输入性别:\n"); fgets(stu.sex,20,stdin); puts(stu.sex); printf("请输入姓名:"); fgets(stu.name,20,stdin); puts(stu.name); for(i=0;i<3;i++) { scanf("%f",stu.score[i]); sum+=stu.score[i]; } average=sum/3; printf("平均成绩为.2%f\n",average);}为什么会错,且输入成绩后不算总的成绩
时间: 2024-01-13 14:03:38 浏览: 288
学生信息管理系统程序设计.docx
这段代码存在两个问题:
1. 在输入成绩时,应该使用`&`符号取地址,即`scanf("%f",&stu.score[i])`。
2. 在输出平均成绩时,应该使用`%.2f`格式化输出,即`printf("平均成绩为%.2f\n",average)`。
修改后的代码如下:
```
#include <stdio.h>
#include <string.h>
struct student {
int num;
char name[20];
char sex[20];
float score[3];
} stu;
int main() {
int i;
float average,sum;
sum=0.0;
printf("请输入学号:\n");
scanf("%d",&stu.num);
printf("学号:%d\n",stu.num);
getchar();
printf("请输入性别:\n");
fgets(stu.sex,20,stdin);
puts(stu.sex);
printf("请输入姓名:");
fgets(stu.name,20,stdin);
puts(stu.name);
for(i=0;i<3;i++) {
scanf("%f",&stu.score[i]);
sum+=stu.score[i];
}
average=sum/3;
printf("平均成绩为%.2f\n",average);
return 0;
}
```
阅读全文