这个题目做了好多次运行总是不对,哪位大佬来帮我解答一下,感谢,这是c语言的题目?

编一程序,输出2~999之间的所有同构数。
所谓同构数是指这样的数,它出现在它的平方的右侧,如5的平方=25,25的右端是5,所以5是一个同构数。

输入格式:

输入仅一行,输入2个整数,比如2和 9。

输出格式:

输出多行,分行输出2到9之间的所有的同构数。

输入样例:

2 9

输出样例:

5
6

第1个回答  2020-04-11

#include<stdio.h>

 main()

 {

int n,m;

scanf("%d%d",&n,&m);

for(int i=n;i<=m;i++)

{

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

printf("%d\n",i);

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

printf("%d\n",i);

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

printf("%d\n",i);

}

}

本回答被网友采纳
第2个回答  2020-04-11
#include<stdio.h>
#include<math.h>
int main()
{
int m,n,i,x,t=0;
scanf("%d%d",&m,&n);
for(i=m; i<=n; i++)
{
x=i;
while(x)
{
x/=10;
t++;
}
if(i==i*i%(int)pow(10,t))
printf("%d\n",i);
t=0;
}
return 0;
}追问

大佬,我按照你的程序做的

但系统说结果错误,我心态崩了

😭😭

追答

我运行没问题啊,输出对的

追问

我用软件运行也没错,但在网课的系统运行就是错的,我也搞不懂了

😭😭

追答

#include
#include
int main()
{
int m,n,i,x,t=0;
scanf("%d%d",&m,&n);
for(i=m; i<=n; i++)
{
x=i;
while(x)
{
x/=10;
t++;
}
if(i==i*i%(int)pow(10,t))
printf("%d\n",i);
t=0;
}
return 0;
}

第3个回答  2020-04-11

#include<stdio.h>

void main()

{

int m,n,i,j,p=10;

scanf("%d%d",&m,&n);

for(i=m;i<=n;i++)

{     p=10;

j=i;

while(j/10)

{p=p*10;

j=j/10;}

if(i==(i*i)%p)

  {printf("%d\n",i);

}

}

}

相似回答