#include<stdio.h> #include<string.h> struct stduent{ long xh; char name[50]; int age; float grade[6]; float total; float average; }; int main(){ int i,j; struct student student[3]; for(i=0;i<3;i++){ printf("请输入第%d个学生的信息: ",++i); printf("学号:"); scanf("%ld",&student[i].xh); printf(" 姓名:"); scanf("%s",&student[i].name); printf(" 年龄:"); scanf("%d",&student[i].age); printf(" 课程成绩:"); for(j=0;j<6;j++){ printf("课程%d成绩:",++j); scanf("%f",&student[i].grade[j]); } printf("\n"); } for(i=0;i<3;i++){ student[i].tatal=0; for(j=0;j<6;j++){ student[i].tatal+=student[i].grade[j]; } student[i].average=student[i].total/6.0; } for(i=0;i<3;i++){ printf("学号:%ld\t姓名:%s\t总分:%.2f\t平均分:%.2f\n",student[i].xh,student[i].name,student[i].tatal,studnt[i].average); } return 0; }这个代码哪里有问题
时间: 2023-12-14 10:37:11 浏览: 125
#include<stdio.h>
这个代码有几个问题:
1. 结构体的名称应该是 `struct student` 而不是 `struct stduent`。
2. 在循环中,每次循环应该使用 `i` 来访问数组元素,而不是 `++i`。因为在循环结束后,`i` 的值将自增1,导致最后一次循环可能会超出数组范围。
3. 在输入学生姓名时,应该使用 `%s` 格式化字符串来读取字符串,而不是 `&` 运算符。
4. 在计算总分时,变量名应该是 `total` 而不是 `tatal`。
5. 在计算平均分时,应该使用 `total` 而不是 `tatal`。
6. 在输出时,变量名应该是 `total` 而不是 `tatal`。
下面是修改后的代码:
```c
#include <stdio.h>
#include <string.h>
struct student{
long xh;
char name[50];
int age;
float grade[6];
float total;
float average;
};
int main(){
int i, j;
struct student student[3];
for(i = 0; i < 3; i++){
printf("请输入第%d个学生的信息:\n", i + 1);
printf("学号:");
scanf("%ld", &student[i].xh);
printf("姓名:");
scanf("%s", student[i].name);
printf("年龄:");
scanf("%d", &student[i].age);
printf("课程成绩:");
for(j = 0; j < 6; j++){
printf("课程%d成绩:", j + 1);
scanf("%f", &student[i].grade[j]);
}
printf("\n");
}
for(i = 0; i < 3; i++){
student[i].total = 0;
for(j = 0; j < 6; j++){
student[i].total += student[i].grade[j];
}
student[i].average = student[i].total / 6.0;
}
for(i = 0; i < 3; i++){
printf("学号:%ld\t姓名:%s\t总分:%.2f\t平均分:%.2f\n", student[i].xh, student[i].name, student[i].total, student[i].average);
}
return 0;
}
```
阅读全文