请教一个VC问题(关于二维数组的输入) 50

#include<iostream>#include<string>usingnamespacestd;voidmain(){boolIsHS(charF[400][40... #include <iostream>
#include <string>
using namespace std;
void main()
{ bool IsHS(char F[400][400],char H[200]);
char F[400][400];
char H[200];
cout<<"请输入集合H:";
cin>>H;

int i;
cout<<"请逐行输入集合簇F:"<<endl;
for(i=0;i<3;i++)
cin>>F[i];
bool R;
R=IsHS(F,H);
cout<<"IsHS=="<<R<<endl;
}

bool IsHS(char F[400][400],char H[200]) //(char H[200],char F[400][400])
{
int Flen=0; //集合F的长度
int Hlen=0; //集合H的长度
char F1[400][400];
int i,j,k,l,n;
int count=0;
for(i=0;i<5;i++)
{ if(F[i][0] == 0) break;
else Flen+=1;} //计算集合簇F的长度
for(i=0;i<5;i++)
{ if(H[i] == '\0') break; else Hlen+=1;} //计算集合H的长度
for(l=0;l<Flen;l++) //将集合F中的各元素逐个暂存入集合F1
for(n=0;n<5;n++)
F1[l][n]=F[l][n];
for(i=0;i<=Hlen;i++) //逐个检测H[i]是不是F的极小碰集
{
if(i==Hlen) //如果H中的所有元素都已计算完成

{ cout<<"count=="<<count<<endl;
cout<<"Hlen=="<<Hlen<<endl;
cout<<"Flen=="<<Flen<<endl;
return (count==Flen? true:false); //若count(H[i]与集合簇F中相关联的集合个数)==集合簇F长度,返回真值
}
else
{for(j=0;j<Flen;j++)
for(k=0;k<400;k++)
if(F1[j][k]==H[i]) //若H中单元素与F中某个集合中的元素相同,
{count++;
for(n=0;n<400;n++)
F1[j][n]=0; //则将F中该集合删除(通过将该集合的各元素值均赋为0)
}
}
}

}
程序如上,debug调试时,我逐个输入F[0],F[1]和F[2],显示的字符都跟我输入的一样,但是一旦执行到“R=IsHS()”句,按F11键进入被调用函数,F数组的F[2],F[3],F[4]....F[399]马上全部变成了跟输入的F[1]相同,请教为何?
我就是输入F[i]的四百个元素才按回车的,不过不是四百全输入,是输入几个,剩下的那些系统自动分配的0xCC,不过不影响我程序。就这么着
展开
 我来答
百度网友c61d935a2
2009-12-07 · TA获得超过224个赞
知道答主
回答量:103
采纳率:0%
帮助的人:151万
展开全部
按你的程序F[0],F[1]和F[2],分别是含有400个元素的地址, 执行cin>>F[i]时
你应该同时输入400个字符中间不能带空格,然后按回车,不能输入一个字符就按回车。然后输入第二个字符.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式