代码如下:
#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++,对于代码上有错的和能简单化的地方,求大佬指点。