C语言-逆序输出

Python025

C语言-逆序输出,第1张

①要求

将正整数或负整数

个位开始逆序输出。

涉及三个变量,

n是原数,

m用于储存提取的个位数,

y用于储存重新组合的逆序数。

②定义函数

#include<stdio.h>

int fun(int n)

{int m,y} ;

/*给y赋初值,组合数在组合之前为0。*/

y=0

/*给m赋初值,将原数n的绝对值赋值给m。

我试了,也可以直接m=n,删除y=(n>=0)?y:-y,结果一样有负号,绝对值具体还有什么用,等待大神解答。*/

if(n>=0)m=n

else m=-n

/*当m不为0时,循环继续。

当m为0时,即提取到只剩一位数时,m=m/10=0,循环结束。*/

while(m!=0)

{y=y*10+m%10

/*提取个位:m%10。

已经提取个位升为十位:y乘10。

逆序组合数:y。*/

m=m/10}

/*降位提取个位:m/10

不断除10取整,屏蔽个位;

不断将十位降为个位,再提取;

直到只剩一位数,循环结束。*/

y=(n>=0)?y:-y

/*将负数的负号恢复。*/

return y

}

③主函数

{int m1,m2

scanf("%d%d",&m1,&m2)

printf("%d的逆序是%d\t",m1,fun(m1))

printf("%d的逆序是%d\t",m2,fun(m2))

return 0

}

④思路整理

1.输入原数:n

2.求绝对值:m=|n|

3.提取个位:m%10

4.逆序组合:y=y*10+m%10

5.高位降位:m/10

6.恢复负号:y=(n>=0)?y:-y

C语言输入一个正整数n,将其逆序输出:

#include<stdio.h>

#include<stdlib.h>

int main(){

int a

while(scanf("%d",&a)!= EOF){

while(a>0){

printf("%d",a%10)

a = a/10

}

printf("\n")

}

return 0

}

运行结果如下:

扩展资料:

算法:

首先判断输入的正整数的位数,(例如1000=n<9999)

然后输出m(注意,C语言里方括号是取整运算符号)

//因为是整型运算,其实方括号可以省去

m=[n/1000]//【取出千位】

n-=1000*[n/1000]//【n只剩下三位】

m+=10*[n/100]//【取出百位】

n-=100*[n/100]// 【n剩下两位】

m+=100*[n/10]+1000*(n-[n/10])//【取出十位】

printf("d%",m)

int main()

{

int i=12345//定义一个12345的整数

int temp=0//temp作为存储的值

while(i!=0){

temp = temp*10 + i%10

i/=10

}  //反序取出来

printf("%d",temp)//打印

return 0

}

扩展资料:

反之正序输出

输入 : 12345

输出 :"12345"

char str(int x)

{

char a[100]//存放整数转换过来的字符

int i   //计数

if(x/10!=0)

str(x/10)

if(x>=0)

a[i]='0'+x%10  //整数转换成字符存储,字符都是以整数形式存储

else

a[i]='0'+(-x)%10//整形包括负数

printf("%c",a[i++])

}

int main()

{

int i

printf("请输入一个整数:\n")

scanf("%d",&i)

str(i)

return 0

}