统计计算学生成绩类问题汇总

2018-06-18 04:05:25来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

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

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()实现,然后使用选择排序法根据个人平均成绩从高到低对学生的信息排序,最后按顺序输出结构数组中的数据。

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:1013. 识别三角形

下一篇:冒泡排序