【发布时间】:2016-08-20 21:52:48
【问题描述】:
各位程序员大家好,
我可能想问你,
我的大学有一项任务是转换十进制数字 (0-9) 到半位(nibble = 0101 ie.)限制是我们不能使用 if 语句
所以我尝试了一点,就这么远了
int main()
{
int n;
printf("type in your digit");
scanf("%d", &n );
printf("%n%n%n%n", (n/8)%2, (n/4)%2, (n/2)%2, n%2);
return 0;
}
我的问题是我不能输入一个数字,如果我这样做程序崩溃了
我真的很挣扎,不知道如何继续或让它发挥作用
你能给我一些例子来说明它是如何工作的吗 或一些好的建议如何让它发挥作用。
我会很感激的
非常感谢您的帮助和回答!
【问题讨论】:
-
%n不会像您认为的那样做。阅读printf的文档。 -
将 ascii 数字转换为 nibble 使用:
char nibble = digit - '0';'nibble' 中的结果值将在 0x00 到 0x09 的范围内。打印单个位:printf( "%i%i%i%i", ((nibble>>3)&1)+'0', ((nibble>>2)&1)+'0', ((nibble>>1)&1)+'0', (nibble&1)+'0' );