注册 登录
编程论坛 C语言论坛

编程,输出1~5000之间的所有同构数,同构数就是它的平方数的右边是它自身,例如:5,6,25都是同构数,因为5*5的右边是5,6*6的右边是6,25*25的右

a1602388940 发布于 2020-03-26 20:29, 4094 次点击
#include <stdio.h>
void main()
{
    int i;
    for (i=1,i<=5000,i++)
        if (i < 10)
            if (i*i%10 == i)
                printf("%d\n",i);
        else if (10 <= i < 100)
            if ((i*i-i)%100 == 0)
                printf("%d\n",i);
        else if (100 <= i <1000)
            if ((i*i - i)%1000 == 0)
                printf("%d\n",i);
        else if (1000 <= i <= 5000)
            if ((i*i - i)%10000 == 0)
                printf("%d\n",i);   
}
这是俺写的一个
报错
C:\Windows\System32\1.c(5) : error C2143: syntax error : missing ';' before ')'
C:\Windows\System32\1.c(5) : error C2143: syntax error : missing ';' before ')'
Error executing cl.exe.
大佬们有何高见
10 回复
#2
lin51616782020-03-26 20:37
for括号没要写2个 分号
#3
lin51616782020-03-26 20:38
10到100还有后面几个判断 写错
#4
a16023889402020-03-26 20:43
回复 3楼 lin5161678
确实鹅鹅鹅饿鹅鹅鹅鹅鹅鹅 咋判断嘞
#5
a16023889402020-03-26 20:43
回复 2楼 lin5161678
OKOK
#6
return_02020-03-26 20:47
for元素要用;隔开
#7
a16023889402020-03-26 21:11
回复 3楼 lin5161678
#include<stdio.h>
main()
{
 int i,d;
 for (i=2;i<=5000;i++)
 {
  d=i*i-i;
  if(i<10&&d%10==0)  
   printf("%d\n",i);
  if(i<100&&d%100==0)
     printf("%d\n",i);
  if(i<1000&&d%1000==0)
        printf("%d\n",i);
  if(1000<i<5000&&d%10000==0)
        printf("%d\n",i);

 }
}


这样可以了 但为啥输出了两个625
#8
return_02020-03-26 21:14
后面的if前面都加上else试试。。。
#9
a16023889402020-03-26 21:15
回复 8楼 return_0
但为啥我第一个不可以嘞
而且第二个只是输出了两个625 其余的并没有重复
#10
forever742020-03-26 21:21
关系运算符不能连用
因为前一个的结果会被当作0或1与后面的进行比较

[此贴子已经被作者于2020-3-26 21:23编辑过]

#11
hbccc2020-03-26 21:24
else之和上面最近的if配对
1