C语言二级题 帮我看一下那里错了 在线

来源:百度知道 编辑:UC知道 时间:2024/05/20 19:27:00
在三位整数(100至999)中寻找其中有两位数字相同的完全平方数,例如,144、676等,它们既是完全平方数,又有两位数字相同,将符合条件的整数依次从小到大存入数组aa中。
要求:
(1)编制函数fine()实现寻找满足条件的完全平方数,并将满足条件的完全平方数的个数通过函数fine()返回。
(2)在main()函数中把符合要求的完全平方数及个数输出到屏幕上和文件test2-2.dat中。

#include<stdio.h>
#include<math.h>
int fine(int x)
{

int bw,sw,gw;
double jy;
bw=x/100;
sw=x%100/10;
gw=x%10;
jy=(sqrt(x));
if((jy-(int)jy==0)&&jy>=10&&jy<=99&&(bw==gw||bw==sw||gw==sw))
return 1;
else return 0;
}
main()
{
FILE *fp;
int i,j,gs=0; int aa[10];
if((fp=fopen("test2-2.dat","w"))==NULL)
{
printf("can't open file");
return;
}
for(j=0;j<10;j++)
{
for(i=100;i<1000;i++)
{
if(fine(i))
{

aa[j]=i; gs=gs+1;
fprintf(fp,"%d",aa[j]);
}
}
}
fprintf(fp,"%d",gs);
printf("gong you ge sh

#include<stdio.h>
#include<math.h>
int fine(int x)
{

int bw,sw,gw;
double jy;
bw=x/100;
sw=x%100/10;
gw=x%10;
jy=(sqrt(x));
if((jy-(int)jy==0)&&jy>=10&&jy<=99&&(bw==gw||bw==sw||gw==sw))
return 1;
else return 0;
}
main()
{
//FILE *fp;
int i,j=0,gs=0;
int aa[100];

for(i=100;i<1000;i++)
{
if(fine(i))
{

aa[j++]=i; gs=gs+1;
printf("%d ",aa[j-1]);
}
}

}

***************************************
为了简化结果,我去掉了与错误无关的文件写入部分,在最后使用时,请自行加上。

原因是多了一个外层循环,应将for(j=0;j<10;j++) 循环去掉。

""""if((jy-(int)jy==0)&&jy>=10&&jy<=99&&(bw==gw||bw==sw||gw==sw))"""这儿有点问题

jy<=sqrt(1000)
""""sw=(x%100)/10";因为"/"的优先级高

改为:
#include<stdio.h>
#include<math.h>
int f