基础设施环境控制程序:C语言怎么把得出来的数字反过来

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/07 18:31:27
#include <stdio.h>
main()
{
long a,b=0;
printf("Input a:");
scanf("%ld",&a);

while(a!=0)
{
printf("%ld",a%10);
a=a/10;
b++;
}
printf("\n%2ld",b);
}

这断代码,如果输入1234
那他就会显示4 3 2 1
可不可以把4 3 2 1反过来显示成1 2 3 4

对于一个整数,反向取出每一位的值比较方便,每次输出个位,然后将数缩小10倍,再循环输出新数的个位。

而若要正向输出整数的每一位,还使用上面的思路就行不通了,采用递归方法是最佳的处理方式(这也是递归应用的一个经典例子):

#include <stdio.h>
void reverse( int n )
{
if ( n > 0 ) //如果n大于0
{
reverse(n/10); //先输出高位的结果
printf("%2d", n%10 ); //再输出当前的最低位
}
}
int main()
{
int n;
printf("input n: ");
scanf("%d", &n );
reverse(n);
return 0;
}

#include <stdio.h>
int main(void)
{
long a,b=0,c=0;
printf("Input a:");
scanf("%ld",&a);

while(a!=0)
{
c=c*10+a%10;
a=a/10;
b++;
}
while(c!=0)
{
printf("%ld",c%10);
c=c/10;
}
printf("\n%2ld\n",b);
return 0;
}

既然已经能输出了,把顺序反过来就可以了呵呵,用递归给你个例子:

#include <stdio.h>

long conv(long a)
{
long b = 1;
if(a>10)b+=conv(a/10);/*先求出比自己位大的位*/
printf("%d",a%10); /*再打印自己这个位*/
return b; /*返回位的个数*/
}

void main()
{
long a,b=0;
printf("Input a:");
scanf("%ld",&a);
b=conv(a);
printf("\n%2ld",b);
}