程序填空:输入一个整数,从高位开始逐位分割各位数字,如输入7358,则输出 7 3 5 8
【分析】
我们已经学习了如何用整除运算和求余运算求出一个整数number的位数、以及从低位到高位的各位数字。本题则是从高位向低位逐步分解各个数位,关键是先求出这个整数是几位数?
如果已知number是k位数,那么该整数整除10k-1,就可得到最高位的数字;然后对剩余部分除以10k-2,得到下一个数位上的数字;再对剩余部分除以10k-3,
#include <stdio.h>
void main( )
{ int i, digit, k,power, t ,number;
printf("Enter an integer:"); scanf("%d", &number); //输入整数number
if (number<0) number = -number; //如果number为负数,取其相反数
//求number的位数:k
t=number; /*line 7: 复制number到t */
k =0;
do{
k++;
? ;
}while(t!=0);
//求最高位的权重:power=10k-1
power=1;
for(i=1; ? ; i++)
power=power*10;
//从最高开始,逐位分解并输出各位数字
while( k--!=0 ){
digit = ? ; //求当前被除数的最高位数字
printf("%3d" , digit);
number = ? ; //抛弃最高位
power = ? ; //缩小权重
}
printf("\n");
}