本质上,我正在尝试编写代码,以执行从变量n的ASCII位模型到变量x的仅幅度位模型的转换。我只是假设用户仅输入三位数字作为输入。这是我到目前为止的内容:
#include <stdio.h>
main()
{
char n[10];
int x;
printf("Enter three digit, nonnegative: ");
scanf("%s" ,n);
.
.
.
printf("The number is %d\n", x);
}
任何帮助深表感谢。
编辑:仅幅值位模型:最简单的位模型用于非负整数。在这种情况下,每个位代表2的非负整数次方。位值为0表示位值为0;位值为0表示位值为0。位值为1表示位置值。通过将所有位的位值相加得出表示的数字的总值。示例:8位表示的值为19:0 + 0 + 0 + 16 + 0 + 0 + 2 + 1 = 19。
最佳答案
尽管BLUEPIXY的答案在技术上完全可以满足您的要求,但它非常复杂,而且可能不是您在任何实际程序中想要的,除非您进入了混淆的C竞赛。您可能想要更多类似的东西:
int main() {
int x;
printf("Enter three digit, nonnegative: ");
while (scanf("%d", &x) != 1 || x < 100 || x > 999) {
printf("Not a valid input, try again: ");
fflush(stdin);
}
printf("The number is %d\n", x);
return 0;
}
现在,这不同于BLUEPIXY编写并接受不同输入的内容。特别是,它允许(并忽略)空格,将忽略数字后面的多余字符,如果前导数字为0,甚至允许输入4+数字,因此最终数字以100..999结尾。如果您特别想禁止这样的输入,则需要像他写的东西。