C++中利用for循环嵌套if语句和swith循环来计算班级中及格人数总分数的平均分

代码如下:

#include <iostream>
using namespace std;
int main()
{
    int i, num, y = 0 ,b=0; //y为及格人数 i为执行的次数 num为班级总人数 
    float score, x=0, p; //x为及格分数的总和,p为平均数,score为分数。
    cout << "请输入班级总人数" << endl;
    cin >> num;
    for (i = 1; i <= num; i++)
    {
        cout << "请输入分数:" << endl;
        cin >> score;
        if (score >= 60 && score <= 100)
        {
            x = x + score;
            y = y + 1;
            continue;
        }
         else if (score >= 0 && score < 60)
        {
            b = b + 1;
            continue;
        }
         else
        {
            cout << "输入值有问题,请重输:" << endl;
            i = i - 1;
            continue;
        }
    }
    p = x / y;
    switch (y)
    {
        case 0: cout << "全部不及格" << endl;
        break;
        default:cout << "及格人数的平均分为:" << p << endl;
        break;
    }
    cout << "不及格的人数为:" <<b<< endl;
    return 0;
}

代码运行:

 

这里发现最后得出的平均分小数点后的位数太多,选择#include <iomanip>

iomanip头文件的作用:十进制向其他进制转换、实现头部字符填充、规定小数点位数

并在输出时添加ixed<<setprecision(1) 规定小数点位数为1

代码:

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    int i, num, y = 0 ,b=0; //y为及格人数 i为执行的次数 num为班级总人数 
    float score, x=0, p; //x为及格分数的总和,p为平均数,score为分数。
    cout << "请输入班级总人数" << endl;
    cin >> num;
    for (i = 1; i <= num; i++)
    {
        cout << "请输入分数:" << endl;
        cin >> score;
        if (score >= 60 && score <= 100)
        {
            x = x + score;
            y = y + 1;
            continue;
        }
         else if (score >= 0 && score < 60)
        {
            b = b + 1;
            continue;
        }
         else
        {
            cout << "输入值有问题,请重输:" << endl;
            i = i - 1;
            continue;
        }
    }
    p = x / y;
    switch (y)
    {
        case 0: cout << "全部不及格" << endl;
        break;
        default:cout<<fixed<<setprecision(1) << "及格人数的平均分为:" << p << endl;
        break;
    }
    cout << "不及格的人数为:" <<b<< endl;
    return 0;
}

代码运行:

以上就是我利用for循环嵌套if语句和switch循环实现计算班级中及格人数总分数的平均分,我只是初学C++,对于代码上有错的和能简单化的地方,求大佬指点。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值