精华内容
下载资源
问答
  • 数组 1、定义: 数组是有序的并且具有相同类型的数据的集合。 2、特征: ①若干 ②相同类型 ③长度 ④有序 3、根据数组的下标个数的不同可分为: 一维、二维、多维 ...常量表达式:表示数据元素的个数,...

    数组

    1、定义: 数组是有序的并且具有相同类型的数据的集合。
    2、特征: ①若干 ②相同类型 ③长度 ④有序
    3、根据数组的下标个数的不同可分为: 一维、二维、多维
    4、按数组元素的类型不同可分为: 数值数组、字符数组、指针数组、结构数组

    一维数组

    1、一般形式: 类型符 数组名[常量表达式](类型符:任一种基本数据类型或构造数据变量;数组名:用户定义的数组标识符;常量表达式:表示数据元素的个数,也称数组的长度)
    2、常量表达式中不允许包含变量,可以包含常量或符号常量。
    3、数组元素下标可以是任何整型常量、整型变量或任何整型表达式。
    下标不可以越界:0~n-1
    数组名中存放的是一个地址常量,代表整个数组的首地址。同一数组中的所有元素,按其下标的顺序占用一段连续的存储单元。

    一维数组初始化

    1、可以对数组元素赋值,数组元素也可以参与运算,与简单变量一样使用。
    2、使用数值型数组时,不可以一次引用整个数组,只能逐个引用元素。
    3、需要整体赋值时只可以在定义的同时整体赋值。
    4、可以只给一部分元素赋值。
    5、对全部数组元素赋值时可以不指定数组长度。

    【例题1】
    对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输出
    解题思路: 数组可以定义为整数,要赋的值是0~9,有一定的规律,可以用循环来赋值。
    编写程序:

    #include  <stdio.h>
    int main ( )
    {
      int i,a[10;
      for(i=0;i<=9;i++)
         a[i]=i;
      for(i=9;i>=0;i--)
         printf("%d",a[i]);
    printf("\n");
    return 0;
    }

    运行结果:

    9 8 7 6 5 4 3 2 1 0

    【例题2】
    有10个地区的面积,要求对它们按由小到大的顺序排列
    解题思路: 这种问题称为排序(sort)。排序的规律有两种:一种是升序,另一种是降序。本例题采用“冒泡法”,即较大的数往下沉,较小的数往上浮,通过循环不停地实现排序。
    编写程序:

    #include <stdio.h>
    int main( )
    {
       int a[10;
       int i,j,t;
       printf("input 10 numbers :\n");
       for (i=0;i<10;i++)
           scanf("%d",&a[i]);
    printf("\n");
    for(j=0;j<9;j++)
      for(i=0;i<9-j;i++)
    if(a[i]>a[i+1)
    {t=a[i];a[i]=a[i+1;a[i+1=t;}
    printf("the sorted numbers :\n");
    for(i=0;i<10;i++)
      printf("%d",a[i]);
    printf("\n");
    return 0;
    }

    运行结果:

    input 10 numbers:
    34 67 90 43 124 87 65 99 132 26
    the sorted numbers:
    26 34 43 65 67 87 90 99 124 132

    二维数组

    1、一般形式: 类型说明符 数组名[常量表达式1][常量表达式2];
    (常量表达式1:表示第一维下标的长度;常量表达式2:表示第二维下标的长度)
    2、二维数组元素的表示形式为: 数组名 [下标][下标]

    二维数组的初始化

    1、与一维数组一样元素下标可以是是任何整型常量、整型变量或任何整型表达式。
    2、需要整体赋值时只可以在定义的同时整体赋值。
    3、可以把所有数据写在一个花括号内。
    4、可以只对部分元素赋值。
    5、对全部数组元素赋值时可以省略第一维长度,第二维不可以省略。
    所有元素的首地址不是相同的,有的甚至不相连。所有元素首地址≠第一个元素的首地址

    【例题3】
    将一个二维数组行和列的元素互换,存到另一个二维数组中。例如:

          1 2 3                1  4
    a=                    b=   2  5
          4 5 6                3  6
    

    解题思路: 可以定义两个数组,数组b开始时未赋值。用嵌套的for循环即可完成。
    编写程序:

    #include  <stdio.h>
    int main( )
    {
      int a[2][3={{123,{4,5,6};
      int b[3][2],i,j;
    printf("array a:\n");
    for(i=0;i<=1;i++)
    {
     for(j=0;j<=2;j++)
    {
    printf("%5d",a[i][j]);
    b[j][i]=a[i][j];
    }
    printf("\n");
    }
    printf("array b:\n");
    for(i=0;i<=2;i++)
    {
    for(j=0;j<=1;j++)
      printf("%5d",b[i][j]);
    printf("\n");
    }
    return 0;

    运行结果:

    array a:
    1   2   3
    4   5   6
    array b:
    1    4
    2    5
    3    6

    字符数组

    1、定义: char a[b];字符数组a长度为b。每个元素只能存放一个字符。
    2、初始化:
    char a[]={‘h’,‘a’,‘p’,‘p’,‘y’};
    char a[]=“happy”;
    char a[]={“happy”};
    注意,因为字符串结尾自动加’\0’,所以char a[]=“happy”;长度为6,不是5。
    3、 C语言中没有字符串变量,字符串的输入、存储、处理和输出等必须通过字符数组实现。
    4、字符串的输入。
    **scanf();**可以用%C逐个字符输入比如char a[6];for(i=0;i<6;i++) scanf("%c",&a[i]);
    可以用%S以字符串的形式输入
    注意,a前不用加&,因为a是数组名,
    已经代表了数组首地址。

    注意:以%S输入时,以第一个非空白字符开始,终止于第一个空白字符。

    gets(); 作用为输入一个字符串。与**scanf();**功能一致,但空格和回车都存放在数组中,最后自动加入‘\0’.
    不会出现上面输出不全的情况。
    调用方式为:gets(数组名);需要包含头文件“stdio.h”.
    5、字符串的输出。
    printf(); 可以使用%C逐个字符输出,也可以用%S以字符串的形式输出。
    puts(); 输出一个字符串,结尾自动换行。
    调用形式:puts(字符数组名或字符串常量);需包含头文件“stdio.h”

    常用字符串处理函数(以下函数需要头文件“string.h”)

    1、strlen() 作用是测试字符串长度。这里不包括‘\0’.使用形式strlen(数组名或字符串常量)
    2、strcat() 作用是连接两个字符串。调用方式strcat(字符数组1名,字符数组2名);合并后的字符串存放在字
    符数组1中。
    3、strcmp() 比较两个字符串是否相等。调用方式strcmp(字符串1,字符串2);相等时值为0。1>2时为正数。
    1<2时为负数。
    4、strcpy() 复制字符串。调用方式strcpy(字符数组1,字符串2);2的内容复制到1中。1只能是字符数组名。

    【例题4】
    输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。
    解题思路:
    用变量num的值来计算单词书。出现新单词的判断方式可以用是否有空格来决定。
    编写程序:

    #include <stdio.h>
    int main( )
    {
      char string[81;
      int i,num=0,word=0;
      char c;
      gets(string);
      for(i=0;(c=string[i]!='\0';i+)
      if(c==' ') word =0;
      else if(word= =0)
     {
      word= 1;
      num++;
    }
    printf("there are %d words in this line .\n",num);
    return 0;
    }

    运行结果:

    I am a boy
    there are 4 word in this line.
    展开全文
  • 最后一层节点的个数在 1 ~ 2^(L-1), 其中 L 表示最大层数 // 综上可知,n 满足 n <= 1 + 2 + 4 + ... + 2^(L-2) + 2^(L-1) n >= 1 + 2 + 4 + ... + 2^(L-...
  • 数据的逻辑结构是对数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和定义在此集合中的若干关系来表示。数据的逻辑结构有两个要素:一是数据元素的集合,通常记为D;二是D上的关系,它反映了数据元素之间...
  • 因此数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。  本章介绍数值数组和字符数组,其余的在以后各章陆续介绍。数组类型说明 在C语言中使用数组必须先进行类型说明。 ...
  • 1004. 最大连续 1 的个数 III 1011. 在 D 天内送达包裹的能力 1014. 最佳观光组合 1015. 被 K 整除的最小整数 1019. 链表中的下一个更大节点 1020. 飞地的数量 1023. 驼峰式匹配 1031. 两个非重叠子...
  • 实例075 获取字符串中汉字的个数 94 实例076 批量替换某一类字符串 95 实例077 把异常与错误信息显示到窗体中 97 实例078 从字符串中分离文件路径、 文件名及扩展名 98 实例079 判断手机号的合法性 99 实例080 用...
  • 实例075 获取字符串中汉字的个数 94 实例076 批量替换某一类字符串 95 实例077 把异常与错误信息显示到窗体中 97 实例078 从字符串中分离文件路径、 文件名及扩展名 98 实例079 判断手机号的合法性 99 实例080 用...
  • 实例075 获取字符串中汉字的个数 94 实例076 批量替换某一类字符串 95 实例077 把异常与错误信息显示到窗体中 97 实例078 从字符串中分离文件路径、 文件名及扩展名 98 实例079 判断手机号的合法性 99 实例080 用...
  • 实例075 获取字符串中汉字的个数 94 实例076 批量替换某一类字符串 95 实例077 把异常与错误信息显示到窗体中 97 实例078 从字符串中分离文件路径、 文件名及扩展名 98 实例079 判断手机号的合法性 99 实例080 用...
  • 《数据结构 1800题》

    热门讨论 2012-12-27 16:52:03
    2. 对于给定 n个元素,可以构造出逻辑结构有 (1)集合 , (2)线性结构 , (3)树型结构 ,_图状结构_(4)_四种。 【中科院计算所 1999 二、1(4分)】 3.数据逻辑结构是指(数据组织形式,即数据元素...
  • (43) 在深度为5的满二叉树中,叶子结点的个数为(C) A. 32 B. 31 C. 16 D. 15 (44) 对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为(B) 注:要牢记 A. N+1 B. N C. (N+1)/2 D. N/2 (45) 信息隐蔽的...
  • (23) 在深度为5的满二*树中,叶子结点的个数为______。(C) A. 32 B. 31 C. 16 D. 15 (24) 对建立良好的程序设计风格,下面描述正确的是______。(A) A. 程序应简单、清晰、可读性好 B. 符号名的命名要符合语法 C. ...
  • 南理工初试试题

    2015-09-08 09:48:55
    8. 数组A的每个元素需要4个字节存放,数组有8行 10列,若数组以行为主顺序存放在内存SA开始的存储区中,则A中8行5列的元素的位置是 A) SA+74 B)SA+292 C)SA+296 D)SA+300 9-10.在一棵7阶B树中,若在某结点中插入...
  • 实例044 获取字符串中汉字的个数 实例045 批量替换某一类字符串 实例046 对字符串进行加密与解密 3.3 常用数字处理技术 实例047 判断输入的货币值是否为数字 实例048 对计算结果进行四舍五入 实例049 商品...
  • 实例044 获取字符串中汉字的个数 实例045 批量替换某一类字符串 实例046 对字符串进行加密与解密 3.3 常用数字处理技术 实例047 判断输入的货币值是否为数字 实例048 对计算结果进行四舍五入 实例049 商品...
  • 实例044 获取字符串中汉字的个数 实例045 批量替换某一类字符串 实例046 对字符串进行加密与解密 3.3 常用数字处理技术 实例047 判断输入的货币值是否为数字 实例048 对计算结果进行四舍五入 实例049 商品...
  • 数据结构(C++)有关练习题

    热门讨论 2008-01-02 11:27:18
    D. *建立函数create:根据一维数组a[n]建立一个单链表,使单链表中各元素的次序与a[n]中各元素的次序相同,要求该程序的时间复杂度为O(n)。 E. *整理函数tideup:在非递减有序的单链表中删除值相同的多余...
  • 角色是一组权限的集合,将角色赋给一个用户,这个用户就拥有了这个角色中所有权限。  系统预定义角色 预定义角色是在数据库安装后,系统自动创建一些常用角色。下面我们就简单介绍些系统角色:  CONNECT...
  • 实例131 判断获得字符串中大写字符的个数 实例132 巧截字符串的数字 实例133 计算字符串中子字符串出现的次数 实例134 判断某一字符是否在字符串中 5.3 字符串处理 实例135 在字符串中用一子串替换另一子串 ...
  • 实例131 判断获得字符串中大写字符的个数 实例132 巧截字符串的数字 实例133 计算字符串中子字符串出现的次数 实例134 判断某一字符是否在字符串中 5.3 字符串处理 实例135 在字符串中用一子串替换另一子串 ...
  • 正则表达式

    2014-12-03 14:51:39
    \ 做为转意,即通常在"\"后面字符不原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词边界。 -或- 对正则表达式功能字符还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,...
  • 唯一的不同是substr第二个参数是返回字符串的个数 - indexOf 从头开始查询字符串,存在会返回它所在的位置,没有返回-1 - lastIndexOf 从最后开始查询字符串 - toUpperCase 转大写 - toLowerCase...

空空如也

空空如也

1 2
收藏数 28
精华内容 11
关键字:

集合按元素的个数可分为