如何仅用一个整数与putchar()输出00-99的两位数字?
解决方案:单整数实现00-99两位数字输出
嘿,这个约束条件挺有意思的!既然只能用一个整数、putchar()和stdio.h,我们可以利用整数的除法和取模运算来拆分十位和个位,结合ASCII码规则轻松实现需求。
实现代码
#include <stdio.h> int main(void) { int num; for (num = 0; num < 100; num++) { // 输出十位数字:整数除法取十位,转ASCII字符 putchar((num / 10) + '0'); // 输出个位数字:取模运算取个位,转ASCII字符 putchar((num % 10) + '0'); // 输出分隔空格(若需避免最后一个空格,可加判断num != 99) putchar(' '); } return 0; }
关键逻辑拆解
- 全程只用一个整数变量
num,从0循环到99,覆盖所有两位数字的组合。 num / 10:利用整数除法的截断特性,直接提取十位数字(比如12 / 10 = 1,5 / 10 = 0),加上'0'(对应ASCII码0x30)就转换成了字符形式的数字。num % 10:通过取模运算提取个位数字(比如12 % 10 = 2,5 % 10 = 5),同样加'0'转成字符输出。- 所有输出操作仅依赖
putchar()函数,完全符合题目限制。
如果不想最后一个数字后多一个空格,只要在输出空格前加个判断:if (num != 99) putchar(' ');就行,核心逻辑不受影响。
内容的提问来源于stack exchange,提问作者Totenkoph93
相关产品推荐
相关产品推荐

