C语言求教输入两个正整数m和n(m≥100,n<1000),输出m和n之间的满足如下条件的三位正整数

2024-12-19 15:10:30
推荐回答(2个)
回答1:

/*

m n = 100 1000

100 121 144 225 400 441 484 676 900

Press any key to continue

*/

#include 
#include 

int hasRepNum(int n) {
int a,b,c;
if(n < 100 || n > 1000) return 0;
a = n % 10;
n /= 10;
b = n % 10;
n /= 10;
c = n % 10;
if(a == b || b == c || c == a) return 1;
return 0;
}

int main() {
int i,m,n,t;
printf("m n = ");
scanf("%d%d",&m,&n);
for(i = m; i <= n; ++i) {
t = (int)sqrt(i);
if(t * t == i && hasRepNum(i))
printf("%d ",i);
}
printf("\n");
return 0;
}

回答2:

/*
Please input two numbers(m n):100 1000
100 121 144 225
400 441 484 676
900
*/
#include"stdio.h"
#include"math.h"
void IsNeedNumber(int m,int n)
{
int i,j=0;
for(i=m;i {
if(((int)sqrt(i)*(int)sqrt(i))==i) /*判断是否是某个数的平方*/
{
if((i%10==i/10%10)||(i%10==i/100%10)||(i/10%10==i/100%10)) /*判断是否有两位相同*/
{
printf("%d ",i);
j++;
if(j%4==0)
printf("\n");
}
}
}
}
void main()
{
int m,n;
printf("Please input two numbers(m n):");
scanf("%d %d",&m,&n);
IsNeedNumber(m,n);
getch();
}