#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=1a<10000a++)
{
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=0i<(signed)strlen(ms)ms++)
for(j=0j<lenj++,ms--)
return ms
}
#include<stdio.h>int fun(int num)
{
if (num <= 0)
return 0
int i = num, square = num*num, res = 1
while (i) //计算num的位数
{
res *= 10
i = i/10
}
if (square%res == num)
return 1
return 0
}
int main()
{
int i
for(i = 1 i <= 100 i++)
{
if (fun(i))
{
printf("%d %d\n", i, i*i)
}
}
return 0
}
代码编译通过,输出结果为:
1 1
5 25
6 36
25 625
76 5776
望采纳,谢谢~