《C程序设计》(夏宝岚) [相关] [048] 整数各位的分离(由低位到高位)7.18 编写递归函数,以5位宽度左对齐的格式顺序输出正整数n中的每一位数字。例如,输入620857,则输出 6 2 0 8 5 7 。#include <stdio.h> void digit(long n){ long w; if (n >= 10) { w = n / 10; digit(w); } printf("%-5d", n % 10);}void main(){ long x; scanf("%ld", &x); digit(x);}运行结果(VC):=============================620857↙6 2 0 8 5 7 =============================★ 输出部分,书上用的是 printf("%-5c", n % 10 + '0'); 即用字符格式输出的。在练习循环结构时,曾经写过倒序输出一个整数中的每一位数字([048] 整数各位的分离(由低位到高位))。算法很容易实现,而正序输出就不那么简单了,但是由上面这个例子可看出,使用递归实现正序输出,算法却相当简单,在digit函数中,语句printf("%-5c", n % 10 + '0'); 每次输出n的个位数字,将它放在了递归调用之后,这就实现了正整数n反过来从高位至低位输出之目的。

评论