C语言编程 输入一个整数,从高位开始逐位分割并输出它的各位数字 没看懂过程 求大神在重要部分加点注释

2025-12-16 16:47:47
推荐回答(2个)
回答1:

#include
int main(void)
{
int b,t,x,c;
printf("Input an integer: ");
scanf("%d",&x);
c=0;
if(x>=0)//当x为正数时,假设是12345
{
t=x%10;//取出x的个位的数5,赋给t,此时t为5。对10取余取出个位的数,下面还有很多次用到
while(x!=0)
{
x=x/10;//整数除法,作用是令x向右“退”一位。此时x的值为1234。例如911/10的结果是91,把个位“去掉了”。此技术下面也有多次用到
b=x%10;//把x的个位赋给b,b为4
t=t*10+b;//t本来存放的是5,乘以10再加上b,就变成了54。然后while一直如此循环当x被“取完”时,while退出
}//while退出是t的值为543210
//printf("%d\n",t);//你可以把这行的注释去掉,看看t是多少
t=t/10;//令t向右“退”一位
while(t!=0)
{
printf("%d ",t%10);//不断地取出t的个位,并输出
t=t/10;//不断地令t向右“退”一位
}//这个循环可令t从个位到最高位的数字逐个输出
}
if(x<0)//当x为负数
{
x=-x;//先把x转换为它的相反数,然后下面的过程和正数的几乎一模一样
t=x%10;
while(x!=0)
{
x=x/10;
b=x%10;
t=t*10+b;
}
t=t/10;
while(t!=0)
{
c++;//c记录当前的位数
if(c<=1)
printf("- ");//如果c小于等于1,则说明刚刚开始,要先输出一个负号
else printf(" ");//如果c大于1,则要加空格,以分隔各数字
printf("%d",t%10);
t=t/10;
}
}
return 0;
}

回答2:

#include
int main(void)
{
int x,a,b,t;
scanf("%d",&x);
while(x<0)
x=-x;
if(x>0){
a=x%10;
while(x!=0){
x=x/10;
b=x%10;
a=a*10+b;}}
a=a/10;
while(a!=0){
t=a%10;
printf("%3d",t);
a=a/10;}
return 0;
}