蓝桥杯---刷题(1)成绩统计

题目描述

小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。

如果得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀。

请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整 数。

输入描述

输入的第一行包含一个整数 n\ (1 \leq n \leq 10^4)n (1≤n≤104),表示考试人数。

接下来 nn 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。

输出描述

输出两行,每行一个百分数,分别表示及格率和优秀率。百分号前的部分 四舍五入保留整数。

蓝桥杯---刷题(1)成绩统计_第1张图片

 

我的题解(c语言)

#include 
#include 

int main(int argc, char *argv[])
{
  int n,x,a=0,b=0,i=0;
  // printf("请输入考试人数:");      //根据要求第一行输入考生数,所以这一句只能注释了
  do{
    scanf("%d",&n);
  }while(n<1 || n>10000);    //确保考生数在1~10000之间
  // printf("请输入每个学生的成绩(0~100):");   //同理
  for(;i100);   //确保输入的分值在0~100之间
    if(x>=60){     //x>=85的也是及格范围的
      a++;   //a表示及格的人数,
    }
    if(x>=85){  //只能用if语句,不能用else if语句;如:x=85;则,a++;同时b++;
                //如果这里用else if 语句,则最后只有a累加
      b++;   //b表示优秀的人数
    }
  }
  printf("%3.0f%%\n%3.0f%%",(double)a/n*100,(double)b/n*100);
              //因为变量都是整型变量,前面加(double)强制转换,
              // %3.0f表示整数部分保留三位(如果有三位的话),小数部分保留0位。
  return 0;
}

有一点理解不了的地方,就是一模一样的代码,我加个do{}while();语句,原本需要运行5ms的变成4ms了。后来把%2.0f改为%3.0f的时候,又提交了一次,发现运行时间变为3ms了。再提交,运行时间又变了。

蓝桥杯---刷题(1)成绩统计_第2张图片

蓝桥杯---刷题(1)成绩统计_第3张图片 

虽然及格率为100%的不多见,但是还是存在的。最后的printf里%2.0f都改为%3.0f。

你可能感兴趣的:(蓝桥杯,蓝桥杯,c语言)