我正在尝试制作一个
的程序这是我的代码:
#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循环中的程序。我找到了一个函数,如果一个键在键盘buffer(kbhit)
中,它将返回一个非NULL值,但我不知道这怎么可以让我跳出两个循环。
(抱歉,我的草率代码。Kbhit
和usleep
不在常用的C库中,但它适用于lcc
。)
答案 0 :(得分:3)
return
可行。
index_x = 100, index_y = 100; break;
方法A:
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;
}
}
答案 1 :(得分:1)
您可以更改Randomnumber()
以返回值:“中断”可能为1; 0表示成功。
然后main中的循环变为
for (...) {
if (Randomnumber() != 0) {break;}
...
}
(另请注意,您需要()
来实际从main调用该函数。
声明返回类型和参数是很好的做法,即使它们只是(void)。 默认的返回类型是1978年)