黑马程序员技术交流社区

标题: 对字符串从小到大排列并输出结果 [打印本页]

作者: 4B青年    时间: 2015-7-1 20:21
标题: 对字符串从小到大排列并输出结果
自我感觉这题算是对指针和字符串灵活的应用,发出来给大家看看,顺便看看能不能优化。
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define N 6
  4. #define L 100
  5. int main(int argc, const char * argv[]) {
  6.     //定义一个字符串数组
  7.     char *array[N];
  8.     char arr[N][L];
  9.     //通过for循环将数组arr各元素的行地址赋值给指针数组array
  10.     for (int i=0; i<N; i++) array[i]=arr[i];
  11.     //通过for循环接收用户输入的字符串并存在数组arr中
  12.     for ( int i=0; i<N; i++) {
  13.         //提示用户输入字符串
  14.         printf("请输入第%d个字符串:\n",i+1);
  15.         //接收用户输入的字符串
  16.         scanf("%s",array[i]);
  17.     }
  18.     //对字符串排序
  19.     //定义指针变量用来存放地址
  20.     char *temp;
  21.     //冒泡排序法
  22.     for(int i=0;i<N-1;i++){
  23.         for(int j=0;j<N-i-1;j++){
  24.             //比较字符串的大小并将大数后移
  25.             if(strcmp(*(array+j),*(array+j+1))>0){
  26.                 temp=*(array+j);
  27.                 *(array+j)=*(array+j+1);
  28.                 *(array+j+1)=temp;
  29.             }
  30.         }
  31.     }
  32.     printf("\n");
  33.     //打印字符串
  34.     for(int i=0;i<N;i++){
  35.         printf("%s\n",array[i]);
  36.     }
  37.     return 0;
  38. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2