描述
对若干字符串升序排列
输入
第一个数是n,表示有n个字符串。1<=n<=10。
紧接着是n行,每一行是一个字符串,只包含大小写英文字符。长度不超过20个。
输出
升序输出这些字符串。每个字符串独占一行。
样例输入
3
an
cai
da
样例输出
an
cai
da
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int n,i,j,p;
char a[10][20];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%s\n",&a[i]);
for(i=0;i<n-1;i++)
{
p=i;
for(j=i+1;j<n;j++)
if(strcmp(a[p],a[j])>0)//比较相邻两个字符串大小
p=j;
if(p!=i)//若后面一个字符串小于前面的字符串
{
char t[20];
strcpy(t,a[p]);
strcpy(a[p],a[i]);
strcpy(a[i],t);
}//字符串交换
}
for(i=0;i<n;i++)
printf("%s\n",a[i]);
return 0;
}
另一种:
源代码:
#include <stdio.h>
#include<string.h>
int main() {
char a[10][20];
char b[20];
int i,n,j;
scanf("%d\n",&n);
for(i=0;i<n;i++)
gets(a[i]);
for(i=0;i<n;i++)
for(j=0;j<n-1-i;j++)
{
if(strcmp(a[j],a[j+1])>0)//若后面一个字符串小于前面的字符串
{
strcpy(b,a[j]);
strcpy(a[j],a[j+1]);
strcpy(a[j+1],b);}
}
for(i=0;i<n;i++)
puts(a[i]);
return 0;
}
strcmp(字符串1,字符串2):
字符串1<字符串2:返回负值;
字符串1>字符串2:返回正值;
字符串1=字符串2:返回0;
注:每个字符依次比较
strcpy(字符串1,字符串2):
把字符串2复制到字符串1里