#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
追问
如果一行输出两个,改动的程序如下(只打出了要加上的,其他不变):
int count=0;
for(i=1;i<100;i++)
{
if(isomorphism(i)==1)
{
printf("%4d",i);
count++;
}
if(count%2==0)
printf("%d\n",count);
}
结果:
下面还有一个76,也就是中间有一大片空白