解题思路:先解决输出是几位数的问题,因为后面两个问题是同一个类型问题,可以一起求解

注意事项:注意题目的要求,比如1 2 3 4 5之间要有空格这个输出要求。

参考代码:

/*给出一个不多于5位的整数,

要求 :

1、求出它是几位数 

2、分别输出每一位数字 

3、按逆序输出各位数字,例如原数为321,应输出123*/ 



#include <stdio.h>

int main ()

{

int n;

int a,b,c,d,e;              //定义五个变量来储存输入的五位数的的每一位数 

int k,i;                      //定义两个变量解决第一个问题    

scanf("%d",&n);    //输入一个不高于五位数的整数n 

k=n;                     //把n的值赋给k,防止直接用n的值运算后,n的值改变,从而无法进行后面的运算 

if (k==0)            //不能把这个放在for语句后面,因为for语句循环结束后,k的值为0,这样会导致输出的i恒为一 

i=1;

for(i=0;k!=0;i++)

{

k=k/10;

}


printf("%d\n",i);  //输出第一个要求的答案 


e=n%10;                                              //个位数 12345取余10等于5  取余意思是整除后余下的数 

d=((n%100)-e)/10;                            //十位数 

c=((n%1000)-(n%100))/100;           //百位数 

b=((n%10000)-n%1000)/1000;     //千位数 

a=n/10000;                                 //万位数   整数除法,C语言里面结果等于一个整数,舍去了小数部分 


printf("%d %d %d %d %d\n",a,b,c,d,e);   //按照要求进行输出 


printf("%d%d%d%d%d",e,d,c,b,a);         //按照要求进行输出 


return 0;


点赞(0)
 

0.0分

3 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 4 条评论

santoz 3年前 回复TA
解决问题的方法很多。这样写也很有趣。但是现在这样做还不完全符合题意。因为这里你假设了输入是5位数。实际上可能输入的1-5位数。那么输出应该是按实际的数位来输出的,比如123的逆序输出应该是321,而不应该前面带32100.希望重新再完善。
000936叶素a 3年前 回复TA
其实倒序输出第一时间想到的就是递归,用递归代码体积非常小!不过你是刚入门的话,这写的也还不错。
3120000903 3年前 回复TA
可以看一下我的文章,用string的话可以很大程序提高效率。
3120000903 3年前 回复TA
这道题完全可以使用string来操作