定义一个二维字符串数组,输入若干个字符串,按升序排列后输出,要求设计通用的排序函数

输入参数为字符串数组和要排序的字符串的个数!!!
球给力

#include<stdio.h>
#include <string.h>

void getin(char str[10][30],int n)//输入字符串
{

int i;
for(i=1;i<=n;i++)
{
printf("please input %dth string:",i);
gets(str[i]);
}
}

void compare(char str[10][30],int n)//字符串的比较,排序
{
int i,j;
char string[30];
for (j=1;j<n;j++)//外循环(冒泡法)
{

for (i=1;i<=n-j;i++)//内循环
{
if(strlen(str[i])>strlen(str[i+1]))//字符串交换顺序
{
strcpy(string,str[i]);
strcpy(str[i],str[i+1]);
strcpy(str[i+1],string);
}
}
}
}

void output(char str[10][30],int n)//字符串的输出
{
int i;
for(i=1;i<=n;i++)
puts(str[i]);

}

int main()
{
int n;
char STR[10][30];
printf("please input a n:");//输入字符串的个数
scanf("%d",&n);
getchar();
getin(STR,n);//调用输入函数
compare(STR,n);//调用比较函数
printf("AFTER COMPARING\n");
output(STR,n);//调用输出函数
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-03-19
#include <stdio.h>
#include <string.h>
#define M 4
#define N 20

void Sort(char (*a)[N],int n)
{
int i,j;
char ct[N];
for(i = 0;i < n - 1;i++)
{
for(j = 0;j < n - i - 1;j++)
if(strcmp(a[j],a[j+1]) > 0)
{
strcpy(ct,a[j]);
strcpy(a[j],a[j+1]);
strcpy(a[j+1],ct);
}
}
}

int main()
{
int i;
char str[M][N];

//输入
for(i = 0;i < M;i++)
scanf("%s",str[i]);

//排序
Sort(str,M);

//输出
for(i = 0;i < M;i++)
printf("%s\n",str[i]);

return 0;
}

//简单实现了一下,还需要什么请追问。本回答被提问者和网友采纳

用二维字符数组的每行存储键盘输入的字符串,将这些字符串按字典顺序升...
include <stdio.h>#include <string.h>int main(){ char s[10][100]; char t[100]; int i,j; for(i = 0; i < 10; i ++) scanf("%s",s[i]); for(i = 0; i < 10; i ++) for(j = i+1; j < 10; j ++) { if(strcmp(s[i],s[j]...

用二维字符数组的每行储存键盘输入的字符串,将这些字符串按字典顺序升...
include <string.h> include <memory.h> main(){ int i,j;char tmp[20]="\\0",str[5][20];memset(str,'\\0',sizeof(str));for (i=0;i<5;i++){ scanf("%s",str[i]);} for (i=0;i<5-1;i++){ for (j=0;j<5-i-1;j++){ if (strcmp(str[j],str[j+1])>0){...

内容:输入n个字符串,对这n个字符串进行排序(按升序),输出排序后的字符串...
1、每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。2、运用定义数组,把10个数进行选择排序,#include<stdio.h>,#define max 10,int main(){ int i; int j; int temp; int a[max];。3、 printf("input 10num:...

加赏!C语言数组编程:用二维字符数组的每行存储键盘输入的字符串,将这...
include <stdio.h>#include <string.h>const int MAXSIZE = 10;const int MAXLEN = 50;void mysort(char s[][MAXLEN],int n) {int i,j,k;char tmp[MAXLEN];for(i = 0; i < n; ++i) {k = i;for(j = i + 1; j < n; ++j) {if(strcmp(s[k],s[j]) > 0) k =...

C语言,编写一个程序,输入若干字符串,找出其中最长的字符串并输出。要...
1、我们在main函数之前定义一个函数。2、然后我们就可以开始编写,并且先输入整个框架。3、然后我们可以用和循环开始进行输出。4、利用普通变量也可以使用指针变量来书写。5、在这里我们将以指针变量来书写。6、书写完毕后,我们将可回去main函数中进行直接调用。

任意输入5个字符串,按升序排序后输出
for (int i = 0; i <= 4; i++)\/\/输入5行字符串 { cout << "String" << i + 1 << ":";str[i] = new char[100];cin.getline(str[i], 100);} for (i = 0; i<5; i++){ k = i;for (j = i + 1; j < 5; j++)if (strcmp(str[k], str[j]) > 0)k ...

...输入n个数字,以逗号隔开,然后升序排列,再重新输出
思路如下:1,录入字符串 2,使用正则表达式分割 3,转换为int数组 4,排序 5,拼接,代码如下:import java.util.Arrays;import java.util.Scanner;public class Demo8 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String str = sc.nextLine();\/\/ 录入字符...

JAVA题目,用户输入任意N个数字,按升序排列,按5*5矩阵输出。样子如下图...
提问者应该不是完全不会输出这个矩阵。我猜想应该是输入会做,存入一维数组也会做,排序也会做。要写程序输出这个矩阵应该也会做。提问者是不会将这个排好序的一维数组变换成这个二维数组。那我来帮你一下,同时也借用一下 紫薇参星的代码。我想提问都应该能够看懂紫薇参星的代码及功能的。只需要改造...

C语言练习题:输入n个字符串,将它们按字典顺序输出。(请用数组的指针和...
\/\/ 下面是字典序:#include<stdio.h>#include <string.h>void swap(char *a,char *b){ char temp=*a; *a = *b; *b = temp;}int nextperm(char a[], int n) \/\/ 字典序排列(从升序到降序排列(也可从降序到升序))基于ASCII码准则{ int i,j,k=-1,l; for(i=...

编一个程序输入两个数组分别将数组升序排列,然后将两数组合并成一个升序...
编一个程序输入两个数组分别将数组升序排列,然后将两数组合并成一个升序数组  我来答 分享 新浪微博 QQ空间 你的回答被采纳后将获得: 系统奖励15(财富值+成长值)+难题奖励20(财富值+成长值)1个回答 #热议# 你见过哪些90后家长教育孩子的“神操作”?

相似回答