ZJGSU OJ 2282 字符串排序(函数 && 指针)
日期: 2020-12-08 分类: 跨站数据测试 403次阅读
几乎和2475那题一样
题目描述
编写一个程序,在主函数中输入n个不等长的字符串。用另一个函数
sort()对它们排序,函数sort()原型为:void sort(char *p[6]);,要求用指针
数组处理,然后在主函数输出这n个已排好的字符串。
输入
输入包括多组数据,第一行为一个字母n,表示下面有n个不等长的字符串,然后是n行字符串。输入0时结束。
输出
输出排序后的字符串。
样例输入
5
a
c
s
e
h
0
样例输出
a
c
e
h
s
#include<stdio.h> //2282
#include<string.h>
#include<stdlib.h>
int main(){
int n;
char *str[1000];
void print(char *name[],int n);
void sort(char *name[],int n);
while(scanf("%d", &n) && n!=0){
getchar();
for (int i = 0; i < n; i++){
str[i]=(char *)malloc(4);
gets(str[i]);
}
sort (str,n);
print(str,n);
for (int i = 0; i < n; i++){
free(str[i]); //及时free掉比较好
}
}
}
void sort(char *name[],int n){
int i,j,p;
char tmp[1000];
for(i=0; i<n-1; i++){
p=i;
for(j=i+1; j<n; j++)
if (strcmp(name[p],name[j])>0) p=j;
if (p!=i){
strcpy(tmp,name[p]);strcpy(name[p],name[i]);strcpy(name[i],tmp);
}
}
}
void print(char *name[],int n){
int i;
for ( i = 0; i < n; i++){
printf("%s\n",name[i]);
}
}
除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
标签:c语言
精华推荐