用C语言编写,自守数

 时间:2026-02-14 07:34:56

1、打开visual C++ 6.0-文件-新建-文件-C++ Source File

用C语言编写,自守数

用C语言编写,自守数

2、定义变量和数组:

#include<stdio.h>

void main()

{

    long i, j, k1, k2, k3, a[10] ={0}, num, m, n, sum;                /*定义变量及数组为长整形*/

用C语言编写,自守数

3、输入一个数表示范围:

    printf("请输入一个数表示范围:\n");

    scanf("%ld", &num);                                  /*从键盘中输入要求的范围*/

用C语言编写,自守数

4、对该范围内的数逐个试探:

    printf("结果是:");

    for (j = 0; j < num; j++)                                /*对该范围内的数逐个试探*/

    {

        m = j;

        n = 1;

        sum = 0;

        k1 = 10;

        k2 = 1;

用C语言编写,自守数

5、判断该数的位数:

        while (m != 0)                                   /*判断该数的位数*/

        {

            a[n] = j % k1;                                   /*分离出的数存入数组中*/

            n++;                                     /*记录位数,实际位数为n-1*/

            k1 *= 10;                                    /*最小n位数*/

            m = m / 10;

        }

        k1 = k1 / 10;

        k3 = k1;

用C语言编写,自守数

6、求每一部分积之和并输出自守数:

        for (i = 1; i <= n - 1; i++)

        {

            sum += (a[i] / k2 * a[n - i]) % k1 * k2;                  /*求每一部分积之和*/

            k2 *= 10;

            k1 /= 10;

        }

        sum = sum % k3;                                  /*求和的后n-1位*/

        if (sum == j)

            printf("%5ld", sum);                             /*输出找到的自守数*/

    }

    printf("\n");

用C语言编写,自守数

7、完整的源代码:

#include<stdio.h>

void main()

{

    long i, j, k1, k2, k3, a[10] ={0}, num, m, n, sum;                /*定义变量及数组为长整形*/

    printf("请输入一个数表示范围:\n");

    scanf("%ld", &num);                                  /*从键盘中输入要求的范围*/

    printf("结果是:");

    for (j = 0; j < num; j++)                                /*对该范围内的数逐个试探*/

    {

        m = j;

        n = 1;

        sum = 0;

        k1 = 10;

        k2 = 1;

        while (m != 0)                                   /*判断该数的位数*/

        {

            a[n] = j % k1;                                   /*分离出的数存入数组中*/

            n++;                                     /*记录位数,实际位数为n-1*/

            k1 *= 10;                                    /*最小n位数*/

            m = m / 10;

        }

        k1 = k1 / 10;

        k3 = k1;

        for (i = 1; i <= n - 1; i++)

        {

            sum += (a[i] / k2 * a[n - i]) % k1 * k2;                  /*求每一部分积之和*/

            k2 *= 10;

            k1 /= 10;

        }

        sum = sum % k3;                                  /*求和的后n-1位*/

        if (sum == j)

            printf("%5ld", sum);                             /*输出找到的自守数*/

    }

    printf("\n");

}

用C语言编写,自守数

  • 怎样用Python计算一天是这一年的第几天?
  • VMware如何彻底删除虚拟机
  • 学习通如何使用邀请码
  • 快速在公司站稳的5大秘诀,职场人必看
  • 数据库的基础知识
  • 热门搜索
    厦门旅游学校 长沙小吃街哪里最出名 蜀南竹海旅游攻略 小孩拉不出屎怎么办 云水谣在哪里 重庆旅游景点介绍 南少林在哪里 潘达利亚怎么去 如何开网店 佛山有什么旅游景点