#include<stdio.h>#include<string.h>struct student{int snum;char name[8];int score[3];float sum;}void sumScore(struct student temp){ struct student *p; p=&temp; (*p).snum=0; for(int i=0;i<3;i++) { (*p).snum+=(*p).score[i]; }}main(){ struct student a[5]; printf("请输入五个学生的学号,姓名和三门课成绩\n"); for(int i=0;i<5;i++) { scanf("%d%s",&a[i].snum ,a[i].name); printf("%d %s ",a[i].snum ,a[i].name); for(int j=0;i<3;i++) { scanf("%d",&a[i].score[j] ); printf("%d ",a[i].score[j]); } printf("\n"); } for(i=0;i<5;i++) { sumScore(a[i]); }}
时间: 2023-12-14 20:37:02 浏览: 64
这段代码存在一些问题,可能会导致编译错误或者运行错误。
1. 在结构体定义中,需要在最后一个成员变量后面加上分号。
2. 在 sumScore 函数中,传入的参数是一个结构体,应该使用指针来进行操作。因此,应该将函数定义改为 void sumScore(struct student *temp)。
3. 在 sumScore 函数中,应该使用指针箭头运算符 -> 来访问结构体成员变量。
4. 在 for 循环中,内部的循环变量应该是 j 而不是 i。
5. 在主函数中,i 没有进行声明。
下面是修改后的代码:
```
#include <stdio.h>
#include <string.h>
struct student {
int snum;
char name[8];
int score[3];
float sum;
};
void sumScore(struct student *temp) {
temp->snum = 0;
for (int i = 0; i < 3; i++) {
temp->snum += temp->score[i];
}
}
int main() {
struct student a[5];
printf("请输入五个学生的学号,姓名和三门课成绩\n");
for (int i = 0; i < 5; i++) {
scanf("%d%s", &a[i].snum, a[i].name);
printf("%d %s ", a[i].snum, a[i].name);
for (int j = 0; j < 3; j++) {
scanf("%d", &a[i].score[j]);
printf("%d ", a[i].score[j]);
}
printf("\n");
}
for (int i = 0; i < 5; i++) {
sumScore(&a[i]);
}
return 0;
}
```
阅读全文