【题目描述】
输入学生人数n,再输入n个学生姓名,然后将学生姓名升序排序,要求使用指针数组和动态内存分配函数malloc来存放多个字符串。
【输入形式】
第一行输入学生人数n(2≤n≤20)。
接下来n行,每行一个字符串,表示学生的姓名,学生的姓名长度不超过30,并且学生姓名不包含空格。
【输出形式】
n行,每行一个字符串,表示升序排序后学生的姓名。
【样例输入】
4
Huangcaiyan
Maihaidong
Luye
Lifugao
【样例输出】
Huangcaiyan
Lifugao
Luye
Maihaidong
#include<stdio.h>
#include<iostream>
#include<cstring>
#include<malloc.h>
using namespace std;
int main()
{
int n;
cin>>n;
int *p=NULL;
p=(int *)malloc(n*sizeof(int));//动态数组
if(p=NULL) {
cout<<"no enough mrmory"<<endl;
exit(0);
}
for(int i=0;i<=n;i++)//输入n个名字
{
cin>>*(p+i);
}
for(int i=0;i<n;i++)//按照字典升序排序
{
for(int j=0;j<n-1;j++)
{
if(strcmp (*(p+i),*(p+i+1))>0)
{
int t=*(p+i);
*(p+i)=*(p+i+1);
*(p+i+1)=t;
}
}
}
for(int i=0;i<n;i++)//输出排序后的名字
{
cout<<*(p+i)<<endl;
}
free(p);//释放空间
return 0;
}