求1~9999之间的全部同构数

来源:百度知道 编辑:UC知道 时间:2024/05/11 20:41:36

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char *right(char *ms,int len); /*截取一个字符串尾部长为len个字符的子串*/
void main()
{
long a;
int len;
char as[10];
char ms[20];
printf("求[1,9999]中的同构数:\n");
for(a=1;a<10000;a++)
{
ultoa(a,as,10); /*数a转换为字符串,存入as*/
len=strlen(as);
ultoa(a*a,ms,10);
if(strcmp(as,right(ms,len))==0) /*比较字符串as与ms长为len的子串是否相等*/
printf("%s 其平方为 %s\n",as,ms); /*相等就是同构数,输出结果*/
}
}
char *right(char *ms,int len) /*截取字符串尾部长为len子串的函数*/
{
int i,j;
for(i=0;i<(signed)strlen(ms);ms++);
for(j=0;j<len;j++,ms--);
return ms;
}

#include<math.h>
#include<stdio.h>
void decompose(int n,int a[])
{int i=0;
do{
a[i]=n%10;
n=n/10;
i++;
}
while(n!=0);
a[i]=-1; /*用-1作为标记,做结束符*/

}