一个简单的c++题(三级网络预测题),但是不知道为什么就是不对,高手看看

来源:百度知道 编辑:UC知道 时间:2024/06/24 13:17:21
下列程序的功能是:在3位整数(100至999)中寻找符合下面条件的整数,并依次从小到大存入数组b中;它既是完全平方数,又有两位数字相同,例如144,676等。
请编制函数int jsValue(int bb[])实现此功能,满足该条件的整数的个数通过所编制的函数返回。
最后调用函数writeDat()把结果输出到文件OUT.DAT中。
注意:部分源程序已给出。请勿改动主函数main()和写函数writeDat()的内容。
下面是整个文件的内容

#include <stdio.h>
#include <math.h>
void writeDat();

int jsValue(int bb[ ])
{
int i,j,odd=0;//odd存放符合条件的完全平方数的个数
int tmp,a,b,c;
for(i=10;i<40;i++)
{
tmp=i*i;
if(tmp>999)break;
if(tmp>=100)
{
a=tmp/100;
b=tmp%100/10;
c=tmp%10;
if(a==b||a==c||b==c)
{
bb[odd]=tmp;odd++;
}
}
}
for(i=0;i<odd-1;i++)//此for循环用于把bb[]从小到大排列
{
for(j=i+1;j<odd;j++)
{
if(bb[i]>bb[j])
{
tmp=bb[i];bb[i]=bb[j];bb[j]=tmp;
}
}
}
}
void main()
{
int b[20], num ;
num = jsValue(b) ;
writeDa

错误改了,解释在程序里

#include <stdio.h>
#include <math.h>
void writeDat(int num, int b[]) ;

int jsValue(int bb[ ])
{
int i,j,odd=0;//odd存放符合条件的完全平方数的个数
int tmp,a,b,c;
for(i=10;i<40;i++)
{
tmp=i*i;
if(tmp>999)break;
if(tmp>=100)
{
a=tmp/100;
b=tmp%100/10;
c=tmp%10;
if(a==b||a==c||b==c)
{
bb[odd]=tmp;odd++;
}
}
}
for(i=0;i<odd-1;i++)//此for循环用于把bb[]从小到大排列
{
for(j=i+1;j<odd;j++)
{
if(bb[i]>bb[j])
{
tmp=bb[i];bb[i]=bb[j];bb[j]=tmp;
}
}
}
return odd;
}
void main()
{
int b[20], num ;
num = jsValue(b) ;
writeDat(num, b) ;
for(int i = 0; i < 10; i++) //测试一下直接输出会是否正确
printf("%d\n",b[i]);
}
void writeDat(int num, int b[])
{
FILE *out ;
int i ;
out = fopen("OUT.