这是一道简单的C语言面试题,环境为linux.
/*找出任意两个三位数相乘后得到的最大的回文数*/ #include <stdio.h> #include <string.h> #include <stdlib.h> #define MAX 20 /*由于itoa函数在linux系统不存在,所以自己定义.*/ char *itoa(int value,char *string) { int rt=0; if(string==NULL) return NULL; rt=snprintf(string,MAX,"%d",value); if(rt>MAX) return NULL; string[rt]='\0'; return string; } int huiwen_flag(int arg) { char c[MAX+1]; int i,j; itoa(arg,c); i=strlen(c); for(j=0;j<i/2+1;j++) { if(c[j]!=c[i-j-1]) return 0; } return 1; } int main() { int i,j,n,result=0; for(i=100;i<999;i++) { for(j=i;j<999;j++) { n=i*j; if( huiwen_flag(n) && n>result ) result=n; } } printf("%d\n",result); return 0; }
程序运行的结果为906609.