我用 C 撰寫了一個小游戲程式來記憶數字,但問題是我希望玩家在添加另一個數字來記憶它之前獲得 3 次成功嘗試,它作業正常,除了第一個數字需要輸入 4 次而不是 3 次。我不明白為什么這里是有問題的代碼:
if(good >= 0 && good <=3)
{
int number;
int lower=0 ;
int upper=9;
srand(time(NULL));
number = (rand() % ( upper-lower 1)) lower;
printf("%d", number );
random_digits = number;
sleep(1);
printf("\rEnter the number please :");
scanf("%d", &reponse);
if(reponse == random_digits)
{
good ;
}
else
{
printf("Do You Want to Play Again?Y/N:");
scanf(" %c" , &a);
if (a == 'Y' || a == 'y')
{
reponse = random_digits;
good=0;
}
else
{
return ;
}
}
}
因為你可以自己嘗試它總是需要 4 個好的答案才能獲得更高的數字(另一個只需要 3 個)這里是完整的代碼,所以你可以更好地理解我在說什么:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <time.h>
void main()
{
int random_digits;
int reponse;
int good=0;
char a;
do{
if(good >= 0 && good <=3)
{
int number;
int lower=0 ;
int upper=9;
srand(time(NULL));
number = (rand() % ( upper-lower 1)) lower;
printf("%d", number );
random_digits = number;
sleep(1);
printf("\rEnter the number please :");
scanf("%d", &reponse);
if(reponse == random_digits)
{
good ;
}
else
{
printf("Do You Want to Play Again?Y/N:");
scanf(" %c" , &a);
if (a == 'Y' || a == 'y')
{
reponse = random_digits;
good=0;
}
else
{
return ;
}
}
}
if(good >3 && good <7)
{
int number;
int lower=10 ;
int upper=99;
srand(time(NULL));
number = (rand() % ( upper-lower 1)) lower;
printf("%d", number );
random_digits = number;
sleep(1);
printf("\rEnter the number please :");
scanf("%d", &reponse);
if(reponse == random_digits)
{
good ;
}
else
{
printf("Do You Want to Play Again?Y/N:");
scanf(" %c" , &a);
if (a == 'Y' || a == 'y')
{
reponse = random_digits;
good=0;
}
else
{
return ;
}
}
}
if(good >6 && good <10)
{
int number;
int lower=100 ;
int upper=999;
srand(time(NULL));
number = (rand() % ( upper-lower 1)) lower;
printf("%d", number );
random_digits = number;
sleep(1);
printf("\rEnter the number please :");
scanf("%d", &reponse);
if(reponse == random_digits)
{
good ;
}
else
{
printf("Do You Want to Play Again?Y/N:");
scanf(" %c" , &a);
if (a == 'Y' || a == 'y')
{
reponse = random_digits;
good=0;
}
else
{
return ;
}
}
}
if(good >9 && good <13)
{
int number;
int lower=1000 ;
int upper=9999;
srand(time(NULL));
number = (rand() % ( upper-lower 1)) lower;
printf("%d", number );
random_digits = number;
sleep(1);
printf("\rEnter the number please :");
scanf("%d", &reponse);
if(reponse == random_digits)
{
good ;
}
else
{
printf("Do You Want to Play Again?Y/N:");
scanf(" %c" , &a);
if (a == 'Y' || a == 'y')
{
reponse = random_digits;
good=0;
}
else
{
return ;
}
}
}
if(good >12 && good <16)
{
int number;
int lower=10000 ;
int upper=99999;
srand(time(NULL));
number = (rand() % ( upper-lower 1)) lower;
printf("%d", number );
random_digits = number;
sleep(1);
printf("\rEnter the number please :");
scanf("%d", &reponse);
if(reponse == random_digits)
{
good ;
}
else
{
printf("Do You Want to Play Again?Y/N:");
scanf(" %c" , &a);
if (a == 'Y' || a == 'y')
{
reponse = random_digits;
good=0;
}
else
{
return ;
}
}
}
if(good >15 && good <19)
{
int number;
int lower=100000 ;
int upper=999999;
srand(time(NULL));
number = (rand() % ( upper-lower 1)) lower;
printf("%d", number );
random_digits = number;
sleep(1);
printf("\rEnter the number please :");
scanf("%d", &reponse);
if(reponse == random_digits)
{
good ;
}
else
{
printf("Do You Want to Play Again?Y/N:");
scanf(" %c" , &a);
if (a == 'Y' || a == 'y')
{
reponse = random_digits;
good=0;
}
else
{
return ;
}
}
}
}while(reponse == random_digits);
printf("Thanks for playing!\n");
sleep(2);
}
另一個問題是printf("Thanks for playing!\n");最后沒有出現。如果有人有更好的代碼結構,可以減少體積或視覺效果更好,我很樂意學習它。好像有一種方法可以重復 if 陳述句而不必每次都寫它?因為基本上是一樣的陳述句復制粘貼(只是值好改)
uj5u.com熱心網友回復:
這個說法:
if(good >= 0 && good <=3)
效勞于
good=0
good=1
good=2
good=3
這是 4 個值。這就是為什么你會看到它四次。
另外請不要縮進太多——這會讓閱讀變得更困難。縮進的目的是使閱讀更容易而不是更難。在我的代碼審查中,我希望編碼員在縮進時使用 2-4 個空格保持一致。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/363241.html
標籤:C
上一篇:無效的初始值設定項是什么意思?
