1243 - C语言10.13

将若干字符串按照字母顺序(由小到大)输出。这里的字母顺序指字符串对应字符的ascii码的大小由小到大。

题目输入

第一行有一个整数n,表示以下有n行,每行一个字符串。请注意每一行的字符串可能包含空格。保证n不超过20,每一个字符串的长度不超过20。

题目输出

共有n行,即按照字母顺序排好序的字符串序列。

请注意行尾输出换行。

输入/输出样例

题目输入

5
Follow me
BASIC
Great Wall
FORTRAN
Computer design

题目输出

BASIC
Computer design
FORTRAN
Follow me
Great Wall

C语言解答

#include <stdio.h>
#include <string.h>
int main()
{
	char c1[25][25],c2[25];
	int n;
	int i,j;
	scanf("%d\n",&n);
	for(i=0;i<n;i++)
		gets(c1[i]);
	for(i=1;i<n;i++)
		for(j=0;j<n-i;j++)
			if(strcmp(c1[j],c1[j+1])>0)
			{
				strcpy(c2,c1[j]);
				strcpy(c1[j],c1[j+1]);
				strcpy(c1[j+1],c2);
			}
	for(i=0;i<n;i++)
		puts(c1[i]);
	return 0;
	//while(1);
}
				



C++解答

#include <stdio.h>
#include <string.h>
int main() {
	void sort(char *name[], int n);
	char * name[20];
	char names[20][20];
	char ch;
	int n, i, j;
	scanf("%d", &n);
	/* 处理第一行多余的空格和回车符 */
	while ((ch = getchar()) != '\n') {}
	for (i = 0;i < n;i++) {
		/* 读入每一行的字符串 */
		j = 0;
		while ((ch = getchar()) != '\n') {
			names[i][j] = ch;
			j++;
		}
		/* 在字符串末尾加上0,标记字符串结束 */
		names[i][j] = '\0';
		/* 给指针数组赋值,以方便进行排序 */
		name[i] = names[i];
	}
	sort(name, n);
	for (i = 0;i < n;i++)
		printf("%s\n", name[i]);
	return 0;
}
/* 选择排序 */
void sort(char *name[], 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(name[k], name[j]) > 0)
				k = j;
		if (k != i) {
			temp = name[i]; name[i] = name[k]; name[k] = temp;
		}
	}
}

时间限制 1 秒
内存限制 32 MB
讨论 统计
上一题 下一题