C语言练习题目(七)----成绩分析

一、题目要求如下

二、解题思路

题目解读:

        1、需要用户输入数据n行

        2、1行是共有多少学生

        3、后面的行数都是成绩

        4、求整型的最大和最小值,浮点型的保留两位小数的平均分。

第一步肯定是获取n,也就是获取学生有多少人;

得到n后我们就知道要重复scanf多少次,每scanf一次就获取一个成绩,n个学生就要scanf n次。

其次确认目标是我们要求的三个值:最大值、最小值、平均分

最大值、最小值:因为无论是 最大值 还是 最小值 都是跟学生的成绩进行比较的,所以这里max和min的值我不设初值,直接在循环学生成绩之前先获取第一个学生的成绩,将成绩递交给min和max还有sum(sum是所有学生成绩求和)

这时候最小值和最大值已经是第一个学生的成绩,接下来开始循环所有学生成绩

因为第一个学生的成绩已经获取过了,所以循环要从i=1开始,即循环是从第二个学生开始。(i=1是第二个学生,i=n就是第n+1个学生,所以循环截止条件是i<n,不能等于n,因为没有第n+1个学生)

 每次循环都先获取成绩覆盖给temp,即每次循环的temp就是当前学生的成绩。

加入两条平行的判断,

        若当前学生成绩小于最小值(第一次循环min是第一个学生成绩),就把当前学生成绩赋值给min

        若当前学生成绩大于最大值(第一次循环max是第一个学生成绩),就把当前学生成绩赋值给max

        累加成绩给sum,达到求和的目的;

最大值和最小值计算完了,接下来要求平均值。

因为定义的最大值和最小值都是整型,而平均值要浮点数。我们又知道,在计算机程序中:

整数和整数进行运算=整数

但是,我们又知道浮点数就是颗老鼠屎,去到汤里就会影响整锅汤,导致整锅汤都变成老鼠屎

       浮点数和整型运算就=浮点数

 所以我们先让sum*1.0,因为1.0是浮点型常量,和sum运算整个值就会变成浮点数,这时候和整型作除法就会得到浮点数了。

%.2f是保留两位小数的浮点数输出格式

 三、代码实现

#include <stdio.h>

int main()
{
  // 请在此输入您的代码
  int sum,i,max,min,n,temp;//temp临时存储当前学生成绩,n为学生数,min为最小学生成绩,max最大成绩,sum学生成绩总和
  float avg=0;//avg是学生成绩平均分,为浮点数
  scanf("%d",&n); //获取学生数量
  scanf("%d",&temp);//获取第一个学生成绩
  sum=min=max=temp; //第一个学生成绩赋值给max、min、sum
  
  for(i=1;i<n;i++){//循环n-1次,因为前面已经赋值了一个学生

    scanf("%d",&temp);
    if(temp<min) min=temp;
    if(temp>max) max=temp;
    sum+=temp;
    
  }
  //求平均数和打印三个值
  avg=sum*1.0/n;
  printf("%d\n%d\n%.2f\n",max,min,avg);
  
  return 0;
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值