实验8-2-8 字符串排序(字符串大小排序)

实验8-2-8 字符串排

本题要求编写程序,读入5个字符串,按由小到大的顺序输出。

输入格式:
输入为由空格分隔的5个非空字符串,每个字符串不包括空格、制表符、换行符等空白字符,长度小于80。

输出格式:
按照以下格式输出排序后的结果:

After sorted:
每行一个字符串

输入样例:
red yellow blue green white

输出样例:
After sorted:
blue
green
red
white
yellow

自己写的代码,出来的顺序都是乱的
但是中间关于字符串替换的部分是正确的;

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(){
      char str[80][80];
      int i,j,n;
      char *p;
      scanf("%d",&n);
      for(i=0;i<=5;i++){
            gets(str[i]);
      }
   //不用调用函数的方法排序;
      for(i=0;i<=4;i++){
            for(j=i+1;j<=5;j++){
                  if(strcmp(str[i],str[j])>0){
                        p=(char*)malloc(sizeof(char));
                        strcpy(p,str[i]);
                        strcpy(str[i],str[j]);
                        strcpy(str[j],p);
                  }
            }
      }
      for(i=0;i<=5;i++){
            printf("after sorted:%s\n",str[i]);
      }
      
      return 0;
}

调用函数的方式

#include<stdio.h>
#include<string.h>
#define MAX_LEN 80
#define N 5
void sortstring(char str[][MAX_LEN],int n);
int main()
{
      int  i,n;
    char name[N][MAX_LEN];
    //printf("输入red");
    scanf("%d",&n);
      //printf("输入yellow");
      for(i=0;i<=n;i++){
            gets(name[i]);
      }
      sortstring(name,n);
      printf("sorted results:");
      for(i=0;i<=n;i++){
            printf("%s\n",name[i]);
      }
      return 0;
}
void sortstring(char str[][MAX_LEN],int n){
      int i,j;
   //char str[N][MAX_LEN];在上面已经定义要用的,下面的程序仅定义临时的;
      char temp[MAX_LEN];
      for(i=0;i<n-1;i++){
            for(j=i+1;j<n;j++){
                  if(strcmp(str[i],str[j])>0){
                        strcpy(temp,str[i]);
                        strcpy(str[i],str[j]);
                        strcpy(str[j],temp);
                        
                  }
            }
      }
}

发布了54 篇原创文章 · 获赞 0 · 访问量 985

猜你喜欢

转载自blog.csdn.net/hellobettershero/article/details/103983059