做过的练习, 请楼主参考一下。
程序代码:
#include <stdio.h>
#define N 5 //预定义5条字符串
struct string {
char str[15]; //每个字符串长度不超过15
};
int main (void) {
struct string array[N]; //结构数组array,记录5
char tmp[15]; //临时数组
int cmpstr (char s1[],char s2[]); //字符串比较函数
void cpstr (char dest[],char source[]);//字符串传送
int i=0,j,n;
printf ("Enter 5 character strings:\n");
//输入5个字符串
for(i=0;i<N;i++) {
scanf ("%s",array[i].str);
}
printf ("Before sorted ...\n");
for (i=0;i<N;i++) {
printf ("%s\n",array[i].str);
}
printf ("\n\n");
//排序
for(i=0;i<N-1;i++) {
for(j=i+1;j<N;j++) {
n=cmpstr(array[i].str,array[j].str);
if(n==1) {
cpstr(tmp,array[i].str);
cpstr(array[i].str,array[j].str);
cpstr(array[j].str,tmp);
}
}
}
printf ("After sorted...\n");
//打印结果
for(i=0;i<N;i++) {
printf ("%s\n",array[i].str);
}
printf ("\n");
return 0;
}
//compare string1 and string2
int cmpstr (char s1[],char s2[]) {
int i=0;
while(s1[i]!='\0'&&s2[i]!='\0') {
if(s1[i]>s2[i]) {
return 1;
}
if(s1[i]<s2[i]) {
return -1;
}
i++;
}
if(s1[i]=='\0'&&s2[i]=='\0') {
return 0;
}
}
//copy string from source to destination
void cpstr (char dest[],char source[]) {
int i;
for(i=0;source[i]!='\0';i++) {
dest[i]=source[i];
}
dest[i]='\0';
}
[
本帖最后由 ansic 于 2011-3-28 13:25 编辑 ]