精华内容
下载资源
问答
  • C语言 用指针数组实现字符串排序 #include <stdio.h> #include <stdlib.h> #include <string.h> void sort(char *s[], int len) { int i,j; char *temp = (char *)malloc(sizeof(char) * 30)...

    C语言 用指针数组实现字符串的排序

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    void sort(char *s[], int len)
    {
        int i,j;
        char *temp = (char *)malloc(sizeof(char) * 30);
        for(i = 0; i < len-1; i++){
            for(j = 0; j < len-1-i; j++){
                if((strcmp(s[j], s[j+1])) > 0){
                    temp = s[j];
                    s[j] = s[j+1];
                    s[j+1] = temp;
                }
            }
        }
        free(temp);
    }
    
    int main()
    {
        int k;
        char *s[] = {"hello", "world", "abcde", "boy"};
        int size = sizeof(s)/sizeof(s[0]);
        
        sort(s ,size);
        for(k = 0; k < size; k++){
            printf("%s ",s[k]);
        }
        printf("\n");
        return 0;
    }
    
    展开全文
  • 题目要求:对十个不等长的字符串排序,要求用指针数组处理。 我的代码: ``` #include #include int main() { char a[10],*pointer=&a[0]; void order(char *pointer); int i; printf("请输入10个字符...
  • ``` #include #include ...void sort(char *p[]),参数是指针数组,想问一下在函数体内, * (p+i)和p[i]都可以表示第i+1个指针,为什么我*(p+i)可以实现排序,而p[i]这种表达就出问题呢?
  •  指导教师石强实验题目用函数实现字符串排序日期 2012年5月23日 一、实验目的:学会用指针数组 二、实验问题描述 说明一个可存放10个字符串的字符数组,个字符串有用户输入(假设用户输入的字符串长度上限为32...

    数学与计算机学院程序设计实验报告

    年级 11级数电二班学号2011435058  姓名魏珊珊成绩______

    专业电气信息类计算机类实验地点主楼402  指导教师石强实验题目用函数实现字符串排序日期 2012523

    一、实验目的:学会用指针数组

    二、实验问题描述

    说明一个可存放10个字符串的字符数组,个字符串有用户输入(假设用户输入的字符串长度上限为32
    数组中每个元素的大小根据用户输入串的实际大小动态确定。编一个函数对数组进行排序。实现从大到小的排序。
    (排序时无需交换两个串,只交换他们的指针即可)

    三、实验问题分析

    算法:

    1)定义一个二维数组保存字符串,然后用指针数组保存二维数组每一行的地址。然后在函数中用选择排序法,通过改变指针数组的各元素的指向,实现字符串的排序

    2)直接在主函数中定义指针数组,然后在函数中用选择排序法,通过改变指针数组的各元素的指向,实现字符串的排序。只是这种方法不能在黑屏上输入任意字符串,只能事先在主函数中初始化指针数组时键入字符串。

     

    出现的问题:我知道定义了指针数组后不用再取地址了,但是我不知道怎样在只能用指针数组的情况下,实现在黑屏上键入任意字符串。

     

    知识点:开始我在指针数组和二维数组之间有点迷惑,下面是二者的比较:

    1@char *str[M]

    这是定义了一个字符指针数组str,即str数组的每个元素都是一个指针,可以指向一个char地址。系统为它分配Msizeof(int)长度的空间。

     

    2@char  str[M][N]

    这是定义了一个二维字符数组,可以存储M*N个字符,系统为它分配M*Nsizeof(char)长度的空间。

    指针数组可以保存二维数组每行地址,他两个一起使用能解决本题。

     

    四、实验结果(程序)及分析

    以下是能运行的代码:

    (1)#include<iostream.h>
    
    #include<conio.h>       //因为编译器的问题,所以用getch()显示运行结果
    
    #include<string.h>
    
    #define N 10
    
    /*根据字符串的大小排序,由大到小*/ 
    
    void sort(char *p[N]);
    
    int main()
    
    {
    
        char str[N][32];   /*保存字符串的二维数组,每个字符串的最大长度是50*/ 
    
        int i;
    
        char *p[N]; 
    
        /*声明指针数组,保存二维数组每一行的地址*/
    
        cout<<"请输入"<<N<<"个字符串:\n";
    
        
    
        for(i=0;i<N;i++)
    
           cin>>str[i];      /*初始化二维数组*/ 
    
        for(i=0;i<N;i++)           /*初始化指针数组*/ 
    
            p[i]=str[i];
    
        sort(p);    
    
        getch(); 
    
        return 0; 
    
    }
    
     
    
    void sort(char *p[N])
    
    {
    
        int i,j;
    
        char *t;
    
        cout<<"由大到小排序:"<<endl;
    
        
    
        for(i=0;i<N-1;i++)          //选择排序发法
    
           for(j=i+1;j<N;j++)
    
           {
    
                if(strcmp(p[j],p[i])>0)
    
                {
    
                    t=p[i];
    
                    p[i]=p[j];
    
                    p[j]=t;
    
                }
    
           }
    
           
    
           
    
        for(i=0;i<N;i++)
    
            cout<<p[i]<<"  ";      /*输出排序后的结果*/ 
    
            
    
        cout<<endl; 
    
    }
    
    (2)
    
    #include<stdio.h> 
    
    #include<string.h> 
    
    #include<conio.h>   //显示运行结果
    
    void sort(char *a[],int size);
    
    int main()
    
    {//定义指针数组并初始化
    
       char *a[]={"follow","base","we","sa","asd","sdf","dfg","fgh","ghj","hjk",};
    
       
    
       int size=10; 
    
       sort(a,size); //调用排序函数
    
     
    
        getch(); 
    
        return 0;
    
    }
    
     
    
    void sort(char *a[],int size)    //定义函数对字符串排序并输出排序结果
    
    {
    
         int k,i,j; 
    
          char *t;
    
       for(i=0;i<size-1;i++)
    
         {  
    
           k=i; 
    
          for(j=i+1;j<size;j++) 
    
            if(strcmp(a[j],a[k])>0)    //strcmp函数比较字符串大小
    
               k=j;
    
       
    
           if(k!=i)
    
           { 
    
             t=a[i];
    
             a[i]=a[k];
    
             a[k]=t;
    
          } 
    
        }           
    
        for(i=0;i<size;i++)  //输出数组
    
        cout<<a[i]<<" ";
    
    cout<<endl;        
    
    }
    
     
    
     
    


     

    展开全文
  • 例81:C语言实现用指向指针指针的方法对5个字符串排序并输出。 解题思路:读者看着道题的时候,首先要知道什么时指针,指向指针指针应该怎么,一般在开发中不这样,读者要看明白,这个很锻炼思维的。 C语言...

    例81:C语言实现用指向指针的指针的方法对5个字符串排序并输出。

    解题思路:读者看着道题的时候,首先要知道什么时指针,指向指针的指针应该怎么用,一般在开发中不这样用,读者要看明白,这个很锻炼思维的。

    C语言源代码演示:

    #include<stdio.h>//头文件 
    #include<string.h> 
    #define LINEMAX 20 //定义字符串的最大长度 
    int main()
    {
      void sort(char **point);//函数声明 
      int i;//定义整型变量 
      char **point,*pstr[5],str[5][LINEMAX];//定义变量 
      for(i=0;i<5;i++)
      {
        pstr[i]=str[i]; //将第i个字符串的首地址赋予指针数组pstr的第i个元素 
      }
      printf("输入五个字符串:\n");//提示语句 
      for(i=0;i<5;i++)
      {
        scanf("%s",pstr[i]);
      }
      point=pstr;
      sort(point);//调用sort函数 
      printf("————————————\n");//提示语句 
      printf("输出排序后的结果:\n");//提示语句 
      for(i=0;i<5;i++)
      {
        printf("%s\n",pstr[i]);
      }
      return 0;//主函数返回值为0 
    }
    void sort(char **point)//冒泡排序算法实现 
    { 
        int i,j;//定义整型变量 
      char *temp;//定义字符指针变量 
      for(i=0;i<5;i++)
      {
        for(j=i+1;j<5;j++)
        {
          if(strcmp(*(point+i),*(point+j))>0)//比较后交换字符串地址 
          { 
            temp=*(point+i);
            *(point+i)=*(point+j);
            *(point+j)=temp;
          }
        }
      } 
    }
    

    编译运行结果:

    输入五个字符串:
    China
    American
    Japan
    Back
    Different
    ————————————
    输出排序后的结果:
    American
    Back
    China
    Different
    Japan
    
    --------------------------------
    Process exited after 2.574 seconds with return value 0
    请按任意键继续. . .
    

    以上,如果你看了觉得对你有所帮助,就给小林点个赞,分享给身边的人叭,这样小林也有更新下去的动力,跪谢各位父老乡亲啦~

    C语言开发工具

    更多案例可以go公众号:C语言入门到精通

    展开全文
  • 字符串排序

    2019-03-17 22:35:38
    数组指针实现字符串排序 关于排序问题想必大家再熟悉不过了,什么冒泡排序、选择排序和快速排序等等,但是当提及字符串的排序的时候,我们又怎么做来实现呢? 如下我们就来分几个层面探讨一番! 一、如何定义数组...

    用数组指针实现字符串排序

    关于排序问题想必大家再熟悉不过了,什么冒泡排序、选择排序和快速排序等等,但是当提及字符串的排序的时候,我们又怎么做来实现呢?
    如下我们就来分几个层面探讨一番!
    一、如何定义数组指针?
    我们定义一个char *arr[10],因为【】的优先级高于char *,所以该定义代表的是存放指针的数组。
    二、如何交换
    如图所示:该数组中是存放的每个字符串的地址,该地址指向一个对应的字符串
    在这里插入图片描述

    所以,数组中的值是不能改变的,例如如下交换是错误的。
    char tmp[100];
    strcpy(tmp,str[1]);
    strcpy(str[1],str[2]);
    strcpy(str[2],tmp);
    原因是字符串不能被修改,例如
    当我们用 char tmp[]=“hello”; tmp[0]=‘x’,来修改字符串中的值是对的 但我们用char *tmp=“hello”,tmp[0]=‘x’,来修改字符串中的值却是错的
    综上所述:
    char *tmp;
    tmp = str[j];
    str[j] = str[j+1];
    str[j+1] = tmp;
    这样交换是正确的。
    三、如何传递参数
    当我们定义一个数组时 int arr[10]传其首地址为int str
    因此当我们定义数组指针char
    arr[10]传其首地址为charstr **
    四、具体代码

    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • //指针数组,指数组的元素全是指针、 //如数组元素都是相同类型的指针则称这个数组为指针数组 //数组指针是指数组首元素的地址的指针 #include<stdio.h> #include<string.h> int main() { char c[6][4...
  • PS看不懂的部分百度 题目描述 ...第一行为整数n,后面n行是n个字符串表示的书名。 输出 排序后的书名,每行一个。 样例输入 5 Follow me BASIC Great Wall FORTRAN Computer 样例输出 BASIC Computer FORTR
  • 问题1:指向指针指针的方法对5个字符串排序 代码实现如下: #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;stdlib.h&amp;gt; #include &amp;lt;string.h&amp;gt; #define MAX...
  • 字符串排序 (15分)

    千次阅读 2020-07-15 08:34:16
    字符串排序 (15分) 本题将5个字符串从小到大排序后输出(用指针数组实现)。 函数接口定义: void fsort(char *color[ ], int n); 其中 color为指针数组首地址,n是字符串个数。 裁判测试程序样例: #include <...
  • https://blog.csdn.net/qq_33573235/article/details/79530792https://www.cnblogs.com/xiximayou/p/12126647.htmlhttps://blog.csdn.net/qq_21834027/article/details/84451976二次整理总结:攻城狮金C语言指针简介...
  • 7--7函数实现指针字符数组的排序

    千次阅读 2012-05-28 18:25:46
    /*说明一个可存放10个字符串的字符数组,个字符串有用户输入(假设用户输入的字符串长度上限为32)数组中每个元素的大小根据用户输入串的实际大小动态确定。编一个函数对数组进行排序。(排序时无需交换两个串,只...
  • 将若干个字符串按照字母顺序(由小到大)输出(用指针数组实现) 思路: 1.首先运用选择排序,写用来排字符串顺序的函数sort,注意:比较字母串字母的大小 用strcmp函数(C语言自带的),不能写成if(*name[i]>...
  • 字符串,以达到所需实现的目标。一般情况下,对于遍历数组只需要单个指针即可完成,但是在某些复杂情况下,两个指针来操作数据会更为快捷、高效。以下我会详细介绍、对比三种常见的双指针题型算法,希望大家在...
  • C++实验题---字符串排序

    千次阅读 2013-08-20 16:38:47
    用指针实现对N个字符串排序输出的程序,字符串按字符的ASCII依次排序。 输入 Line 1:一个整数N,表示有N个字符串; Line 2...N+1:一行一个字符串。 输出 Line 1...N
  • 字符串排序和输出用自定义函数实现。 提示:可以用指针数组指向n个字符串。 Input 输入数据有多组,每组第一行是一个整数n(0&lt;=n&lt;=20),接下来是n行,每行是一个长度不超过50的字符串。 Output ...
  • 指针指向两个字符串,则交换时,直接交换指针,而不是指针中的内容,即重新指向,指针中存放的是字符串第一个元素的首地址。 一般定义了二维数组,就要定义,指向一维数组的指针。 #include <stdio.h> #...
  • 尺取法尺取法(又称为:双指针、two pointers),是算法竞赛中一个常用的优化技巧,用来解决序列的区间问题,操作简单、容易编程。如果区间是单调的,也常常二分法来求解,所以很多问题尺取法和二分法都行。另外,...
  • C语言第九周作业二 内容为本周第九周课后作业 ...思路:很简单,先combine实现字符串的组合,接着sort按照冒泡排序实现题目要求!!! #include<stdio.h> #include<string.h> #define M...
  • 1、下面三段程序都试图通过定义函数,实现实际参数在必要时的交换,哪些能够实现,哪些不能实现?通过运行程序和单步执行,让自己对这一过程更加清楚,然后请在博文中给出明确的回答,并用你自己的话展开描述(自己...
  • 实现字符串的输入和输出; ⑵ 对所有的字符串按从小到大的顺序排序,即指针数组中的第一个元素指向最小的字符串,第二个元素指向次小的字符串…,依次类推; ⑶ 判断这些字符串中是否有“回文”,所谓“回文”指...
  • 字符串排序问题: 给定一个字符串“I love China”,编写程序完成以单词为单位的逆序,如"China love I",并要求不使用第三方变量保存数据,但可以使用辅助指针变量 这道题如果没有“要求不使用第三方变量保存数据”...
  • 用指针实现几个字符串按大小排序,有多种方法。可以在主函数中将指向字符串的指针值交换; 可以直接用在主函数中用strcpy交换指针指向的字符串;也可以在被调函数中用strcpy交换形参 指针指向的字符串。 但以下...
  • 字符串专项:LA 2755

    2013-07-02 23:42:01
    这题一开始没什么想法,貌似可以类似后缀数组的方法求,可是对实现后缀数组基数排序理解不够深,也不会写。后来看别人的代码,发现了一个简单而又高效的方法。 应该算是扫描线吧,两个指针,一个指向当前最优的...
  • 指针数组的输入输出和排序

    千次阅读 2014-01-09 13:56:30
    有时用二维数组不太方便的时候,或者数据较大时,可能会超时,解决的办法就是用指针数组,但在百度,谷歌.......等,对指针数组的输入都没有详细的介绍,今天我就给大家介绍,指针数组的输入和输出,以及注意事项。 ...
  • 字符类型 char 1~2000字节 固定长度字符串,长度不够的空格补充 varchar2 1~4000字节 可变长度字符串,与CHAR类型相比,使用VARCHAR2可以节省磁盘空间,但查询效率没有char类型高 数值类型 Number(m,n) m(1~38) ...
  • 给定字符串 dog loves pig变为 pig loves dog解决方法先将每个单词进行翻转,然后整个翻转可以达到效果2:原地归并两个有序数组进行合并,空间复杂度为O(1)两个指针分别指向两个数组的起始IMG_7077.JPG3:归并排序...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 260
精华内容 104
关键字:

用指针实现字符串排序