解题思路:先写出将一个整数转换为七进制数和九进制数的函数,分别逢九进一,逢七进一,思路为先找出不超过n的最大的最大幂,然后分别向下求对应的余数,并记录下来,对于的余数乘对于的十的幂,从而表示出对应的数。题目要求为该正整数的七进制数和九进制数均为三位数,则须先用一个循环语句从一开始,并嵌套个选择语句判断其七进制数和九进制数是否为三位数,若为三位数,要确保两个转换之后的数三位数码相反,从而再嵌套一个选择语句,实现对应功能。

注意事项:函数的调用

参考代码:

#include <stdio.h>

#include <math.h>


int nine(int n)

{

    int count = 0;

    int i = 0;

    int j = 0;

    int temp = n;


    for (i = 0; ; i++)

    {

        if (temp / 9 != 0)

        {

            temp = temp / 9;

        }

        else

        {

            break;

        }

    }


    for (j = i; j >= 0; j--)

    {

        count = n / (int)pow(9, j) + count * 10;

        n = n % (int)pow(9, j);

    }

    return count;

}


int seven(int n)

{

    int count = 0;

    int i = 0;

    int j = 0;

    int temp = n;


    for (i = 0; ; i++)

    {

        if (temp / 7 != 0)

        {

            temp = temp / 7;

        }

        else

        {

            break;

        }

    }


    for (j = i; j >= 0; j--)

    {

        count = n / (int)pow(7, j) + count * 10;

        n = n % (int)pow(7, j);

    }

    return count;


}


int main()

{

    int i = 1;

    for (i = 1;; i++)

    {

        if (nine(i) / 100 != 0 && seven(i) / 100 != 0)

        {

            if (nine(i) / 100 == seven(i) % 10 && nine(i) % 10 == seven(i) / 100 && (nine(i) % 100) / 10 == (seven(i) % 100) / 10)

            {

                printf("%d\n", i);

                printf("%d\n", seven(i));

                printf("%d\n", nine(i));

                break;

            }

        }

    }


    return 0;

}


点赞(0)
 

0.0分

1 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论