c语言:编写函数判断x是否同构数

2024-11-01 06:29:18
推荐回答(3个)
回答(1):

#include

inttgs(intx)

intm1,n,a,b;

m1=x;

n=x*m1;

while(m1)

a=m1%10;

b=n%10;

if(a!=b)break;

m1=m1/10;

n=n/10;

returnm1==0;

intmain()

intx;

 scanf("%d", &x);   

if(tgs(x))printf("%d是一个同构数",x);

elseprintf("%d不是一个同构数",x);

return0;

}。

扩展资料

C语言 同构数的算法

“同构数”是指这样的整数:它恰好出现在其平方数的右端。

如:376*376=141376。请输出10000以内的全部“同构数”。

算法分析:

1.求出1-10000之间每个数的位数(即这个数是几位数)。设这个数是i.//用for循环实现。

2.再求出每个数的平方值,提取出最右端对应位数的数值出来。//用取模%法实现。

如369是个三个数,它的平方是136161,用取模%法提取出最右三位数字161,即136161%1000=161。

3.最后判断 i 与右端数 是否相等,相等即为同构数。

回答(2):


#include"stdio.h"
int isomorphism(int i)
{
int mod;
if ( i<10 )
mod=10;
else
mod=100;
if ( i == i*i%mod )
return 1;
return 0; //不是,则要明确返回0
}
void main()
{
int i;
printf("1~100之间的同构数有:\n");
for(i=1;i<100;i++)
{
if(isomorphism(i)==1)
printf("%4d",i);
}
printf("\n");
}

回答(3):


#include 


int isomorphism(int i)

{

     if(i>=1 && i<=9 && i==(i*i)%10)

          return 1;

     if(i>=10 && i<=100 && i==(i*i)%100)

         return 1;

     return 0;  // 缺少此句

}


void main()

{

     int i;

     printf("1~100之间的同构数有:\n");

     for(i=1;i<100;i++) {

         if(isomorphism(i)==1)

             printf("%4d",i);    

     }

     printf("\n");

}

编译执行:

$ gcc test.c -o test

$ ./test.exe

1~100之间的同构数有:

   1   5   6  25  76