C语言程序设计网课练习

从键盘输入一个2位正整数n,将全部满足条件
a平方+b平方=n平方的a,b,n中a最小的a,b,n输出,
要求a,b都是正整数且a≥b>0。
输出格式为 a=*,b=*,n=*。如果不存在这样的a,b,
则输出“不存在这样的a,b


#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
    int n;
    cin >> n;
    int ma = n, mb;
    for (int a = 1; a <=n; a++)
    {
        for (int b = 1; b <=n; b++)
        {
            if (a >= b && a*a + b * b == n * n)
            {
                if (ma > a)
                {
                    ma = a;
                    mb = b;
                }
            }
        }
    }
    if (ma != n)
        cout << "a=" << ma << ",b=" << mb << ",n=" << n<<endl;
    else
        cout << "不存在这样的a,b";
    return 0;
}

根据题意,写了下面代码。仅供参考,谢谢!

img

img

img

img

img

#include <stdio.h>
int main(int argc, char** argv){
    int a,b,n=1,res,flag=0;
   
    //限定输入不在10~99这个范围内重新输入
    printf("请输入一个两位数的正整数:\n");
    do{
        scanf("%d",&n);
    }while(n<10 || n>99);
  
    res=n*n;

    for(int a=1;a<100;a++)
    {
        for(int b=1;b<100;b++)
        {
            if( (a*a+b*b)==res )
            {
                printf("\n满足条件a最小:\n");
                printf("a=%d,b=%d,n=%d\n",a,b,n); 
                flag=1;
                break;
                                        
            }
        
        }
        if(flag)
            break;
        
    }
    
    if(!flag)
    {
        printf("\n不存在这样的a,b。\n");
    }
    
    return 0;
}


#include <stdio.h>
int main(){
int a,b,n,flag=1;
scanf("%d",&n);
for(a=1;flag && a<n;a++){
for(b=1;b<n;b++){
if((a>b||a==b)&&(a * a+b * b==n*n)){
printf("a=%d,b=%d,n=%d",a,b,n);
flag=0;
break;
}
}
}
if(flag==1){
printf("不存在这样的a,b");
}
return 0;
}