C语言------关于整数输入的正序和倒序输出

本文介绍使用C语言实现整数的正序和倒序输出的方法。倒序输出通过按位取余和循环保存实现;正序输出则采用递归方式,将整数转换为字符数组并打印。

定义一个整数类型的输入,然后让它正序输出,倒序输出相信是很多C语言初学入门一定会遇到的经典题目,下面就是我对整数的正序和倒序输出一点小小的总结.

1. 反序(倒序)输出

     反序输出常用的思路就是按位取余,把取出来的值进行循环保存

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;
}

2, 正序输出

正序输出会用在整形变量正序输出转换成对应的字符数组,或者倒过来.常用思路就是定义一个函数,在函数内递归取余调用自身,实现功能

输入 : 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;
}


在 C 语言中,让循环输出结果倒序的方法根据处理的数据类型不同有所区别,以下是几种常见情况及实现方法: ### 字符串倒序输出 ```c #include <stdio.h> #include <string.h> int main() { char a[111]; int i; gets(a); int n = strlen(a); for(i = n - 1; i >= 0; i--) printf("%c", a[i]); printf("\n"); return 0; } ``` 此代码通过 `strlen` 函数获取字符串长度,然后从字符串的最后一个字符开始向前遍历输出,从而实现字符串倒序输出 [^4]。 ### 整数倒序输出 ```c #include <stdio.h> int main() { int x; int d; scanf("%d", &x); while(x > 0) { d = x % 10; if(d == 0) { printf("0"); x = x / 10; continue; } else { printf("%d", d); } x /= 10; } return 0; } ``` 该代码通过循环对整数进行模 10 运算得到最后一位数并输出,然后将整数除以 10 继续下一次运算,直到整数为 0,实现整数倒序输出 [^3]。 ### 整数输出(两次逆,适用于数字末尾没有 0 的情况) ```c #include <stdio.h> int main() { int x; int t = 0; scanf("%d", &x); while( x > 0 ) { int d = x % 10; t = t * 10 + d; x /= 10; } x = t; while( x > 0 ) { int d = x % 10; printf("%d", d); if( x > 9 ) { printf(" "); } x /= 10; } return 0; } ``` 先将整数存储在变量 `t` 中,再对 `t` 进行逆输出,从而实现整数输出 [^2]。 ### 数组元素倒序输出 ```c #include <stdio.h> int main() { int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; for(int i = 9; i >= 0; i--) { printf("%d ", arr[i]); } return 0; } ``` 此代码通过从数组的最后一个元素开始向前遍历输出,实现数组元素的倒序输出
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值