精华内容
下载资源
问答
  • 字符串排序数组C语言 C语言 字符串数组字典排序
    千次阅读
    2021-05-19 09:12:21

    C语言 字符串数组字典排序

    #include #include int main() { int j,k,i,t,n; char s[10][10],b[10][10]; for(i=0;i

    c语言,对字符串数组进行排序,从键盘中输入一个6行参考代码: #include #include #define N 100int main(){char str[N][N], tmp[N];int i, j, n;printf("输入要输入的字符串的个数:\n");scanf("%d", &n);for (i = 0; i < n; i++){scanf("%s", str[i]);}for (i = 0; i < n - 1; i++){for (j = i

    C语言编程 编写程序,从键盘输入一个字符串放在字C语言编程 编写程序,从键盘输入一个字符串放在字符数组a中,用选择法将#include #include #include void inOrder(char array[], int n ); int main(int argc, char *argv[]) { char temp[100]; printf("请输入字符串:\n"); gets(temp); char a[strlen(temp)+1]; strcpy(a,temp); inOrder(a,strlen(temp)); int k; f

    定义一个二维的字符串数组,然后对它进行访问排序#include #include main() { char str[10][20],temp[20]; int i,k; /*输入字符串*/ for(i=0;i

    c语言:定义一个 二维数组,存放五个字符串,然后用选#include #include #define N 5 //定义符号常量#define MAX_LEN 100 //字符串最大长度 void selectSort(char (*pt)[MAX_LEN],int n) //形参pt为指向二维字符数组的指针{ int i,j,k; char tmp[MAX_LEN]; //临时字符数组 for(i=0;i0,则执行if语句

    C语言 CSS布局HTML小编今天和大家分享字符数组的排序

    高悬赏。。C语言用冒泡排序法对n个字符串进行排序#include#include#includeint main(){int n,i,j;char **str;char s[100];printf("请输入n:");scanf("%d",&n);getchar();str=(char**)malloc(sizeof(char*)*n);for(i=0;i

    更多相关内容
  • C 字符串数组排序的小例子,需要的朋友可以参考一下
  • C语言字符串数组排序问题

    万次阅读 多人点赞 2019-05-31 22:30:49
    在用C语言解决字符串排序问题时,遇到的些问题,记录一下; 字符串排序与平常的数字排序方法,碰壁的地方在于做 ‘交换 ’ 这一步; 1. 这是用选择排序法对一个整型数组进行从大到小的排序; //选择排序法 #include...

    对字符串的排序时,应该注意 交换 要用函数strcpy覆盖字符串的内容进行交换,不同于简单的数字交换。

    1.

    这是用选择排序法对一个整型数组进行从大到小的排序;

    //选择排序法
    #include <stdio.h>
    #define N 5
    int main(){
    	int a[N]={4,5,2,3,1};
    	int i,j,k,temp;
    	for(i=0;i<N-1;i++){
    		k=i;
    		for(j=i+1;j<N;j++){
    			if(a[k]<a[j])  
    				k=j;
    		}
    //
    		if(k!=i){ 
    			temp=a[k];
    			a[k]=a[i];
    			a[i]=temp;
    		}
    	}
    	for(i=0;i<N;i++) printf("%d",a[i]);
    	return 0;
    }
    

    2.

    参照上面的排序方法对字符串数组排序,会发现有报错;

    #include <stdio.h>
    #include <string.h>
    int main(){
        char a[4][4]={"bbb","aaa","ttt","qqq"},temp[20];
        int i,j,k;
        for(i=0;i<4;i++){
            k=i;
            for(j=i+1;j<5;j++){
                if(strcmp(a[k],a[j])>0)
                    k=j;
            }
    
            if(k!=i){  					//此处进行交换,出错;
                temp=a[k];
                a[k]=a[i];
                a[i]=temp;
            }
        }
        printf("After sorted:");
        for(i=0;i<5;i++){
            printf("%s\n",a[i]);
        }
    }
    /*
    [Error] incompatible types in assignment of 'char [4]' to 'char [19]'*/
    

    错误的原因在于,用二维数组 a [5] [5] 存放字符串的时候,对于每一个字符串:a[0] 、a[1]…里面存放的是一个字符串的地址,同时也是a[0]、a[1]…本身的地址;

    用代码解释就是:

    #include <stdio.h>
    int main(){
    	char a[20][20]={"abc","def"};
    	printf("%d-%d\n",a[0],a[1]);
    	;
    	printf("%d-%d\n",&a[0],&a[1]);
    	return 0;
    } 
    

    就是a[0] = &a[0]

    结果

    本来就是这样,数组在内存是连续的,所以想要交换里面的值——地址,肯定是错误的。

    3.正确的方法之一是用函数strcpy覆盖字符串的内容进行交换;

    #include <stdio.h>
    #include <string.h>
    int main(){
        char a[5][20];
        int i,j,k;
        for(i=0;i<5;i++){
            scanf("%s",a[i]);
        }
        for(i=0;i<4;i++){
            k=i;
            for(j=i+1;j<5;j++){
                if(strcmp(a[k],a[j])>0)
                    k=j;
            }
           										//修改后的部分
            if(k!=i){
                char temp[100];
                strcpy(temp, a[k]);
                strcpy(a[k], a[i]);
                strcpy(a[i], temp);
            }
        }
        printf("After sorted:");
        for(i=0;i<5;i++){
            printf("%s\n",a[i]);
        }
    }
    

    4.还有一种思路,加入另一个指针数组,对应指向二维数组,再把指针数组里的指针进行排序,最后输出依次整个指针数组。

    这样为什么可以让里面的地址进行交换?

    原因:指针数值里放的的指针 p[ 0 ] 、p[ 1 ]…不等于 &p[0]、&p[ 1 ]…所以可以进行交换。

    #include <stdio.h>
    int main(){
    	char a[4][4]={"bbb","aaa","ccc","ddd"};
    	char *p[4];
    	int i;
    	for(i=0;i<4;i++){
    		p[i]=a[i];
    	}
    	printf("%d-%d\n",p[0],p[1]);
    	printf("%d-%d\n",&p[0],&p[1]);
    	return 0;
    } 
    

    在这里插入图片描述

    #include <stdio.h>
    #include <string.h>
    int main(){
        char a[4][4]={"bbb","aaa","ttt","qqq"};
        char *pStr[4],*temp; 				//定义另外一个指针数组;
        int i,j;
        for(i=0;i<4;i++){
        	pStr[i]=a[i];      				//让指针数组内容对应指向二维数组a;
    	}
        for(i=0;i<4-1;i++){
            for(j=i+1;j<4;j++){				//直接进行交换指针数组里面的值——地址;
                if(strcmp(pStr[i],pStr[j])>0){
                	temp = pStr[i];
    				pStr[i] = pStr[j];
    				pStr[j] = temp; 
    			}
            }
        }
        printf("After sorted:\n");
        for(i=0;i<5;i++){
            printf("%s\n",pStr[i]);
        }
    }
    
    展开全文
  • } } //此时min指向最小的 //那么应该把min放在已排序部分的后一个//也就是本次排序的第一个 strcpy(temp,str[i]); strcpy(str[i],str[min]); strcpy(str[min],temp); } } //泡泡 void q_sortB(char str[20][20], ...

    void q_sortB(char str[20][20], int n);

    void qs(char str[20][20],int n);

    void main() {

    int i, n;

    char str[20][20] = { { "Adam" }, { "Bob" }, { "Dimen" }, { "Colin" }, {

    "Correal" }, { "Sick" }, { "Rachel" } };

    char * str1[20]= { { "Adam" }, { "Bob" }, { "Dimen" }, { "Colin" },

    { "Correal" }, { "Sick" }, { "Rachel" } };

    qs(str,7);

    q_sortB(str, 7);

    for (i = 0; i

    printf("%s\n", str[i]);

    }

    }

    void qs(char str[20][20],int n){

    char temp[20];

    int i=0;

    int j=0;

    int min=i;

    for(i=0;i

    min=i;

    for(j=i;j

    if(  strcmp(str[j],str[min])==-1  ){

    min=j;

    }

    }

    //此时min指向最小的

    //那么应该把min放在已排序部分的后一个//也就是本次排序的第一个

    strcpy(temp,str[i]);

    strcpy(str[i],str[min]);

    strcpy(str[min],temp);

    }

    }

    //泡泡

    void q_sortB(char str[20][20], int n) {

    char a[20];

    int i, j;

    for (i = 0; i

    for (j = i ; j

    if (strcmp(str[j], str[j + 1]) > 0) {

    strcpy(a, str[j]);

    strcpy(str[j], str[j + 1]);

    strcpy(str[j+1], a);

    }

    }

    }

    展开全文
  • C语言——字符串数组排序

    千次阅读 2019-03-17 23:37:21
    题目:利用指针数组对形参ss所指字符串数组中的字符串按由长到短的顺序排序,并输出排序结果。ss所指字符串数组中有N个字符串,且串小于M。 代码: #include&lt;stdio.h&gt; #include&lt;string.h&...

    题目:利用指针数组对形参ss所指字符串数组中的字符串按由长到短的顺序排序,并输出排序结果。ss所指字符串数组中有N个字符串,且串小于M。

    代码:

    #include<stdio.h>
    #include<string.h>
    
    #define N 5
    #define M 8
    
    void fun(char (*ss)[M])
    {
    	char *ps[N],*tp;
    	int i,j,k;
    	
    	for(i=0;i<N;i++)
    		ps[i]=ss[i];
    	for(i=0;i<N-1;i++)
    	{
    		k=i;
    		for(j=i+1;j<N;j++)
    		if(strlen(ps[k])<strlen(ps[j]))
    			k=j;
    		
    		tp=ps[i];
    		ps[i]=ps[k];
    		ps[k]=tp;
    	}
    	printf("\nThe string after sorting by length: \n\n");
    	for(i=0;i<N;i++)	puts(ps[i]);
     } 
     
     int main()
     {
     	char ch[N][M]={"red","green","blue","yellow","black"};
     	int i;
     	printf("\nThe original string\n\n");
     	for(i=0;i<N;i++)
     		puts(ch[i]);
     	printf("\n");
     	fun(ch);
     }

    运行结果:

    展开全文
  • C语言字符串数组进行排序

    千次阅读 2019-11-09 22:31:55
    1.把指针数组p1的字符串取出来, 2.把二维数组buf2的字符取出来, 3.上面的字符串放到p3,p3是在堆区分配的二维内存 4.对p3种字符串进行排序 参数: p1: len1:p1元素个数 buf2: len2:buf2字符串行数 p3:二级...
  • 第二个定义的是字符串数组,却是错的。指针数组的v[i]和字符串数组的v[i]不都是表示指向一个字符串的一级指针吗?二者有什么不同?为什么第二个是错的?程序一:#include要对几个字符串排序后输出。两个程序,只是对...
  • 赋值是从一个随机数量的名称(来自stdin),对它们进行排序,然后按字母顺序输出它们.我找不到任何专门处理这种排序的网站,并且没有运气试图在我的代码中实现qsort().#include #include #include int stringcmp(const ...
  • C语言字符串排序

    2021-11-18 16:27:22
    文章目录前言(一)需要的相关知识(二)代码实现(1)指针数组指向的字符串常量(2)使用二维数组存放字符串 前言 在理解二维数组和数组指针的结合使用、指针数组相关内容后,会更易于理解。 (一)需要的相关知识 ...
  • 程序能运行,就是没法排序字符 ,有问题。
  • } } 运行结果: 2)排序字符串数组 还是首先要处理好比较函数,与int_cmp函数相类似,定义char_cmp比较函数: #include #include //因为要用到qsort 函数 #include //因为要用到strcmp函数 int char_cmp(const void...
  • 7-3 字符串的冒泡排序 (20分) 我们已经知道了将N个整数按从小到大排序的冒泡排序法。本题要求将此方法用于字符串序列,并对任意给定的K(),输出扫描完第K遍后的中间结果序列。 输入格式: 输入在第1行中给出N和K...
  • 基于c语言实现 字符串排序

    千次阅读 2020-04-23 19:34:15
    基于c语言实现 字符串排序一.简单的字符串排序举例实现题目代码 一.简单的字符串排序 给定有限个字符串,将其按照大小顺序排列。 此时的大小顺序简单来说我们可以先认为是ASCLL码的大小顺序。由此我们只需要比较字符...
  • C语言字符串冒泡排序

    千次阅读 2019-09-30 10:23:09
    //自定义的求字符串长度函数 int Strlen(const char *str) { int length = 0; while('\0' != str[length]) { length ++; } return length; } //从小到大冒泡排序 void SortString(char *str) { int length ...
  • C语言 用指针数组实现字符串排序

    千次阅读 2021-02-16 15:39:40
    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)...
  • 字符串数组排序(指针数组) Description 输入三个字符串,按由小到大的顺序输出,字符串长度小于1000 Input 3行字符串 Output 按照从小到大输出成3行 Sample Input cde afg abc Sample Output abc afg cde 具体...
  • C语言的话,就主要考察二元字符数组那块的知识,因为只有这样才能在数组中存储多个字符串,因为字符串C语言中就是以字符数组的形式存在的,而在C++中则多了一个string容器,就会省事很多,但是没有办法,因为我...
  • C语言】输入字符串数组排序

    千次阅读 2021-03-10 16:35:41
    题目:输入n个字符串,并按照一定规则进行升序排序和输出 我的排序规则:按照字符串里面英文字符的值之和 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<ctype.h> #...
  • 注意二维字符串数组array是通过地址传进来的,强制转换时需要使用(char **),返回字符串比较时,通过strcmp(*a1, *b1)来做比较。 方式1: int cmp(const void *a, const void *b){ char **a1 = (char **) a; ...
  • 函数readDat()是从文件in71.dat中读取20行数据存放到...请编制函数jsSon(),其功能是:以行为单位对字符串按下面给定的条件进行排序排序后的结果仍按行重新存入字符串数组xx中。最后调用函数 writeDat()把结果xx输...
  • 题目:输入一个字符串数组,使用快速排序进行排序; eg: ["text","next","do"] 排序后 ["do","next","text"] 一、快速排序的原理 快速排序其实就是快速的找到当前值在数组中的所在位置; 使用前后指针,low指向...
  • C语言字符串排序

    2021-12-09 22:09:27
    C语言利用二维数组与起泡法给字符串排序
  • printf("排序后的字符串为:\n"); for(i=0;i;i++) puts(p[i]); return 0;} //我们了解要存取多个字符串,用二维数组简单。首先要理解指针数组。*p[20]。[ ]比*的优先级高。是指针数组。顾名思义,就是每...
  • C语言构建动态数组完整实例本文以一个完整的实例代码简述了C语言构建动态数组的方法,供大家参考,完整实例如下:#include #include int main(void) {int len;int * arr;printf("请输入数组长度:");scanf("%d", &...
  • int main(int argc, const char * argv[]){@autoreleasepool {#pragma mark-----------二维数组int a[3][4]={{1,2,3,4},{5,6,7,8},{12,10,11,12}};//打印二维数组for (int i = 0; i<3; i++) {for (int j =0; j<...
  • C语言多个字符串排序

    千次阅读 多人点赞 2020-05-19 10:31:06
    C语言中,多个字符串排序方法有两种 1,字符二维数组排序 void sort1(char (*arr)[20]){ int i,j; char *temp; //冒泡排序 for(i=0;i<4;i++){ for(j=0;j<4-i;j++){ if(strcmp(arr[j],arr[j+1])&...
  • 排序后,您只需要比较相邻的条目以查找重复项.结果是O(N log N)而不是(我认为)O(N ^ 2).这是15分钟的午餐时间版本,没有错误检查:typedef struct {int origpos;char *value;} SORT;int qcmp(const void *x, const ...
  • 不过,只是知道这个还是很难精确表述字符串以及字符串数组。 一般形式的操作是这样子的: char arr[ROW][LENGTH]; char *ptr[ROW]; for (int i = 0; i < ROW; ++i) { ptr[i] = arr[i]; } 从理论上讲,char...
  • qsort函数排序字符串数组

    千次阅读 2018-11-11 20:41:07
    qsort函数排序字符串数组 描述: qsort()函数是一个库函数,也是一个万能的排序函数,只需要自己写好compare()函数即可,那么怎么用qsort()函数来排序字符串呢? 思路: 个人感觉,这个问题很好解决,困难的就是在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 47,928
精华内容 19,171
关键字:

c语言字符串数组排序