zoukankan      html  css  js  c++  java
  • 统计计算学生成绩类问题汇总

    (注:暂时先记录这些问题,后期再持续更新)

    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
    ",total/n);
        printf("Number of failures = %d
    ",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
    ",total/num);
            printf("Number of failures is %d
    ",count);
        }
        else
            printf("Grade average is 0
    ");
        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
    ",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
    ");
        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
    ",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:
    ",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	name	average
    ");
        for(i=0;i<n;i++)
            printf("%d	%s	%.2lf
    ",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()实现,然后使用选择排序法根据个人平均成绩从高到低对学生的信息排序,最后按顺序输出结构数组中的数据。

  • 相关阅读:
    物理学——总结
    创建场景和赛道——挑战:为赛道建立一个新的单元测试
    物理学——牛顿运动定律
    物理学——挑战:实现道路碰撞检测
    1291. Gearwheels 夜
    hdu 4442 Physical Examination 夜
    hdu 4450 Draw Something 夜
    1129. Door Painting 夜
    hdu 4431 Mahjong 夜
    1128. Partition into Groups 夜
  • 原文地址:https://www.cnblogs.com/OctoptusLian/p/6636510.html
Copyright © 2011-2022 走看看