【发布时间】:2014-08-06 20:55:49
【问题描述】:
我是一名 C 编程初学者,并试图在这里编写一个原始数字猜谜游戏。 (我保证这不是学校作业)。但是由于我在尝试完成整个功能时遇到了一些麻烦,我想也许我需要一点帮助。所以基本上我已经完成了这个程序的主要猜测部分:告诉用户他的猜测太高或太低或者是正确的答案。但是,如果用户输入了一些无效值,如字符或小数(他们应该只输入 1-100 的整数),我的程序只会提示用户猜测超出范围并自动循环此消息直到猜测次数用完了。我检查了我的代码,但无法弄清楚。如果有人可以给我一个线程,我将不胜感激! 代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_NUMBER 100
int main(void) {
int randNum;
srand((int)time(0));
randNum = rand() % 100 + 1;
long guessNum;
char guessStr[80];
guessNum = atoi(guessStr);
int count = 0;
do {
printf("\nplz enter a guess from integer 1 to 100: %d", randNum);
scanf("%ld", &guessNum);
if (guessNum < randNum && guessNum >= 1) {
printf("your guess is lower than the selected number");
count++;
printf("\nyou have %d times left to try", 100 - count);
}
if (guessNum > randNum && guessNum <= 100) {
printf("your guess is higher than the selected number");
count++;
printf("\nyou have %d times left to try", 100 - count);
}
if (guessNum < 1 || guessNum > 100) {
printf("your guess is out of the range, plz pick between 1-100");
count++;
printf("\nyou have %d times left to try", 100 - count);
}
if (guessNum == randNum) {
printf("congrats you got the right answer");
count++;
printf("\nyou used %d times to make the right guess", count);
}
} while (count < MAX_NUMBER);
printf("\nthe guess time is used out!");
return 0;
}
【问题讨论】:
-
你应该检查
scanf的返回值——它会告诉你是否输入了一个有效的整数。 -
这绝对是错误的:
guessNum = atoi(guessStr); -
如果猜对了,你应该做点什么让你退出循环或程序。
-
@DrewMcGowen 感谢您的提示!我不知道我们能做到这一点:)
标签: c error-handling do-while