一道C++题!急!

来源:百度知道 编辑:UC知道 时间:2024/06/19 09:01:44
//有5个学生的姓名,要求按字母顺序输出这5个学生的姓名
#include <iostream.h>
#include <stdlib.h>
#include "string.h"
void sort(char *n2[],int n)
{
char *temp;
int i,j,k;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp(n2[k],n2[j])>0) k=j; 这一点不太明白,愿高手指点:
在这它是怎么交换的?
if(k!=i)
{
temp=n2[i];
n2[i]=n2[k];
n2[k]=temp;
}
}
}
void print(char *n3[],int n)
{
int i;
for(i=0;i<n;i++)
{
cout<<n3[i];
cout<<endl;
}
}
void main()
{
void sort(char *n1[],int n);
void print(char *n1[],int n);
static char *n1[]={"tom","john","mary","smith","balk","rose"};
int n=5;
sort(n1,n);
print(n1,n);
}

strcmp
原型:extern int strcmp(char *s1,char * s2);

用法:#include <string.h>

功能:比较字符串s1和s2。

说明:
当s1<s2时,返回值<0
当s1=s2时,返回值=0
当s1>s2时,返回值>0

举例:

// strcmp.c

#include <syslib.h>
#include <string.h>

main()
{
char *s1="Hello, Programmers!";
char *s2="Hello, programmers!";
int r;

clrscr();

r=strcmp(s1,s2);
if(!r)
printf("s1 and s2 are identical");
else
if(r<0)
printf("s1 less than s2");
else
printf("s1 greater than s2");

getchar();
return 0;
}

strcmp这个函数是字符串比较指令,因为字符常用ASCII码使用,字符A在其ASCII码好像是61,所以可以通过