srand(time(NULL)); song_flag = rand() % song_num;
时间: 2023-04-09 13:01:57 浏览: 50
srand(time(NULL)) 会使用当前时间来初始化随机数生成器。
song_flag = rand() % song_num 会生成一个在0到song_num-1之间的随机整数,并将它赋值给song_flag。
相关问题
void except1() { time_t Time=time(NULL); drawTheGameBox(); int num_rand_1,num_rand_2,n,y=3,x=26; srand(time(NULL)); for(int i=0;i<18;i++) { gotoxy(25,y+=1); num_rand_1=rand()%4; num_rand_2=rand()%4; printf("%2d/%2d=",num_rand_1,num_rand_2); scanf("%d",&n); if(n==num_rand_1/num_rand_2) { gotoxy(65,y); n++; sorce+=10; printf("答对啦!"); gotoxy(x+=1,22); printf("★"); drawTheGameBox(); }else{ gotoxy(65,y); printf("答错啦,继续加油!"); drawTheGameBox(); } }改良上述代码并修复其中可能出现的bug
在这段代码中可能出现的 bug 有:
1. 除数可能为 0,导致程序崩溃;
2. 没有清空输入缓冲区,可能导致后续输入错误;
3. 没有处理输入非法字符的情况,可能导致程序崩溃或输出错误的结果;
4. 没有恰当地使用 srand 函数,可能导致生成的随机数不够随机。
改良代码如下:
```c
void except1() {
time_t Time = time(NULL);
drawTheGameBox();
int num_rand_1, num_rand_2, n, y = 3, x = 26;
srand((unsigned int) Time); // 使用时间作为随机数种子
for (int i = 0; i < 18; i++) {
gotoxy(25, y += 1);
num_rand_2 = rand() % 4 + 1; // 除数不为 0
num_rand_1 = rand() % (num_rand_2 * 4); // 随机生成一个小于等于 num_rand_2 * 4 的被除数
printf("%2d/%2d=", num_rand_1, num_rand_2);
fflush(stdin); // 清空输入缓冲区
while (scanf("%d", &n) != 1) { // 处理非法字符
printf("输入错误,请重新输入:");
fflush(stdin);
}
if (n == num_rand_1 / num_rand_2) {
gotoxy(65, y);
n++;
sorce += 10;
printf("答对啦!");
gotoxy(x += 1, 22);
printf("★");
drawTheGameBox();
} else {
gotoxy(65, y);
printf("答错啦,继续加油!");
drawTheGameBox();
}
}
}
```
上述改良代码解决了上述可能出现的 bug,增加了输入非法字符和随机数生成的处理,使程序更加健壮和稳定。
void add1() { Time=time(NULL); drawTheGameBox(); int num_rand_1,num_rand_2; int n,y=3,x=26; srand(time(NULL)); for(int i=0;i<18;i++) { gotoxy(25,y+=1); num_rand_1=rand()%11; num_rand_2=rand()%11; printf("%2d+%2d=",num_rand_1,num_rand_2); scanf("%d",&n); if(n==num_rand_1+num_rand_2) { gotoxy(65,y); n++; sorce+=10; printf("答对啦!"); gotoxy(x+=1,22); printf("★"); drawTheGameBox(); }else{ gotoxy(65,y); printf("答错啦,继续加油!"); drawTheGameBox(); } }如何将上述代码中num_rand_1+num_rand_2的’+’改为从‘+’,‘-’,‘*’,‘/’这四个字符中随机抽取一个输出
你可以使用rand()函数生成一个0到3的随机整数,然后根据不同的数值输出不同的运算符。例如:
```
int operator_index = rand() % 4;
char operator_char;
switch(operator_index) {
case 0:
operator_char = '+';
break;
case 1:
operator_char = '-';
break;
case 2:
operator_char = '*';
break;
case 3:
operator_char = '/';
break;
}
printf("%2d %c %2d = ", num_rand_1, operator_char, num_rand_2);
```
这样就可以实现将运算符随机抽取一个输出。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)