C++编程问题,我是初学者,程序编译没有报错,但是输入之后没反应,希望可以有人写出代码的问题在哪还

C++编程问题,我是初学者,程序编译没有报错,但是输入之后没反应,希望可以有人写出代码的问题在哪还有改正方法,代码如下:

#include <iostream>
using namespace std;
int main()
{
int a=1,c=0,b,d,e,x,y;
cout<<"玩家先输入1或者2,然后电脑和玩家轮流在原来的数字上加1或者2并输入计算后的结果,先累加到30的一方获胜。"<<endl<<"请输入 ";
cin>>d;
while(d<=30)
{
a++;
b=a;
b++;
c+=b;
c++;
if(d<c)
{
if((d/3)-((int)(d/3))!=0)
{
y=d+x;
for(x=0;e==0;x++)
{
e=(((d+x)/3)-((int)((d+x)/3)));
d+=x;
}
if(d!=30)
{
cout<<d<<endl<<"请继续输入 ";
cin>>d;
}
else
{
cout<<d<<endl<<"电脑胜利!"<<endl;
d=31;
}
else
{
cout<<"Error:输入的数过大或为0"<<endl;
d=31;
}
else
{
cout<<"Error:输入的数过大"<<endl;
d=31;
}
}
}
}
return 0;
}

你确定可以编译通过? if 和 else 都没配对, 看最后 3 个连续的 else.追问

每个else都和离它最近的if配对啊

追答

你对这句话理解错了. 同一层 (就是同一个大括号内) 的 else 必须出现在一个 if 之后, 并且没有间隔其他 else. 也就是 if 可以没有 else 配对, 但 else 必须与 if 配对.

追问

那这个应该怎么改呢⋯⋯可以加分的

追答

29 -> 1

28 -> 2

27 -> 随便 (对方不傻你必输);

26 -> 1;

25 -> 2;

24 -> 随便 (对方不傻你必输);

......

规则分析完后, 计算机按这个规则选择 1 还是 2 即可. 下面是我的实现, 为了便于你理解我没有分多个函数, 也没有对玩家输入作验证. 代码未经测试.

#include <iostream> 
using namespace std;
int main()
{
    int sum;
    cin>>sum;
    
    // 按 电脑->玩家 的顺序执行每个回合, 直到游戏结束(实际上判断条件可以改为 true 的, 即死循环. 为什么呢?)
    while (sum < 30)
    {
        // 以下为电脑选择+1还是+2
        switch (sum % 3)
        {
            case 0: sum += 1; break; // 这里可以随机选择+1还是+2. 怎么才能随机呢?
            case 1: sum += 2; break;
            case 2: sum += 1; break;
        }
        
        // 输出电脑加数后的总数
        cout<<sum<<endl;
        
        // 判断电脑是不是赢了
        if (sum >= 30)
        {
            cout<<"You Lose"<<endl;
            break;
        }
        
        // 以下为玩家输入+1还是+2
        int value;
        cin>>value;
        sum += value;
        
        
        // 输出玩家加数后的总数
        cout<<sum<<endl;
        
        // 判断玩家是不是赢了
        if (sum >= 30)
        {
            cout<<"You Win"<<endl;
            break;
        }
    }
    
    return 0;
}

追问

嗯嗯,谢谢!

温馨提示:答案为网友推荐,仅供参考
相似回答