整数的逆序输出
1.算法思路
- 利用%取余运算,根据不同进制数数据采用不同;
- 对取得余数进行逆运算(乘以刚才除数),然后加上刚才取得余数;
- 循环上一步;
2、代码如下:
// 整数的逆序输出
#include <stdio.h>
int main()
{
int x;
printf("请输入一个整数:");
scanf("%d",&x);
// x=700;
int digit;
int ret = 0;
while (x>0){
digit = x%10;
// printf("%d\n",digit);
ret = ret*10+digit;
// printf("x=%d,digit=%d,ret=%d\n",x,digit,ret);
x/=10;
}
printf("逆序数为:%d",ret);
return 0;
}
代码输出:
请输入一个整数:123456
逆序数为:654321
--------------------------------
Process exited after 5.501 seconds with return value 0
请按任意键继续. .
代码分析:主要是取余运算,和逆序输出衔接问题。
整数的顺序输出
-
算法思路
1、当整数进行顺序输出时,首先要利用除法对它的最高位进行取整,然后对余数进行再取整,依次输出最高位取整结果。
2、这个运算需要知道输入的整数是几位数的整数,然后才能参与运算。 -
代码如下:
#include<stdio.h>
int main()
{
// x=13425;
// x/10000 >1;
// x%10000 >3425;
// 10000/10 >1000;
// 3425/1000 >3;
// 3425%1000 >425;
// 1000/10 >100;
// 425/100 >4;
// 425%100 >25;
// 100/10 >10;
// 25/10 >2;
// 25%10 >5
// 10/10 >1;
// 5/1 >5;
// 5%1 >5;
// 1/10 >0;
int x;
scanf("%d",&x);
int mask=1;
int t=x;
while(t>9){
t/=10;
mask*=10;
}
printf("x=%d,mask=%d\n",x,mask);
while(mask>0){
int d=x/mask;
if(mask>0){
printf("%d ",d);
}
x%=mask;
mask/=10;
}
return 0;
}
代码输出:
70000
x=70000,mask=10000
7 0 0 0 0
--------------------------------
Process exited after 6.554 seconds with return value 0
请按任意键继续. . .
代码分析:
这里的出彩部分就是采用了 d=x/mask ;mask>0 进行了判定,没有用 x 的值作为条件循环的判断语句,可以更好的避免了边条件的输出错误问题。
while(mask>0){
int d=x/mask;
if(mask>0){
printf("%d ",d);
}
x%=mask;
mask/=10;
总结
循环的判定条件很重要,用的好可以起到优化程序使代码更加简洁的效果,在累加的计算中初始化变量一定要设置为0;累乘的计算中初始化变量为1。