【发布时间】:2017-03-15 13:31:01
【问题描述】:
我希望用户输入 2 位二进制数。除非我输入诸如“0”或“1”之类的值,否则下面的示例工作正常。根据定义,0 和 1 不是 2 位二进制,但程序将 01 视为 1,因此它从 while 循环中退出。我该如何解决?基本上,我怎样才能让电脑区分01和1?
int n_bin;
while(n_bin!=01 && n_bin!=00 && n_bin!=10&&n_bin!=11) {;
printf("Your entered number is %d\n Please enter a 2-digit binary number! \n",n_bin);
scanf("%d",&n_bin);
}
我可以使用char,但是我不能使用数组。
【问题讨论】:
-
我认为
strtol(string, &endptr, 2)会从字符串转换为二进制数。 -
如果您使用的是
int,则无法区分。您必须保存到char数组(即字符串),并对其进行操作以获得您想要的。 -
使用
switchcase 处理会更好。 -
我可以使用 char,但是我不能使用数组。但由于 char 仅采用第一个元素,因此例如 01 将存储为 48(ASCII of 0)
-
如果你不能使用数组,你可能不得不使用 2 个不在数组中的
chars(例如:char c1, c2; scanf("%c%c", &c1, &c2);)。因为,同样,使用 int 无法区分 1 和 01。
标签: c