zlh 发表于 2015-11-19 18:16:19

这个程序有bug

本帖最后由 zlh 于 2015-11-19 18:20 编辑

二话不说先上程序
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<time.h>

int l;
int qk;

void gotoxy(int x,int y)    //因为VC中没有gotoxy这个命令,所以定义一个子程序来代替他
{
    COORD coord;
    coord.X=x;
    coord.Y=y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
}

int stars()
{   
        int i;
        int j;
    int k;
        srand((unsigned)time(NULL));
        k=rand()%30+1;//bug处!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

        for(l=0;l<k;l++)
        {   
                srand((unsigned)time(NULL));
          i=rand()%60;//定义随机数
                srand((unsigned)time(NULL));
          j=rand()%60;//定义随机数
                gotoxy(i,j);
      printf("*");
                Sleep(500);
                system("cls");
        }
       
        printf("请输入看到了多少星星:");
        scanf("%d",&qk);

        if(qk == k)
        {
                printf("Bingo!答对了!\n");
                Sleep(1000);
                return 0;
        }
        else
    {
                printf("对不起,答错了.\n");
                printf("正确答案是%d",&k);
                Sleep(3000);
                return 0;
        }

    return 0;
}

int main()
{   
        int s;

        printf("这是一个数星星的游戏。\n");
        printf("请输入1进入游戏。\n");
    scanf("%d",&s);
        system("cls");

        if(s == 1)
        {
                stars();
        }
        else
        {
                printf("输入错误!");
                return 0;
        }

        return 0;
}

一个数星星的游戏,但是k值定义出来的随机数有bug,
求解决
**** Hidden Message *****

machimilk 发表于 2015-11-19 21:05:44

给你稍微改了一些

测试完美

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<time.h>

int l;
int qk;

void gotoxy(int x,int y)    //因为VC中没有gotoxy这个命令,所以定义一个子程序来代替他
{
        COORD coord;
        coord.X=x;
        coord.Y=y;
        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
}

int stars()
{   
        int i;
        int j;
        int k;
        srand((unsigned)GetTickCount());
        k=rand()%30+1;//此处无bug 取的是1-30中的随机数
       
        for(l=0;l<k;l++)
        {   
                srand((unsigned)GetTickCount());
                i=rand()%80;//定义随机数//windows控制台通常是80列*25行,你随机数取的有问题
                Sleep(1);//这样取随机数比原来的更无规律
                srand((unsigned)GetTickCount());
                j=rand()%25;//定义随机数
                gotoxy(i,j);
                printf("*");
                Sleep(500);
                system("cls");
        }

        printf("请输入看到了多少星星:");
        scanf("%d",&qk);

        if(qk == k)
        {
                printf("Bingo!答对了!\n");
                Sleep(1000);
                return 0;
        }
        else
        {
                printf("对不起,答错了.\n");
                printf("正确答案是%d",k);//这里不要&
                Sleep(3000);
                return 0;
        }

        return 0;
}

int main()
{   
        int s;

        printf("这是一个数星星的游戏。\n");
        printf("请输入1进入游戏。\n");
        scanf("%d",&s);
        system("cls");

        if(s == 1)
        {
                stars();
        }
        else
        {
                printf("输入错误!");
                return 0;
        }
        return 0;
}

zlh 发表于 2015-11-24 18:23:05

machimilk 发表于 2015-11-19 21:05
给你稍微改了一些

测试完美

谢谢,厉害
页: [1]
查看完整版本: 这个程序有bug