统计计算学生成绩类问题ACing

1,输入一个正整数n,再输入n个学生的成绩,计算平均分,并统计不及格成绩的学生人数。

    int count,i,n;  //count 为记录不及格成绩的个数    double grade,total;  //grade 存放输入的成绩,total保存成绩之和    printf("Enter n:");    scanf("%d",&n);  //输入学生人数n     total = 0;    count = 0;    for(i=1;i<=n;i++){        printf("Enter grade #%d:",i);        scanf("%lf",&grade);  //输入第i个成绩        total = total + grade;        if(grade<60){  //统计不及格的学生人数             count++;        }     }     printf("Grade average = %.2f\n",total/n);    printf("Number of failures = %d\n",count);    return 0; 

测试结果:

2,输入一批学生的成绩,以负数作为结束标志,计算平均成绩,并统计不及格人数。

    int count,num;  //count 为记录不及格成绩的个数;num 为记录输入的个数     double grade,total;  //grade 存放输入的成绩,total保存成绩之和    num = 0;    total = 0;    count = 0;    printf("Enter grades:");    scanf("%lf",&grade);    while(grade>=0){        total = total+grade;  //累加成绩        num++;  //计数        if(grade<60)            count++;        scanf("%lf",&grade);  //读入一个新数据,为下次循环做猪呢比     }    if(num != 0){        printf("Grade average = %.2f\n",total/num);        printf("Number of failures is %d\n",count);    }    else        printf("Grade average is 0\n");    return 0; 

测试结果:

3,从输入的n个成绩中选出最高分,用for语句实现。

    int i,mark,max,n;    printf("Enter n:");    scanf("%d",&n);  //输入数据个数     printf("Enter %d marks:",n);    scanf("%d",&mark);  //读入第一个成绩    max = mark;    for(i=1;i<n;i++){        scanf("%d",&mark);        if(max<mark)            max = mark;    }     printf("Max = %d\n",max);    return 0;

测试结果:

注:若输入的一批以负数结束的成绩中选出最高分,可以用while语句实现。

4,输入n个学生的成绩信息,计算并输出每个学生的个人平均成绩(结构变量作为函数参数)。

struct student{  //学生信息结构定义     int num;  //学号     char name[10];  //姓名    int computer,english,math;  //三门课程成绩    double average;  //个人平均成绩 };double count_average(struct student s);  //函数声明,计算个人平均成绩int main(void){    int i,n;    struct student s1;  //定义结构变量    printf("Input n:");    scanf("%d",&n);    printf("Input the student's number,name,course scores\n");    for(i=1;i<=n;i++){        printf("No.%d:",i);        scanf("%d%s%d%d%d",&s1.num,&s1.name,&s1.math,&s1.english,&s1.computer);          s1.average = count_average(s1);  //函数调用,结构变量作为函数参数        printf("num:%d,name:%s,average:%.2lf\n",s1.num,s1.name,s1.average);     }     return 0;} double count_average(struct student s){    return (s.math + s.english + s.computer)/3.0;}

测试结果:

5,输入n(n<50)个学生的成绩信息,按照学生的个人平均成绩从高到低输出他们的信息。

struct student{  //学生信息结构定义     int num;  //学号     char name[10];  //姓名    int computer,english,math;  //三门课程成绩    double average;  //个人平均成绩 };int main(void){    int i,index,j,n;      struct student students[50],temp; //定义结构数组    double count_average(struct student s);        /* 输入*/    printf("Input n:");    scanf("%d",&n);    for(i=0;i<n;i++){        printf("Input the info of No.%d:\n",i+1);        printf("number:");        scanf("%d",&students[i].num);        printf("name:");        scanf("%s",&students[i].name);        printf("math.score:");        scanf("%s",&students[i].math);        printf("english.score:");        scanf("%s",&students[i].english);        printf("computer.score:");        scanf("%s",&students[i].computer);        students[i].average = count_average(students[i]);    }         /* 结构数组排序,选择排序法*/    for(i=0;i<n-1;i++){        index = i;        for(j=i+1;j<n;j++)            if(students[j].average>students[index].average)  //比较平均成绩                index = j;        temp = students[index];  //交换数组元素         students[index] = students[i];         students[i] = temp;    }         /* 输出排序后的信息*/    printf("num\tname\taverage\n");    for(i=0;i<n;i++)        printf("%d\t%s\t%.2lf\n",students[i].num,students[i].name,students[i].average);        return 0; }double count_average(struct student s){    return (s.math + s.english + s.computer)/3.0;}

测试结果:

注:本题中,定义了结构数组students用于存储学生信息,先输入n个学生的基本信息,其中个人平均成绩的计算通过调用函数count_average()实现,然后使用选择排序法根据个人平均成绩从高到低对学生的信息排序,最后按顺序输出结构数组中的数据。

自己不喜欢的人,可以报之以沉默微笑;

统计计算学生成绩类问题ACing

相关文章:

你感兴趣的文章:

标签云: