请哪位计算机国三的高手帮我看看我的程序哪里不对

来源:百度知道 编辑:UC知道 时间:2024/06/19 12:52:00
题目是这样的:
在三位整数(100-999)中寻找符合条件的整数并依次从大到小存入数组中;它既是完全平方数,又是两位数字相间。
我的答案是这样的
{
int i,w,e,r,x,cnt;
for(i=0;i<x;i++)
{
w=x/100%10;e=x/10%10;r=x%10;
if(w==e || w==r || e==r)
{
bb[cnt++]=x;
}
}
return cnt;
这是考试系统里得题

{
int i,w,e,r,x,cnt=0;
int bb[1000];
for(i=100;i<1000;i++)
{
x=i;
w=x/100%10;e=x/10%10;r=x%10;
if(w==e || w==r || e==r)
{
bb[cnt++]=x;
}
}
return cnt;

分析:首先 数字取值范围错误 由100到1000才对
其次 没有事先设定数组bb【a】(在本题目中我把a改为1000 因为一共才899个数字 所以如此设定比较安全 而且省去很多步骤)
再次 cnt没有设初值 这样的话 返回的cnt是随机的 根本不是准确值
好了 就这些 流程我也写好了 你看看吧

希望可以帮助楼主 (*^__^*) 嘻嘻……

i起码要从100开始啊,x=999

#include<stdio.h>
#include<conio.h> //为了下面的getch();
int main()
{ int i,w,e,r,x,bb[35],cnt=0;//w为百位,e为十位,r为个位
for(i=31;i*i>=100;i--) //由于要求从大到小,所以i=31,然后递减
{ x=i*i;
w=x/100;e=(x%100)/10;r=x%10;
if(w==e||w==r||e==r)
bb[cnt++]=x;
}
for(i=0;i<cnt;i++)
printf("%d\n",bb[i]); //把bb里的数打出来,这句是为了你看着方便,可以不要
getch(); //起到暂停作用,也可以不要
return cnt;
}
/*该程序可直接编译运行,你的程序好像没有找完全平方数这一步,而且x没有赋值,所以一直都不会变,cnt也没赋初值,而且