王文萱


私信TA

用户名:dotcpp0633175

访问量:3591

签 名:

好的,谢谢

等  级
排  名 262
经  验 5875
参赛次数 0
文章发表 42
年  龄 20
在职情况 学生
学  校 广西科技师范学院
专  业

  自我简介:

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

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

参考代码:

数组解法入下

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

  评论区

  • «
  • »