解题思路:一种通俗易懂易学,一种是优化后的解法 

总体思路就是简单的求位数数字的数学方法,先/后%就行
注意事项:细心就行,主要要把循环结构每一步的循环结构弄明白才行

参考代码:

数组解法入下

#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分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论