C语言习题 字符串排序

时间: 1ms        内存:128M

描述:

输入n个字符串,将它们按字母由小到大的顺序排列并输出。编写三个函数实现,input 用于输出n个字符串,sortstr用于排序n个字符串,output 用于输出n个字符串。

输入:

第一行 n
第二行到第n+1行,每行一个字符串

输出:

排序后的字符串

示例输入:

3
YTU
ACM
COM

示例输出:

ACM
COM
YTU

提示:

参考答案(内存最优[752]):

#include <string.h>
#include <stdio.h>
#define N 100
void main()
{
	char a[N][20];
	int i,j,n;
	char t[20];
	scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%s",a[i]);
	for(i=0;i<n-1;i++)
	{
		for(j=0;j<n-1-i;j++)
		{
			if(strcmp(a[j],a[j+1])>0)
			{
				strcpy(t,a[j]);
				strcpy(a[j], a[j+1]);
				strcpy(a[j+1],t);
			}
		}
	}
	for(i=0;i<n;i++)
		printf("%s\n",a[i]);
}

参考答案(时间最优[0]):

#include <iostream>
#include <string>
using namespace std;
void input(string str[],int n)
{
    int i;
    for(i=0; i<n; i++)
        cin>>str[i];
}
void sortstr(string str[],int n)
{
    string temp;
    int i,j;
    for(i=0; i<n-1; i++)
        for(j=0; j<n-i-1; j++)
            if(str[j]>str[j+1])
            {
                temp=str[j];
                str[j]=str[j+1];
                str[j+1]=temp;
            }
}
void output(string str[],int n)
{
    int i;
    for(i=0; i<n; i++)
        cout<<str[i]<<endl;
}
int main()
{
   string str[10];
   int n;
   cin>>n;
   input( str, n);
   sortstr( str, n);
   output( str, n);
   return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。