首页 > 试题广场 >

按等级统计学生成绩:输入10个学生的学号、姓名和成绩,输出学

[问答题]

按等级统计学生成绩:输入10个学生的学号、姓名和成绩,输出学生的成绩和不及格人数。每个学生的记录包括学号、姓名、成绩和等级,要求定义和调用函数set_grade (),根据学生成绩设置其等级,并统计不及格人数,等级设置:85~100为A,70~84为B,60~69为C,0~59为D。试编写相应程序。

推荐
/*设置学生成绩等级并统计不及格人数(结构指针作为函数参数)*/
#include<stdio.h>
#define N 10
struct student{
    int num;
    char name[20];
    int score;
    char grade;
};
int set_grade(struct student *p);
int main(void)
{  struct student stu[N], *ptr;
   int i, count;
   ptr = stu;
   printf("Input the student's number, name and score: \n");
   for(i = 0; i < N; i++){
      printf("No %d: ", i+1);       /*提示输入第i个同学的信息*/
      scanf("%d%s%d", &stu[i].num, stu[i].name, &stu[i].score);
}
count = set_grade(ptr);
printf("The count (<60): %d\n", count);
printf("The student grade:\n");
for(i = 0; i < N; i++)
    printf("%d %s %c\n", stu[i].num, stu[i].name, stu[i].grade);
return 0;
}
int set_grade(struct student *p)
{
   int i, n = 0;
   for(i = 0; i < N; i++, p++){
       if(p->score >= 85)
          p->grade = 'A';
       else if(p->score >= 70)
          p->grade = 'B';
       else if(p->score >= 60)
          p->grade = 'C';
       else{
     p->grade = 'D';
     n++;
     }
 }
 return n;
}

发表于 2018-05-06 21:41:14 回复(0)
#include<stdio.h>

typedef struct record{
    int number;
    char name[10];
    int score;
    char grade;
}Record;

char set_grade(int score );

int main(void){
    const int n=3;
    Record rec[n];
    int i,cnt=0;

    /** 输入 */
    for(i=0;i<n;i++){
        printf("input the info of No.%d\n",i+1);
        printf("number:");
        scanf("%d",&rec[i].number);
        printf("name:");
        scanf("%s",&rec[i].name);
        printf("score:");
        scanf("%d",&rec[i].score);
        if(rec[i].score<60)
            cnt++;
        rec[i].grade = set_grade(rec[i].score);
    }

    printf("the grade of the students is:\n");
    for(i=0;i<n;i++){
        printf("%c\n",rec[i].grade);
    }
    printf("the fail students have %d\n",cnt);

    return 0;
}

char set_grade(int score ){
    char grade;
    if(score>=85 && score<=100){
        grade = 'A';
    }else if(score>=70 && score<=84){
        grade = 'B';
    }else if(score>=60 && score<=69){
        grade = 'C';
    }else{
        grade = 'D';
    }

    return grade;
}

发表于 2022-02-21 16:25:39 回复(0)
#include <stdio.h>
#define N 10
struct Student{
int  num;        /*学号*/
char name[20];   /*姓名*/
int  score;      /*成绩*/
char grade;      /*等级*/
};

void main (void )
{
int i,count;
struct Student s[N];
int SetGrade(struct Student *p);
printf("请输入%d个学生的学号、姓名和成绩: \n",N);
for(i=0;i<N;i++){
printf("No %d: ",i+1);
scanf("%d%s%d",&s[i].num,s[i].name,&s[i].score);
}
count=SetGrade(s);
printf("不及格人数(<60):%d人.\n",count);
printf("%d个学生的学号、姓名、成绩和成绩等级: \n",N);
for(i=0;i<N;i++)
printf("%6d%20s%6d%6c\n",s[i].num,s[i].name,s[i].score,s[i].grade);
}

int SetGrade(struct Student *p)
{
int i,n=0;
for(i=1;i<=N;i++,p++)
if(p->score>=90)p->grade='A';
else if(p->score>=80)p->grade='B';
else if(p->score>=70)p->grade='C';
else if(p->score>=60)p->grade='D';
else {p->grade='E';n++;}
return n; /* 返回结果 */
}
编辑于 2018-12-31 03:32:46 回复(0)