1, 给一个不多余5位的正整数,要求: ① 求出它是几位数; ② 分别输出每一位数 ③ 按逆序输出各位数字,例如原数是321,应输出123。 编程思路: 我是先判断他是几位数同时把每一位取出来,存到一个数组中,然后计算逆序输出的数,最后在输出位数,每一位,逆序输出的数; 我的代码: int main() { u32 pdata; int num,reciprocal,temp; int final[5]={0}; Stm32_Clock_Init(9); uart_init(72,115200); scanf("%d",&pdata); if(pdata>9999) { num=5; final[4]=pdata/10000; final[3]=pdata%10000/1000; final[2]=pdata%1000/100; final[1]=pdata%1000%100/10; final[0]=pdata%1000%100%10; }else if(pdata>999) { num=4; final[3]=pdata%10000/1000; final[2]=pdata%1000/100; final[1]=pdata%1000%100/10; final[0]=pdata%1000%100%10; }else if(pdata>99) { num=3; final[2]=pdata%1000/100; final[1]=pdata%1000%100/10; final[0]=pdata%1000%100%10; }else if(pdata>9) { num=2; final[1]=pdata%1000%100/10; final[0]=pdata%1000%100%10; }else if(pdata>0) { num=1; final[0]=pdata%1000%100%10; } reciprocal=final[0]*10000+final[1]*1000+final[2]*100+final[3]*10+final[4]; printf("位数:%d\n",num); printf("它的每一位如下\n"); for(temp=num-1;temp>=0;temp--) { printf("%d\n",final[temp]); } printf("逆序输出的数%d\n",reciprocal);
} 欢迎大家给出建议和指正,谢谢!
|