主题:数组指针查错(小段代码)
我想通过数组指针(虽然其他的方法也可以,但是我就是要求用这种方法)实现将字符串按字母从小到大的顺序输出。为什么添加#define<string>以后,用name[i]>name[j]作为比较条件(位置已做标记)时,字符串是按逆序输出,而不按从小到大的顺序输出。用这种方法错在哪里,而用strcmp函数对在哪里。求解,谢谢!
#include<iostream>
#include<string>
using namespace std;
int main()
{
void sort(char *name[],int n);
void print(char *name[],int n);
char *name[]={"BASIC","FORTRAN","C++","PASCAL","COBOL"};
int n=5;
sort(name,n);
print(name,n);
cout<<endl;
return 0;
}
void sort(char *name[],int n)
{
int i,j;
char *temp;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(strcmp(name[i],name[j])>0) //添加#define<string>以后,用name[i]>name[j]
//作为比较条件不行(原因不知)
{
temp=name[i];
name[i]=name[j];
name[j]=temp;
}
}
void print(char *name[],int n)
{
int i;
for(i=0;i<n;i++)
cout<<name[i]<<endl;
}
#include<iostream>
#include<string>
using namespace std;
int main()
{
void sort(char *name[],int n);
void print(char *name[],int n);
char *name[]={"BASIC","FORTRAN","C++","PASCAL","COBOL"};
int n=5;
sort(name,n);
print(name,n);
cout<<endl;
return 0;
}
void sort(char *name[],int n)
{
int i,j;
char *temp;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(strcmp(name[i],name[j])>0) //添加#define<string>以后,用name[i]>name[j]
//作为比较条件不行(原因不知)
{
temp=name[i];
name[i]=name[j];
name[j]=temp;
}
}
void print(char *name[],int n)
{
int i;
for(i=0;i<n;i++)
cout<<name[i]<<endl;
}