精华内容
下载资源
问答
  • 动态数组进阶

    2021-12-11 12:02:03
    在读入每个字符串时,用一个长度为1000的字符数组作为缓冲数组,将字符串读入并求出长度后,再动态分配空间,将缓冲数组中的字符串复制到新分配的动态空间中,并将动态空间的首地址保存到指针数组中。读完n个字符串...

    已知正整数n,n的范围不确定。从键盘读入n个字符串,每个字符串的长度小于1000,要保存到动态数组中。为了能访问到所有的字符串,需要建立一个长度为n的动态指针数组,用于保存n个字符数组的内存地址。在读入每个字符串时,用一个长度为1000的字符数组作为缓冲数组,将字符串读入并求出长度后,再动态分配空间,将缓冲数组中的字符串复制到新分配的动态空间中,并将动态空间的首地址保存到指针数组中。读完n个字符串后你要将这n个字符串按照ASCII码顺序升序排序,然后再打印到屏幕上。字符串中可能包含大小写字母“A-Z”、“a—z”与空格字符。每个字符串以换行符结束输入。

    输入格式:

    输入一个正整数n,代表待排序字符串的个数。然后输入n个字符串,每个字符串至少包含一个字符,占一行。

    输出格式:

    排序后的n个字符串,每个字符串占一行。

    输入样例:

    10
    Bb b
    zzz zzz
    aab bbccc
    aaabbaaa
    abb bbb
    ccidfjD
    Aidj idj
    Ccidf jD
    sidfjijE EE
    kkkkkk
    

    输出样例:

    Aidj idj
    Bb b
    Ccidf jD
    aaabbaaa
    aab bbccc
    abb bbb
    ccidfjD
    kkkkkk
    sidfjijE EE
    zzz zzz
    

    答案:

    #include<stdio.h>
    int main(){
        char str[100000],huan[1000];
        int n;
        scanf("%d",&n);
        char * p[n],*temp;
        getchar();
        p[0]=str;
        for(int i=0;i<n;i++){
            gets(huan);
            int len=strlen(huan);
            p[i]=malloc(sizeof(char)*(len+1));
            strcat(p[i],huan);
            if(i<n-1){
                p[i+1]=p[i]+len+1;
            }
        }
        for(int i=0;i<n-1;i++){
            for(int j=0;j<n-1-i;j++){
                if(strcmp(p[j],p[j+1])>0){
                    temp=p[j];
                    p[j]=p[j+1];
                    p[j+1]=temp;
                }
            }
        }
        for(int i=0;i<n;i++){
            printf("%s",p[i]);
            if(i<n-1){
                printf("\n");
            }
        }
        for(int i=0;i<n;i++){
            free(p[i]);
        }
    }

    展开全文
  • 7-2 实验10_10_动态数组进阶 (100 分) 已知正整数n,n的范围不确定。从键盘读入n个字符串,每个字符串的长度小于1000,要保存到动态数组中。为了能访问到所有的字符串,需要建立一个长度为n的动态指针数组,用于保存...

    7-2 实验10_10_动态数组进阶 (100 分)
    已知正整数n,n的范围不确定。从键盘读入n个字符串,每个字符串的长度小于1000,要保存到动态数组中。为了能访问到所有的字符串,需要建立一个长度为n的动态指针数组,用于保存n个字符数组的内存地址。在读入每个字符串时,用一个长度为1000的字符数组作为缓冲数组,将字符串读入并求出长度后,再动态分配空间,将缓冲数组中的字符串复制到新分配的动态空间中,并将动态空间的首地址保存到指针数组中。读完n个字符串后你要将这n个字符串按照ASCII码顺序升序排序,然后再打印到屏幕上。字符串中可能包含大小写字母“A-Z”、“a—z”与空格字符。每个字符串以换行符结束输入。

    输入格式:
    输入一个正整数n,代表待排序字符串的个数。然后输入n个字符串,每个字符串至少包含一个字符,占一行。

    输出格式:
    排序后的n个字符串,每个字符串占一行。

    输入样例:
    10
    Bb b
    zzz zzz
    aab bbccc
    aaabbaaa
    abb bbb
    ccidfjD
    Aidj idj
    Ccidf jD
    sidfjijE EE
    kkkkkk
    输出样例:
    Aidj idj
    Bb b
    Ccidf jD
    aaabbaaa
    aab bbccc
    abb bbb
    ccidfjD
    kkkkkk
    sidfjijE EE
    zzz zzz

    #include <stdio.h>
    int main(int argc, char const *argv[])
    {
    	int n,i,j,len;char cache[1001];
    	scanf("%d",&n);getchar();
    
    	char **mainPtr=(char **)malloc(sizeof(char*)*n);
    	for(i=0;i<n;i++)
    	{
    		gets(cache);
    		len=strlen(cache);
    		mainPtr[i]=(char *)malloc(sizeof(char)*(len+1));
    		strcpy(mainPtr[i],cache);
    	}
    
    	int order[n];
    	for(i=0;i<n;i++) order[i]=i;
    
    	for(i=1;i<n;i++)
    		for(j=0;j<n-i;j++)
    			if(strcmp(mainPtr[order[j]],mainPtr[order[j+1]])>0)
    			{
    				len=order[j];
    				order[j]=order[j+1];
    				order[j+1]=len;
    			}
    
    	for(i=0;i<n;i++)
    		puts(mainPtr[order[i]]);
    	for(i=0;i<n;i++)
    		free(mainPtr[i]);
    	free(mainPtr);
    	return 0;
    }
    
    展开全文
  • 7-2 实验10_10_动态数组进阶 (100分) 已知正整数n,n的范围不确定。从键盘读入n个字符串,每个字符串的长度小于1000,要保存到动态数组中。为了能访问到所有的字符串,需要建立一个长度为n的动态指针数组,用于保存n...

    7-2 实验10_10_动态数组进阶 (100分)

    已知正整数n,n的范围不确定。从键盘读入n个字符串,每个字符串的长度小于1000,要保存到动态数组中。为了能访问到所有的字符串,需要建立一个长度为n的动态指针数组,用于保存n个字符数组的内存地址。在读入每个字符串时,用一个长度为1000的字符数组作为缓冲数组,将字符串读入并求出长度后,再动态分配空间,将缓冲数组中的字符串复制到新分配的动态空间中,并将动态空间的首地址保存到指针数组中。读完n个字符串后你要将这n个字符串按照ASCII码顺序升序排序,然后再打印到屏幕上。字符串中可能包含大小写字母“A-Z”、“a—z”与空格字符。每个字符串以换行符结束输入。

    输入格式:
    输入一个正整数n,代表待排序字符串的个数。然后输入n个字符串,每个字符串至少包含一个字符,占一行。

    输出格式:
    排序后的n个字符串,每个字符串占一行。

    输入样例:

    10
    Bb b
    zzz zzz
    aab bbccc
    aaabbaaa
    abb bbb
    ccidfjD
    Aidj idj
    Ccidf jD
    sidfjijE EE
    kkkkkk
    

    输出样例:

    Aidj idj
    Bb b
    Ccidf jD
    aaabbaaa
    aab bbccc
    abb bbb
    ccidfjD
    kkkkkk
    sidfjijE EE
    zzz zzz
    
    #include <stdio.h>
    #include<string.h>
    #include <stdlib.h>
    void pai(char str[],char *ptr[],int n);
    void swap(char *m[],int n);
    int main() {
        int n;
        scanf("%d",&n);
        char *s[n+10];
        char lin[1000];
        getchar();
        int m;
        for (int i = 0; i <n ; i++) {
            gets(lin);
            m=(int)strlen(lin)+1;
            s[i]=malloc(sizeof(char)*(m+10));
            for (int j = 0; j <m ; j++) {
                *(s[i]+j)=lin[j];
            }
        }
        pai(lin,s,n);
        for (int i = 0; i <n; i++) {
            puts(s[i]);
        }
        return 0;
    }
    void swap(char *m[],int n){
        char *a;
        a=m[n];
        m[n]=m[n+1];
        m[n+1]=a;
    }
    void pai(char str[],char *ptr[],int n){
        int c;
        for (int i = 1; i <=n-1 ; i++) {
            for (int j = 0; j <n-i ; j++) {
                c=strcmp(ptr[j],ptr[j+1]);
                if (c>0){
                    swap(ptr,j);
                }
            }
        }
    }
    
    展开全文
  • 在读入每个字符串时,用一个长度为1000的字符数组作为缓冲数组,将字符串读入并求出长度后,再动态分配空间,将缓冲数组中的字符串复制到新分配的动态空间中,并将动态空间的首地址保存到指针数组中。读完n个字符串...

    也没什么好说的。
    需要注意的是申请的字符串空间需要比字符串的长度大一位,以便写入最后的’\0’。
    先读入到cache字符串里,再用strcpy拷贝过去。
    再就是申请的堆内存要释放掉,不忘记了。

    #include <stdio.h>
    int main(int argc, char const *argv[])
    {
    	int n,i,j,len;char cache[1001];
    	scanf("%d",&n);getchar();
    
    	char **mainPtr=(char **)malloc(sizeof(char*)*n);
    	for(i=0;i<n;i++)
    	{
    		gets(cache);
    		len=strlen(cache);
    		mainPtr[i]=(char *)malloc(sizeof(char)*(len+1));
    		strcpy(mainPtr[i],cache);
    	}
    
    	int order[n];
    	for(i=0;i<n;i++) order[i]=i;
    
    	for(i=1;i<n;i++)
    		for(j=0;j<n-i;j++)
    			if(strcmp(mainPtr[order[j]],mainPtr[order[j+1]])>0)//简单的嵌套冒泡排序
    			{
    				len=order[j];
    				order[j]=order[j+1];
    				order[j+1]=len;
    			}
    
    	for(i=0;i<n;i++)
    		puts(mainPtr[order[i]]);
    	for(i=0;i<n;i++)
    		free(mainPtr[i]);
    	free(mainPtr);
    	return 0;
    }
    

    题目描述
    已知正整数n,n的范围不确定。从键盘读入n个字符串,每个字符串的长度小于1000,要保存到动态数组中。为了能访问到所有的字符串,需要建立一个长度为n的动态指针数组,用于保存n个字符数组的内存地址。在读入每个字符串时,用一个长度为1000的字符数组作为缓冲数组,将字符串读入并求出长度后,再动态分配空间,将缓冲数组中的字符串复制到新分配的动态空间中,并将动态空间的首地址保存到指针数组中。读完n个字符串后你要将这n个字符串按照ASCII码顺序升序排序,然后再打印到屏幕上。字符串中可能包含大小写字母“A-Z”、“a—z”与空格字符。每个字符串以换行符结束输入。
    输入与输出要求:输入一个正整数n,代表待排序字符串的个数。然后输入n个字符串,每个字符串至少包含一个字符,占一行。输出排序后的n个字符串,每个字符串占一行。
    程序运行效果:

    Sample 1:
    10↙
    Bb b↙
    zzz zzz↙
    aab bbccc↙
    aaabbaaa↙
    abb bbb↙
    ccidfjD↙
    Aidj idj↙
    Ccidf jD↙
    sidfjijE EE↙
    kkkkkk↙
    Aidj idj
    Bb b
    Ccidf jD
    aaabbaaa
    aab bbccc
    abb bbb
    ccidfjD
    kkkkkk
    sidfjijE EE
    zzz zzz

    展开全文
  • java数组进阶

    2021-04-19 22:16:15
    Java头歌闯关第一步 标题第1关:数组的复制 创建一个数组arr2,数组长度和数组arr1相同; 使用循环将数组1中的每一个数据赋值给数组2中对应的那一项。(即arr2[0] = arr1[0]);... //动态构建arr1 int[] arr
  • EduCoder Java入门 - 数组进阶

    千次阅读 2021-02-10 21:11:13
    第1关:数组的复制 任务描述 本关任务:完成将一个数组的值复制给另一个数组。 相关知识 本关需要你完成数组的复制操作,可以分三个步骤来实现。 创建一个数组arr2,数组长度和数组arr1相同; 使用循环...
  • Java入门 - 数组进阶

    千次阅读 2021-01-15 10:36:14
    第1关:数组的复制 任务描述 本关任务:完成将一个数组的值复制给另一个数组。 相关知识 本关需要你完成数组的复制操作,可以分三个步骤来实现。 创建一个数组arr2,数组长度和数组arr1相同; 使用循环将数组1中的每...
  • 数组的复制 chapter8/src/step1/HelloWorld.java package step1; import java.util.Scanner; public class HelloWorld { public static void main(String[] args) { //动态构建arr1 int[] arr1 = new int[3];...
  • js——数组进阶方法

    2020-04-21 14:15:15
    1、includes(),判断一个数组是否包含一个指定的值,第一位是查找的元素值,第二位是开始查找的索引 [1, 2, 3].includes(3, -1);// true 2、flat(),将一个多维数组拉平,可接受参数,参数表示拉平的维度,参数为...
  • 简介 其他各类实训答案的目录见这里 答案查询的入口网页版 答案获取的方法简介见这里 并不是所有的关卡都有答案,有些只有部分关卡有 ...Java入门 - 数组进阶 >>>查看 第1关:数组的复制 ...
  • 在读入每个字符串时,用一个长度为1000的字符数组作为缓冲数组,将字符串读入并求出长度后,再动态分配空间,将缓冲数组中的字符串复制到新分配的动态空间中,并将动态空间的首地址保存到指针数组中。读完n个字符串...
  • 在读入每个字符串时,用一个长度为1000的字符数组作为缓冲数组,将字符串读入并求出长度后,再动态分配空间,将缓冲数组中的字符串复制到新分配的动态空间中,并将动态空间的首地址保存到指针数组中。读完n个字符串...
  • 动态数组进阶
  • 本文实例讲述了JS数组的几种函数用法。...js数组进阶</title> <meta charset="UTF-8"/> [removed] var arr=[2,"clannad","海贼王","星游记",true,new Date()]; // console.log(arr);
  • 7-1 实验10_9_指针数组进阶 (100分)

    热门讨论 2020-12-18 09:14:25
    7-1 实验10_9_指针数组进阶 (100分) 已知正整数n,n的范围是1—100。你要从键盘读入n个字符串,每个字符串的长度不确定,但是n个字符串的总长度不超过100000。你要利用字符指针数组将这n个字符串按照ASCII码顺序进行...
  • Educoder题目:Java入门 - 数组进阶答案解析
  • 数组进阶

    2021-04-18 22:01:35
    数组进阶 1、数组:是值的有序集合,通过索引引用数组元素,数组里的元素可以是任意类型; 【注】稀疏数组的元素会有空位,即元素为empty; 2、读写数组元素:[ ]里面可以是非负整数值的任意表达式,则会先转换成...
  • 本关任务:实现数组从大到小的排序(降序排序)。 相关知识 为了解决数组排序的问题你需要先了解:选择排序。 选择排序 关于选择排序,你可以理解为一个循环打擂台的过程,还记得我们在上一章节中求数组中的最大...
  • D. 实验10_9_指针数组进阶

    千次阅读 2019-01-18 10:10:37
    你要利用字符指针数组将这n个字符串按照ASCII码顺序进行升序排序,然后再打印到屏幕上。字符串中可能包含ASCII码中的任意字符,每个字符串以换行符结束输入。 要求:不允许定义如char str[100][100000];这样的二维...
  • 第十五章 数组进阶 15.1 数据模型 数据是描述事务的符号记录,模型是现实世界的抽象。现实世界的事务及关联关系可以抽象成一个具体的模型,模型通过某种数据结构映射到计算机世界中,进而计算机通过软件处理数据来...
  • 数组进阶(一)

    2021-04-14 01:06:05
    数组进阶 一.基本概念 数组是值的有序集合 值—元素 值的位置–索引 说明: 1.数组是无类型的(元素可以是任意类型) 2.数组是动态的(可以根据需要增添元素) 3.数组可以是稀疏的 //稀疏数组 let a=[1,2,3] a[5]=6 /...
  • 07数组进阶基本概念.txt
  • C++数组进阶

    2021-02-06 16:05:56
    C++数组进阶,详解了静态、动态数组,以及vector数组,教你怎么区分“数组指针”和“指针数组”,同时介绍了二维数组的区间遍历,让你更能掌握数组的运用。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 79,657
精华内容 31,862
关键字:

动态数组进阶

友情链接: WebSite2.rar