题目描述
小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。
如果得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀。
请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整 数。
输入描述
输入的第一行包含一个整数 n\ (1 \leq n \leq 10^4)n (1≤n≤104),表示考试人数。
接下来 nn 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。
输出描述
输出两行,每行一个百分数,分别表示及格率和优秀率。百分号前的部分 四舍五入保留整数。
输入
7
80
92
56
74
88
100
0
输出
71%
43%
增加知识:
1.c语言编译器可以自行四舍五入
使用 %.nlf 就可以了
2.如果非要四舍五入可以
(int)a+0.5;
记住转换之原来变量类型不变,只是数值变成需要的类型而已。
3.如何让c语言编译器不进行四舍五入
double a=28.999;
a=(double)(int)a*100/100;(此处100即表示保留两位小数)
原理是:a保存所需的小数然后用int把不需要的去掉再/100变成原来的数。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
int main()
{
//用float好处是保留小数
float k = 0;//及格人数
float p = 0;//优秀人数
int n = 0;
int i = 0;
int a[30];
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
for (i = 0; i < n; i++)
{
if (a[i] >= 60)
{
k++;
}
if (a[i] >= 85)
{
p++;
}
}
k = k * 100 / n;//不需要float强制类型转换也可以;
p = p * 100 / n ;
//printf("%lf%%\n%lf%%\n", k, p);
printf("%.0lf%%\n%.0lf%%\n", k, p);//%.nlf这个可以自动四舍五入。
//k = (int)(k+0.5) ;//四舍五入,将小数点去除;
//p = (int)(p + 0.5);//
//printf("%.0lf%%\n%.0lf%%\n", k, p);
return 0;
}