C++ C++;字符检查给出了惊人的价值

C++ C++;字符检查给出了惊人的价值,c++,char,C++,Char,我正在尝试制作一个程序来检查和列出一些学生的性别,我是fem,我是男性。 我不确定我的代码出了什么问题,但当我打印出m和l变量时,它们要么非常大。 几个小时来一直在努力解决这个问题,非常感谢您的帮助,干杯 对不起,我的英语不好 #include<iostream> #include<string> using namespace std; main() { char gender[20]; int jlh,i,j,m,l; cin>>jlh; system

我正在尝试制作一个程序来检查和列出一些学生的性别,我是fem,我是男性。 我不确定我的代码出了什么问题,但当我打印出m和l变量时,它们要么非常大。 几个小时来一直在努力解决这个问题,非常感谢您的帮助,干杯

对不起,我的英语不好

 #include<iostream>
#include<string>
using namespace std;
main()
{
char gender[20];
int jlh,i,j,m,l;

cin>>jlh;
system("cls");
for(i=0;i<jlh;i++)
{   cout<<"Data "<<i+1<<endl;
    cout<<"Enter your gender - "<<endl;
    cin>>gender[i];
}

m,l=0;
for(i=0;i<jlh;i++){
    if(gender[i]=='p'){
        m=m+1;
    }
    else if(gender[i]=='l'){
        l=l+1;
    }
    }
    cout<<endl<<l<<endl;
    cout<<m;
 }
#包括
#包括
使用名称空间std;
main()
{
性别[20];
intjlh,i,j,m,l;
cin>>jlh;
系统(“cls”);
对于(i=0;i

m,l=0;
无法按预期工作。请查找,它计算第一个操作数(在本例中为
m
),丢弃结果,计算并返回第二个操作数。因此,仅
l
设置为零。我建议将声明移到此行,并一次性初始化变量,如下所示

int m=0, l=0;
for (int i=0; i<jlh; i++) 
  ...
endl
放在第一个变量之前和之后,但不要放在第二个变量之后。输出的最后一行之后应该有一个
endl
,否则控制台提示正好在值之后。这样做会提高可读性:

std::cout << "Number of females: " << m << std::endl; 
std::cout << "Number of males:   " << l << std::endl;
std::cout行

m,l=0;
无法按预期工作。请查找,它计算第一个操作数(在本例中为
m
),丢弃结果,计算并返回第二个操作数。因此,仅
l
设置为零。我建议将声明移到此行,并一次性初始化变量,如下所示

int m=0, l=0;
for (int i=0; i<jlh; i++) 
  ...
endl
放在第一个变量之前和之后,但不要放在第二个变量之后。输出的最后一行之后应该有一个
endl
,否则控制台提示正好在值之后。这样做会提高可读性:

std::cout << "Number of females: " << m << std::endl; 
std::cout << "Number of males:   " << l << std::endl;

std::cout开始递增前,
m
l
的值是多少?请阅读。mcve可以是以下示例:
int main(){int m;m=m+1;std::cout另外,不要害怕使用一些空格。欢迎使用堆栈溢出!请将您的代码简化为您的问题的一部分。您当前的代码包含许多与您的问题无关的内容-最小的示例通常类似于良好的单元测试:只执行一个任务,并为repr指定输入值可复制性。有些人既不是男性也不是女性在开始递增之前,
m
l
的值是多少?请阅读。mcve可以是这样的:
int main(){int m;m=m+1;std::cout另外,不要害怕使用一些空格。欢迎使用堆栈溢出!请将您的代码简化为您的问题的一部分。您当前的代码包含许多与您的问题无关的内容-最小的示例通常类似于良好的单元测试:只执行一个任务,并为repr指定输入值可复制性。有些人既不是男性也不是女性。在我更改了m,l=0;行之后,程序工作了。真不敢相信我在这个基本错误上花了几个小时。我会听取你的建议,非常感谢:)关于数组大小,我将其更改为cin>>jlh;char-gender[jlh];这也行吗?@Aldo您可能应该阅读-定义可变长度的数组是一个g++扩展。如果您想要与可变长度数组等效的东西,您一定要看看(尽管Karsten在回答中提出了一个完美的替代方案)。此外,请注意,如果答案解决了您的问题,则将其标记为已接受是礼貌的做法。在我更改了m,l=0;行之后,该程序工作正常。真不敢相信我在这个基本错误上花费了数小时。我将听取您的建议,非常感谢:)关于数组大小,我将其更改为cin>>jlh;char-gender[jlh];这也行吗?@Aldo您可能应该阅读-定义可变长度的数组是一个g++扩展。如果您想要与可变长度数组等效的东西,您一定要看看(尽管Karsten在回答中提出了一个完美的替代方案).此外,请注意,如果答案解决了您的问题,则将其标记为已接受是礼貌的做法。