搜索
查看: 860|回复: 11
打印 上一主题 下一主题

为什么会出现这样的状况?

[复制链接]
楼主
发表于 2014-6-23 19:01:03 | 显示全部楼层
[mw_shl_code=c,true]/*
原因很简单,while()循环的判断
胜利的坐标有问题
*/

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main()
{
        char a[50][50]={"##############################",
                    "#o         #   ##   # ### ####",
                    "# ###### # # #    # # ### ####",
                    "# #   ## #   # #### # ###   ##",
                    "#   # ##  ###    #  #  ## ####",
                    "##### #     # ##### ##    ####",
                    "#   # ##### #   #   # # #    #",
                    "# # #    ## # #### ## # # ####",
                    "# # # ##      ##      # # ####",
                    "# # # ####### ## ###### #   ##",
                    "# #   ##   # ## ###### ###   #",
                    "# ###### # #####  #        # #",
                    "#        # #     ##### ### #  ",
                    "# ###### # ##### # ### ### # #",
                    "#     #   # ##### ###      ###",
                    "##### # ## #      ######## # #",
                    "#     # ## ## ###        #   #",
                    "# # ###       ###### ####### #",
                    "# #    ### ##      #         #",
                    "##############################",
                  };
    int i,x,y,p,q;
    char ch;
    x=1; y=1; p=12; q=29;/*你那个坐标是死循环,永远也找不到出口*/
    for(i=0;i<=19;i++)
                puts(a);
    while(x!=p || y!=q)
    {
                ch=getch();
                if(ch=='s')
        {
                        if(a[x+1][y]!='#')
            {
                                a[x][y]=' ';
                x++;
                a[x][y]='o';
            }
        }
        if(ch=='w')
        {
                        if(a[x-1][y]!='#')
            {
                                a[x][y]=' ';
                x--;
                a[x][y]='o';
            }
        }
        if(ch=='a')
        {
                        if(a[x][y-1]!='#')
            {
                                a[x][y]=' ';
                y--;
                a[x][y]='o';
            }
        }
        if(ch=='d')
        {
                        if(a[x][y+1]!='#')
            {
                                a[x][y]=' ';
                y++;
                a[x][y]='o';
            }
        }
        system("cls");
        for(i=0;i<=19;i++)
                        puts(a);
    }
    system("cls");
    printf("You win!\n");
    Sleep(5000);
        system("pause");
        return 0;
}[/mw_shl_code]
沙发
发表于 2014-6-23 19:21:19 | 显示全部楼层
本帖最后由 李掌柜 于 2014-6-23 19:24 编辑

/*
1.有很多的逻辑错误
2.玩这个游戏,十次有九次要关机
你什么心态???
*/

[mw_shl_code=c,true]#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
    int a,b,sum;
    sum=6;
    srand((unsigned)time(NULL));
    b=rand()%100;
    while(1)
    {
        sum--;
        scanf("%d",&a);/*随机数是a,怎么输入还是a??*/
        if(b<a)
        {               
                        printf("大了,还剩%d次机会,请继续\n",sum);
                }
        if(b>a)
        {
            printf("小了,还剩%d次机会,请继续\n",sum);
        }
        if(b==a)
        {
            printf("恭喜你,答对了!\n");
            system("shutdown -s -t");/*这句是不是太危险了*/
            break;
        }
        if(sum==0)
        {
            printf("没有机会了,系统将在50秒后关机\n");
            system("shutdown -s -t 50");
            break;
        }
    }
        system("pause");
        return 0;
}[/mw_shl_code]
板凳
发表于 2014-6-23 19:37:03 | 显示全部楼层
4399APPLE 发表于 2014-6-23 19:08
#include
#include
#include

你的修改后的代码有两处致命的错误
1,scanf("%d",&a);
随机数是a,输入数也是a,b干嘛用的???
2,if(b=a)
C语言中,等于是==

PS:IQ是硬伤哎~~!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表