实验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);
}
}
}
}