这是一道简单的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.


Logo

更多推荐