/*
m n = 100 1000
100 121 144 225 400 441 484 676 900
Press any key to continue
*/
#include <stdio.h>
#include <math.h>
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;
}
追问基本对了,就是差一点{每行输出4个,字符宽度为5个左对齐。}这个怎么弄
追答/*
m n = 100 1000
100 121 144 225
400 441 484 676
900
Press any key to continue
*/
#include <stdio.h>
#include <math.h>
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,cnt = 0;
printf("m n = ");
scanf("%d%d",&m,&n);
for(i = m; i <= n; ++i) {
t = (int)sqrt(i);
if(t * t == i && hasRepNum(i)) {
if(cnt && !(cnt % 4)) printf("\n");
printf("%5d",i);
++cnt;
}
}
printf("\n");
return 0;
}