我想创建一个简单的程序,其中rand()
函数生成1,2,3中的随机数,并要求用户预测该数字。如果用户正确地预测了数字,那么他赢了,否则他就失去了。
这是程序 -
#include <stdio.h>
#include <stdlib.h>
int main()
{
int game;
int i;
int x;
printf("enter the expected value(0,1,2)");
scanf("%d\n",&x);
for(i=0;i<1;i++){
game=(rand()%2) + 1
if(x==game){
printf("you win!");
}
else{
printf("you loose!");
}
} return 0;
}
答案 0 :(得分:1)
从您的scanf()
中删除\n
scanf("%d\n",&x);
到
scanf("%d",&x);
并在game=(rand()%2) + 1;
之后放置分号(;)
它有效。
此处不需要您的for循环。
答案 1 :(得分:1)
您的代码存在一些问题:
第1点:
scanf("%d\n",&x);
应该是
scanf("%d",&x);
第2点:
for(i=0;i<1;i++)
这个for循环实际上无用。它只迭代一个。要么使用更长的计数器,要么摆脱循环。
第3点:
为您的PRNG提供独特的种子更好。您可能希望在函数中使用srand()
和time(NULL)
来提供该种子。
第4点:
game=(rand()%2) + 1
应该是
game = rand() % 3; // the ; maybe a typo in your case
^
|
%3 generates either of (0,1,2)
第5点:
将%
与rand()
一起使用时,请注意modulo bias issue。
注意:
main()
的推荐签名为int main(void)
。答案 2 :(得分:0)
你没有提出任何问题,但我想这是&#34;为什么我的rand()函数不起作用?&#34;
您需要添加这些行
#include <time.h>
和主函数开头的随机初始化:
srand(time(NULL));
应该给出:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand(time(NULL));
int game;
int i;
int x;
printf("enter the expected value(0,1,2)");
scanf("%d",&x);
for(i=0;i<1;i++){
game=(rand()%2) + 1;
if(x==game){
printf("you win!");
}
else{
printf("you loose!");
}
} return 0;
}
编辑:Sourav说还有其他问题