我正在尝试编写为彩票生成三位数的数字的程序,而用户输入三位数的数字。
但是我没有得到正确的结果。
h1=rand() % 10;
int h2=rand() % 10;
int h3=rand() % 10;
cout<<"Enter three digite number\n";
cin>>n1>>n2>>n3;
if(n1==h1&&n2==h2&&n3==h3)
cout<<"you win 10.000 award\n";
else
if(n1==h1||n1==h2||n1==h3&&n2==h1||n2==h2||n2==h3&&n3==h1||n3==h2||n3==h3)
cout<<"you win 3,000\n";
else
if(n1==h1||n1==h2||n1==h3||n2==h1||n2==h2||n2==h3||n3==h1||n3==h2||n3==h3)
cout<<"you win 1,000\n";
else
cout<<"you don't win anything sorry\n";
最佳答案
如果块不正确,则在第二和第三个测试条件中。
if(n1==h1||n1==h2||n1==h3&&n2==h1||n2==h2||n2==h3&&n3==h1||n3==h2||n3==h3)
在这种测试条件下,存在许多问题。
看到这两个问题,最好重新设计逻辑,因为这会使第三块的 Action 变得多余。您的第三个程序段将以某种输入组合运行,而不是您期望的操作
我认为编码程序逻辑的一种更好的方法是分别比较每个字符并为找到的匹配数维护一个计数器。
int c=0, win;
if(n1==h1||n1==h2||n1==h3) c++;
if(n2==h1||n2==h2||n2==h3) c++;
if(n3==h1||n3==h2||n3==h3) c++;
if(c==3)
{
//Check order of digits
if(n1==h1&&n2==h2&&n3==h3) win = 10000;
else win=3000 //All digits same but not in order
}
else if(c==2)
win=3000
else if(c==1)
win=1000
else
win=0
if(win) cout<<"You win "<<win<<"\n";
else cout<<"you dont win anything\n";