题目描述:
定义一个二维字符数组str[10][20],行号表示单词序号,列号表示单词最大长度,
输入一个正整数N(N≤10),表示单词数,
使用函数wd_sort()完成单词的排序,按字母顺序从小到大排列单词
输入描述:
输入一个正整数N和一个二维字符数组str,字母为小写,行号表示单词序号,列号表示单词最大长度。
输出描述:
格式输出:排序后的单词之间用换行分隔。
输入样例:
3
word
fish
egg
输出样例:
egg
fish
word
#include<stdio.h> #include<string.h> void wd_sort(char p[][20],int n){ //传入未知数量个长度为20的数组 char s[20]; int i,j; for(i=0;i<n-1;i++){ for(j=i;j<n;j++){ if(strcmp(p[i],p[j])>0){ //p[i]就是第一行的数组名 strcpy(s,p[i]);//等价于交换数字,这里是交换字符串 strcpy(p[i],p[j]); strcpy(p[j],s); } } puts(p[i]); } puts(p[i]); } int main(){ char str[10][20]; int N,i; scanf("%d\n",&N); for(i=0;i<N;i++){ gets(str[i]); } wd_sort(&str[0],N);//这里将二维数组str的每一行视为一个元素,每一行在一块就构成一个数组(装着数组的数组) str[0]str[1]str[2]...
//那么&str[0]就指向str[0]。str[0]又是一个长度为20的数组,str[0]就是第0行str[0][20]该数组的数组名 return 0; }
传入多维数组,将每一行当做一个数组在函数中处理的例子