当前位置: 首页 > news >正文

C语言经典算法实例4:判断回文数

C语言经典算法实例4:判断回文数

  • 一、问题描述
  • 二、算法实例编译环境
  • 三、算法实例实现过程
    • 3.1、包含头文件
    • 3.2、声明数组,并初始化
    • 3.3、声明相关变量
    • 3.4、声明函数
    • 3.5、 函数的定义
    • 3.6、遍历数组中的数字, 进行是否是回文数的判断
  • 四、经典算法实例程序 完整代码
    • 4.1、main.h文件
    • 4.2、main.c文件
  • 五、总结

在这里插入图片描述

一、问题描述

判断回文数
问题的描述
如下几点所示

  1. “回文”是指正读反读都能读通的句子,它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。
  2. 在数学中也有这样一类数字有这样的特征,成为回文数(palindrome number)。
  3. 设n是一任意自然数,若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。
  4. 例如,若n=1234321,则称n为一回文数;但若n=1234567,则n不是回文数。
  5. 回文数就是顺着看和倒着看相同的数。
  6. 判定正整数n 的 d 进制表示 形式是否是回文数。

注意:

  1. 偶数个的数字也有回文数124421
  2. 小数没有回文数

其中,本文要使用的回文数如下功能所示。

  • 回文数就是顺着看和倒着看相同的数。
  • 判定正整数n 的 d 进制表示 形式是否是回文数。

二、算法实例编译环境

本文C语言经典算法实例的编译环境,使用的是集成开发环境:Visual Studio 2019
在这里插入图片描述

Visual Studio 2019官网链接如下

Visual Studio 2019官网链接
在这里插入图片描述

Visual Studio 2019集成的开发环境的特点有

    1. Visual Studio 2019默认安装Live Share代码协作服务。
    1. 帮助用户快速编写代码的新欢迎窗口、改进搜索功能、总体性能改进。
    1. Visual Studio IntelliCode AI帮助。
    1. 更好的Python虚拟和Conda支持。
    1. 以及对包括WinForms和WPF在内的.NET Core 3.0项目支持等。

三、算法实例实现过程

3.1、包含头文件

包含头文件 代码如下所示

#pragma once

// 包含头文件
#include <stdio.h>
#include <stdlib.h>

  • 将要用到的C语言头文件包含进来。

3.2、声明数组,并初始化

声明数组,并初始化 代码如下所示

int num[] = { 232,27,851, 12321};			// 定义输入数字变量的数组。
int scale[] = { 2,10,16 };					// 定义输入进制变量的数组。
  • 定义输入数字变量的数组num。
  • 定义输入进制变量的数组scale。

3.3、声明相关变量

声明相关变量 代码如下所示

	int i, j;           // 声明相关的变量
  • 声明相关变量i, j;

3.4、声明函数

声明函数 代码如下所示

/// <summary>
/// 判断数字n是否是输入d进制的回文数
/// </summary>
/// <param name="n">数字n</param>
/// <param name="d">d代表进制, 若d = 10 , 则数字n是十进制</param>
/// <returns>如果数字n是d进制的回文数, 则返回1</returns>
int circle(int n, int d);

  • 可以判断数字n是否是输入d进制的回文数。
  • d代表进制, 若d = 10 , 则数字n是十进制。
  • 如果数字n是d进制的回文数, 则返回1。

在这里插入图片描述

3.5、 函数的定义

函数的定义 代码如下所示

/// <summary>
/// 判断数字n是否是输入d进制的回文数
/// </summary>
/// <param name="n">数字n</param>
/// <param name="d">d代表进制, 若d = 10 , 则数字n是十进制</param>
/// <returns>如果数字n是d进制的回文数, 则返回1</returns>
int circle(int n, int d)
{
    int s = 0, m = n;

    while (m)
    {
        s = s * d + m % d;
        m /= d;
    }

    return s == n;
}
  • 对函数的声明进行定义,实现函数的具体功能。
  • 判断数字n是否是输入d进制的回文数。
  • d代表进制, 若d = 10 , 则数字n是十进制。
  • 如果数字n是d进制的回文数, 则返回1。

3.6、遍历数组中的数字, 进行是否是回文数的判断

遍历数组中的数字, 进行是否是回文数的判断 的代码如下所示。

	/// <summary>
    /// 遍历数组中的数字, 进行是否是回文数的判断
    /// </summary>
    /// <returns>无</returns>
    for (i = 0; i < sizeof(num) / sizeof(num[0]); i++)
    {
        for (j = 0; j < sizeof(scale) / sizeof(scale[0]); j++)
        {
            if (circle(num[i], scale[j]))       // 调用circle函数, 对数组中的存储的数字进行回文数的判断。
            {
                printf("%d --> (%d) 进制是回文数\n", num[i], scale[j]);
            }
            else
            {
                printf("%d --> (%d) 进制不是回文数\n", num[i], scale[j]);
            }
        }
        printf("\n");
    }
    printf("\n");
  • 遍历数组中的数字, 进行是否是回文数的判断。
  • 对数组中的数字是否是回文数进行输出。

按F5进行编译,调试结果如下所示。

在这里插入图片描述

四、经典算法实例程序 完整代码

经典算法实例程序完整代码如下所示

4.1、main.h文件

#pragma once

// 包含头文件
#include <stdio.h>
#include <stdlib.h>

int num[] = { 232,27,851, 12321};			// 定义输入数字变量的数组。
int scale[] = { 2,10,16 };					// 定义输入进制变量的数组。

/// <summary>
/// 判断数字n是否是输入d进制的回文数
/// </summary>
/// <param name="n">数字n</param>
/// <param name="d">d代表进制, 若d = 10 , 则数字n是十进制</param>
/// <returns>如果数字n是d进制的回文数, 则返回1</returns>
int circle(int n, int d);

在这里插入图片描述

4.2、main.c文件

#define _CRT_SECURE_NO_WARNINGS

#include "Main.h"


/// <summary>
/// 主函数
/// </summary>
/// <returns>返回0</returns>
int main()
{
    system("color 3E");

    
    int i, j;           // 声明相关的变量

    /// <summary>
    /// 遍历数组中的数字, 进行是否是回文数的判断
    /// </summary>
    /// <returns>无</returns>
    for (i = 0; i < sizeof(num) / sizeof(num[0]); i++)
    {
        for (j = 0; j < sizeof(scale) / sizeof(scale[0]); j++)
        {
            if (circle(num[i], scale[j]))       // 调用circle函数, 对数组中的存储的数字进行回文数的判断。
            {
                printf("%d --> (%d) 进制是回文数\n", num[i], scale[j]);
            }
            else
            {
                printf("%d --> (%d) 进制不是回文数\n", num[i], scale[j]);
            }
        }
        printf("\n");
    }
    printf("\n");

    system("pause");
    return 0;
}

/// <summary>
/// 判断数字n是否是输入d进制的回文数
/// </summary>
/// <param name="n">数字n</param>
/// <param name="d">d代表进制, 若d = 10 , 则数字n是十进制</param>
/// <returns>如果数字n是d进制的回文数, 则返回1</returns>
int circle(int n, int d)
{
    int s = 0, m = n;

    while (m)
    {
        s = s * d + m % d;
        m /= d;
    }

    return s == n;
}

在这里插入图片描述

五、总结

本文的C语言经典算法实例:求二维数组最大最小值,要实现的目标如下

  • 回文数就是顺着看和倒着看相同的数。
  • 判定正整数n 的 d 进制表示 形式是否是回文数。

在这里插入图片描述

文到这里就结束啦。
希望本文的C语言经典算法实例4:判断回文数。
能激发你对C语言以及算法学习的热爱。

  • 你们的支持是对我最大的鼓励。

相关文章:

  • 基于php+mysql的菜品食谱美食网
  • upload-labs靶场通关指南(第1-3关)
  • Android Studio 利用系统签名打包apk
  • 升级打怪课堂的题库更新了!
  • Excel·VBA数组排列函数
  • 高级程序员项目经理写好代码必备的三条基本素质;以及代码的现象和本质问题解读;
  • 猿创征文|多模态图像合成和编辑(MISE):Multimodal Image Synthesis and Editing: A Survey
  • 网络与信息安全基础知识-- Internet及应用
  • 中秋邀请共赏图数据库-蚂蚁集团图数据TuGraph 正式开源
  • GD32F303固件库开发(14)----IIC之配置OLED
  • LeetCode 0231. 2 的幂
  • 【LeetCode】螺旋矩阵旋转图像
  • 猿创征文|网络原理——UDP/TCP协议
  • 理论第七课——sort
  • PyCharm利用pydevd-pycharm实现Python远程调试
  • CAP理论的例子讲解
  • create-react-app做的留言板
  • Docker: 容器互访的三种方式
  • Facebook AccountKit 接入的坑点
  • Java IO学习笔记一
  • JavaScript DOM 10 - 滚动
  • Java的Interrupt与线程中断
  • Linux中的硬链接与软链接
  • Node + FFmpeg 实现Canvas动画导出视频
  • Python语法速览与机器学习开发环境搭建
  • rabbitmq延迟消息示例
  • unity如何实现一个固定宽度的orthagraphic相机
  • 阿里云Kubernetes容器服务上体验Knative
  • 大数据与云计算学习:数据分析(二)
  • 多线程 start 和 run 方法到底有什么区别?
  • 嵌入式文件系统
  • 使用Gradle第一次构建Java程序
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 用简单代码看卷积组块发展
  • 源码安装memcached和php memcache扩展
  • 正则与JS中的正则
  • RDS-Mysql 物理备份恢复到本地数据库上
  • ​TypeScript都不会用,也敢说会前端?
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • (06)金属布线——为半导体注入生命的连接
  • (1)常见O(n^2)排序算法解析
  • (70min)字节暑假实习二面(已挂)
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (八十八)VFL语言初步 - 实现布局
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (三) diretfbrc详解
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (转) 深度模型优化性能 调参
  • (转)详解PHP处理密码的几种方式
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .Net Core和.Net Standard直观理解
  • .Net MVC4 上传大文件,并保存表单
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性