C语言考试遇难题朋友们

C语言考试遇难题朋友们

问题描述:

1可以接受任意多个同学成绩,以#为结束标志。
2学生成绩是0--100之间的实数,要求可以实现成绩输入错误(小于0大于100)时,可重新输入。
3对上述接收的成绩,进行以下统计分析,输出响应值
有效成绩个数,总成绩,平均值,最高成绩,最低成绩,不合格人数和成绩优秀的人数
4要求尽量做到友好的交互界面(有响应的输入输出提示)

代码如下,如有帮助,请帮忙采纳一下,谢谢。

img

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;
}