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

#include<stdio.h>intmain(void){intb,t,x,c;printf("Inputaninteger:");scanf("%d",&x);c=... #include<stdio.h>
int main(void)
{
int b,t,x,c;
printf("Input an integer: ");
scanf("%d",&x);
c=0;
if(x>=0)
{
t=x%10;
while(x!=0)
{
x=x/10;
b=x%10;
t=t*10+b;
}
t=t/10;
while(t!=0)
{
printf("%d ",t%10);
t=t/10;
}
}
if(x<0)
{
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++;
if(c<=1)
printf("- ");
else printf(" ");
printf("%d",t%10);
t=t/10;
}
}
return 0;
}
展开
 我来答
德克and德华

2013-03-30 · TA获得超过2650个赞
知道小有建树答主
回答量:1207
采纳率:100%
帮助的人:630万
展开全部
#include<stdio.h>
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;
}
匿名用户
2017-12-19
引用德克and德华的回答:
#include<stdio.h>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;}
展开全部
#include<stdio.h>
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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式