C语言编程,任意输入一个五位正整数,逆序输出每一位上的数 如输入54321 输出12345 要代码

如题所述

#include <stdio.h>

int res[5] = {};    //外部变量 , 把每一位作为数组元素进行存储
int *p = res;

int main(){
    
    int num = 12345;
    
    void ser(int);//分别输出每一位数字
    ser(num);
    printf("\n");
    
    p = res + 4;    //指针置于数组末尾
    for(int i=0; i<sizeof(res)/sizeof(res[0]); i++){    //逆序输出
        printf("%d ", *p--);
    }
    return 0;
}


void ser(int number){
    if(number > 9){
        ser(number/10);     //递归
    }
    printf("%d ", number % 10);     //顺序输出
    *p = (int)number % 10;
    p++;
}


/*
 程序的输出顺序为 10 -> 8 -> 6 -> 4 -> 2
 递归步骤解释
 1: 第一次执行ser函数,numbser = 12345判断数字大于9,将int(1234)再次执行函数  ps: (int)/(int) 结果为int
 2: 待执行ser函数后,输出结果个位数 12345 % 10 = 5
 
 3: 第二次执行ser函数....类比步骤1
 4: 待递归执行ser函数,类比步骤2,输出十位个数 1234 % 10 = 4
 
 5: 类比步骤1
 6: 类比步骤2,输出百位个数 123 % 10 = 3
 
 7: 类比步骤1
 8: 类比步骤2,输出千位 12 % 10 = 2
 
 9: 类比步骤1
 10: number值为1,不再递归,直接输出万位 1 % 10 = 1
 */

如有帮助,请点赞支持原创QVQ

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-03
#include<stdio.h>
void fun()
{
    int n,n1=0;
    scanf("%d",&n);
    while(n)
    {
        n1= n1*10+n%10;
        n=n/10;            
    }
    printf("%d\n",n1);
}
 
int main()
{
    fun();
    return 0;
}

本回答被提问者采纳
第2个回答  2014-06-25
#include<stdio.h>
int main(void)
{
int,i,a[5];
for(i=0;i<5;i++)
{
scanf("%d",a[i]);

}
for(i=4;i>=0;i--)
printf("%d",a[i]);
printf("\n");

}
第3个回答  2014-06-25
#include<stdio.h>
void main()
{
int a,b,c1,c2,c3,c4,c5;
printf('请输入一个5位以内的正整数(0~99999):');
scanf(']',&a);
c1 = a % 10;
c2 = (a - c1) % 100 / 10;
c3 = (a - c1 - c2 * 10) % 1000 / 100;
c4 = (a - c1 - c2 * 10 - c3 * 100) % 10000 / 1000;
c5 = (a - c1 - c2 * 10 - c3 * 100 - c4 * 1000) % 100000 / 10000;
if(a < 10)
b = 1;
else if(a < 100)
b = 2;
else if(a < 1000)
b = 3;
else if(a < 10000)
b = 4;
else b = 5;
switch(b)
{
case 1:
printf('%d\n',c1);
printf('%d%\n',c1);
break;
case 2:
printf('%d,%d\n',c2,c1);
printf('%d%d\n',c1,c2);
break;
case 3:
printf('%d,%d,%d\n',c3,c2,c1);
printf('%d%d%d\n',c1,c2,c3);
break;
case 4:
printf('%d,%d,%d,%d\n',c4,c3,c2,c1);
printf('%d%d%d%d\n',c1,c2,c3,c4);
break;
case 5:
printf('%d,%d,%d,%d,%d\n',c5,c4,c3,c2,c1);
printf('%d%d%d%d%d\n',c1,c2,c3,c4,c5);
break;
}
}
第4个回答  2014-06-25
复杂
相似回答