char ** create1( int n )
{
char **ch=malloc(sizeof(char*)*n);
return ch;
}
char * create2( int n )
{
char *ch=malloc(sizeof(char)*n);
return ch;
}
void sort( char** strArray , int size )
{
char * ch=NULL;
for(int count=0;count<size-1;count++)
{
for(int num=0;num<size-count-1;num++)
{
if(strcmp(*(strArray+num),*(strArray+1+num))>0)
{
ch=*(strArray+1+num);
*(strArray+1+num)=*(strArray+num);
*(strArray+num)=ch;
}
}
}
}
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; } /* 请在这里填写答案 */
输入样例:
5
bbb
zzzzzz
aabbbccc
aaaaaa
abbbbb
输出样例:
aaaaaa
aabbbccc
abbbbb
bbb
zzzzzz