今天一起来分析C语言的数组。
以下内容,只代表个人观点,不一定对,仅供参考,随便看看。
C语言的构造类型的数据,有数组类型、结构体类型、共用体类型。
构造类型数据是由基本类型数据按一定规则组成的。
下面介绍一维数组、二维数组、多维数组以及字符数组的定义、初始化、引用及应用。
数组是一种构造类型的数据,通常用来处理具有相同属性的一批数据。
数组是一组相同类型的数的组合。
类型说明符 数组名[常量表达式];
它表示数组名为a,此数组有5个元素。
1、数组名的命名规则和变量名相同,遵循标识符命名规则;
2、数组名后是用方括弧括起来的常量表达式,不能用圆括弧;
3、常量表达式表示元素个数,即数组长度。在上面例子a[5]中,5表示a数组有5个元素,下标从0开始,这5个元素是,a[0],a[1],a[2],a[3],a[4]。注意不能使用数组元素a[5];
4、常量表达式中可包括常量和符号常量,不能包含变量。即在C语言中,不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。
下面这样定义数组是不行的:
5、数组必须先定义,后使用。只能逐个引用数组元素而不能一次引用整个数组。
数组类型 数组名 数组的长度,数组元素
数组定义时必须规定固定的长度,即数组长度必须是一个固定的常量,不能改变。
数组的赋值有两种方式:
方式一:在定义的同时,给各元素赋值;
方式二:定义以后对逐个数组元素进行赋值
1、在定义数组时对数组元素赋以初值,可以全部元素赋值,也可以部分元素赋值。
定义a数组有10个元素,但花括弧内只提供5个初值,表示只给前面5个元素赋初值后,5个元素值默认为0。
2、如果想使一个数组中全部元素值为0,
3、在对全部数组元素赋初值时,可以不指定数组长度。
1、二维数组定义的一般形式为
类型说明符 数组名[常量表达式][常量表达式]
2、二维数组元素的形式为:
数组名[行下标表达式][列下标表达式]
1)“行下标表达式”和“列下标表达式”,都应是整型表达式或符号常量。
2)“行下标表达式”和“列下标表达式”的值,都应在已定义数组大小的范围内。假设有数组x[3][4],则可用的行下标范围为0~2,列下标范围为0~3。
3)对基本数据类型变量所能进行的操作,也都适合于相同数据类型的二维数组元素。
1)按行赋初值:数据类型 数组名[行常量表达式][列常量表达式]={{第0行初值表},{第1行初值表},……,{最后1行初值表}};
赋值规则:将“第0行初值表”中的数据,依次赋给第0行中各元素;将“第1行初值表”中的数据,依次赋给第1行各元素;以此类推。
2)按二维数组在内存中的排列顺序给各元素赋初值
数据类型 数组名[行常量表达式][列常量表达式]={初值表};
赋值规则:按二维数组在内存中的排列顺序,将初值表中的数据,依次赋给各元素。
如对全部元素都赋初值,则“行数”可省略。
注意,只能省略“行数”。
用来存放字符的数组称为字符数组。字符数组类型的形式与前面介绍的数值数组相同。
char c[5][10]; //即为二维字符数组。字符数组也允许在类型说明时作初始化赋值。
当对全体元素赋初值时也可省去长度说明
字符串在C语言中没有专门的字符串变量, 通常用一个字符数组来存放一个字符串。
字符串总是以‘\0’作为串的结束符。因此当把一个字符串存入一个数组时, 也把结束符‘\0’存入数组,并以此作为该字符串是否结束的标志。
有了'\0'标志后,就不必再用字符数组的长度来判断字符串的长度了。
C语言允许用字符串的方式对数组作初始化赋值。
用字符串方式赋值比用字符逐个赋值要多占一个字节, 用于存放字符串结束标志'\0'。
除了上述用字符串赋初值的办法外,还可用printf函数和scanf函数一次性输出输入一个字符数组中的字符串, 而不必使用循环语句逐个地输入输出每个字符。
注意在本例的printf函数中,使用的格式字符串为“%s”, 表示输出的是一个字符串。
d=超出数组范围,值不确定。
1、数组元素下标是从0开始,上面程序案例uhcar niu[3]={3,6};定义数组niu的长度为3,也就是该数组有三个元素,依次为niu[0]、niu[1]和niu[2];
2、数组元素如果定义时没有赋值默认为0;
3、数组长度如果是n,那么数组元素个数只能是0到n-1,没有niu[n]这个元素。例如上面案例定义数组uhcar niu[3]={3,6};没有数组元素niu[3];因为该元素超出范围了,值不确定,有的编译器会直接报错。
2.2、数组的典型应用:
g=7;//字符串赋值的时候多了一个结束符'\0'
特例1:数组定义时同时赋值了,数组长度可以不写,默认为赋值的长度。详见例子第二行代码;
特例2:数组赋值为’3’表示为字符(ASCII码的字符’3’),而不是数字3;详见例子第三行代码;
特例3:数组在定义时赋值为字符串的话,如果定义时没有指定长度,那么真实的数组长度为字符串中字符数量+1,后面多了一个字符串结束符'\0',详见例子第五行代码。
3.1数组的定义和使用:
数组类型 数组名 数组长度 数组赋初值
niu[3]的值因为超出数组范围,值不确定。
期待您的未来,能够创造出更美好的世界。
本文章来自公众号老牛经济学原创
首先,我们需要了解气泡排序的原理。原理是比较第一个数和第二个数。第二,比较第三个数据,然后依次比较。
在比较过程中。比较前后两个数字,把大的移到右边。如果这本大书在左边,就好像把它移到右边一样。如果大数字在右边,它就不会移动。所以你的问题是比较两个数字,比较后把大的数字移到右边。只是双方价值观的交换。
这对我来说太难了!然而,我们发现指针可能不容易理解。例如,long a=1和int a=1的值是相同的。amparr的函数有点像long to int。ARR address是整个数组的地址&;ARR是第一个数字的地址。两者虽然价值相同,但意义不同。操作arr和&;arr的结果也不同。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任。如有侵权/违法内容,本站将立刻删除。
2. C 语言对数组下标的引用一般从 0 开始。
3. C 语言中,一个函数一般由两个部分组成,它们是 函数首部 和 函数体 。
4. C标准库函数中,字符串的处理函数包含在 string.h 头文件中,数学函数包含在 math.h头文件中。
5. C程序的运行需要经过 编译 和 链接 两步进行。
6. C程序中用 /**/ 括起来的内容是程序的注释语句。
7. C语言函数是由函数首部和函数体两部分组成。其中,函数首部包括 函数类型 、 函数名 和 函数参数 。
8. C语言提供的三种逻辑运算符是 &,//,! 。
9. C语言源程序经过编译后,生成文件的后缀名是 .c 。
10. C语言源程序经过连接后,生成文件的后缀名是 .exe 。
11. C语言中,关系表达式和逻辑表达式的值是 1//0 。
12. C语言中的标识符只能由三种字符组成,他们是 字母,数字,下划线 。
13. C语言中的每条基本语句以 ; 作为结束符,每条复合语句以}作为结束符。
14. C语言中函数返回值的类型是由 函数类型 决定的。
15. C源程序的基本单位是 函数 。
19. 定义一个指针p,它指向一个有6个整型元素的一维数组,定义语句为 int *p=a[6] ; 。
20. 定义一个指针数组p,它有4个元素,每个指针指向一个整型数据,定义语句为 int *p[4]; 。
21. 赋值语句是由 = 加上一个分号构成。
22. 构成数组的各个元素必须具有相同的 类型 。
25. 函数的形参在未被调用前不分配空间,函数形参的数据类型要和实参相同。
26. 函数体用{开始,用}结束。
27. 结构化设计中的三种基本结构是 顺序,选择,循环 。
28. 如果一个函数无返回值,定义它时函数类型应是 void 。
30. 若用数组名作为函数调用时的实参,则实际上传递给形参的是 数组的首地址。
34. 设y为int型变量,请写出描述“y是奇数”的表达式 y%2!=0; 。
35. 设有数组a[10],数组元素a[3]的地址可以写成 。
36. 数组由数组名和下标构成,其数组元素的数据类型是 。
38. 一个C程序有且仅有一个 main 函数。
39. 已知函数定义为:int stat(int a,float *p),则此函数的两个参数类型分别是 整形 、 浮点型 。
41. 预处理命令以 # 开头。
42. 在C语言的表达式中,x=x+5 用复合运算符可以写成 x+=5 。
43. 在C语言中,表示静态存储类别的关键字static。
44. 在C语言中,二维数组元素的内存中的存放顺序是 行顺序存放 。
45. 在C语言中,以 ‘\0’ 作为字符串结束标志。
46. 在C语言中的实型变量分为两种类型,它们是 整形 和 浮点型 。
47. 在scanf函数中,用符号 & 表示变量的地址。
48. 在传值调用中,实际是把实参的 地址传给形参 。
50. 指针是存放 地址 的变量。
1、C语言源程序的基本单位是 A
2、在每个C程序中都必须包含有这样一个函数,该函数的函数名为 A
3、C语言规定,在一个源程序中,main函数的位置 C
A. 必须在最开始 B. 必须在系统调用的库函数的后面
C. 可以任意 D. 必须在最后
4、在以下关于C语言的注释的叙述中,不正确的是 C
A.注释可用"/*"、"*/"形式表示,也可用"//"形式表示
B. 编译器在编译一个程序时,将跳过注释,不对其进行处理
C. 编译器在编译一个程序时,可发现注释中的单词拼写错误
D.程序中注释的多少不会影响所生成的可执行文件的长度
5、以下叙述不正确的是 C
A.在C程序中,严格区分大小写字母
B.一个C源程序有且仅有一个main函数
C.在C程序中,注释只能位于一条语句的后面
D. 一个C程序总是从main函数开始执行
6、C语言中,表示一条语句结束的标号是 B
7、在C语言中,以下叙述不正确的是 A
A) 在C程序中,无论是整数还是实数,都能被准确无误的表示
B) 在C程序中,变量名代表存储器中的一个位置
C) 静态变量的生存期与整个程序的生存期相同
D) C语言中变量必须先定义后引用
8、C语言程序编译过程中产生的文件有 B
A. 索引文件和文本文件两种 B. 目标文件和可执行文件
C. 二进制文件一种 D. ASCII码文件和二进制文件两种
9、C语言中的变量名只能由字母,数字和下划线三种字符组成,且第一个字符 C
A) 必须为字母 B) 必须为下划线
C) 必须为字母或下划线 D) 可以是字母,数字或下划线中的任意一种
10、C语言中非空的基本数据类型包括 B
A) 整型,实型,逻辑型 B) 整型,实型,字符型
C) 整型,字符型,逻辑型 D) 整型,实型,逻辑型,字符型
11、下列哪一个表达式的值是整数类型 A
12、设变量a是整形,f是实型,i是双精度型,则表达式10+′a′+i*f值的数据类型 C
14、在C语言中,char型数据在内存中的存储形式是 D
15、下列字符列中,可以作为“字符串常量”的是 B
16、以下运算符中,优先级最高的运算符是 D
17、设有定义int k=0;则以下四个表达式中与其它三个的值不同的是C D
24、在C语言中逻辑值“真”是用 B 表示的。
A. 预定义为真值的宏 B. 非零值 C. 正数 D. 非零整数
25. C语言对于嵌套if语句规定else总是与 C 匹配。
A)与最外层的if B.)与之前最近的if
26、为了避免嵌套的if-else语句的二义性,C语言规定else总是与 C 组成配对关系.
A) 缩排位置相同的if B) 在其之前未配对的if
C) 在其之前尚未配对的最近的if D) 同一行上的if
27、设x和y均为逻辑型变量,则x && y为真的条件是 A
A. 它们均为真 B. 其中一个为真
C. 它们均为假 D. 其中一个为假
28、能正确表示逻辑关系:"a≥ 10或a≤ 0" 的C 语言表达式是 D
29、判断char型变量c 1是否为小写字母的正确表达式为 D
34、若有条件表达式 (exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是 B
35、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式 D
36、设x 、y 、z 、t均为int型变量,则执行以下语句后,t的值为 C
39、下面程序段的运行结果是 D
40、设执行变量y值为3,执行下列循环语句后,变量y的值是 C
43、在定义一个一维数组时,不能用来表示数组长度的是 D
A) 常量 B)符号常量 C)常量表达式 D)已被赋值的变量
44、判断字符串是否相等,应当使用 D
47、运行下面程序段的输出结果是 A
48、以下程序段的输出结果是 B
51、若二维数组a有m列,则在a[i][j]前面的元素个数为 B
53、以下二维数组 a 的正确说明是 C
56、以下对二维数组a 的正确说明是 C
57、若有定义:int b[3];则数组元素的不合法引用是 D
C)将5个初值依次赋给a[6] 至a[10] D)因为数组长度与初值的个数不相同, 所以此语句不正确
62、以下正确的函数定义形式是 A
64、在C语言中,全局变量的存储类别是 A
65、在C语言中,以下说法中正确的是 A
A. 实参与其对应的形参各占用独立的存储单元
B. 实参与其对应的形参占用同一个存储单元
C. 只有当实参与形参同名时才占用同一个存储单元
D. 实参占用存储单元,但形参是虚拟的,不占用存储单元
66、C语言中,简单变量做实参时,它和对应的形参之间的数据传递方式是 B
(A)地址传递 (B)单向值传递
(C)由实参传给形参,再由形参传递给实参
(D)同用户指定传递方式
67、在一个源文件中定义的全局变量的作用域为 B
A. 本文件的全部范围 B. 从定义该变量开始至本文件结束
C. 本函数的全部范围 D. 本程序的全部范围
68、如果一个函数位于C程序文件的上部,在该函数体内说明语句后的复合语句中定义了一个变量,则该变量 C
A) 为全局变量,在本程序文件范围内有效
B) 为局部变量,只在该函数内有效
C) 为局部变量,只在该复合语句中有效
D) 定义无效,为非法变量
69、调用函数时,当实参和形参都是简单变量时,它们之间数据传递的过程是 D
A) 实参将其地址传递给形参,并释放原先占用的存储单元
B) 实参将其地址传递给形参,调用结束时形参再将其地址回传给实参
C) 实参将其值传递给形参,调用结束时形参再将其值回传给实参
D) 实参将其值传递给形参,调用结束时形参并不将其值回传给实参
70、以下叙述中,不正确的是 B
A) 在同一C程序文件中,不同函数中可以使用同名变量
B) 在main函数体内定义的变量是全局变量
C) 形参是局部变量,函数调用完成即失去意义
D) 若同一文件中全局变量和局部变量同名,则全局变量在局部变量作用范围内不起作用
71、对于C语言的函数,下列叙述中正确的是 A
A) 函数的定义不能嵌套,但函数调用可以嵌套
B) 函数的定义可以嵌套,但函数调用不能嵌套
C) 函数的定义和调用都不能嵌套
D) 函数的定义和调用都可以嵌套
(A)a数组第2行第4列元素的地址
(B)a数组第2行第4列元素的值
(C)a数组第4行的首地址
(D)a数组第1行第3个元素的地址
75、若有说明语句:int a,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是 A。
A. 字符或文件 B. 整型或实型 C. 共用或结构 D. 实型或指针
78、设有以下说明语句:
则下面的叙述不正确的是 C
A.struct是结构体类型的关键字
C.stutype是用户定义的结构体类型名
D. a 和 b都是结构体成员名
79、下列关于结构的语法错误的是 D
A.结构是由用户自定义的一种数据类型
B.结构中可设定若干个不同数据类型的成员
C.结构中成员的数据类型可以是另一个已定义的结构
D.在定义结构时,可以为成员设置默认值
80、说明一个结构体变量时,系统分配给它的内存是 A
A.各成员所需内存量的总和
B.结构中第一个成员所需内存量
C.成员中占内存量最大者所需的容量
D.结构中最后一个成员所需内存量
更多专升本模拟试题请点击查看>>