本题要求实现一个根据学生成绩设置其等级,并统计不及格人数的简单函数。 函数接口定义: int set_grade( struct student *p, int n ); 其中p是指向学生信息的结构体数组的指针,该结构体的定义为: struct student{ int num; char name[20]; int score; char grade; }; n是数组元素个数。学号num、姓名name和成绩score均是已经存储好的。set_grade函数需要根据学生的成绩score设置其等级grade。等级设置:85-100为a,70-84为b,60-69为c,0-59为d。同时,set_grade还需要返回不及格的人数。
时间: 2023-06-05 12:48:00 浏览: 218
实现代码如下:
```c
int set_grade(struct student *p, int n) {
int fail_num = ; // 不及格人数
for (int i = ; i < n; i++) {
if (p[i].score >= 85 && p[i].score <= 100) {
p[i].grade = 'a';
} else if (p[i].score >= 70 && p[i].score <= 84) {
p[i].grade = 'b';
} else if (p[i].score >= 60 && p[i].score <= 69) {
p[i].grade = 'c';
} else {
p[i].grade = 'd';
fail_num++;
}
}
return fail_num;
}
```
该函数首先定义一个变量`fail_num`用于记录不及格人数,然后遍历结构体数组,根据学生的成绩设置其等级,并统计不及格人数。最后返回不及格人数即可。
相关问题
请你用C语言实现一个根据学生成绩设置其等级,并统计不及格人数的简单函数。 函数接口定义: int set_grade( struct student *p, int n ); 其中p是指向学生信息的结构体数组的指针,该结构体的定义为: 结构学生{ 整数; 字符名称[20]; 整数分数; 炭级; }; n是数组元素个数。学号num、姓名name和成绩score均是已经存储好的。set_grade函数需要根据学生的成绩score设置其等级。等级设置:85-100为A,70-84为B,60-69为C,0-59为D。同时,set_grade还需要返回不及格的人数。 裁判测试程序样例: #include <stdio.h> #define 最大 10 结构学生{ 整数; 字符名称[20]; 整数分数; 炭级; }; int set_grade( struct student *p, int n ); int main() { struct student stu[MAXN], *ptr; int n, i, count; PTR = STU; scanf(“%d\n”, &n); for(i = 0; i < n; i++){ scanf(“%d%s%d”, &stu[i].num, stu[i].name, &stu[i].score); } 计数 = set_grade(PTR, n); printf(“失败的计数 (<60): %d\n”, 计数); printf(“The grades:\n”); for(i = 0; i < n; i++) printf(“%d %s %c\n”, stu[i].num, stu[i].name, stu[i].grade); 返回 0; } /* 你的代码将被嵌在这里 */ 输入样例: 10 31001安妮85 31002 邦尼 75 31003 颂歌 70 31004 段 84 31005 苏珊90 31006保罗69 31007 帕姆 60 31008 苹果 50 31009南希100 31010鲍勃78 输出样例: 失败计数 (<60):1 成绩: 31001 安妮· 31002 邦尼 B 31003 卡罗尔 B 31004 丹· 31005 苏珊 A 31006 保罗 C 31007 帕姆 C 31008 苹果D 31009 南希 A 31010 鲍勃 B
#include<stdio.h>
struct student{
int num;
char name[20];
int score;
char grade;
};
int set_grade(struct student *p, int n){
int count=0;
for(int i=0;i<n;i++){
if(p[i].score>=85){
p[i].grade='A';
}else if(p[i].score>=70){
p[i].grade='B';
}else if(p[i].score>=60){
p[i].grade='C';
}else{
p[i].grade='D';
count++;
}
}
return count;
}
int main(){
struct student stu[3]={{1,"张三",89},{2,"李四",75},{3,"王五",60}};
int n=3;
int cnt=set_grade(stu,n);
printf("不及格的人数:%d\n",cnt);
return 0;
}答案:我可以根据你给出的信息,用C语言实现一个根据学生成绩设置其等级,并统计不及格人数的简单函数。代码如下:
c语言按等级统计学生成绩:首先输入要统计的学生人数n,之后输入n个学生的学号、姓名和成绩,输出学生的成绩等级和不及格人数。每个学生的记录包括学号、姓名、成绩和等级,要求定义和调用函数set_grade(),根据学生成绩设置其等级,并统计不及格人数,等级设置:85~100为A,70~84为B,60~69为C,0~59为D。试编写相应程序。
以下是使用C语言编写的按等级统计学生成绩的程序:
```c
#include <stdio.h>
#define MAX_N 100
struct student {
char id[20];
char name[20];
int score;
char grade;
};
void set_grade(struct student *s, int n, int *fail_num) {
for (int i = 0; i < n; i++) {
if (s[i].score >= 85 && s[i].score <= 100) {
s[i].grade = 'A';
} else if (s[i].score >= 70 && s[i].score <= 84) {
s[i].grade = 'B';
} else if (s[i].score >= 60 && s[i].score <= 69) {
s[i].grade = 'C';
} else {
s[i].grade = 'D';
(*fail_num)++;
}
}
}
int main() {
int n;
struct student stu[MAX_N];
int fail_num = 0;
printf("请输入要统计的学生人数:");
scanf("%d", &n);
printf("请输入学生信息:\n");
for (int i = 0; i < n; i++) {
printf("第%d个学生:\n", i + 1);
printf("学号:");
scanf("%s", stu[i].id);
printf("姓名:");
scanf("%s", stu[i].name);
printf("成绩:");
scanf("%d", &stu[i].score);
}
set_grade(stu, n, &fail_num);
printf("\n学生信息如下:\n");
printf("学号\t姓名\t成绩\t等级\n");
for (int i = 0; i < n; i++) {
printf("%s\t%s\t%d\t%c\n", stu[i].id, stu[i].name, stu[i].score, stu[i].grade);
}
printf("\n不及格人数:%d\n", fail_num);
return 0;
}
```
程序中定义了一个结构体 `student` 表示学生,其中包含学号、姓名、成绩和等级四个属性。`set_grade()` 函数用于根据学生成绩设置其等级,并统计不及格人数。主函数中先输入要统计的学生人数,再输入每个学生的学号、姓名和成绩,最后调用 `set_grade()` 函数设置等级和统计不及格人数,最终输出学生信息和不及格人数。
注意,在 `set_grade()` 函数中,为了方便统计不及格人数,使用了一个指向 `fail_num` 的指针,该指针指向不及格人数变量的地址,通过 `*fail_num` 来修改不及格人数的值。
阅读全文