C语言数值型计算问题

来源:百度知道 编辑:UC知道 时间:2024/06/17 07:42:55
载四位整数(1000至9999)中寻找符合条件的整数并依次从小到大存入数组中;它们既是完全平方数,同时又有两位以上数字相同,例如2025、5776、1444等。请在屏幕上打印结果。

#include <stdio.h>
#include <math.h>

int countsame(int x){
int pos[4];
int count=0;
int i;
for(i=0;i<4;i++)
{
pos[i]=x%10;
x=x/10;
}
for(i=0;i<4;i++)
for(int j=i;j<4&&i<4&&i<=j;j++)
{
if(j!=i)
{
if(pos[i]==pos[j])
{
count++;
}
}
}
return count;
}

int main(){

int i;
int n=0;
for(i=1000;i<10000;i++)
{
if(countsame(i)>0 && (int)sqrt(i)*(int)sqrt(i)==i)
printf("%d\t%d\tsqrt(%d)=%d\n",++n,i,i,(int)sqrt(i));
}
;
}

已经在gcc下编译通过了。输出结果为:
1 1156 sqrt(1156)=34
2 1225 sqrt(1225)=35
3 1444 sqrt(1444)=38
4 1521 sqrt(1521)=39
5 1600 sqrt(1600)=40
6 1681 sqrt(1681)=41
7 2025 sqrt(2025)=45
8 2116 sqrt(2116)=46
9 2209 sqrt(2209)=47
10 2500 sqrt(2500)=