我想制作一个游戏,在该游戏中,您可以转三圈来从计算机猜测所选的数字。但是,即使您正确地设置了数字(已经使用printf语句进行了测试),它也永远不会说做得好,并且循环还会因继续或运行两次而混乱。
我尝试删除中断。 我已经输入了printf语句来检查随机性和问题是否确实存储了正确的值,并且确实如此。
# include <stdio.h>
# include <stdlib.h>
# include <math.h>
# include <time.h>
int questions() {
int num;
printf("Chose a number between one - ten: ");
scanf("%d",&num);
return num;
}
int randomise() {
int roll;
srand(time(NULL));
roll = rand()%10 + 1;
return roll;
}
int main() {
int chosenNum, enteredNum, i;
chosenNum = randomise();
enteredNum = questions();
for(i = 0; i < 10; i++) {
if(chosenNum != enteredNum) {
questions();
break;
}
else if(chosenNum == enteredNum) {
printf("WELL DONE !!!");
}
}
return 0;
}
零错误和零警告。结果应该是您对做得很好感到满意。
答案 0 :(得分:1)
有两个问题:
break
,如果第一个数字不匹配,则不允许再次尝试输入数字,并且questions()
的返回值未分配给enteredNum
(这意味着它将第二次尝试使用旧数字)。答案 1 :(得分:0)
enteredNum
从未在循环内设置。因此,除非第一次为假,否则如果为假就不可能。
改为将您的循环固定为以下内容:
for(i = 0; i < 10; i++){
if(chosenNum != enteredNum){
enteredNum = questions();
break;
}
else if(chosenNum == enteredNum){
printf("WELL DONE !!!");
}
}
答案 2 :(得分:0)
这是代码的最新更新,感谢所有帮助人员。反馈很棒!继承人代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int questions(){
int num;
printf("Chose a number between one - ten: ");
scanf("%d",&num);
return num;
}
int randomise() {
int roll;
srand(time(NULL));
roll = rand()%10 + 1;
return roll;
}
int main(){
int chosenNum, enteredNum, i;
int life = 3;
chosenNum = randomise();
enteredNum = questions();
for(i = 0; i < 2; i++){
enteredNum = questions();
if((enteredNum != chosenNum) && life > 0){
life -= 1;
if(life == 1 ){
printf("GAME OVER !!!\n");
break;
}
}
else if((chosenNum == enteredNum) && life > 0){
printf("WELL DONE !!!\n");
break;
}
}
return 0;
}