我写了一个程序,该程序应该打印男性和女性的平均年龄,但它不起作用,我不知道为什么。有谁可以帮助我?
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
int CountM,CountF,TotM,TotF,i,QP,Age;
float MediaM;
float MediaF;
char Sex[100];
CountM=0;
CountF=0;
TotF=0;
TotM=0;
QP=0;
cout<<"How many people do you want to analyze?"<<endl;
cin>>QP;
for(i=0;QP<i;i++)
{
cout<<"Enter Person sex "<<i+1<<endl;
cin>>Sex[i];
while((Sex[i] != 'M' || Sex[i] != 'm') && (Sex[i] != 'F' || Sex[i] != 'f')){
cout<<"The entered sex is invalid,enter M o F"<<endl;
cin>>Sex[i];}
cout<<"How many years?"<<endl;
cin>>Age;
if(Sex[i] == 'M' || Sex[i] == 'm'){
CountM++;
TotM=TotM+Age;}
else {
CountF++;
TotF=TotF+Age; }
}
MediaM=TotM/CountM;
MediaF=TotF/CountF;
cout<<"The average age of males is"<<MediaM<<endl;
cout<<"The average age of females is"<<MediaF<<endl;
return 0;
}
感谢您的帮助。
答案 0 :(得分:0)
for (i = 0; QP < i; i++)
此行有逻辑错误;你希望你的for循环运行QP
次。因此,您应该将for-loop标头更改为:
for (i = 0; i < QP; i++)
另一件事:你的while循环条件逻辑不正确:
while((Sex[i] != 'M' || Sex[i] != 'm') && (Sex[i] != 'F' || Sex[i] != 'f'))
在这里,如果我们看到Sex[i] != 'M' || Sex[i] != 'm'
,这将永远是真的,因为即使Sex[i]
是&#39; M&#39;它也不能是&#39; m&#39;在同一时间,因此你将得到假的或者为真,这将导致while循环条件为真,而不是伪造,正如你想要输入正确的输入所希望的那样。
因此将您的for循环条件更改为:
Sex[i] != 'M' && Sex[i] != 'm'
此错误会在while循环条件的其他部分中复制。修复它,使其按预期工作。