输入一个正整数n,再输入n个学生的姓名和百分制成绩,将其转换为两级制成绩后输出。要求定义和调用函数set_grade(stu, n),其功能是根据结构数组stu中存放的学生的百分制成绩score,将其转换为两级制成绩,并赋给grade。百分制成绩到两级制成绩的转换规则:大于或等于60分为P,否则为F。 #include<stdio.h> #define MAXN 100 struct student{ char name[20]; int score; char grade; }; void set_grade( struct student *p, int n ); int main() { int i, n; struct student stu[MAXN]; scanf("%d", &n); for(i = 0; i < n; i++){ scanf("%s%d", stu[i].name, &stu[i].score); } set_grade(stu, n); for(i = 0; i < n; i++) printf("%s %c\n", stu[i].name, stu[i].grade); return 0; } void set_grade(struct student *p, int n) { struct student *q = p + n - 1; while( ){ p++; } }
时间: 2024-03-24 14:41:27 浏览: 56
实现输入成绩,输出成绩等级
好的,请参考下面的代码完成该程序:
```c
#include<stdio.h>
#define MAXN 100
struct student{
char name[20];
int score;
char grade;
};
void set_grade(struct student *p, int n);
int main() {
int i, n;
struct student stu[MAXN];
scanf("%d", &n);
for(i = 0; i < n; i++){
scanf("%s%d", stu[i].name, &stu[i].score);
}
set_grade(stu, n);
for(i = 0; i < n; i++)
printf("%s %c\n", stu[i].name, stu[i].grade);
return 0;
}
void set_grade(struct student *p, int n) {
struct student *q = p + n - 1;
while(p <= q){
if(p->score >= 60){
p->grade = 'P';
}
else{
p->grade = 'F';
}
p++;
}
}
```
在该程序中,我们首先定义了一个结构体 `student` 来表示学生,其中包括姓名、百分制成绩和两级制成绩。然后定义了一个函数 `set_grade` 来将百分制成绩转换为两级制成绩。在 `main` 函数中,我们输入学生的数量和信息,然后调用 `set_grade` 函数进行转换,最后输出结果即可。
在 `set_grade` 函数中,我们使用了指针来遍历结构数组,对于每一个学生,如果其百分制成绩大于等于60分,则将其两级制成绩赋为 P,否则赋为 F。
阅读全文