C语言考试遇难题朋友们
问题描述:
1可以接受任意多个同学成绩,以#为结束标志。
2学生成绩是0--100之间的实数,要求可以实现成绩输入错误(小于0大于100)时,可重新输入。
3对上述接收的成绩,进行以下统计分析,输出响应值
有效成绩个数,总成绩,平均值,最高成绩,最低成绩,不合格人数和成绩优秀的人数
4要求尽量做到友好的交互界面(有响应的输入输出提示)
答
代码如下,如有帮助,请帮忙采纳一下,谢谢。
C代码:
#include <stdio.h>
int main()
{
double score,sum = 0;
int nTotal = 0,nYouxiao = 0,nBujige = 0,nYouxiu=0;
double maxScore=0,minScore=0;
while(1)
{
printf("请输入成绩:");
if(scanf("%lf",&score) == EOF)
{
break;
}
if(score < 0 || score > 100)
{
printf("请输入0-100之间的数,");
nTotal++;
continue;
}
nYouxiao++;
sum += score;
if(score>=90) nYouxiu++;
if(score < 60) nBujige++;
if(nYouxiao == 1)
{
maxScore = score;
minScore = score;
}else
{
if(score > maxScore) maxScore = score;
if(score < minScore) minScore = score;
}
if( getchar() == '#') break;
}
printf("有效成绩个数:%d\n", nYouxiao);
printf("总成绩:%g\n",sum);
printf("平均成绩:%g\n", sum/nYouxiao);
printf("最高成绩:%g\n", maxScore);
printf( "最低成绩:%g\n",minScore);
printf( "不合格人数:%d\n", nBujige);
printf( "成绩优秀的人数:%d", nYouxiu);
return 0;
}
C++代码:
#include <iostream>
using namespace std;
int main()
{
double score,sum = 0;
int nTotal = 0,nYouxiao = 0,nBujige = 0,nYouxiu=0;
double maxScore=0,minScore=0;
while(1)
{
cout << "请输入成绩:";
cin >> score;
if(cin.fail())
{
cin.clear();
cin.sync();
break;
}
if(score < 0 || score > 100)
{
cout << "请输入0-100之间的数,";
nTotal++;
continue;
}
nYouxiao++;
sum += score;
if(score>=90) nYouxiu++;
if(score < 60) nBujige++;
if(nYouxiao == 1)
{
maxScore = score;
minScore = score;
}else
{
if(score > maxScore) maxScore = score;
if(score < minScore) minScore = score;
}
if( cin.get() == '#') break;
}
cout << "有效成绩个数:" << nYouxiao<<endl;
cout << "总成绩:" << sum<<endl;
cout << "平均成绩:" << sum/nYouxiao<<endl;
cout << "最高成绩:" << maxScore<<endl;
cout << "最低成绩:" << minScore<<endl;
cout << "不合格人数:"<< nBujige<<endl;
cout << "成绩优秀的人数:" << nYouxiu << endl;
return 0;
}