对回文数的判断程序的一点思考

       一般情况下,都是先将数字分解成个位,十位,百位,千位等等,比方说一个n位正整数,再比较第一位与第n是否相等,第二位与第n-1位是否相等,以此类推。

在这里,我用了一个化n位数字为一个个单独的字符,然后直接比较相应的字符是否相等。直接应用函数itoa()来实现这个功能。

一. 函数itoa()简介:

itoa()为c语言的一个函数。itoa 函数是一个广泛应用的,从非标准扩展到标准的C语言。它不能被移植,因为它不是标准定义下的C语言,但是,编译器通常在一个不遵循程式标准的模式下允许其通过header ,因为它是一个从逻辑对应到标准库的函数。itoa 取整数输入值,并将其转换为相应进制数字的字符串

函数itoa()所在头文件是:

#include "stdlib.h"

函数itoa()格式:

char itoa (int value, char string, int radix)

value: 欲转换的数据(数字);

string: 目标字符串的地址;

radix: 转换后的进制数,如10进制、16进制等等。

函数itoa()功能:

把一个整数转换为字符串,例如输入正整数123456789,那么经过函数itoa(123456789, c, 10)后输出如下:

‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’

函数itoa()在VS中编译通过不了,解决方案是使用函数_itoa_s()来代替函数itoa()。

二. 在回文数判断中的应用

   #include "stdafx.h"
   #include "stdlib.h"
   #include "string.h"

void main()
{
    int i,a,cp,palindromeNumber(int x);

    do
    {
        printf("200~3000之间的回文数有:\n");
        for (i=200;i<3001;i++)
        {
            a = palindromeNumber(i); //a为回文数标识,当a=1时为回文数;当a=0时不是回文数
            if (a==1)
                printf("%d\n",i);
        }
        printf("请选择是否继续\n");
        printf("1 = 继续\n");
        printf("其他 = 退出!\n");
        scanf_s("%d",&cp);
    }while(cp==1);

}

//判断数x是否为回文数

int palindromeNumber(int x)
{
    char c[20];
    int len,i,cp;

    cp = 1;
    _itoa_s(x,c,10);  //将正数x转换成10进制的字符数组c
    len = strlen(c);
    for (i=0;i<len/2+1;i++)
    {
        if (c[i]!=c[len-1-i])
            cp = 0;
    }
    return(cp);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值