编写一个函数print,打印一个学生的成绩数组,该数组中有5个学生的数据记录,每个记录包括num,name,score[3],用主函数输入这些记录,用print函数输出这些记录。j结构体变量要放在函数参数里传递,结构体的定义必须设成全局的
时间: 2024-03-12 13:48:16 浏览: 52
好的,以下是代码实现:
```c
#include <stdio.h>
struct student {
int num;
char name[20];
int score[3];
} stu[5];
void print(struct student s[]) {
int i, j;
printf("num\tname\tscore1\tscore2\tscore3\n");
for (i = 0; i < 5; i++) {
printf("%d\t%s\t", s[i].num, s[i].name);
for (j = 0; j < 3; j++) {
printf("%d\t", s[i].score[j]);
}
printf("\n");
}
}
int main() {
int i, j;
for (i = 0; i < 5; i++) {
printf("请输入第%d个学生的信息:\n", i + 1);
printf("num: ");
scanf("%d", &stu[i].num);
printf("name: ");
scanf("%s", stu[i].name);
printf("score1: ");
scanf("%d", &stu[i].score[0]);
printf("score2: ");
scanf("%d", &stu[i].score[1]);
printf("score3: ");
scanf("%d", &stu[i].score[2]);
}
print(stu);
return 0;
}
```
在此代码中,我们定义了一个全局的结构体变量 `stu` 来保存 5 个学生的数据记录,其中每个记录包括学号 `num`、姓名 `name` 和三门课的成绩 `score[3]`。我们通过 `main` 函数输入这些记录,然后将 `stu` 数组作为参数传递给 `print` 函数,用来输出这些记录。
在 `print` 函数中,我们首先输出每个记录的学号和姓名,然后循环输出三门课的成绩。最后输出一个换行符,以便将每个记录单独分隔开来。
运行此代码,我们可以看到如下输出结果:
```
请输入第1个学生的信息:
num: 1001
name: Alice
score1: 80
score2: 90
score3: 85
请输入第2个学生的信息:
num: 1002
name: Bob
score1: 75
score2: 85
score3: 90
请输入第3个学生的信息:
num: 1003
name: Cindy
score1: 90
score2: 80
score3: 95
请输入第4个学生的信息:
num: 1004
name: David
score1: 85
score2: 95
score3: 80
请输入第5个学生的信息:
num: 1005
name: Emily
score1: 95
score2: 85
score3: 90
num name score1 score2 score3
1001 Alice 80 90 85
1002 Bob 75 85 90
1003 Cindy 90 80 95
1004 David 85 95 80
1005 Emily 95 85 90
```
阅读全文