FS


私信TA

用户名:FSRMSQCK

访问量:737

签 名:

等  级
排  名 6492
经  验 1411
参赛次数 0
文章发表 2
年  龄 20
在职情况 学生
学  校 太原学院
专  业

  自我简介:

TA的其他文章


解题思路:使用数组和数学函数

注意事项:程序中多次使用输入的数字和数字的位数,因此注意不要改变这两个值。

注意数组f[i]是从f[0]开始的。
参考代码:

#include<stdio.h>

#include<math.h>

int main()

{

    int a, b, m, n=0;

    int f[10],i;//引用数组

    scanf_s("%d", &a);//输入一个10位以下的数字

    m = a;//避免将a的值改变

    while (m)

    {

        m/=10;

        n++;//将数字的位数累加

    }

    printf("%d\n", n);//输出数字的位数

    m = a;//重新为m赋值

    b = n;//避免将n的值改变

    while (n)

    {

        for (i=0;i<b;i++,n--)

        {

            f[i] = m / pow(10, n-1);//将数字的每一位数字按顺序为数组f[i]赋值,注意数组f[i]是从f[0]开始的

            m = m - f[i] * pow(10, n-1);

            if (n == 1)

                printf("%d\n", f[i]);//最后一位数字没有空格

            else

            printf("%d ", f[i]);//按顺序输出每位的数字

        }

    }//此时i的值为数字的位数

    for (; i > 0; i--)

        printf("%d", f[i-1]);//将数组反向输出,即将数字反向输出,如1234反向为4321

    return 0;

}


 

0.0分

3 人评分

  评论区

可以,简单易学。
2021-03-21 16:33:37
  • «
  • 1
  • »