我感觉我在这里漏掉了一些非常明显的东西,但我似乎找不到我的代码问题所在。我正在尝试使用scanf来查找输入是否为整数,如果是,则查找八进制。如果它不是整数,则仅提示用户再次输入。然而,出于某种原因,我只能在相反的情况下使代码工作,即不接受整数,而接受其他任何内容。看起来应该很容易解决,但否则我就会得到无限循环。如果您能提供任何帮助,我们将不胜感激。
#include <stdio.h>
enum state {success,fail,quit};
int status = fail;
int main(void)
{
int n;
char t;
do
{
printf("Enter a number between 0 and 32767: ");
if(scanf("%d%c", &n, &t) != 2 )
status = success;
}
while (status == fail);
if (status == success)
{
int oct1, oct2, oct3, oct4, oct5;
oct1 = ((((n / 8) / 8) / 8) / 8) % 8;
oct2 = (((n / 8) / 8) / 8) % 8;
oct3 = ((n / 8) / 8) % 8;
oct4 = (n / 8) % 8;
oct5 = n % 8;
printf("In octal, your number is: %d%d%d%d%d\n", oct1, oct2, oct3, oct4, oct5);
return 0;
}
}
printf("八进制表示:%o\n", n);
? - Some programmer dude