c语言 这个程序哪里错了 输出的答案不对 在线等急用

2025-06-27 14:37:51
推荐回答(2个)
回答1:

VS 2008环境如下:

// pingfang.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "stdlib.h"
#include "stdio.h"
#include "string.h"

/*
下列程序的功能是:在三位整数(100至999)中寻找符合条件的整数并依次从小到大存入数组中;它既是完全平方数,又是两位数字相同,例如144、676等。
*/

int jsValue(int bb[],int arrNum);

int _tmain(int argc, _TCHAR* argv[])
{
int arr[50] = {0};
int num = 0;

num = jsValue(arr,sizeof(arr)/sizeof(arr[0]));

printf("一共有 %d 个数字符合要求 \n",num);

printf("分别是: \n");

for(int i = 0; i < num; i++)
{
printf("%-5d",arr[i]);
}

getchar();
return 0;
}

int jsValue(int bb[],int arrNum)
{
//计数器
int num = 0;

for(int i=10;i< 32; ++i)
{
int b=i*i;
char string[5] = {0};

//保护机制,防止bb数组的内存越界
if(i >= arrNum)
{
return num;
}

//把数字转为字符串
itoa(b,string,10);

//找出符合要求的数字
if(string[0] == string[1] || string[1] == string[2] || string[0] == string[2])
{
bb[num++] = b;
printf("%s\n",string);
}
}

return num;
}

/////////////////////////////////////////////////////////////////////////////
vc 6.0应该是这样的,我没有这个环境 ,但怕你用的是这个环境,你自己调试一下。

// pingfang.cpp : 定义控制台应用程序的入口点。
//

#include "stdlib.h"
#include "stdio.h"
#include "string.h"

/*
下列程序的功能是:在三位整数(100至999)中寻找符合条件的整数并依次从小到大存入数组中;它既是完全平方数,又是两位数字相同,例如144、676等。
*/

int jsValue(int bb[],int arrNum);

int main()
{
int arr[50] = {0};
int num = 0;

num = jsValue(arr,sizeof(arr)/sizeof(arr[0]));

printf("一共有 %d 个数字符合要求 \n",num);

printf("分别是: \n");

for(int i = 0; i < num; i++)
{
printf("%-5d",arr[i]);
}

getchar();
return 0;
}

int jsValue(int bb[],int arrNum)
{
//计数器
int num = 0;

for(int i=10;i< 32; ++i)
{
int b=i*i;
char string[5] = {0};

//保护机制,防止bb数组的内存越界
if(i >= arrNum)
{
return num;
}

//把数字转为字符串
itoa(b,string,10);

//找出符合要求的数字
if(string[0] == string[1] || string[1] == string[2] || string[0] == string[2])
{
bb[num++] = b;
printf("%s\n",string);
}
}

return num;
}

回答2:

int jsValue(int bb[])
{int i,b,gw,sw,bw,cnt;
cnt=0;
for(i=10;i<32;i++)
{b=i*i;
gw=b%10;
bw=b/100;
sw=(b-bw*100)/10;
if((gw==bw)||(gw==sw)||(bw==sw))
bb[cnt++]=i*i;
}
return cnt;
}
应该就对了,因为你的函数中bw,没有赋值,就使用了