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

    万次阅读 2018-09-23 20:28:28
    题目:因为要对所有1000以内的整数进行判断,所以此处适合用循环结构语句;又因为要判断是否为素数以及判断是否为回文素数,所以一定会用到选择结构语句。此案例综合了本章这两个重要的知识点,请灵活运用学过的知识...

    题目:因为要对所有1000以内的整数进行判断,所以此处适合用循环结构语句;又因为要判断是否为素数以及判断是否为回文素数,所以一定会用到选择结构语句。此案例综合了本章这两个重要的知识点,请灵活运用学过的知识解决此案例。

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    
    int main(int argc, char *argv[])
    {
    	for (size_t i = 1; i < 1000; i++)
    	{
    		int count = 1;
    		for (size_t j = 2; j < i; j++)
    		{
    			if (i % j == 0) //素数
    			{
    				count = 0;
    			}
    		}
    		if (i < 100 && count && i/10 == i%10)
    		{
    			printf("%d\n", i);
    		}
    		else if (i > 100 && count && i / 100 == i % 10)
    		{
    			printf("%d\n", i);
    		}
    	}
    
    	system("pause");
    	return 0;
    }
    1. 求素数的方法:使用内层循环变量取模外层循环变量。如果能够整除,说明不是素数。注意,内层循环变量大于1并小于外层循环变量(素数只能被1和它本身整除)。
    2. 求回文的方法:分两位数、三位数分别求回文。
    展开全文
  • C语言判断回文数的几种方法。

    千次阅读 多人点赞 2020-04-21 19:25:54
    下面说几种判断回文的方法。 方法一 通过字符串数组来判断回文 思路:使用两个数组,将整数转换成字符串,然后反着赋值给另一个数组,对比原数组和新数组是否一样。如果一样就是回文,反之不是。(这种方法有点沙雕...
    回文数:正读倒读都一样的整数。
    回文字符串:指从左到右读和从右到左读完全相同的字符串。
    

    下面说几种判断回文的方法。

    方法一 通过字符串数组来判断回文
    思路:使用两个数组,将整数转换成字符串,然后反着赋值给另一个数组,对比原数组和新数组是否一样。如果一样就是回文,反之不是。(这种方法有点沙雕而且局限性好大我感觉!!!)

    (只能用来判断18位以内的整数!!!)

    #define _CRT_SECURE_NO_WARNINGS //这一句是避免C99错误的 vs2019使用scanf会报错c99
    #include<string.h>
    #include<stdio.h>
    void main()
    {
    	char str[19];//定义字符数组str用存放输入的值。(最多判断18位,多了下标越界异常)。最后一个要存放结束符'\0'
    	char fanstr[19];//定义字符数组fanstr用来存放翻转的值。
    	long long int a = 0;//用一个变量a来存放输入的数据
    	printf("请输入一串整数用来判断是否是回文\n");
    	scanf("%lld", &a);//longlong int是范围9223372036854775807(19位)为了防止数值越界,我们前面定义数组只用18位
    	sprintf(str, "%lld", a);//sprintf()/将a转为字符串输入到str中 ,printf()格式化输出的屏幕,sprint()是格式化输出到指定的地方。
    	int n = strlen(str);//strlen 用来统计字符串的长度,遇到"\0"结束。
      //printf("%s", str);//(这一步用来调试的,可以看到str里已经有了刚刚输入的字符串。
    	fanstr[n] = '\0';//为fanstr在最后添加一个字符串结束符。
    
    	for (int i = 0, j = n - 1; i < n; i++, j--)
    	{
    		fanstr[j] = str[i]; //开始反转赋值
    	}
    	//	printf("%s", fanstr); //这句话是打印看一下啊赋值结果对不对
    	 //开始对比原数组和反转后的数组是否一样。
    	//这里可以用for循环来进行判断,也可以使用一个strstrcmp函数来进行判断。
    	if (strcmp(fanstr, str) == 0)
    		printf("%s是回文", str);
    	else
    		printf("%s不是回文", str);
    
    
    
    }
    

    改进版: 可以判断字符串和整数
    既然是输入,那直接可以用一个gets来接收所输入的字符啊,这样貌似可以不用区别是输入的是整数还是字符。

    void main()
    {
    	char str[999];//定义字符数组str用存放输入的字符串。
    	char fanstr[999];//定义字符数组fanstr用来存放翻转的字符串。
    	printf("请输入一串字符用来判断是否是回文\n");
    	gets(str);
    	int n = strlen(str);//strlen 用来统计字符串的长度,遇到"\0"结束。
    //	printf("%s", str);//(这一步用来调试的,可以看到str里已经有了刚刚输入的字符串。
    	fanstr[n] = '\0';//为fanstr在最后添加一个字符串结束符。
    	for (int i = 0, j = n - 1; i < n; i++, j--)
    	{
    		fanstr[j] = str[i]; //开始反转赋值
    	}
    	//	printf("%s", fanstr); //这句话是打印看一下啊赋值结果对不对
    	 //开始对比原数组和反转后的数组是否一样。
    	//这里可以用for循环来进行判断,也可以使用一个strstrcmp函数来进行判断。
    	if (strcmp(fanstr, str) == 0)
    		printf("%s是回文", str);
    	else
    		printf("%s不是回文", str);
    }
    

    方法二:(只能用来确定整数)
    任何一个数除以10的余数就是该数最后一位
    任何一个数除以10的商就是排除掉最后一位后的数
    新数=新数*10+余数
    经过循环后,我们得到新数
    如果是回文,那么新数应该等于原数,否则不是回文
    假如有一个数字121

    第一轮循环:
    sum=0*10+121%10=1
    temp=121/10=12
    第二轮循环
    sum=1*10+12%10=12
    temp=12/10=1
    第三轮循环
    sum=12*10+1%10=121
    temp=1/10=0
    第四轮循环判断
    temp=0 退出循环
    最后判断 121=121是回文
    
    若有个数字是123
    第一轮循环:
    sum=0*10+123%10=3
    temp=123/10=12
    第二轮循环:
    sum=3*10+12%10=32
    temp=12/10=1
    第三轮循环:
    sum=32*10+1%10=321
    temp=1/10=0
    第四轮循环判断
    temp=0退出循环
    321!=123不是回文
    
    void main() {
    	int num, temp, sum = 0; 
    	printf("请输入一个数\n");
    	scanf("%d", &num);
    	temp = num;
    	
    	while (temp != 0) { 
    		sum = sum * 10 + temp % 10;    
    		temp= temp / 10;				  
    	}
    	if (sum == num&&num>0)  //新数和原数相等并且原数不为负数的时候才为回文
    	{
    		printf("%d是回文\n", num);
    	}
    	else
    	{
    		printf("%d不是回文!\n", num);
    	}
    }
    
    

    说到这里,突然又想来试试看看能不能把回文数打印出来,我要打印100-1000的回文数。

    打印回文数

    void main() {
    	int num, temp; int sum = 0;
    
    	for (num = 101; num < 1000; num++) {//通过循环来赋初值
    		temp = num;
    		//每判断一个数之后 sum一定要回初始值,不然第一个101判断完了102就变成了101*10+2就是错的了。
    		//这个问题,我还是通过单步调试找出来的,哎要是笔试就蒙了
    		sum = 0;
    		while (temp != 0)
    		{
    			sum = sum * 10 + temp % 10;
    			temp = temp / 10;
    		}
    		if (sum == num && num > 0)
    		{
    			printf("%d\n", num);
    		}
    	}
    
    }
    

    我也是只是一个初学者,若有问题,请大家指出!

    展开全文
  • 原标题:C语言回文素数代码及解析问题描述所谓回文素数指的是,对一个整数n从左向右和从右向左读其数值都相同且n为素数,则称整数回文素数。对于偶数位的整数,除了11以外,都不存在回文素数。即所有的4位整数、...

    原标题:C语言求回文素数代码及解析

    问题描述

    所谓回文素数指的是,对一个整数n从左向右和从右向左读其数值都相同且n为素数,则称整数为回文素数。

    对于偶数位的整数,除了11以外,都不存在回文素数。即所有的4位整数、6位整数、 8位整数…都不存在回文素数。下面列出两位和三位整数中包含的所有回文素数。

    两位回文素数:11

    三位回文素数:101、131、151、181、191、313、353、373、383、727、757、787、 797、 919、 929

    本题要求解的问题是:求出所有不超过1000的回文素数。

    问题分析

    本题要使用判断素数的方法,并且要解决如何求一个整数的回文数。

    采用的方法是穷举法。对1000以内的每一个整数n进行考察,判断n是否为回文数。如果n是回文数,再判断它是否为素数,对于既是回文数也是素数的整数n,就是要求的回文素数,将其打印输出即可。

    由于题目要求解的是所有不超过1000的回文素数,因此最后的结果中应该包含两位和三位的回文数。

    采用穷举法来构造一个整数并求与其对应的反序数,若整数与其反序数相等,则该整数是回文数。

    算法设计

    在问题分析中己经确定要采用穷举法逐一考察1000以内的每个整数,因此本题的算法设计可以釆用循环结构来完成。

    通过三重循环来遍历所有1000以内的整数。用三个循环变量来构造整数n,同时,这三个循环变量反序便可以构造出n的反序数m。其中,特别要注意的是如果n的个位为0,接下来要做的就是比较m和n的值是否相等,如果相等,则表明整数n是回文数。再来判断n是否是素数,如果n同时也为素数,则n为回文素数,将其打印出来即可。

    下面是完整的代码:

    #include

    int fun(int n);

    int main()

    {

    int i, j, k, n, m;

    printf("不超过1000的回文数:n");

    for(i=0; i<=9; ++i) /*穷举第一位*/

    for(j=0; j<=9; ++j) /*穷举第二位*/

    for(k=0; k<=9; ++k) /*穷举第三位*/

    {

    n=i*100+j*10+k; /*计算组成的整数*/

    m=k*100+j*10+i; /*计算对应的反序数*/

    if(i==0 && j==0) /*处理整数的前两位为0的情况*/

    {

    m=m/100;

    }

    else if(i==0) /*处理整数的第一位为0的情况*/

    {

    m=m/10;

    }

    if(n>10 && n==m && fun(n)) /*若大于10且为回文素数,则输出*/

    {

    printf("%dt", n);

    }

    }

    printf("n");

    return 0;

    }

    /*判断参数n是否为素数*/

    int fun(int n)

    {

    int i;

    for(i=2; i

    {

    if(n%i == 0)

    return 0;

    }

    return 1;

    }

    运行结果:

    不超过1000的回文数:

    11 101 131 151 181 191 313 353 373 383 727 757 787 797 919 929

    Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

    本文永久更新链接地址:https://www.linuxidc.com/Linux/2018-11/155555.htm返回搜狐,查看更多

    责任编辑:

    展开全文
  • 问题描述所谓回文素数指的是,对一个整数n从左向右和从右向左读其数值都相同且n为素数,则称整数回文素数。对于偶数位的整数,除了11以外,都不存在回文素数。即所有的4位整数、6位整数、 8位整数…都不存在回文...

    问题描述

    所谓回文素数指的是,对一个整数n从左向右和从右向左读其数值都相同且n为素数,则称整数为回文素数。

    对于偶数位的整数,除了11以外,都不存在回文素数。即所有的4位整数、6位整数、 8位整数…都不存在回文素数。下面列出两位和三位整数中包含的所有回文素数。

    两位回文素数:11

    三位回文素数:101、131、151、181、191、313、353、373、383、727、757、787、 797、 919、 929

    本题要求解的问题是:求出所有不超过1000的回文素数。

    问题分析

    本题要使用判断素数的方法,并且要解决如何求一个整数的回文数。

    采用的方法是穷举法。对1000以内的每一个整数n进行考察,判断n是否为回文数。如果n是回文数,再判断它是否为素数,对于既是回文数也是素数的整数n,就是要求的回文素数,将其打印输出即可。

    由于题目要求解的是所有不超过1000的回文素数,因此最后的结果中应该包含两位和三位的回文数。

    采用穷举法来构造一个整数并求与其对应的反序数,若整数与其反序数相等,则该整数是回文数。

    算法设计

    在问题分析中己经确定要采用穷举法逐一考察1000以内的每个整数,因此本题的算法设计可以釆用循环结构来完成。

    通过三重循环来遍历所有1000以内的整数。用三个循环变量来构造整数n,同时,这三个循环变量反序便可以构造出n的反序数m。其中,特别要注意的是如果n的个位为0,接下来要做的就是比较m和n的值是否相等,如果相等,则表明整数n是回文数。再来判断n是否是素数,如果n同时也为素数,则n为回文素数,将其打印出来即可。

    下面是完整的代码:

    #include

    int fun(int n);

    int main()

    {

    int i, j, k, n, m;

    printf("不超过1000的回文数:\n");

    for(i=0; i<=9; ++i) /*穷举第一位*/

    for(j=0; j<=9; ++j) /*穷举第二位*/

    for(k=0; k<=9; ++k) /*穷举第三位*/

    {

    n=i*100+j*10+k; /*计算组成的整数*/

    m=k*100+j*10+i; /*计算对应的反序数*/

    if(i==0 && j==0) /*处理整数的前两位为0的情况*/

    {

    m=m/100;

    }

    else if(i==0) /*处理整数的第一位为0的情况*/

    {

    m=m/10;

    }

    if(n>10 && n==m && fun(n)) /*若大于10且为回文素数,则输出*/

    {

    printf("%d\t", n);

    }

    }

    printf("\n");

    return 0;

    }

    /*判断参数n是否为素数*/

    int fun(int n)

    {

    int i;

    for(i=2; i

    {

    if(n%i == 0)

    return 0;

    }

    return 1;

    }

    运行结果:

    不超过1000的回文数:

    11 101 131 151 181 191 313 353 373 383 727 757 787 797 919 929

    展开全文
  • C语言实现回文判断

    千次阅读 2020-10-10 15:20:14
    C语言实现不使用字符串的整数回文数判断 题目来源:LeetCode题库 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121...
  • C语言回文素数任意的整数,当从左向右读与从右向左读是相同的,且为素数时,称为回文素数。求 1000 以内的所有回文素数。算法思想实例的重点是判断一个数是否是回文素数。要输出 1000 以内的所有回文素数,首先应...
  • 0015 c语言 数字回文

    2021-04-09 23:24:29
    读入一个5位整数判断它是否是回文数。 输入 多组测试数据,每组一行,一个五位整数,输入以0结尾。 输出 对每组输入数据输出一行,如果输入数是回文数,输出“Yes.” ,否则输出 “No.” 。 样例输入 12345 12321 ...
  • 简单稍等马上好有大概分两种方法数学法和字符串法我就先发个字符串法的吧#include#includemain(){inti,nlen,flagcharnum[6]gets(num)nlen=strlen(num)for(i=0iC语言中如何判断回文?下面介绍了几种判断回文的方法...
  • 问题描述所谓回文素数指的是,对一个整数n从左向右和从右向左读其数值都相同且n为素数,则称整数回文素数。对于偶数位的整数,除了11以外,都不存在回文素数。即所有的4位整数、6位整数、 8位整数…都不存在回文...
  • C语言回文素数

    万次阅读 2017-05-04 20:39:56
    所谓回文素数指的是,对一个整数n从左向右和从右向左读其数值都相同且n为素数,则称整数回文素数。 对于偶数位的整数,除了11以外,都不存在回文素数。即所有的4位整数、6位整数、 8位整数…都不存在回文素数。...
  • 一、名词解释: 如果一个数正着反着都是一样,就称为这个数是回文数。例如:6, 66, 606, 6666 同理如果一个字符串正着反着都是一样就称为这个字符串是回文...回文数解题思路二:将该整数逆置后的整数和逆置前比较...
  • C语言回文平方数

    2018-12-12 22:20:39
    如果给定一个数,如果其是回文数并且是某个正整数的平方,则称其为回文平方数。 比如121,它既是回文数并且是11的平方,所以121是回文平方数。 输入 输入包括多组数据(少于30000组)。 每组数据包括一行,每行仅一个...
  • Problem L 回文质数 时限:1000ms 内存限制:10000K 总时限:3000ms 描述: ...第一行 两个整数:a和b. 输出: 输出一个回文质数的列表,一行一个. 输入样例: 5 500 输出样例: 5
  • 判断一个整数是否是回文数。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 例 : 输入: 12321 输出: true 解析: (整数反转的延伸) 负数不可以,因为有负号。-12321不等于12321- 。 temp记录...
  • C语言实现计算双基回文数详解 双基回文数的定义: 如果一个正整数n至少在两个不同的进位制(二进制进制= 随机推荐 JS_ECMA基本语法中的几种封装的小函数-2 大家好!今天继续给大家写一下ECMA中的剩下的小函数以及实用...
  • 256)的其平方具有对称性质的数(也称回文数)。问题分析对于要判定的数n计算出其平方后(存于a),按照“回文数”的定义要将最高位与最低位、次高位与次低位……进行比较,若彼此相等则为回文数。此算法需要知道平方数的...
  • 问题:判断一个数是不是回文数以及输出10000以内的所有回文数 代码: #include #include int main() { int a,i,j,n,m,k=0,q; char ch; printf("你想做什么工作?\n"); printf("0.判断一个数是不是...
  • 判断回文字符串 本题要求编写函数,判断给定的一串字符是否为“回文”。所谓“回文”是指顺读和倒读都一样的字符串。如“XYZYX”和“xyzzyx”都是回文。 函数接口定义: bool palindrome( char *s ); 函数palindrome...
  • 如输入整数78,则形成回文数的过程为:78+87=165,165+561=726,726+627=1353,1353+3531=4884。 提示:一个函数用来求反序数,另一个函数判断是否为回文数,在主函数中输入输出。 #include<stdio.h> /*
  • 任意的整数,当从左向右读与从右向左读是相同的,且为素数时,称为回文素数。求 1000 以内的所有回文素数。 算法思想 实例的重点是判断一个数是否是回文素数。要输出 1000 以内的所有回文素数,首先应判断这个数...
  • 回文”是指正读反读都能读通的句子,它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。在数学中也有这样一类数字有这样的特征,成为回文数(palindrome number)。[1]设n是一任意自然数。若...
  • else//s[j+i]==s[d]时数据向中间移动一位继续判断,长度计数加2 { i++; d--; a+=2; } } if(str[j+i]!=str[d]&&d-j!=0)//不相等,左端回到基点,d向j靠近1 { ...
  • 例7-11原题:输入一个以回车符为结束标志的字符串(少于80个字符),判断该字符串中心对称,如“abcba”、“abccba”是回文,“abcdba”不是回文。 在C语言中,字符串的存储和运算可以用一维字符数组来实现。数组...
  • 详解判断回文字符串和回文数算法的C语言代码!一、判断一个字符串是否为回文字符串#include #include #include //包含strlen#define YES 1#define NO 0#define uchar unsigned char#define uint unsigned int#define...
  • 当一个整数从前往后读取与它从后往前读取一样时,则该整数回文数。 示例: 例1: 输入: 121 输出: true 例2: 输入: -121 输出: false 说明:从左到右,它显示为-121。从右到左,它变成121-。因此它不是...
  • C语言回文数字

    千次阅读 2020-06-10 13:05:14
    观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是...这样的数字叫做:回文数字。 本题要求你找到一些5位或6位的十进制数字。满足如下要求: 该数字的各个数位之和等于输入的整数
  • 选择结构(1) 编程判断输入整数x的正负性和奇偶性。(2) 已知银行整存整取存款不同期限的月息利率分别为: 0.63% 期限一年 0.66% 期限=年 月息利率= 0.69% 期限三年 0.75% 期限五年 0.84% 期限八年 要求输入存钱...
  • int isPalindromic(int* aaa)//判断一个数数不是回文数,如果是就返回这个回文数,如果不是就返回-1表示不是回文数 { int aa=*aaa;//保存指针a指向的空间的值 int temp=0; reverse_num(aaa,&temp); if(aa==temp)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,936
精华内容 1,174
关键字:

c语言判断回文整数

c语言 订阅