C语言 成绩统计问题
题目描述
某班有学生 n 人,从终端读入 n 及 n 个人学生的成绩,试编程实现以下功能:
①打印出前 3 个最好成绩及取得每个最好成绩的人数;
②若 90 分以上计为优,75-89 分计为“良”,60-74 分计为“中”,60 分以下计为“不及格”,试统计各档成绩所占百分率。
代码:
#include<stdio.h>
int main()
{
int n,i=1,grade,x_1=0,x_2=0,x_3=0,t,n_1=1,n_2=1,n_3=1,a=0,b=0,c=0,d=0;
//x_1,x_2,x_3为前三名学生成绩,n_1,n_2,n_3为前三名相应人数,a,b,c,d为每个成绩等级学生数
printf("请输入学生人数:");
scanf("%d",&n);
getchar();
do
{
printf("请输入第%d个学生的成绩:",i);
scanf("%d",&grade);
getchar();
if(grade>=90) a++;
else if(grade>=75&&grade<=89) b++;
else if(grade>=60&&grade<=74) c++;
else if(grade>=0&&grade<=59) d++;
else printf("请输入正确成绩:");
if(grade==x_1) n_1++;
else if(grade==x_2) n_2++;
else if(grade==x_3) n_3++;
else if(grade>x_3) {x_3=grade;n_3=1;}
if(x_1<x_2) {t=x_1;x_1=x_2;x_2=t;t=n_1;n_1=n_2;n_2=t;}
if(x_1<x_3) {t=x_1;x_1=x_3;x_3=t;t=n_1;n_1=n_3;n_3=t;}
if(x_2<x_3) {t=x_2;x_2=x_3;x_3=t;t=n_2;n_2=n_3;n_3=t;}//将成绩进行排序 ,相对应的人数也要进行交换
i++;
}while(i<=n);
printf("第一名为:%d,有%d名\n",x_1,n_1);
printf("第二名为:%d,有%d名\n",x_2,n_2);
printf("第三名为:%d,有%d名\n",x_3,n_3);
printf("成绩等级为“优”占比为:%.2f\n",a*1.0/n);
printf("成绩等级为“良”占比为:%.2f\n",b*1.0/n);
printf("成绩等级为“中”占比为:%.2f\n",c*1.0/n);
printf("成绩等级为“不及格”占比为:%.2f\n",d*1.0/n);
return 0;
}
运行结果:
C语言实现成绩统计 ——蓝桥
题目描述
小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。
如果得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀。
请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整 数。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
int i , n , j = 0, k = 0;
int arr[10001] = { 0 };
scanf("%d", &n);//输入人数
for (i = 0; i < n; i++)
{
scanf("%d", &arr[i]);//输入成绩
if (arr[i] >= 60)
j++;
if (arr[i] >= 85)
k++;
}
int jige=0,youxiu=0;
jige=j*100.0/n+0.5;//实现小数四舍五入
youxiu=k*100.0/n+0.5;
printf("%d%%\n%d%%", jige,youxiu);输出含有%的结果时要用到%%
return 0;
}
在这里小编提一下有的编译器可能会出现报错。
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. Project7 D:\cccc\Project7\Project7\c7.c 64
但是这并不影响代码的正确性。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。