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;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。
