标签:编程
#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[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; }
标签:编程
原文地址:http://blog.csdn.net/u012110719/article/details/41900777