#include <iostream.h>
#include <string.h>
void main()
{
void sort(char *name[],int n);
void out(char *name[],int n);
char *name[]={"BASIC","FORTRAN","C++","Pascal","COBOL"};
int n=5;
sort(name,n);
out(name,n);
}
void sort(char *name[],int n)
{
char *t;
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
if(strcmp(name[i],name[j])>0)
{
t=name[i];
name[i]=name[j];
name[j]=t;
}
}
}
void out(char *name[],int n)
{
for(int i=0;i<n;i++)
cout<<name[i]<<endl;
}
输出:BASIC C++ COLBOL FORTRAN Pascal
而老谭上的书上说的是
#include <iostream.h>
#include <string.h>
void main()
{
void sort(char *name[],int n);
void out(char *name[],int n);
char *name[]={"BASIC","FORTRAN","C++","Pascal","COBOL"};
int n=5;
sort(name,n);
out(name,n);
}
void sort(char *name[],int n)
{
char *t;
int k;
for(int i=0;i<n;i++)
{
k=i;
for(int j=i+1;j<n;j++)
if(strcmp(name[i],name[j])>0)
k=j;
if(k!=i)
{
t=name[i];
name[i]=name[k];
name[k]=t;
}
}
}
void out(char *name[],int n)
{
for(int i=0;i<n;i++)
cout<<name[i]<<endl;
}
输出的结果是 basic colbol c++ fortran pascal
为什么?
高手请指点一下~~
if(strcmp(name[i],name[j])>0)k=j;
改为
if(strcmp(name[k],name[j])>0)k=j;
是我抄错了
不是书的错
我就是想问为什么一定要用k来代替j
为什么第一种方法不对???