首页 > 代码库 > 求4位数字的回文数
求4位数字的回文数
第一种:利用逆序数字是否和原来的数字相等
#include<stdio.h> int main() { int i,key,sum;//i循环变量1000~9999的数字,key保存i值后求余,sum保存倒叙的数字 for(i=1000;i<=9999;++i) { sum=0;//每次循环都要赋初值为0 key=i;//每次循环都要把新的i值给key以便下面while的循环求sum while(key!=0) { sum=sum*10+key%10; key=key/10; } if(sum==i) { printf("%d\t",i); } } return 0; }
第二种:传统方式分别求出个十百千上的数字再比较个位和千位,十位和百位
#include<stdio.h> int main() { int a,b,c,d,i; for(i=1000;i<10000;++i) { a=i/1000;//个位 b=i%1000/100;//十位 c=i%100/10;//百位 d=i%10;//千位 if(a==d&&b==c) printf("%d\t",i); } return 0; }
第三种方式利用求余公式把每位上的数字先保存在数组a中,再比较a[0]和a[3],a[1]和a[2]。
与上面有些相似,因为一定是四位数字,所以是a[0]到a[3]即可,此题可以参看以前的笔记
c编程:判断10000以内的正整数哪些是回文数字。 时间是2014年11月17日左右
#include<stdio.h> int main() { int i,j,key,temp; int a[100]; for(i=1000;i<=9999;++i) { key=i; j=0; while(key!=0) { temp=key%10; a[j]=temp; j++; key=key/10; } if(a[0]==a[3]&&a[1]==a[2]) { printf("%d\t",i); } } return 0; }但是不知为什么在蓝桥杯里面提交时老是会说我的程序是错误的。后来才发现是要包输出格式换做输出一个数字就换行,无语了,题目又没说,真心希望蓝桥杯越走越好!
还有一种方法不常用记在这里:
#include <stdio.h> #include <string.h> int main() { int i,j; int sum = 0; char buff[7] = ""; int len; for(i = 1000; i < 10000; i++) { sprintf(buff,"%d",i); len = strlen(buff); for(j = 0; j < len/2; j++) if(buff[j] != buff[len - j - 1]) break; if(j == len / 2 ) printf("%s\n",buff); } return 0; }
求4位数字的回文数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。