1、设计函数char ** create1( int n ) ;,根据整数n创建一个长度为n的字符指针型动态一维数组,并返回动态数组第一个元素的地址。
2、设计函数char * create2( int n ) ;,根据整数n创建一个长度为n的字符型动态一维数组,并返回动态数组第一个元素的地址。
3、设计函数void sort( char** strArray , int size ) ; ,该函数可将字符指针数组strArray所指向的所有字符串按从小到大排列。
输入第一行为一个不超过200的整数n,代表待排序字符串的个数。然后输入n个字符串,每个字符串长度不会超过100。
输出为排序后的n个字符串,每个字符串占一行。
函数接口定义一:
char ** create1( int n ) ;
其中 n 为字符指针数组的长度; 函数需返回动态数组第一个元素的地址。如果没有获得内存则返回NULL。
函数接口定义二:
char * create2( int n ) ;
其中 n 为字符数组的长度; 函数需返回动态数组第一个元素的地址。如果没有获得内存则返回NULL。
函数接口定义三:
void sort( char** strArray , int size ) ;
其中 strArray 和 size 都是用户传入的参数。 strArray 为字符指针数组; size 是数组的长度。函数没有返回值。
裁判测试程序样例:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 101
char ** create1( int n ) ;
char * create2( int n ) ;
void sort( char** strArray , int size ) ;
int main()
{
char** strArray ;
int n , i ;
scanf("%d",&n) ;
strArray = create1( n ) ;
if ( strArray != NULL )
{
for ( i = 0 ; i < n ; i++ )
{
strArray[i] = create2( MAX ) ;
if ( strArray[i] == NULL ) return -1 ;
}
}
else return -1 ;//这里两个 return -1 都是无法获得内存时直接结束程序
getchar();//吃掉前边输入的回车符
for( i = 0 ; i < n ; i++ )
gets(strArray[i]); //读入字符串
sort( strArray , n ) ; //排序
for( i = 0 ; i < n ; i++ )
printf("%s\n",strArray[i]); //输出
for ( i = 0 ; i < n ; i++ )
free(strArray[i]) ;
free(strArray) ;
return 0;
}
/* 请在这里填写答案 */
输入样例:
10
Bb b
zzz zzz
aab bbccc
aaabbaaa
abb bbb
ccidfjD
Aidj idj
Ccidf jD
sidfjijE EE
kkkkkk
输出样例:
Aidj idj
Bb b
Ccidf jD
aaabbaaa
aab bbccc
abb bbb
ccidfjD
kkkkkk
sidfjijE EE
zzz zzz
供参考:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 101
char** create1(int n);
char* create2(int n);
void sort(char** strArray, int size);
int main()
{
char** strArray;
int n, i;
scanf("%d", &n);
strArray = create1(n);
if (strArray != NULL)
{
for (i = 0; i < n; i++)
{
strArray[i] = create2(MAX);
if (strArray[i] == NULL) return -1;
}
}
else return -1;//这里两个 return -1 都是无法获得内存时直接结束程序
getchar(); //吃掉前边输入的回车符
for (i = 0; i < n; i++)
gets(strArray[i]); //读入字符串
sort(strArray, n); //排序
for (i = 0; i < n; i++)
printf("%s\n", strArray[i]); //输出
for (i = 0; i < n; i++)
free(strArray[i]);
free(strArray);
return 0;
}
char** create1(int n)
{
char** str = (char**)malloc(sizeof(char*) * n);
if (str == NULL)
return NULL;
else
return str;
}
char* create2(int n)
{
char* str_i = (char*)malloc(sizeof(char) * n);
if (str_i == NULL)
return NULL;
else
return str_i;
}
void sort(char** strArray, int size)
{
int i, j;
char* tmp;
for (i = 0; i < size - 1; i++) {
for (j = 0; j < size - i - 1; j++) {
if (strcmp(strArray[j], strArray[j + 1]) > 0) {
tmp = strArray[j];
strArray[j] = strArray[j + 1];
strArray[j + 1] = tmp;
}
}
}
}