我希望能够请求输入0到1之间的4位数字,但当我进行测试时,尽管输入了1001或其他数字,它仍然要求我进入屏幕。
#include <stdio.h>
int main(void) {
int n,n1,n2,n3,mod0,mod1,mod2,mod3;
do {//1025
printf("Ingresar un numero de 4 digitos: "); scanf("%d",&n);
n1 = n/10; //<- 102
mod0 = n%10; // <- mod 5
n2 = n1/10; // <- 10
mod1 = n1%10; // <- mod 2
n3 = n2/10; // <- 1
mod2 = n2%10; // <- 0
mod3 = n3%10; // 1
if ((mod3 != 1 || mod3 != 0) && ( mod2 !=1 || mod2 != 0) && (mod1 != 1 || mod1 != 0) && (mod0 !=1 || mod0 != 0)){
printf("Ingresar digitos binariosn");
}
}while((mod3 != 1 || mod3 != 0) && ( mod2 !=1 || mod2 != 0) && (mod1 != 1 || mod1 != 0) && (mod0 !=1 || mod0 != 0));
return 0;
}
由于循环中有scanf
,所以它一直在请求数字。将printf("Ingresar un numero de 4 digitos: "); scanf("%d",&n);
置于do-white循环之上将解决您的问题。
此外,您应该查看循环的条件。循环到n == 0
不是更容易吗?
示例:
- n=1025,mod=0
- 而n!=0:
- mod=n%10(等于5(
- n=n/10(制造102(
- 检查mod是0还是1
- 重复下一个数字
在本例中,您将从n中分离出最后一个数字,并检查它是0还是1。
编辑:这个链接解释了我想用这个例子展示的内容。您应该检查数字是0还是1,而不是打印数字。