#include<stdio.h> #include<ctype.h> #include<string.h> #define LIM 10 #define SIZE 81 void strput(char *str[],int n);//输出初始字符串列表 void strasc(char *str[],int n);//按ascii码输出字符串 void strlong(char *str[],int n);//按长度递增顺序输出字符串 void strslg(char *str[],int n);//按第一个单词长度输出字符串 int main(void) { char input[LIM][SIZE]; char *ptstr[LIM]; int i=0; int j=0,c; printf("请输入10个字符串/n"); while(i<LIM &&gets(input[i])!=NULL) { ptstr[i]=input[i]; i++; } while(1) { printf("***********************************************************/n"); printf("请输入你要的选择/n"); printf("1)输出初始字符串列表 2)按ascii码输出字符串/n"); printf("3)按长度递增顺序输出字符串 4)按第一个单词长度输出字符串/n"); printf("5)退出/n"); printf("***********************************************************/n"); while(scanf("%d",&c)) { for (j=0; j <i; j++) //重新赋值 ptstr[j]=input[j]; switch(c) { case 1: strput(ptstr,i); break; case 2: strasc(ptstr,i); break; case 3: strlong(ptstr,i); break; case 4: strslg(ptstr,i); break; case 5: goto quit;//退出 } } } quit:printf("Bye!"); getch(); return 0; } void strput(char *str[],int n)//输出初始字符串列表 { int i; for(i=0;i<n;i++) puts(str[i]); } void strasc(char *str[],int n)//按ascii码输出字符串 { int i,j; char *temp; for(i=0;i<n-1;i++) { for(j=i+1;j<n;j++) { if((strcmp(str[i],str[j])>0))//要string.h头文件的支持 { temp=str[i]; str[i]=str[j]; str[j]=temp; } } } for(i=0;i<n;i++) puts(str[i]); } void strlong(char *str[],int n)//按长度递增顺序输出字符串 { int i,j; char *temp; for(i=0;i<n-1;i++) { for(j=i+1;j<n;j++) { if(strlen(str[i])>strlen(str[j])) { temp=str[i]; str[i]=str[j]; str[j]=temp; } } } for(i=0;i<n;i++) puts(str[i]); } void strslg(char *str[],int n)//按第一个单词长度输出字符串 { int i,j; char *temp; char num[LIM]; for(i=0;i<n;i++) { for(j=0;j<strlen(str[i]);j++) { if(str[i][j]==' ') { num[i]=j; break; //退出里循环 } } } for(i=0;i<n-1;i++) { for(j=i+1;j<n;j++) { if(num[i]>num[j]) { temp=str[i]; str[i]=str[j]; str[j]=temp; } } } for(i=0;i<n;i++) puts(str[i]); }