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

    2019-09-26 01:59:21
    当年看郝斌讲解的C语言,回文数,哈哈,后续会分享我当年跟着他学习的数据结构代码 ...//技能: 求回文数的核心代码掌握 学会试数,像计算机一样去执行,别管为什么(看懂一个看不懂的程序的不二法门)...

    当年看郝斌讲解的C语言,回文数,哈哈,后续会分享我当年跟着他学习的数据结构代码

    //2013-7-21    10:54
    //功能:如何求一个回文数? (84  while用法举例)
    //知识点:c语言中除法(/)和求余(%)的用法     及while用法
    //技能: 求回文数的核心代码掌握     学会试数,像计算机一样去执行,别管为什么(看懂一个看不懂的程序的不二法门)
    
    
    /*# include <stdio.h>
    
    int main()
    {
        int val;  //val存放一个回文数
        int sum = 0;
        
        printf("please input one 回文数:\n");
        scanf("%d" , &val);
    
        
    
        while (val)
        {
            sum = sum * 10 + val % 10;
            val /= 10;
        }
        
        if(val == sum)
        {
            printf("是回文数\n");
        }
        else
        {
            printf("不是回文数\n");
        }
        
        return 0;
    } 运行结果均为:  不是回文数
     原因:  用户键入的数字存放在val中,但程序最终的val已经改变,
     所以原来键入数字逆序后的数字sum肯定不与已经改变后的val相等
     
     改正:提供一个变量m, 将键入的数字val赋值给m ,让m 去执行程序最终生成sum,
           而初次键入的数字扔存放在val里,不变
           然后两者sum,val 进行大小比较   */
    # include <stdio.h>
    
    int main()
    {
        int val;  //val存放一个回文数
        int sum = 0;
        int m;
        
        printf("please input one 回文数:\n");
        scanf("%d" , &val);
    
        m = val;  //这里千万不能写成m == val ,问题同上
        while (m)
        {
            sum = sum * 10 + m % 10;
              m/= 10;
        }
        
        if(val == sum)
        {
            printf("是回文数\n");
        }
        else
        {
            printf("不是回文数\n");
        }
        
        return 0;
    }
    
    
    //练习
    #include <stdio.h>
    int main() {
        int val;
        int fin = 0;
        int n;
        printf("请输入一个回文数:\n");
        scanf("%d",&val);
        n = val;
        while(n) {
            fin = fin * 10 + n % 10;
            n /= 10;
        }
        if(val == fin) {
            printf(val + "是回文数");
        }
        else {
            printf(val + "不是回文数");
        }
        return 0;
    }
    //练习2
    #include <stdio.h>
    void main() {
        int val;
        int fin = 0;
        int m;
        printf("请输入一个回文数:\n");
        scanf("%d", &val);
        m = val;
        while(m) {
            fin = fin * 10 + m % 10;]
            m /= 10;
        }
        if(val == fin) {
            printf(val + "是一个回文数");
        }else{
            printf(val + "不是一个回文数!");
        }
    }

     

    转载于:https://www.cnblogs.com/gqs92/p/6778246.html

    展开全文
  • 对于要判定的数n计算出其平方后(存于a),按照“回文数”的定义要将最高位与最低位、次高位与次低位……进行比较,若彼此相等则为回文数。此算法需要知道平方数的位数,再一一将每一位分解、比较,此方法对于位数...

    问题描述

    打印所有不超过n(取n<256)的其平方具有对称性质的数(也称回文数)。

     

    问题分析

    对于要判定的数n计算出其平方后(存于a),按照“回文数”的定义要将最高位与最低位、次高位与次低位……进行比较,若彼此相等则为回文数。此算法需要知道平方数的位数,再一一将每一位分解、比较,此方法对于位数已知且位数不是太多的数来说比较适用。

    此问题可借助数组来解决。将平方后的(a的)每一位进行分解,按从低位到高位的顺序依次暂存到数组中,再将数组中的元素按照下标从大到小的顺序重新将其组合成一个数众(如n=15,则a=225且k=522),若k等于n×n则可判定n为回文数。

     

    算法设计

    从低位到高位将某一整数拆分。对于一个整数(设变量名为a)无论其位数多少,若欲将最低位拆分,只需对10进行求模运算a%10,拆分次低位首先要想办法将原来的次低位作为最低位来处理;

    用原数对10求商可得到由除最低位之外的数形成的新数,且新数的最低位是原数的次低位,根据拆分最低位的方法将次低位求出a/10、a%10,对于其他位上的数算法相同。

    利用这个方法要解决的一个问题就是,什么情况下才算把所有数都拆分完?

    当拆分到只剩原数最高位时(即新数为个位数时),再对10求商的话,得到的结果肯定为0,可以通过这个条件判断是否拆分完毕。

    根据题意,应将每次拆分出来的数据存储到数组中,原数的最低位存到下标为0的位置,次低位存到下标为1的位置……依次类推。

    ————————

    程序段如下:

    for (i=0; a!=0; i++)
    
    {
    
        m[i] = a % 10;
    
        a /= 10;
    
    }

    将数组中元素重新组合成一新数。

    拆分时变量a的最高位仍然存储在数组中下标最大的位置,根据“回文数”定义,新数中数据的顺序与a中数据的顺序相反;

    所以我们按照下标从大到小的顺序分别取出数组中的元素组成新数k,由几个数字组成一个新数时只需用每一个数字乘以所在位置对应的权值然后相加即可;

    在编程过程中应该有一个变量t来存储每一位对应的权值,个位权值为1,十位权值为10,百位权值为100……,所以可以利用循环,每循环一次t的值就扩大10倍。

    对应程序段如下:

    for( ; i>0; i--)
    
    {
    
        k += m[i-l] * t;
    
        t *= 10;
    
    }
    
    ————————
    
    下面是完整的代码:
    
    #include<stdio.h>
    
    int main()
    
    {
    
        int m[16], n, i, t, count=0;
    
        long unsigned a, k;
    
        printf("No.    number    it's square(palindrome)\n");
    
        for( n=1; n<256; n++ )  /*穷举n的取值范围*/
    
        {
    
            k=0; t=1; a=n*n;  /*计算n的平方*/
    
            for( i=0; a!=0; i++ )  /*从低到高分解数a的每一位存于数组m[1]~m[16]*/
    
            {
    
                m[i] = a % 10;
    
                a /= 10;
    
            }
    
            for(; i>0; i--)
    
            {
    
                k += m[i-1] * t;  /*t记录某一位置对应的权值 */
    
                t *= 10;
    
            }
    
            if(k == n*n)
    
                printf("%2d%10d%10d\n", ++count, n, n*n);
    
        }
    
        return 0;
    
    }

     

    运行结果:

    No.    number    it's square(palindrome)
    
    1        1        1
    
    2        2        4
    
    3        3        9
    
    4        11      121
    
    5        22      484
    
    6        26      676
    
    7      101    10201
    
    8      111    12321
    
    9      121    14641
    
    10      202    40804
    
    11      212    44944

    最后,不管你是转行也好,初学也罢,进阶也可,如果你想学编程~

    【值得关注】我的 C/C++编程学习交流俱乐部 【点击进入】

    问题答疑,学习交流,技术探讨,还有超多编程资源大全,零基础的视频也超棒~

    展开全文
  • 记得刚学编程时,老师要我们用C语言编一个0~200内回文数程序。当时有不少同学都编出来了。虽然形式上大家有点不一样,但思路都差不多的。程序大致如下: #include "stdio.h" int ishui(int n) { int m=0; int...
    记得刚学编程时,老师要我们用C语言编一个求0~200内回文数的程序。当时有不少同学都编出来了。虽然形式上大家有点不一样,但思路都差不多的。程序大致如下:
    
    #include "stdio.h"
    int ishui(int n)
    {
    	int m=0;
    	int t=n;
    	while(t)
    	{
    		m=m*10+t%10;
    		t/=10;
    	}
    	return m==n;
    }
    void main()
    {
    	int i;
    	int cnt=0;
    	for(i=1;i<200;i++)
    	{
    		if(ishui(i))
    		{
    			cnt++;
    			printf("%d\n",i);
    		}		
    	}
    	printf("合计:%d个\n",cnt);
    }
    后来学了java,再做了下这个题目,发现用字符串比较的方式可以更加清晰快捷的解决这个问题。
    public class huiwen {
    	public static void main(String[] args)
    	{
    		for(int i=0;i<200;i++)
    		{
    			int k=i;
    			String str="";
    			while(k!=0)
    			{
    				int j=k%10;
    				str=str+j;
    				k=k/10;
    			}
    			String str2=""+i;
    			if(str2.endsWith(str))
    			{
    				System.out.println(str2);
    			}		
    		}
    	}
    }
    
    
    展开全文
  • 程序判断输入的数是否为回文数。 1.分析:表面上看,我们似乎要这么做,把各个位分离,然后把第一个数跟最后一个数比较,第二个跟倒数第二个....等等。注意,这样做太复杂了,回文数的条件是正序等于逆序,那么...

    所谓回文数,即是正序与逆序相等的一个数,如121,12321,10501等。写程序判断输入的数是否为回文数。

    1.分析:表面上看,我们似乎要这么做,把各个位分离,然后把第一个数跟最后一个数比较,第二个跟倒数第二个....等等。注意,这样做太复杂了,回文数的条件是正序等于逆序,那么我们为什么不把逆序的值求出来与正序值比较呢,我们已经很擅长做逆序的工作,所以我们有了这样的程序:

    #include <stdio.h>
    #include <stdlib.h>
    //判断一个数是否为回文数
    int main()
    {
        long int i;
        int pld(long int);
        printf("Input a number!\n");
        scanf("%ld",&i);
        if(pld(i))
            printf("It's a palindrome.\n");
        else
            printf("It's not a palindrome.\n");
        return 0;
    }
    int pld(long int m) //求m的逆序值并与m比较
    {
        long int temp=m;
        long int n=0;
        while(temp)     //逆序分离各位
        {
            n=n*10+temp%10; //求逆序值
            temp/=10;
        }
        return (m==n);
    }



    展开全文
  • 湖大C语言程序设计7

    2017-04-26 23:23:22
    C语言编程:一个数的各位数字倒过来...如果一个数等于它的反序数,则称它为对称数或回文数1993以内的二进制对称数 #include void main() { int i,j,k,n,a[11]={0}; for(i=1;i;i++){ n=i; k=0; while(n>0){
  • 例如:11、121、12321等,编写程序0到10000之间所有回文数并输出。要求每行输出10个数。 编程思路:汇编中esi相当于C语言中的i变量,eax相当于tmp变量,ecx相当于result变量,count用来统计回文数的个数。 开发...
  • 019 判断回文数 020 数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较整数大小 023 指向数组的指针 024 寻找指定元素的指针 025 寻找相同元素的指针 026 阿拉伯数字转换为罗马数字 ...
  • 一个5位数,判断它是不是回文数,即12321是回文数,个位与万位相同,十位与千位相同 程序分析 这个题因为只有五位数,所以做起来比较简单,我们可以直接出来这个数的各个位上面的数,然后用变量保存起来,直接...
  • 019 判断回文数 020 数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较整数大小 023 指向数组的指针 024 寻找指定元素的指针 025 寻找相同元素的指针 026 阿拉伯数字转换为罗马数字 027 字符...
  • C语言编程题

    2020-12-11 17:15:54
    2.编写程序,键盘输入一组整数(最大为18位数), 判断它是不是回文数,如果一个自然数和它的个位数字 反向排列所得自然数相等,则称这个数为回文数, 例如,52425和138831是回文数,而12312非回文数;3.编写程序,输出一个n*n...
  • 回文数:正着写和倒着写都一样的数(例:11211) 二、小算法程序: 判断一个数字是否是素数 判断一个数字是否是回文数 编程实现一个十进制数字的二进制形式 将一个数字中的奇数数字取出来形成的新数字 一个...
  • 220个经典C语言源码

    千次下载 热门讨论 2013-08-16 23:35:01
    019 判断回文数 020 数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较整数大小 023 指向数组的指针 024 寻找指定元素的指针 025 寻找相同元素的指针 026 阿拉伯数字转换为罗马数字 027 字符...
  • *2.5 在C语言中是否有模拟继承等面向对象程序设计特性的好方法? 2.6 为什么声明externf(structx*p);给我报了一个晦涩难懂的警告信息?  2.7 我遇到这样声明结构的代码:structname{intnamelen;charnamestr[1];}...
  • C语言常用算法

    2012-03-28 10:48:37
    019 判断回文数 020 数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较整数大小 023 指向数组的指针 024 寻找指定元素的指针 025 寻找相同元素的指针 026 阿拉伯数字转换为罗马数字 027 字符...
  • 220个C语言经典代码

    2016-07-06 16:10:20
    019 判断回文数 020 数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较整数大小 023 指向数组的指针 024 寻找指定元素的指针 025 寻找相同元素的指针 026 阿拉伯数字转换为罗马数字 027 字符...
  • C语言实例解析精粹

    2014-03-14 21:57:05
    019 判断回文数 020 数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较整数大小 023 指向数组的指针 024 寻找指定元素的指针 025 寻找相同元素的指针 026 阿拉伯数字转换为罗马数字 027 字符...
  • 编写一个通用函数该函数可以实现判断一个含有五位数字的整数是否是回文数回文数的含义是从左向右与从右向左看数是相同的如23732是回文数而23564则不是编写主程序调用该函数实现所有5位数字中满足条件的数的个数 #...
  • c语言编写单片机技巧

    2009-04-19 12:15:17
    此外,C语言程序具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。因此,使用C语言进行程序设计已成为软件开发的一个主流。用C语言来编写目标系统软件,会大大缩短开发周期,且...
  • C语言经典例题100道

    2011-01-10 13:14:03
    判断回文数 31.星期几猜测游戏 32.改变文本颜色 33.学习gotoxy()与clrscr()函数 34.练习函数调用 35.设置文本颜色 36.100之内的素数 37.对10个数进行排序 38.3*3矩阵对角线元素之和 39.数字插入数组重新排序 40....
  • 实例17 对数组元素排序 实例18 任意进制数的转换 实例19 判断回文数 . 实例20 数组前n个元素之和 实例21 求解钢材切割的最佳订单 实例22 通过指针比较整数大小 实例23 指向数组的指针 实例24 寻找...
  • 019 判断回文数 020 数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较整数大小 023 指向数组的指针 024 寻找指定元素的指针 025 寻找相同元素的指针 026 阿拉伯数字转换为罗马数字 027 字符...
  • C语言源代码实例.rar

    2009-08-27 20:17:58
    019 判断回文数 020 数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较整数大小 023 指向数组的指针 024 寻找指定元素的指针 025 寻找相同元素的指针 026 阿拉伯数字转换为罗马数字 027 字符...
  • C语言实例解析精粹源代码

    热门讨论 2009-09-20 03:39:01
    019 判断回文数 020 数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较整数大小 023 指向数组的指针 024 寻找指定元素的指针 025 寻找相同元素的指针 026 阿拉伯数字转换为罗马数字 027 字符...
  • 019 判断回文数 020 数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较整数大小 023 指向数组的指针 024 寻找指定元素的指针 025 寻找相同元素的指针 026 阿拉伯数字转换为罗马数字 027 字符...
  • 019 判断回文数 020 数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较整数大小 023 指向数组的指针 024 寻找指定元素的指针 025 寻找相同元素的指针 026 阿拉伯数字转换为罗马数字 027 字符...
  •  实例19 判断回文数  实例20 数组前n个元素之和   实例21 求解钢材切割的最佳订单   实例22 通过指针比较整数大小   实例23 指向数组的指针   实例24 寻找指定元素的指针   实例25 寻找...

空空如也

空空如也

1 2 3
收藏数 44
精华内容 17
关键字:

求回文数c语言程序

c语言 订阅