习题9-6 按等级统计学生成绩(20 分)

本文介绍了一个简单的函数,用于根据学生的成绩设置相应的等级(A、B、C、D),并统计不及格的学生数量。文章提供了完整的代码实现及运行示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本题要求实现一个根据学生成绩设置其等级,并统计不及格人数的简单函数。

函数接口定义:

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还需要返回不及格的人数。

裁判测试程序样例:

#include <stdio.h>
#define MAXN 10

struct student{
    int num;
    char name[20];
    int score;
    char grade;
};

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);
    } 
   count = set_grade(ptr, n);
   printf("The count for failed (<60): %d\n", count);
   printf("The grades:\n"); 
   for(i = 0; i < n; i++)
       printf("%d %s %c\n", stu[i].num, stu[i].name, stu[i].grade);
    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

10
31001 annie 85
31002 bonny 75
31003 carol 70
31004 dan 84
31005 susan 90
31006 paul 69
31007 pam 60
31008 apple 50
31009 nancy 100
31010 bob 78

输出样例:

The count for failed (<60): 1
The grades:
31001 annie A
31002 bonny B
31003 carol B
31004 dan B
31005 susan A
31006 paul C
31007 pam C
31008 apple D
31009 nancy A
31010 bob B
int set_grade( struct student *p, int n )  
{  
    int count=0,i;  
    
    for(i=0;i<n;i++)  
    {  
        if((*p).score<60)  /* *p需用括号括起来,因为*p.score等同*(p.score) */  
        {  
            (*p).grade='D';  
            count++;  
        }  
        else if((*p).score>=60&&(*p).score<=69)  
        (*p).grade='C';  
        else if((*p).score>=70&&(*p).score<=84)  
        (*p).grade='B';  
        else  
        (*p).grade='A';  
        
		p++; //最后有个p++ 代表从p0 ——> p1......... 
    }  
      
    return count; // return 只能返回一个值 所以 返回count  代表 set_grede 的值  
}                //其余的操作通过 *p 来完成 

 

为了满足查找关于统计学生成绩的相关习题或资料的需求,以下是几个与统计学生成绩相关的练习题目以及如何解决这些问题的一般指导。 ### 练习题目及解答 #### 题目1:计算成绩的基本统计数据 **描述**: 编写一段程序来处理一组学生的考试数。这组数据应该包括至少20学生成绩。程序应能输出这些成绩中的最大值、最小值、平均数- **解决方案** 创建一个长度为20的数组用于存储成绩; 使用循环结构填充这个数组,可以是手动输入或者随机生成; 再次使用循环遍历数组以找到最高、最低,并累加求得总; 最后除以学生数量得到平均; ```java import java.util.Random; public class ScoreStatistics { public static void main(String[] args) { int[] scores = new int[20]; Random random = new Random(); // 填充成绩数组 for(int i = 0; i < scores.length; ++i){ scores[i] = 60 + random.nextInt(41); // 成绩范围设定在60至100之间 } // 计算基本统计数据 double sum = 0; int maxScore = Integer.MIN_VALUE; int minScore = Integer.MAX_VALUE; for (int score : scores) { if(score > maxScore) maxScore = score; if(score < minScore) minScore = score; sum += score; } System.out.println("Total Sum of Scores: " + sum); System.out.printf("Average Score: %.2f\n", sum / scores.length); System.out.println("Highest Score: " + maxScore); System.out.println("Lowest Score: " + minScore); } } ``` #### 题目2:按等级成绩 **描述**: 设定成绩区间对应不同的等级(A, B, C, D),编写函数`setGrade`接收单个成绩参数并返回相应的字母等级- **解决方案** ```java public char setGrade(double score) { if(score >= 90 && score <= 100) return &#39;A&#39;; else if(score >= 80) return &#39;B&#39;; else if(score >= 70) return &#39;C&#39;; else if(score >= 60) return &#39;D&#39;; else return &#39;F&#39;; // Fail } ``` #### 题目3:统计不及格人数 **描述**: 对于给定的一个成绩列表,确定有多少人的成绩低于合格线(例如60)。 - **解决方案** 迭代成绩列表,对于每一个小于60成绩增加计数器直到完成整个列表的检查。 ```java public int countFailures(int[] scores) { int failuresCount = 0; for(int score : scores) { if(score < 60) { failuresCount++; } } return failuresCount; } ```
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CLiuso

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值