C语言练习——输出学生成绩(平均成绩、最高成绩、最低成绩)

举报
Code_流苏 发表于 2022/04/20 19:19:02 2022/04/20
【摘要】 C语言练习——输出学生成绩(平均成绩、最高成绩、最低成绩)。

C语言练习——输出学生成绩(平均成绩、最高成绩、最低成绩)

名人说:古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。——苏轼

一、问题呈现

1.问题描述

Problem Description

本题要求编写程序,根据输入学生的成绩,统计并输出学生的平均成绩、最高成绩和最低成绩。

2.输入输出

Input

输入第一行首先给出一个正整数N,表示学生的个数。接下来一行给出N个学生的成绩,数字间以空格分隔。

Output

按照以下格式输出:
average = 平均成绩
max = 最高成绩
min = 最低成绩
结果均保留两位小数

3.测试样例

1️⃣样例1

Sample Input

5
80 90 100 90 80

Sample Output

average = 88.00
max = 100.00
min = 80.00

2️⃣样例2

Sample Input

5
80 90 100 70 80

Sample Output

average = 84.00
max = 100.00
min = 70.00

二、源码实现(+详细注释)

1.注释版

//编码及注释:Code_流苏
//定义头文件
#include<stdio.h>
#include<stdlib.h>
//f函数 用于实现最大值和最小值的遍历查找
double f(int *a,int n,int m)
{
    int i;
    //定义index整型变量 并初始化为0 用于存储最大值和最小值下标索引
    int index=0;
    //循环遍历 查找最大值和最小值
    for(i=1;i<n;i++)
    {
        if(m==1)
        {
            if(a[i]>=a[index]) index=i; //查找最大值
        }
        else
        {
            if(a[i]<=a[index]) index=i;//查找最小值
        }
    }
    //返回浮点值
    return a[index]/1.0; 
}
//主函数
int main()
{
	//定义变量N用于存储及输入学生人数
    int N;
    //定义数组 用于 存储 循环遍历
    int arr[10005];
    printf("请输入学生人数:");
    scanf("%d",&N);
    int i;
    //定义sum用于存储求和之后的值
    int sum=0;
    printf("请输入这些学生的成绩:");
    //循环遍历求和 
    for(i=0;i<N;i++)
    {
        scanf("%d",&arr[i]);
        sum+=arr[i];
    }
    //输出平均数
    printf("average = %.2lf\n",sum/(double)N);
    //输出最大值
    printf("max = %.2lf\n",f(arr,N,1));
    //输出最小值
    printf("min = %.2lf\n",f(arr,N,2));
    //返回0,代表程序执行结束
    return 0;

}

2.简洁版

#include<stdio.h>
#include<stdlib.h>

double f(int *a,int n,int m)
{
    int i;
    int index=0;
    
    for(i=1;i<n;i++)
    {
        if(m==1)
        {
            if(a[i]>=a[index]) index=i; 
        }
        else
        {
            if(a[i]<=a[index]) index=i;
        }
    }
    
    return a[index]/1.0; 
}

int main()
{

    int N;
    
    int arr[10005];
    printf("请输入学生人数:");
    scanf("%d",&N);
    int i;
  
    int sum=0;
    printf("请输入这些学生的成绩:");

    for(i=0;i<N;i++)
    {
        scanf("%d",&arr[i]);
        sum+=arr[i];
    }
    
    printf("average = %.2lf\n",sum/(double)N);
    printf("max = %.2lf\n",f(arr,N,1));
    printf("min = %.2lf\n",f(arr,N,2));
  
    return 0;

}

三、输出结果展示

为了使整体内容简洁,此处只展示一组测试数据结果。

1.输出结果

请输入学生人数:5
请输入这些学生的成绩:80 90 100 70 80
average = 84.00
max = 100.00
min = 70.00

--------------------------------
Process exited after 14.98 seconds with return value 0
请按任意键继续. . .

2.输出结果(图示版)

在这里插入图片描述


作者:Code_流苏(一个喜欢古诗词和编程的Coder😊)
★喜欢的话,还请多多点赞与关注! 感谢支持!
多思,多练,多总结,坚持下去会有收获的!

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。