用函数来判断符不符合条件

img


要是是完全平方数而且.有两位数字相同eg121
写一个函数来判断三位数是否为完全平方数,再写一个函数判断三位数是否有相同数字,再在主函数中调用这两个函数找出所有满足条件的数。
我的思路如上图
用函数判断是否符合条件能不能用我写的不符合条件置为零的方法呢?
但是程序运行不行,还是直接输出了100到1000的九百个数字,为什么?

  • 这里修改的都是副本,不影响main函数中的So变量

img

修改如下:

img

#include<stdio.h>
#include<string.h>

int same(int So) 
{
    int a,b,c;
    a = So/100;
    b = So/10 - a;
    c = So%10;
    if (a==b || a==c || b==c)
        return 1;
    return 0;
}

int pingfang(int So)
{
    int i;
    int flag = 0;
    for (i = 1; i < 32; i++)
    {
        if (i * i == So)
        {
            flag = 1;
            break;
        }
    }
    return flag;
}

int main() {
    int So;
    for (So = 100; So < 1000; So++) 
    {
        if (same(So) && pingfang(So)) 
        {
            printf("%4d", So);
        }
    }

    return 0;
}

第一个if语句后面为啥加分号