有关平均年龄的计划

时间:2017-03-14 13:38:55

标签: c++

我写了一个程序,该程序应该打印男性和女性的平均年龄,但它不起作用,我不知道为什么。有谁可以帮助我?

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

感谢您的帮助。

1 个答案:

答案 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循环条件的其他部分中复制。修复它,使其按预期工作。