精华内容
下载资源
问答
  • C语言如何判断回文数

    2021-04-04 22:45:43
    关于如何用C语言判断回文数? 1.什么是回文数? 答:所谓回文数就是一个数字倒着写和正着写相等。 举例:111,121,1221,12321… 2.怎么判断一个数字是不是回文数呢? 答:我们需要一个简单的算法,但是用到这个...

    关于如何用C语言判断回文数?

    1.什么是回文数?
    答:所谓回文数就是一个数字倒着写和正着写相等。
    举例:111,121,1221,12321…

    2.怎么判断一个数字是不是回文数呢?

    答:我们需要一个简单的算法,但是用到这个算法之前我们需要知道一个数字被取余是保留后面的数字,一个数被除则是砍掉后面的数字。

    思路:我们要让输入的数字从逆序的保留一遍然后用保留的这个数字和输入的数字进行比较如果一样则是回文数,反之不是回文数。

    具体程序如下:

    #include<stdio.h>
    int main(void)
    {
    	int i,j,k=0;
    	printf("please input number:");
    	scanf("%d",&i);
    	j=i;
    	while(j)
    	{
    		k=k*10+j%10;
    		j/=10;
    	}
    	if(k==i)
    	printf("%d是回文数!",i);
    	else
    	printf("%d不是回文数!",i);
    	return 0;
    }
    

    看完代码可能还不理解代码的总体作用
    需要验证一遍:

    /*
    	假定输入的数字是121;
    	第一次循环:k:0=0*10+121%10 = 1;
    				j:121/=10 = 12;
    				
    	因为j!=0
    	进行第二次循环判断: 
    	k:1=1*10+12%10 = 12;
    	j:12/=10 = 1;
    	
    	j!=0
    	进行第三次循环判断:
    	k:12*10+1%10 = 121;
    	 
    	k==i;
    	则判断输入的数字是回文数;
    	程序结束 
    */
    

    **

    展开全文
  • c语言判断回文数

    2020-03-10 21:05:35
    所谓回文数,即顺读与逆读相同的整数。 如292、10301均为回文数, 编写一个程序判断输入的一个整数是否是回文数。 输入样例: 10301 234 输出样例: 10301是回文数 234不是回文数 #include<stdio.h> int main...

    回文数

    所谓回文数,即顺读与逆读相同的整数。
    如292、10301均为回文数,
    编写一个程序判断输入的一个整数是否是回文数。 输入样例:
    10301
    234 输出样例:
    10301是回文数
    234不是回文数

    #include<stdio.h>
    int main()
    {

    int n;
    while(scanf("%d",&n)!=EOF) //读入数据,并进行多次循环
    {
    int a=n; //保留初始数据为a
    int m=0; //m为逆序数
    // 计算逆序数
    do{
    m *= 10;
    m = m + n%10;
    }while((n/=10)!=0);
    if(m==a) //如果逆序数与原始数据相同
    {
    printf("%d是回文数\n",a); //则判定是回文数
    }
    else //否则不是
    printf("%d不是回文数\n",a);
    }
    return 0;
    }

    展开全文
  • C语言判断回文数

    万次阅读 2019-03-23 14:24:31
    判断一个数是否为回文数,回文数就是它的数字反向排列所得的自然数与它的本身是相等的,比如,若n=12321,则称它是一个回文数。:程序利用到一个数位遍历的for循环,将输入的数字进行反向排列,再与原输入的数字进行...

    判断一个数是否为回文数,回文数就是它的数字反向排列所得的自然数与它的本身是相等的,比如,若n=12321,则称它是一个回文数。:程序利用到一个数位遍历的for循环,将输入的数字进行反向排列,再与原输入的数字进行比较,如果相等则为回文数。代码如下:

    #define _CRT_SECURE_NO_WARNINGS 1
    #include<stdio.h>
    #include<stdlib.h>
    int main()
    {
    	int n;
    	int i;
    	int tmp;
    	int sum = 0;
    	printf("输入一个数:\n");
    	scanf("%d", &n);
    	for (i = n; i; i /= 10)//数位遍历
    	{
    		tmp = i % 10;
    		sum = sum * 10 + tmp;
    	}
    	printf("%d\n", sum);
    	if (sum == n)
    	{
    		printf("这个数是回文数。\n");
    	}
    	else
    		printf("这个数不是回文数。\n");
    	system("pause");
    	return 0;
    }

    代码显示为:

     

    展开全文
  • 今天,看一位学长的博客《递归的力量》,受到的启发还是很多的,以前写递归程序,从来都没有好好想过,这里为什么要用到递归,以及什么样的情况要用到递归。引用他博文中的一句话,也是思考的一个方式:可以用递归...

    今天,看一位学长的博客《递归的力量》,受到的启发还是很多的,以前写递归程序,从来都没有好好想过,这里为什么要用到递归,以及什么样的情况要用到递归。引用他博文中的一句话,也是思考的一个方式:可以用递归实现的场景要满足两个条件:

          第一:这个问题是否可以分解为形式相同但规模更小的问题?
          第二:如果存在这样一种分解,那么这种分解是否存在一种简单情境?

          有一个例子是用递归判断一个回文序列,回文大家都知道就是类似abba 或者abcba这样的序列,判断回文的基本思想也就是首尾字符是相同的,由于他的对称性,那么可以得知,这各串是可分解的。那么有没有一种简单可终止的情况,那就是剩下最后一个字符或者没有字符的情况了,接下来就可以按照递归的思路写这个程序了。

          然后,我自己就写了一下按照递归实现判断一个字符串是否是一个回文序列的C程序,写的过程中发现了以前曾今专门研究的问题,自己在这上面犯错误也真的是非常的惭愧。。。

    #include<stdio.h>
     2 #include<stdlib.h>
     3 
     4 /*程序接受两个参数 param1 字符串  param2 字符串长度*/
     5 int is_palindrome(char* para_str , int len);
     6 
     7 int main(int argc , char* argv[])
     8 {
     9         int n = atol(argv[2]);  /*C标准库函数,转换字符串为long int*/
    10         if(is_palindrome(argv[1],n))
    11         printf("this string is palindrome !\n");
    12     return 0;
    13 }
    14 
    15 int is_palindrome(char* para_str , int len)
    16 {
    17         printf("Length: %d \n",len);
    18         printf("%c ----- %c\n",para_str[0],para_str[len-1]);
    19         if(len == 0 || len == 1)
    20         return 1;
    21         else
    22         return((para_str[0] == para_str[len-1]) ? is_palindrome(++para_str,len-2) : 0);
    23         /*这里更正了学长的一个小错误,参数应该是len-2*/
    24 }
     看学长的代码时发现了一个错误就是,参数的问题,应该是len-2,事实上每次是剪掉首尾的,然而当程序第一次执行的时候,结果是这个样子的

    也就是说第一次递归后,字符指针并没有向后移动,于是乎。。。

    我仔细的看这句代码,一遍一遍又一遍。。

    return((para_str[0] == para_str[len-1]) ? is_palindrome(para_str++,len-2) : 0);

         终于发现了那个问题就是++操作符,以前在《C和指针》上曾经理解过 i++ 和 ++i的区别,++是右结合的操作符,i++的执行过程是先获得i的一份拷贝,然后执行+1操作。注意这个拷贝地址是未知的,所以千万不要把i++或者++i来当做左值L-Value来使用。这种赋值当然是不合法的。

         但是这还没完,其实这个是个编程习惯的问题,习惯了*str++这样的移动指针操作,在这里也惯性的这么写了,其实最好的风格应该是

    return((para_str[0] == para_str[len-1]) ? is_palindrome(para_str+1,len-2) : 0);
     因为这里实际上传递的是一个参数。以前网上有朋友说+1和++的区别,当然最大的区别就是前者不改变自身,更像一个“值”。。。。
     这个问题并不是什么非常值得研究的东西,很小很小,但却是自己一直在犯的各种小错误,与各位共勉~
     附上执行成功后的截图


    展开全文
  • 例如65456是回文数,即该数的个位和万位相同,十位个千位相同。
  • 判断一个数是否为回文数。设n 是一任意自然数,若将n 的各位数字反向排列所得自然数n1 与n 相等,则称n 为一回文数。例如若n=1234321, 则称n 为回文数。 【输入形式】 一个正整数m,m的值在int型的取值范围内...
  • C语言编程判断输入是不是回文数

    千次阅读 2019-03-03 20:32:01
    问题描述:输入一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 问题分析:学会分解出每一位数即可。 程序源码: #include&lt;stdio.h&gt; int main( ) { long ge,...
  • C语言判断回文数及字符串

    千次阅读 2015-04-23 13:01:36
    首先什么是回文数? “回文”是指正读反读都能读通的句子,设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。例如,若n=1234321,则称n为一回文数;但若n=1234567,则n不是回文数...
  • * 题目:判断一个五位数是不是回文数 * 程序分析:回文数例:12321 , 如何取出每一位数? */ #include int main(int argc, char *argv[]) { int n, a, b, c, d, e; printf("Input:\n"); scanf("%d", &n); a...
  • //题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 #include<stdio.h> int main() { int n,i,flag=0,str[5]; scanf("%d",&n); int tmp=n; for(i=1;i<=...
  • C语言初级例题回文数

    2016-11-11 17:16:39
    一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 1.程序分析: 学会分解出每一位数。 2.程序源代码: main( ) { long ge,shi,qian,wan,x; scanf(“%ld”,&x); wan=x/...
  • 若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。 例如,若n=1234321,则称n为一回文数;但若n=1234567,则n不是回文数。 注意:1.偶数个的数字也有回文数124421 2.小数没有回文数 输入: 121 输出:...
  • 程序判断输入的数是否为回文数。 1.分析:表面上看,我们似乎要这么做,把各个位分离,然后把第一个数跟最后一个数比较,第二个跟倒数第二个....等等。注意,这样做太复杂了,回文数的条件是正序等于逆序,那么...
  • 例题:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 代码如下: /*程序分析:先分解出每一位数,再逐渐分解另外4位数*/ #include "stdio.h" main( ) { long ge,shi,qian,wan...
  • 【问题描述】 若将 n 的各位数字反向排列所得的自然数n1与 n相等, 则称n为...编写两个函数,一个用于判断n是不是回文数,一个用于判断n是不是平方数,main函数调用这两个函数找出1000内的回文平方数。 【输入形式...
  • 一个5位数,判断它是不是回文数,即12321是回文数,个位与万位相同,十位与千位相同 程序分析 这个题因为只有五位数,所以做起来比较简单,我们可以直接求出来这个数的各个位上面的数,然后用变量保存起来,直接...
  • 使用C语言编写程序 判断一个数是否为回文数。(ps:回文数也是一个数字,数字的特点是正反序是同一个数字,如12321,3443就是回文数)。要判断该数字是否为回文数,可以通过模除得到该数的反序数字,进行比较是否相等...
  • 无意中发现了一个巨牛巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,小白...题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。  1.程序分析:同...
  • 从键盘输入一个正整数(位数小于或等于10),判断其是否为回文数(回文数是将自然数n 的各位数字反向排列得到自然数n1,若n1与n相等,则称n为回文数,例如:12321) 程序代码如下: #include <stdio.h> #include...
  • C语言程序设计(30)

    2017-05-29 14:46:30
    题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。  1.程序分析:同29例 2.程序源代码: #include "stdio.h" main( ) { long ge,shi,qian,wan,x; scanf("%ld",&x)...
  • 问题:已知一个范围,...明白了什么是回文数,现在要考虑如何判断一个数字是回文数。 我的想法: 1.既然正读反读一样是它的定义,那么,假设输入的数字是number,我利用取余和取整循环着从后向前取出它的每一位,将...

空空如也

空空如也

1 2 3 4
收藏数 69
精华内容 27
关键字:

判断回文数c语言程序

c语言 订阅