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;
} 展开
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;
} 展开
展开全部
#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 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;
}
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询