本题要求编写程序,读入5个字符串,按由小到大的顺序输出。
输入格式:
输入为由空格分隔的5个非空字符串,每个字符串不包括空格、制表符、换行符等空白字符,长度小于80。
第一种:冒泡排序
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main() {
char a[5][99], t[99] = {'\0'};
int i, j;
for (i = 0; i < 5; i++) {
scanf("%s", a[i]);
}
for (i = 0; i < 4; i++) {
for (j = 0 ; j < 4; j++) {
if (strcmp(a[j], a[j + 1]) > 0) {
strcpy(t, a[j]);
strcpy(a[j], a[j + 1]);
strcpy(a[j + 1], t);
}
}
}
printf("After sorted:\n");
for (i = 0; i < 5; i++) {
puts(a[i]);
}
}
第二种:选择排序(这应该也算选择排序吧,书上教的觉得有点麻烦 T_T)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main() {
char a[5][99], t[99] = { '\0' }, b[99] = { '\0' };
int i, j;
for (i = 0; i < 5; i++) {
scanf("%s", a[i]);
}
for (i = 0; i < 4; i++) {
for (j = i + 1; j < 5; j++) {
if (strcmp(a[i], a[j]) > 0) {
strcpy(t, a[i]);
strcpy(a[i],a[j]);
strcpy(a[j], t);
}
}
}
printf("After sorted:\n");
for (i = 0; i < 5; i++) {
puts(a[i]);
}
}
这是两种普通的写法,但如果用** strcat **的话有办法写吗?