c++编程题 大神们求指教 出错呀

#include<iostream>
using namespace std;
int main()
{
char i;
char x[8];
cout<<"Please input your name"<<endl;
for (i=0;i<8;i++)
cin>>x[i];
if (x[i]='liu')
cout<<"haha"<<endl;
else
cout<<"Please input your true name"<<endl;
return 0;
}

for (i=0;i<8;i++) //输入的时候,直接按字符串输入,不用一个字符一个字符输入,这样会把'\0'的位置挤掉,数组就越界了
cin>>x[i];
if (x[i]='liu') //首先这是一个赋值语句,等号是“==”
//其次,x[i]是单个字符,且这时候i==8,数组越界;"liu"是一个字符串,不是单个字符,要使用双引号
//再次,字符串比较不能用“==”,要使用strcmp
cout<<"haha"<<endl;
else
cout<<"Please input your true name"<<endl;
return 0;

改为:
int main()
{
char i;
char x[8];
cout<<"Please input your name"<<endl;
cin>>x;
if (strcmp(x,"liu")==0)
cout<<"haha"<<endl;
else
cout<<"Please input your true name"<<endl;
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-08-13
首先 char i 和int i 在这里是一样的 没问题;

然后我想问 char x[8] ------这个不是只定义了一个字符数组吗 但是在VC++6.0里却没问题 奇怪了 (不知道和WIN7系统有没有关系) 但是建议 string x就好;

接着就是 if判断中 你所谓的x[i]='liu' 是明显错误的
判断等于的符号是== 不是= 你这样是赋值 (并不完全 因为根本没有x[i]='liu'这样的赋值方法 最多不过是 x="liu"------x表示数组名,"liu”表示字符串,本质上都可以理解成一个指针)
相似回答