c++字符串比较大小写了个程序不知哪里错了,在线等大神解答!

#include<iostream>
#include <string>
using namespace std;

int main()
{
int score[10]={};
char name[10][20]={};
for(int i=0;i<10;i++)
{
cin>>name[i]>>score[i];
}
for (int i=0;i<9;i++)
{
for(int j=0;j<9-i;j++)
{
char temp[20];
int scoreTemp;
if (strcmp(name[i],name[i+1])>0)
{
strcpy(temp,name[i]);
strcpy(name[i],name[i+1]);
strcpy(name[i+1],temp);
scoreTemp=score[i];
score[i]=score[i+1];
score[i+1]=scoreTemp;
}
}
}
string searchName;
cin>>searchName;
bool flag=false;
for (int i=0;i<10;i++)
{
if (strlen(name[i],searchName)==0)
{
cout<<score[i];
flag=true;
break;
}

}

if (flag=false)
{
cout<<"NO!";
}

return 0;
}

第1个回答  2013-05-02
if (flag=false)
{
cout<<"NO!";
}
if (flag==false)//比较要俩=号
    cout<<"NO!";

其它一些地方也懒得看了,这程序写得好复杂,有必要这么麻烦?

第2个回答  2013-05-02
#include<iostream>
#include<string>
using namespace std;
int main()
{
int score[10],i,j,scoreTemp;
char name[10][20],searchName[20],temp[20];
for(i=0;i<10;i++)
{
cin>>name[i]>>score[i];
}
for(i=0;i<9;i++)
{
for(j=0;j<9-i;j++)
{
if(strcmp(name[i],name[j+1])>0)
{
strcpy(temp,name[i]);
strcpy(name[i],name[j+1]);
strcpy(name[j+1],temp);
scoreTemp=score[i];
score[i]=score[j+1];
score[j+1]=scoreTemp;

}
}
}
cin>>searchName;
bool flag=false;
for(i=0;i<10;i++)
{
if(strcmp(name[i],searchName)==0)
{
cout<<score[i]<<endl;
flag=true;break;
}
}
for(i=0;i<10;i++)
{
cout<<name[i];
}
if (flag=false)
{
cout<<"NO!";
}
return 0;
}
正确代码。
有问题继续追问本回答被提问者采纳
第3个回答  2013-05-02
if (strlen(name[i],searchName)==0)
==>
if (strcmp(name[i],searchName.c_str())==0)

if (flag=false)
{
cout<<"NO!";
}
==>
if (!flag)
{
cout<<"NO!";
}
else
{
cout<<"YES!";
}
第4个回答  2013-05-02
strcpy”的声明这个都没声明,看看书添加#include <string.h>
相似回答