想知道这个我错在哪里了

本题要求对任意给定的正整数N,求方程X
2
+Y
2
=N的全部正整数解。

输入格式:
输入在一行中给出正整数N(≤10000)。

输出格式:
输出方程X 2+Y 2
=N的全部正整数解,其中X≤Y。每组解占1行,两数字间以1空格分隔,按X的递增顺序输出。如果没有解,则输出No Solution。
#include "stdio.h"
int main()
{
int N,x,y;
scanf("%d",&N);
for(x=0;x<=N;x++)
{
for(y=0;y<=N;y++)
{
if(N==xx+yy)
{
printf("%d %d\n",x,y);
}
else
{
printf("No solution");
}
}
}


#include "stdio.h"
int main()
{
    int N, x, y;
    int flag = 0;
    scanf("%d", &N);
    for (x = 0; x <= N; x++)
    {
        for (y = 0; y <= N; y++)
        {
            if (N == x * x + y * y)
            {
                printf("%d %d\n", x, y);
                flag = 1;
            }
        }
    }
    if (flag==0)
    {
        printf("No solution");
    }
    return 0;
}

if(N==xx+yy)
这一句应该写成if(x * x+y * y==N)
而且其中X≤Y。每组解占1行,两数字间以1空格分隔,按X的递增顺序输出。
这些条件要再实现一下。
望采纳!!

其中X≤Y
你的代码里没有体现出来

改成这样吧

#include "stdio.h"
int main()
{
    int N,x,y;
    int flg=0;
    scanf("%d",&N);
    for(x=0; x<=N; x++)
    {
        for(y=0; y<=N; y++)
        {
            if(N==x*x+y*y)
            {
                printf("%d %d\n",x,y);
                flg++;
            }
        }
    }
    if(flg==0)
    {
        printf("No solution");
    }
}

4 个问题
第一:xx+yy=N,没有没写乘号,
第二:else的位置写错了,题意是指没有解才输出,不是没有递增1就判断。
第三:X小于y没有使用到这个条件
第四:解法的逻辑不对,和第三点有关,外层应该y,而不是x


int main() {
    int N, x, y, f = 0;
    scanf("%d", &N);
    for(x = 0; x <= N; x++) {
        for(y = 0; y <= N; y++) {
            f = 1;
            if(N == x * x + y * y) {
                printf("%d %d\n", x, y);
            }
        }
    }
    if(f == 0) {

        printf("No solution");

    }
}