[英]Why does my count becomes 0 when my random number is greater than the number I write?
我為一個生成隨機數的游戲編寫了 C 代碼,用戶必須猜測正確的數字。 因此,每當我寫一個數字並且它大於隨機數時,我的代碼就會按原樣執行。 但是,當我寫一個小於隨機數的數字時,計數變量變為零,而不是將計數值減 1。我不知道我做錯了什么? 我附上了可以看到問題的輸出圖像。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
main()
{
time_t t;
int a,count=5;
srand((unsigned)time(&t));
int randomnumber=rand()%21;
printf("This is a guessing game, Only 5 tries are left\n");
printf("enter the number: ");
scanf("%d",&a);
printf(" \n");
if (a>=20){
printf("ERROR!! Enter number only between 0-20\n");
}
printf("You only have %d tries left\n",count);
printf("enter number only between 0-20: ");
scanf("%d",&a);
printf(" \n");
if (a==randomnumber){
printf("You guessed it correctly, YOU WIN!!\n");
}
else{
for(count=4;count>=1;count--)
{
if (a>randomnumber){
printf("My number is smaller than that\n");
printf("You only have %d tries left\n",(count));
printf("enter number again: ");
scanf("%d",&a);
printf(" \n");
}
}
if (a<randomnumber){
printf("My number is greater than that\n");
printf("You only have %d tries left\n",(count));
printf("enter number again: ");
scanf("%d",&a);
printf(" \n");
}
if (a==randomnumber){
printf("You guessed it correctly, YOU WIN!!\n");
}
}
if (a!=randomnumber)
{
printf("You LOOSE!!, the Number was %d",randomnumber);
}
return 0;
}
您對a < randomnumber
和a == randomnumber
的測試不在for
循環內。 因此,您只能在一直數到0
后檢查它們。
您需要將所有測試放入循環中。 您還應該使用else if
這樣您就不會檢查他們在同一次迭代中輸入的新數字(因為您還沒有減少count
)。
當他們猜到數字時,您需要跳出循環。
組織它的最簡單的方法是從if
塊中取出所有提示輸入下一個數字的代碼,因為它對於小於和大於是相同的。 if
塊只是打印錯誤的方式,並在他們獲勝時爆發。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
main()
{
time_t t;
int a,count=5;
srand((unsigned)time(&t));
int randomnumber=rand()%21;
printf("This is a guessing game, Only 5 tries are left\n");
printf("enter the number: ");
scanf("%d",&a);
printf(" \n");
if (a>=20){
printf("ERROR!! Enter number only between 0-20\n");
}
printf("You only have %d tries left\n",count);
printf("enter number only between 0-20: ");
scanf("%d",&a);
printf(" \n");
if (a==randomnumber){
printf("You guessed it correctly, YOU WIN!!\n");
}
else{
for(count=4;count>=1;count--)
{
if (a>randomnumber) {
printf("My number is smaller than that\n");
} else if (a<randomnumber) {
printf("My number is greater than that\n");
} else {
printf("You guessed it correctly, YOU WIN!!\n");
break;
}
printf("You only have %d tries left\n",(count));
printf("enter number again: ");
scanf("%d",&a);
printf(" \n");
}
}
if (a!=randomnumber)
{
printf("You LOOSE!!, the Number was %d",randomnumber);
}
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.