解题思路:一种通俗易懂易学,一种是优化后的解法
总体思路就是简单的求位数数字的数学方法,先/后%就行
注意事项:细心就行,主要要把循环结构每一步的循环结构弄明白才行
参考代码:
数组解法入下
#include <stdio.h>
#include <string.h> //C语言字符串头文件,strlen() 函数包含在此内
int main()
{
char str[10];
scanf("%s", str);
int len = strlen(str); //获取字符串长度
printf("%d\n", len);
for (int i = 0; i < len; i++)
{
printf("%c ", str[i]);
}
printf("\n");
for (int i = len - 1; i >= 0; i--)
{
printf("%c", str[i]);
}
return 0;
}
第一种简单易学的解法:
#include<stdio.h>
int main()
{
int a,b,c,d,e;
int i,x,flag=0;
scanf("%d", &x);
for (i = 1; i < 100000; i = i * 10)
if (x / i != 0)
flag=flag+1;
if (flag == 5)
{
a = x / 10000;
b = x / 1000 % 10;
c = x / 100 % 10;
d = x / 10 % 10;
e = x % 10;
printf("%d\n",flag);
printf("%d %d %d %d %d\n",a,b,c,d,e);
printf("%d%d%d%d%d",e,d,c,b,a);
}
if (flag == 4)
{
b = x / 1000 % 10;
c = x / 100 % 10;
d = x / 10 % 10;
e = x % 10;
printf("%d\n",flag);
printf("%d %d %d %d\n",b,c,d,e);
printf("%d%d%d%d",e,d,c,b);
}
if (flag == 3)
{
c = x / 100 % 10;
d = x / 10 % 10;
e = x % 10;
printf("%d\n",flag);
printf("%d %d %d\n",c,d,e);
printf("%d%d%d",e,d,c);
}
if (flag == 2)
{
d = x / 10 % 10;
e = x % 10;
printf("%d\n",flag);
printf("%d %d\n",d,e);
printf("%d%d",e,d);
}
if (flag == 1)
{
e = x % 10;
printf("%d\n",flag);
printf("%d\n",e);
printf("%d",e);
}
return 0;
}
优化后的解法:
#include <stdio.h>
#include <math.h> //C语言数学头文件,pow() 函数包含在此内
int main() {
int num;
scanf("%d", &num);
int n = 0;
if (num == 0) n = 1;
int temp = num; //定义 temp 来代替 num 进行计算
while (temp) { //将temp循环除以 10,到 0 为止
n++;
temp /= 10;
}
printf("%d\n", n);
for (int i = n - 1; i >= 0; i--)
{
temp = num / pow(10, i); //除以 10 的 i 次方
printf("%d ", temp % 10); //输出对 10 取余
}
printf("\n"); //输出回车
for (int i = 0; i < n; i++)
{
temp = num / pow(10, i);
printf("%d", temp % 10);
}
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复