【发布时间】:2015-11-07 00:24:36
【问题描述】:
您好,我一直在为我在 C 课上的编程分配一个作业,我一直坚持的一个问题是这个。 "提示用户输入一个介于 0 和 2147483647 含,然后显示转换后的 值作为 32 位二进制数,用 1 个空格分隔 二进制值中的每个 8 位。如果号码无效 已输入(即 2147483647)” 它希望我以 32 位格式输出二进制,例如 00000000 00000000 00000000 00011111 =31,所有 0 和每组 8 之间的间距,我被卡住了。
printf("enter a valid integer between 0 and 2147483647\n");
scanf("%d",&decimal);
fflush(stdin);
if (decimal>0||decimal<2147483647)
{while (decimal!=0)
{
remainder = decimal%2;
binary=(remainder*place)+binary;
decimal=decimal/2;
place=place*10;}
printf("%d",binary);}
这种方法一直有效,直到输入超过 1000,然后它就搞砸了。也不知道为什么。
【问题讨论】:
-
通常你需要先发布你的尝试(不要担心它是错误的)。
-
而
fflushingstdin是未定义的行为。