c语言问题:寻找[m,n]区间内的所有的勾股弦数并输出,其中,100<m<10000...

发布网友 发布时间:2024-10-24 12:17

我来回答

2个回答

热心网友 时间:2024-11-07 06:07

#include <stdio.h>

int f(int n);

int main(void)
{
int m, n, i, count;
while (1)
{
count = 0;
printf("请输入m和n的值:\n");
scanf("%d%d", &m, &n);
if (m > n || m > 9999 || m < 101 || n > 9999 || n < 101)
{
printf("%d和%d不是有效的值\n", m, n);
continue;
}
for (i = m; i <= n; i++)
{
if (f(i) == 1)
{
count++;
printf("%5d", i);
if (count % 6 == 0)
putchar('\n');
}
}
if (count == 0)
printf("[%d,%d]范围内没有勾股弦数\n", m, n);
else
break;
}
return 0;
}

int f(int n)
{
int a, b, c;
if (n < 1000)
{//处理三位数
a = n / 100;
n = n % 100;
b = n / 10;
c = n % 10;
}
else
{//处理四位数
a = n / 1000;
n = n % 1000;
b = n / 100;
c = n % 100;
}
if (a == 0 || b == 0 || c == 0)
return 0;
if (a*a + b*b == c*c)
return 1;
return 0;
}

热心网友 时间:2024-11-07 06:03

//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
int f(int n){
int a,b,c;
a = n>999 ? n/1000 : n/100;
b = n>999 ? n/100%10 : n/10%10;
c = n>999 ? n%100 : n%10;
if(a==0 || b==0 || c==0) return 0;
if(a*a+b*b==c*c) return 1;
return 0;
}
void main(void){
int i,m,n;
while(1){
printf("Type m & n(100<m<=n<10000)...\n");
scanf("%d%d",&m,&n);
if(100<m && m<=n && n<10000) break;
printf("Error,redo: ");
}
for(i=m;i<=n;i++)
if(f(i)) printf("%d ",i);
printf("\n");
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com