Description
输入三个字符串,按由小到大的顺序输出,字符串长度小于1000
Input
3行字符串
Output
按照从小到大输出成3行
Sample Input
cde afg abc
Sample Output
abc afg cde
Note:
main 函数先 scanf 再赋值给指针的原因:
C语言是比较低级的语言,没有字符串概念,只有字符数组,不能自动分配空间,要存放数据,必须预先定义存储空间的大小!
char a[3][N]; 输入时一定要常量,而后再将地址赋给指针,进行后续指针操作。
#include <stdio.h>
#include <stdlib.h>
#define N 1000
void bubblesort(char *v[], int n);
int main()
{
char a[3][N], *b[3];
int i;
for(i=0; i<3; i++)
{
scanf("%s", a[i]);
b[i] = a[i];
}
bubblesort(b, 3);
for(i=0; i<3; i++)
puts(b[i]);
return 0;
}
int strcmp(char *p, char *q)
{
for(; *p == *q; p++, q++)
if(*p == '\0')
return 0;
return *p - *q;
}
void bubblesort(char *v[], int n)
{
int i, j, flag;
void swap(char *v[], int i, int j);
for(i=n-1; i>=1; i--)
{
flag = 0;
for(j=0; j<i; j++)
{
if(strcmp(v[j], v[j+1]) > 0)
{
swap(v, j, j+1);
flag = 1;
}
}
if(flag == 0)
break;
}
}
void swap(char *v[], int i, int j)
{
char *temp;
temp = v[i];
v[i] = v[j];
v[j] = temp;
}