-1

我正在尝试制作一个程序

  1. 显示我的文字 1 秒钟,然后自行清除
  2. 打印一个 8*8 的随机数块 100000 次(移动数字装饰)然后
  3. 当我按下一个键时退出。

这是我的代码:

#include stdio;
#include stdlib;
main() {
    printf("Welcome to random number V2.0");
    usleep(1000);
    printf("\033[2J\033[1;1H");
    printf("Press X to terminate at any time");
    usleep(1000);
    printf("\033[2J\033[1;1H");
    printf("Program starting");
    usleep(500);
    printf("\033[2J\033[1;1H");
    for(index=0;index<100000;index++) {
        Randomnumber;
        printf("%s". matrix)
        usleep(5);
        printf("\033[2J\033[1;1H");
        usleep(5);

    }

    Randomnumber() {
        int matrix[9][9];
        int index_x;
        int index_y;
        int index;
        for (index_x=0;index_x<9;index_x++) {
            for (index_y=0;index_y<9;index_y++) {
                /*randomizer code goes here, till change ran# statement*/
                matrix [index_x][index_y] = ran
#;
            }
        }
    }

如您所见,我需要一种在 for 循环中停止程序的方法。我找到了一个函数,如果键盘上有一个键,它会返回一个非 NULL 值buffer(kbhit),但我不明白这怎么能让我跳出两个循环。(对不起我草率的代码。Kbhit并且usleep不在通常的 C 库中,但它适用于lcc.)

4

2 回答 2

3

return会工作。

也会index_x = 100, index_y = 100; break;


方法一:

Randomnumber() 
{
    int matrix[9][9], x, y;
    for (x=0;  x<9;  ++x)
        for (y=0;  y<9;  ++y)
        {
            matrix [x][y] = rand();
            if (some condition which means we're done)
                 x = 100, y = 100;
        }
}

方法B:

Randomnumber() 
{
    int matrix[9][9], x, y;
    for (x=0;  x<9;  ++x)
        for (y=0;  y<9;  ++y)
        {
            matrix [x][y] = rand();
            if (some condition which means we're done)
                 return;
        }
}
于 2012-10-12T15:24:43.653 回答
1

您可以更改Randomnumber()以返回一个值:“中断”可能为 1;0 表示成功。

然后 main 中的循环变为

 for (...) {
   if (Randomnumber() != 0) {break;}
   ...
 }

(另请注意,您需要 a()来实际从 main 调用函数。声明返回类型和参数是一种很好的做法,即使它们只是 (void)。 默认返回类型是 1978

于 2012-10-12T15:32:23.210 回答