整数的逆序
程序每次读入一个正整数N(N的位数小于10位),然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入70000,输出应该是7。 你是要程序吗?我给不了,但是我给你思路,你自己写一下:1. 输入数字的时候可以输入两个信息,一个是数字,一个是该数字的位数,并创建一个大小为位数的数组。
2. 假设 a = 7000, 搞个循环for,判断条件就是位数,再定义一个flag = 1做判断。
3. for里不断的进行b = a%10,将 b 存放入数组内,这样就可以做到倒叙放置。
4. 再定义for循环和flag = 0做判断,从数组里读取数,在满足 flag != 0 或者读取数不为0就将flag = 1并打印数字。这样,可以做到如10100这种数字的时候,中间的0可以打印。
思路就那样,当然效率有点低。可以把第4步的判断放入第3步,直接判断是末尾的0就不放入数组,那样,第4步可以直接打印。当然了,也可以直接第3步判断不是末尾0直接输出。动手试一下吧,加油 本帖最后由 hacker.jin 于 2017-10-24 17:48 编辑
#include <stdio.h>
long pow_10(int n);
int main()
{
long num = 0;//输入的数字
long new = 0;//处理后的数字
scanf("%ld",&num);//获取输入的数字
new=num;//先直接把输入的数字给新数字(计算数字的位数要用)
int temp = 0;//数字的位数
while(new /= 10)//计算数字的有多少位
{
temp++;
};
new = 0;//重新吧新数字归零
do{//自己理解,不解释
new += (num % 10) * pow_10(temp--);
}while(num /= 10);
printf("%d\n",new);//打印
return 0;
}
//计算10的n次方
long pow_10(int n)
{
if(n <= 0){
return 1;
}
long x = 10;
while(--n)
{
x*=10;
};
return x;
}
纯数学计算,采纳的话晚上给你弄个字符串版 hacker.jin 发表于 2017-10-24 17:13
#include
long pow_10(int n);
do{ } while 里可以直接 ( num%10 ) *pow(10, --temp); 吧?
思考了下好像不会出错,会吗?不会我就给采纳了哦! hacker.jin 发表于 2017-10-24 17:13
纯数学计算,采纳的话晚上给你弄个字符串版
{:9_232:} 丶忘却的年少o 发表于 2017-10-24 20:41
do{ } while 里可以直接 ( num%10 ) *pow(10, --temp); 吧?
思考了下好像不会出错,会吗?不会我就给采 ...
{:5_98:}我靠,我只是不想用外部库,全部自己实现而已,math。h里面有pow函数和pow10 hacker.jin 发表于 2017-10-27 09:25
我靠,我只是不想用外部库,全部自己实现而已,math。h里面有pow函数和pow10
{:10_278:}人家不知道还有pow10 丶忘却的年少o 发表于 2017-10-27 10:48
人家不知道还有pow10
{:5_100:} 字符串版木有了 hacker.jin 发表于 2017-10-27 15:33
字符串版木有了
{:10_330:}楼主表示很无奈
页:
[1]