求源🐴、流程图和注释

设计一个函数,对n个字符串由大到小的顺序
排列,n由程序读入,字符串的输出和输入都
在main函数中进行。

代码加流程图,简单啊
是否还需要,代码和流程图都可以搞定
call我

img

/**字符串排序*/
#include<stdio.h>
#include<string.h>
void Sort_String(char arr[][50], int size)
{
    char tmp[50];
    if(arr == NULL || size < 2)//字符串个数小于2的直接返回,不用排序
        {return;}
    for(int i = 0; i < size - 1; i++)
    {
        for(int j = 0; j < size - i - 1; j++)
        {
            if(strcmp(arr[j], arr[j + 1]) < 0)//如果后一个字符串大于前面的一个,就进行交换操作
            {
                //利用冒泡的排序算法对字符串进行排序
                strcpy(tmp,arr[j]);
                strcpy(arr[j],arr[j + 1]);
                strcpy(arr[j + 1],tmp);
            }
        }
    }
}

int main(){
  
   int n,i;
   char arr[100][50];
   printf("打算输入多少个字符串:");
   scanf("%d",&n);
   getchar();//吃掉回车符
   printf("请输入数据:\n");
   for(i=0;i<n;i++){
    gets(arr[i]);
   }
   Sort_String(arr,n);
   printf("排序后:\n");
   for(i=0;i<n;i++){
    puts(arr[i]);
   }
    return 0;
}

img

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

void sorts(char s[][100],int n)
{
      char t[100];
      for(int i=0;i<n-1;i++)
        for(int j=0;j<n-i-1;j++)
        {
            if(strcmp(s[j],s[j+1]) < 0)
            {
                strcpy(t,s[j]);
                strcpy(s[j],s[j+1]);
                strcpy(s[j+1],t);
            }
        }
}

int main()
{
    int n;
    char s[100][100];
    scanf("%d",&n);
    getchar();
    for(int i=0;i<n;i++)
        gets(s[i]);
    sorts(s,n);
    for(int i=0;i<n;i++)
        puts(s[i]);
}

参考代码:

#include<iostream>
using namespace std;
void sort(int a[],int n)//形参数组相当于指针变量int *
{
int i,j,t;
for(i=1;i<n;i++)//外循环控制比较对轮数n-1轮
     for(j=0;j<n-1;j++)//内循环控制比较对次数,第i轮中n-i次
         if(a[j]>a[j+1])
 
         {t=a[j];
         a[j]=a[j+1];
         a[j+1]=t;
         }
}
int main()
{
    int b[5],i;
for(i=0;i<5;i++)
cin>>b[i];
sort(b,5);//形参数组指针变量,实参数组用数组名
for(i=0;i<5;i++)
cout<<b[i]<<" ";
return 0;
}


#include <stdio.h>

#include<string.h>

void rule(char (*s)[100],int n);

int main()

{

    int n;

    scanf("%d",&n);

    getchar();

    char s[n][100];

    for(int i=0;i<n;i++)

        {

            gets(s[i]);

            s[i][strlen(s[i])]='\0';

        }

    rule(s,n);

    for(int k=0;k<n;k++)

        puts(s[k]);

  return(0);

}

void rule(char (*s)[100],int n)

{

    int i,j;

    for(i=0;i<n-1;i++)

    {

        for(j=0;j<n-i-1;j++)

        {


 

            if(strcmp(s[j+1],s[j])<0)

            {

                char t[100]={0};

                strcpy(t,s[j]);

                strcpy(s[j],s[j+1]);

                strcpy(s[j+1],t);

            }

        }

    }

}