love_qj 发表于 2020-4-7 15:39:17

关于关系运算

#include <stdio.h>

#define MAX 1024

int *func(int *p)
{
        int i;
        int a, temp;
        for(i = 0; i < 899; i++)
        {
                temp = 101 + i;
                int k = 0;
                while(temp > 0)
                {
                        a = temp % 10;
                        temp /= 10;
                        k++;
                }
                temp = 101 + i;
                for(int j = 0; j < 40; j++)
                {
                        if(!(j * j == temp && (a == a || a == a || a == a)))      //为什么判断不了
                        {
                                *(p + i) = 0;
                        }
                }
        }
       
        return p;
}

int main(void)
{
        int array, i, n;
        printf("请输入一个三位数:");
        scanf("%d", &n);
       
        for(i = 0; i < 899; i++)
        {
                array = 101 + i;
        }
       
        int *p = func(array);
       
        printf("符合要求的数有:");
        while(i)
        {
                if(*p != 0)
                {
                        printf("%d ", *p);
                        p++;
                }
                p++;
                i--;
        }
       
        return 0;
}

求指点,为什么子函数if判断不了

BngThea 发表于 2020-4-7 15:42:46

判断不了是指报错还是和你想象的不一样,如果是后者,你至少说一下你要干什么

sunrise085 发表于 2020-4-7 16:00:24

你的程序if能判断,只是你的逻辑思路出问题了。导致没有达到你的预期
外层for循环,每次会变一次temp,然后在内层for循环时,都会先判断temp是不是0*0,判断结果肯定会进入if语句块,这就导致你的程序将p内的所有的数都改成0 了。

love_qj 发表于 2020-4-7 16:12:56

sunrise085 发表于 2020-4-7 16:00
你的程序if能判断,只是你的逻辑思路出问题了。导致没有达到你的预期
外层for循环,每次会变一次temp,然 ...

懂了,谢谢

大河之jian 发表于 2020-4-7 16:24:16

楼上正解
页: [1]
查看完整版本: 关于关系运算