一个试卷分析系统,需要统计最低分最高分平均分,还有各个分数段的人数占比,但是代码没问题,运行不出来
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
printf("请输入学生数量:");
scanf("%d", &n);
int* scores = (int*)malloc(n * sizeof(int)); // 动态分配数组空间
if (scores == NULL) // 判断是否分配成功
{
printf("内存分配失败!\n");
return -1;
}
// 输入
printf("请输入%d个学生成绩:\n", n);
for (int i = 0; i < n; i++)
{
scanf("%d", &scores[i]);
}
// 计算最高分、最低分和平均分
int max = scores[0], min = scores[0], sum = 0;
for (int i = 0; i < n; i++)
{
if (scores[i] > max)
{
max = scores[i];
}
if (scores[i] < min)
{
min = scores[i];
}
sum += scores[i];
}
float average = (float)sum / n;
// 统计各个分数段占比人数
int a = 0, b = 0, c = 0, d = 0, e = 0; // 分别为90~100, 80~89, 70~79, 60~69, 0~59
for (int i = 0; i < n; i++)
{
if (scores[i] >= 90 && scores[i] <= 100)
{
a++;
}
else if (scores[i] >= 80 && scores[i] <= 89)
{
b++;
}
else if (scores[i] >= 70 && scores[i] <= 79)
{
c++;
}
else if (scores[i] >= 60 && scores[i] <= 69)
{
d++;
}
else
{
e++;
}
}
float ratio_a = (float)a / n; // 计算比例
float ratio_b = (float)b / n;
float ratio_c = (float)c / n;
float ratio_d = (float)d / n;
float ratio_e = (float)e / n;
// 输出结果
printf("最高分:%d", max);
printf("最低分:%d", min);
printf("平均分:%.2f", average);
printf("90~100分段人数占比:%.2f%%\n", ratio_a * 100);
printf("80~89分段人数占比:%.2f%%\n", ratio_b * 100);
printf("70~79分段人数占比:%.2f%%\n", ratio_c * 100);
printf("60~69分段人数占比:%.2f%%\n", ratio_d * 100);
printf("0~59分段人数占比:%.2f%%\n", ratio_e * 100);
free(scores); // 释放动态分配的内存空间
return 0;
}
把成绩打印出来,看成绩的内容本身是不是对的!
不知道你这个问题是否已经解决, 如果还没有解决的话:#include <stdio.h>
int main()
{
char ch;
scanf("%c",&ch);
ch=(ch>='A'&&ch<='Z')?(ch+32):ch;
printf("%c\n",ch);
return 0;
}
运行的结果如下: