1616 - 姓名排序

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

存储一组姓名,如Apple,Tom,Green,Jack 要求按照字典序排序并显示。

题目输入

输入第一行为样例数m,对于每个样例,第一行为人数n,接下来有n个姓名,n不超过10,每个名字长度不超过20。

题目输出

对于每个样例输出排序后的结果,每行一个姓名。

输入/输出样例

输入格式

1
4
Apple
Tom
Green
Jack 

输出格式

Apple
Green
Jack
Tom

C语言解答

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

C++解答

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cstdio>
using namespace std;

int main()
{
    //freopen("test.in", "r", stdin);
    //freopen("test.out", "w", stdout);
    int t;
    cin >> t;
    while (t--) {
        int n;
        vector<string> v_string;
        string s;
        cin >> n;
        while(n--) {
            cin >> s;
            v_string.push_back(s);
        }
        sort(v_string.begin(),v_string.end());
        for(int i=0; i<v_string.size(); i++)
            cout<<v_string[i]<<endl;
    }
    return 0;
}

Java解答

import java.util.Arrays;
import java.util.Scanner;

public class Main {
   public static void main(String[] args) {
	 Scanner s = new Scanner(System.in) ;
	 int n = s.nextInt() ;
	 for (int i = 0; i < n; i++) {
		int m = s.nextInt() ;
		
		String strs[] = new String[m] ;
		for (int j = 0; j < strs.length; j++) {
			strs[j] = s.next() ;
		}
		Arrays.sort(strs) ;
		for (int j = 0; j < strs.length; j++) {
			System.out.println(strs[j]);
		}
	}
   }
}