如果用户输入了#Color
,C
,Y
字符中的任意一个,则此代码编程为打印M
。但是,如果用户输入W
,B
,G
,则该程序会打印出#Black&White
。不幸的是,我的代码跳过我的第一个for循环并直接打印#Black&White
,我做错了什么?
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<char>colors;
int row, column, letters = 0;
cin>>row, column;
letters = row * column;
for(int i = 0; i < letters; i++)
{
char temp;
cin>>temp;
colors.push_back(temp);
}
for(int j = 0; j < letters; j++)
{
if(colors[j] == 'C' || colors[j] == 'Y' || colors[j] == 'M')
{
cout<<"#color"<<endl;
return 0;
}
}
cout<<"#Black&White"<<endl;
return 0;
}
答案 0 :(得分:2)
行cin>>row, column;
中有两个表达式逗号分隔它们,column
在这种情况下是无用的表达式。
您可能意味着cin >> row >> column;
column
未经初始化使用。如果恰好采用值0
,则第一个循环的主体永远不会执行。请注意,以这种方式使用未初始化的变量可能会导致未定义的行为。