C语言相反次序重新组合

C语言
输入有五位数也有四位数
输出只有四位数而且要倒过来
(例如:输入1234 输出4321;
输入12345 输出4321)
请问这种怎么写啊

1、如果可以以字符串的形式读入数字的话,可以将数字以字符串的形式读入字符数组,然后从字符数组第四个字符位置逆序输出;

2、如果以整数的读取输入的数字,读取整数后,则可以判断其是否为五位数,如果是的,则除以10去除个数数字,保留前四位数字,然后在逐个打印其末尾的个位数,打印后再除以10,直到其等于0.

代码如下:

#include <stdio.h>
#include <string.h>

int main(void){
    
    // 1. 以字符数组的形式 
    char chs[10];
    printf("请输入一个四位数或五位数:");
    gets(chs); // 将输入的数字以字符串的形式读入字符数组 
    
    int i;
    printf("倒序输出前四位数为:");
    // 从存储了数字的字符数组 第四个字符位置,开始逆序输出数字字符。 
    for(i=3;i>=0;i--){
        printf("%c",chs[i]);
    }
    
    
     // 2.以整数的形式 
    int num;
    printf("\n\n请输入一个四位数或五位数:");
    scanf("%d",&num);  // 以整数的形式读入数字到int变量num中 
    
    printf("倒序输出前四位数为:");
    // 从存储了数字的字符数组 第四个字符位置,开始逆序输出数字字符。 
    if(num>=10000){  //如果为五位数,则除以10,去除个位数,保留五位数的前四位 
        num/=10;
    }
    while(num!=0){  // 如果此数没有被除到0,则一直打印其个数数字,以实现逆序打印 
        printf("%d",num%10);  // 打印 此数个位数字 
        num/=10;  // 此数除以10,去除个位数字 
    }
    
    
    
    return 0;
    
} 

img

参考GPT和自己的思路:这个问题可以通过将输入的数字转为字符串,再倒序遍历字符串来实现。具体的步骤如下:

  1. 读取输入的数字,可以使用 scanf 函数。

  2. 判断该数字的位数,可以使用 log10 函数。

  3. 将数字转换为字符串,可以使用 sprintf 函数。

  4. 遍历字符串,倒序输出即可实现倒序输出。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^