C语言强化(数组)

合集下载

C语言程序设计第06章 数组

C语言程序设计第06章 数组

1 4 2 3 思考: 0 0 0 0 0 注意:在定义数组时,如果没有为数组变量 1、如果想使一个数组中全部10个元 赋初值,那么就不能省略数组的大小。而且 素值为0,可以怎样写? a数组不初始化,其数组元素为随机值。 1 4 0 2 3 0 0 0 0 100 2、如果想使一个数组中全部 个元 a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 素值为1,又该怎样写? 例当对全部数组元素赋初值时,可以省略数组变量的大 char str[ ] = {'a', 'b', 'c', 'd', 'e' }; (5) 则数组str的实际大小为5。 小,此时数组变量的实际大小就是初值列表中表达式的个数。
//超出了数组的大小
(3) 表达式1是第1个数组元素的值,表达式2是第2个 数组元素的值,依此类推; 例 int a[5] = {0, 1, 2, 3, 4}; 经过以上定义和初始化后, a[0] = 0,a[1] = 1,a[2] = 2,a[3] = 3,a[4] = 4。
9
(4) 如果表达式的个数小于数组的大小,则未指定值的 数组元素被赋值为0; 例 int a[10] = {0, 1, 2, 3, 4};
7
<6>C语言中规定数组元素的下标总是从0开始, 例如int a[10];说明整型数组a,有10个元素。这10个
元素是: a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8], a
[9]; 注意最后一个元素是a[9],而不是a[10],该数 组不存在数组元素a[10]。 并且特别值得注意的是,C编译器对数组下标越 界不作检查。

c语言数据结构名词解释

c语言数据结构名词解释

C语言数据结构名词解释摘要本文档旨在解释和介绍C语言中常用的数据结构相关的名词,包括数组、链表、栈、队列和树等。

通过对这些名词的解释,读者可以更好地理解这些数据结构在C语言中的应用和原理。

目录1.[数组](#1-数组)2.[链表](#2-链表)3.[栈](#3-栈)4.[队列](#4-队列)5.[树](#5-树)1.数组数组是一种线性数据结构,用来存储一组相同类型的元素。

在C语言中,数组的大小是固定的,即在定义时需要指定数组的长度。

数组可以通过索引来访问和修改其中的元素,索引从0开始。

2.链表链表是一种动态数据结构,由一系列节点组成,节点包含数据和指向下一个节点的指针。

与数组不同,链表的大小可以动态增长或缩小。

链表分为单向链表和双向链表两种形式,其中双向链表的节点还包含指向前一个节点的指针。

3.栈栈是一种后进先出(L I FO)的数据结构,类似于现实生活中的弹夹。

栈有两个基本操作:入栈(p us h)和出栈(po p)。

入栈将数据添加到栈的顶部,而出栈则将栈顶的数据移除。

4.队列队列是一种先进先出(FI FO)的数据结构,类似于现实生活中的排队。

队列有两个基本操作:入队(en qu eu e)和出队(de qu eu e)。

入队将数据添加到队列的末尾,而出队则将队列开头的数据移除。

5.树树是一种分层的数据结构,由节点和边组成。

每个节点可以有零个或多个子节点,其中一个节点被称为根节点,没有父节点的节点称为叶子节点。

树在实际应用中常用于表示分层结构,如文件系统和组织结构等。

结论本文档对C语言中常用的数据结构名词进行了解释和介绍,包括数组、链表、栈、队列和树等。

通过阅读本文档,读者可以更好地理解这些数据结构在C语言中的应用和原理。

在实际编程中,选择适合的数据结构对于提高程序的效率和减少资源占用非常重要。

c语言数组函数的使用方法

c语言数组函数的使用方法

C语言数组函数的使用方法1. 介绍C语言是一种广泛应用于系统开发、嵌入式设备、游戏开发等领域的编程语言。

在C语言中,数组是一种特殊的数据结构,它可以容纳多个相同类型的元素,并通过索引来访问和操作这些元素。

函数是C语言中的重要概念,它可以使程序模块化并提高代码的可读性和复用性。

本文将介绍C语言中数组函数的使用方法。

2. 定义和初始化数组定义数组是指给数组分配内存空间,并为数组元素指定类型。

C语言中,可以使用以下语法来定义一个数组:<数据类型> <数组名>[<数组大小>];例如,定义一个包含5个整数的数组:int numbers[5];数组的大小指定了数组可以容纳的元素个数。

数组的索引从0开始,因此上述数组的索引范围是0到4。

进行数组初始化可以分为两种情况:2.1 静态初始化静态初始化是指在定义数组时直接给数组元素赋初值。

例如,下面的代码定义并初始化了一个包含5个整数的数组:int numbers[5] = {1, 2, 3, 4, 5};上述代码将数组的前5个元素分别赋值为1、2、3、4和5。

2.2 动态初始化动态初始化是指在定义数组后,通过循环或用户输入等方式给数组元素赋值。

例如,下面的代码定义了一个包含5个整数的数组,并通过循环给数组元素赋值:int numbers[5];int i;for (i = 0; i < 5; i++) {numbers[i] = i + 1;}上述代码通过循环将数组的前5个元素分别赋值为1、2、3、4和5。

3. 数组函数的定义和使用数组函数是指以数组为参数和/或返回值的函数。

在C语言中,可以通过以下方式定义数组函数:<返回类型> <函数名>(<数据类型> <数组名>[<数组大小>]) {// 函数体}下面是一个示例,定义了一个数组函数用于计算数组中所有元素的和:int sum(int numbers[], int size) {int result = 0;int i;for (i = 0; i < size; i++) {result += numbers[i];}return result;}上述代码定义了一个名为sum的函数,接受一个整数数组和数组大小作为参数,并返回数组元素的和。

C语言程序设计PPT课件 第5章 数组程序设计

C语言程序设计PPT课件 第5章 数组程序设计
C语言程序设计(第3版)张磊编著 清华大学出版社
5.1.4 数值型一维数组的初始化
例5-3 用一维数组生成Fibonacci数列的前20项,并输出。
#include<stdio.h> void main() {
long int fib[21]; int i; fib[1]=1; fib[2]=1; for(i=3;i<=20;i++)
{
if(str[i]>='0'&&str[i]<='9')
digital[j++]=str[i];
i++;
}
digital[j]='\0';
printf("Output: %s\n",digital);
}
C语言程序设计(第3版)张磊编著 清华大学出版社
/* program e5-6.c*/
5.2.1 字符##串iinncc的lluudd输ee<<入ssttrd输iniog出.h.h>>
}
for(i=0;i<N;i++) printf("%d ",a[i]);
}
C语言程序设计(第3版)张磊编著 清华大学出版社
5.1.4 数值型一维数组的初始化
数组的初始化,是在定义数组的时对数组的各个元素赋初值。 1. 全部元素的初始化 格式
数据类型 数组名[数组长度]={数组全部元素值表} 数据类型 数组名[]={数组全部元素值表} int a[6]={10,20,30,40,50,60}; float r[]={12.5,-3.11,8.6}; 2. 部分元素的初始化 格式 数据类型 数组名[数组长度]={数组前部元素值表} int b[10]={1,2,3}

C语言 数组

C语言 数组
} for(i=0;i<N;i++){ //计算每门课的平均分
sAverage[i]=0.0; for(j=0;j<M;j++)
sAverage[i]+=score[j][i]; sAverage[i]=sAverage[i]/M; }
C语言程序设计
二维数组的初始化
第4章 数组
(1)按行对二维数组进行初始化: int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
C语言程序设计
一维数组的定义
第4章 数组
➢ 要想使用一维数组,必须对一维数组进行定义。定义时,
需要说明两点: (1)数组中元素的类型; (2)数组中元素的个数。
类型标识符 数组名[整型常量表达式];
int x[10]; char name[20]; float score[20];
//定义一个包含10个整数的数组x //定义一个包含20个字符的数组name //定义一个包含20个浮点数的数组score
int arr[Num]={10,8,56,45,31,49,47,50,89,100}; printf("请输入要查找的数据: "); scanf("%d",&a); for(i=0;i<Num;i++){
if (arr[i]==a){ printf("元素%d在数组中的位置是:%d\n", a, i+1); break;
#define N 20 int a[N]={1,1}; //用一维数组表示Fibonacci数列,并对其赋初值 int i, sum=0; for(i=2;i<N;i++)

C语言练习3(数组)=参考解答

C语言练习3(数组)=参考解答

C语言(数组)一、选择题1. 设有程序:main(){ int i,a[11];printf("给数组赋值:\n");for (i=0;i<=10;i++)scanf("%d",( ));... ...printf("输出数组:\n");for(i=0;i<=10;i++)printf("%d,",( ));}则在程序中的两个园括号中分别应填入:CA) &a[i]和&a[i]B) a[i]和&a[i]C) &a[i]和a[i]D) a[i]和a[i]2. 设已定义:int a[15]; 则数组a占用的内存单元数是( C ).A) 15 B) 16 C) 30 D) 323. 阅读程序:main(){ int a[2]={0},i,j,k=2;for(i=0;i<k;i++)for(j=0;j<k;j++) a[j]=a[i]+1;printf("%d\n",a[k]);}以上程序的输出结果是( D ).A) 1 B) 3 C) 2 D) 不确定的值4. 阅读程序:f(int b[],int n){ int i,r=1;for(i=0;i<=n;i++) r=r*b[i];return r;}main(){ int x,a[]={2,3,4,5,6,7,8,9};x=f(a,3);printf("%d\n",x);}以上程序的输出结果是( D ).A) 720 B) 6 C)24 D) 1205. 以下定义语句中,错误的是( B ).A) int a[ ] = {6,7,8};B) int n=5, a[n];C) char a[ ]= "string";D) char a[5 ]={'0','1','2','3','4'};6. 以下描述中正确的是( D ).A) 数组名后面的常量表达式用一对圆括弧括起来B) 数组下标从1开始C) 数组下标的数据类型可以是整型或实型D) 数组名的规定与变量名相同7. 若定义数组并初始化char a[10]={'0','1 ','2','3','4','5','6','7','8','9'};指出以下错误语句( AB ).A) scanf("%c",a[0]);B) scanf("%s",&a);C) printf("%c",a[3]);D) printf("%s",a);8.若定义数组int a[10] ,其最后一个数组元素为( C ).A) a[0]C) a[9]D) a[10]9. 若定义数组并初始化int a[10]={ 1,2,3,4},以下语句哪一个不成立( B )?A) a[8] 的值为0B) a[1] 的值为1C) a[3] 的值为4D) a[9] 的值为010. 指出以下错误语句( A ).A) int n=10,a[n];B) int n,a[10];C) int a[10]={1,2,3};D) int a[10]={1,2,3,4,5,6,7,8,9,10};11. 请读程序:main(){int n[2],i,j,k;for(i=0;i<2;i++) n[i]=0;k=2;for(i=0;i<k;i++)for(j=0;j<k;j++) n[j]=n[i]+1;printf("%d\n",n[k]);}上面程序的输出结果是( A ).A)不确定的值 B)3 C)2 D)112. 若有以下的定义和语句:int str[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c='e',则数值为2的表达式是( C ).A)str['g'-c] B)str[2] C)str['d'-'c'] D)str['d'-c]13. 设有数组定义:int a[5];则下列给数组元素赋值错误的是( B ).B) scanf("%c",a[3]);C) a[3]=getchar();D) a[3]='a'+3;14. 以下数组定义中错误的是( D ).A) #define N 30int a[N+30];B) #define N 30int a[N];C) int a[30];D) int a[N];15. 在定义一个一维数组时,不能用来表示数组长度的是( D ).A)常量 B)符号常量 C)常量表达式 D) 已被赋值的变量16. 若float型变量占用4个字节,有定义float a[20]={1.1,2.1,3.1};则数组a在内存中所占的字节数是( D ).A)12 B)20 C)40 D)8017. 设已定义:int x[2][4]={1,2,3,4,5,6,7,8}; 则元素x[1][1]的正确初值是( A ).A) 6 B) 5 C) 7 D) 118. 设有定义:int a[][3]={{1,2,3},{4,5,6},{7,8,9}}; 则a[1][2]的初值为( C ).A) 2 B) 4 C) 6 D) 819. 设有:int a[4][5]; 则数组a占用的内存字节数是( C ).A) 12 B) 24 C) 40 D) 2020. 以下数组定义中,不正确的是( B ).A) int b[3][4];B) int c[3][ ]={{1,2},{1,2,3},{4,5,6,7}};C) int b[200][100]={0};D) int c[ ][3]={{1,2,3},{4,5,6}};21. 定义数组:int x[2][3]; 则数组x 的维数是( 2 ).A) 1 B) 2 C) 3 D) 622. 若定义数组并初始化int b[2][3]= { 1,2,3,4,5,6},以下语句哪一个成立( C )?A) 表达式b[1][2]的值为1B) 表达式b[1][2]的值为4C) 表达式b[1][2]的值为6D) 表达式b[1][2]的值为223. 若定义数组并初始化int a[2][3]={{1,2,3},{4,5,6}};for(i=0;i<2;i++)for(j=0;j<3;j++)printf("%d",a[i][j]);语句的结果是哪一个( C )?A) 1,2,3,4,5,6B) 1 2 3 4 5 6C) 12345624. 若定义数组并初始化int a[2][3]= {{1,2, 3},{4,5,6}};以下语句哪一个不成立( B )?A) a数组中有6个元素B) a[2][3]是a数组的最后一个元素的引用C) a数组中每个元素都为整数D) a数组是整型数组25. 定义如下变量和数组:int i;int x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是( C ).for(i=0;i<3;i++) printf("%d",x[i][2-i]);A) 1 5 9 B) 1 4 7 C) 3 5 7 D) 3 6 926. 如有以下定义:double s[][5]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14};则数值为2的元素是( C ).A) s[1][3] B) s[0][3] C) s[0][2] D) s[1][2]27. 以下程序的输出结果是( A ).main(){int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf("%d",s);}A) 18 B) 19 C) 20 D) 2128. 若已有char b[10][50];则该二维字符数组在内存所占字节数为( D ).A) 10 B)50 C)60 D)50029. 设有:char a[10]; 下列语句那个是正确的( D )?A) scanf("%s",a[0]);B) scanf("%s",&a);C) printf("%s",a[0])D) printf("%s",a)30. 阅读程序:main(){ char a[10];int i;for(i=1;i<=5;i++)scanf("%c",&a[i]);printf("%c",a[0]);}设从键盘输入字符串:abcde,则程序的输出结果是( C ).A) a B)空格 C)不确定D)031. 合法的数组定义是( D ).A) int a[ ] = "string";B) int a[5]={0,1,2,3,4,5};C) char a= "string";D) char a[ ]={'0','1','2','3'};32. 设有数组定义:char string[ ]="China";则数组string所占的空间为( B ).A) 5个字节B) 6个字节C) 7个字节D) 10个字节33. 定义字符数组c:char c[ ]={"c language"};数组c在内存中所占字节数是( C ).A) 9 B) 10 C) 11 D) 1234. 指出以下错误语句( C ).A) char a[10]={'0','1','2','3','4','5','6','7','8','9'};B) char a[10]={'0','1 ','2','3'};C) char a[2]= {"1","2"};D) char a[2]= {'a’,'b’};35. 若定义数组并初始化char a[10]={"hello"},该数组的元素个数是( A ).A) 10B) 5C) 6D) 736. 若定义数组并初始化char a[10]={"HELLO"},该数组的元素中 a[2]是( A ).A) 'L'B) 'E'C) 'H'D) 'O'37. 若定义数组并初始化int b[10]={ 1,2,3,4},以下哪几个语句成立( A C D)?A)b[8]的值为0B)b[1]的值为1C)b[3]的值为整数D)b[10]不是b数组中的元素38. 若定义数组int a[10];指出下列错误语句:ABCDA) a数组共有10个元素,其引用方法是:a[1],a[2]...a[10];B) a数组是整型数组,其元素自动初始化为0;C) a数组最后一个元素的引用方法是a[10];D) a数组第一个元素的引用方法是a[1];二、判断题1.数组是数目固定的若干变量的有序集合,数组中各元素的类型可以不同。

《数据结构——用C语言描述(第二版)》第5章 数组和广义表

《数据结构——用C语言描述(第二版)》第5章  数组和广义表
是指矩阵的下三角(不含对角线)中的元素均为常数C或零的n阶矩阵,下 三角矩阵则与之相反,如图5.3所示。
第五章 数组和广义表
在压缩存储时,矩阵中值相同的元素C可共享一个存储空间,元素 为零则可不必分配空间,而其余的元素有 n(n+1)/2个,因此三角矩阵 可用一维数组M[n×(n+1)/2+1]来存储,其中常数C放在数组的最后一 个下标变量中。
假设A和B矩阵分别用matrix型指针变量a和b表示,矩阵的转置可以 按以下进行:由于B的行是A的列,所以可按照b->data三元组表的次序在 a->data中找到相应的三元组进行转置,即可按a->data的列序转置,所得 到的转置矩阵B的三元组表b->data必定是按行优先存放的。因此,可以对 三元组表a->data从第一行起扫描,找到A的每一列中所有的非零元素,就 可以实现转置。
LOC ( aij ) =LOC ( a00) +(i×n+j) × c 同理可推导出以列为主序优先存储时数据元素a i j 的存储地址,其计算公式 为:
LOC( a i j ) =LOC( a00 ) +( j × n +i ) × c 对于三维数组Am×n×p而言,若以行为主序优先存储时,则其数据元 素aijk的存储地址可为: LOC ( a i j k) =LOC ( a000) +[ i × m×p +j ×p +k] × c 对于一般的二维数组A[c1…d1,c2…d2]而言,此处c1,c2的值不一定是 0,a i j 的地址为: LOC ( a i j ) =LOC ( a c 1 c 2 ) +[ ( i – c 1 )* ( d 2 – c 2 +1) +j – c 2 ] * c

C语言基础强化练习100题(含答案)

C语言基础强化练习100题(含答案)

C语言基础强化练习100题(含答案)雷柳青编排1.C语言程序的基本构成单位是____A) 程序行 B) 语句 C) 函数 D) 字符2.C语言程序的三种基本结构是____A.顺序结构,选择结构,循环结构B.递归结构,循环结构,转移结构C.嵌套结构,递归结构,顺序结构D.循环结构,转移结构,顺序结构3.C语言规定,程序中各函数之间______A) 既允许直接递归调用也允许间接递归调用B) 不允许直接递归调用也不允许间接递归调用C) 允许直接递归调用不允许间接递归调用D) 不允许直接递归调用允许间接递归调用4.C语言中可处理的文件类型是_____A) 文本文件和数据文件 B)文本文件和二进制文件C) 数据文件和二进制文件 D)数据代码文件5.C语言可执行程序的开始执行点是________A) 程序中第一条可执行语句 B) 程序中第一个函数C) 程序中的main函数D) 包含文件中的第一个函数6.C语言提供的合法的数据类型关键字是________A)Double B) short C) integer D) Char7.C语言中,运算对象必须是整型数的运算符是_______A) % B) \ C) %和\ D) *8.C语言中函数返回值的类型是由()决定。

A) return语句中的表达式类型 B) 调用函数的主调函数类型C) 调用函数时临时 D) 定义函数时所指定的函数类型9.C语言中数组名作为参数传递给函数,作为实参数的数组名被处理为_____。

A. 该数组的长度。

B. 该数组的元素个数。

C. 该数组中各元素的值。

D. 该数组的首地址。

10.C语言中数组下标的下限是________。

A.1B.0C.视具体情况D.无固定下限11.C语言中提供的合法关键字是____A.swithB.cherC.CaseD.default12.C语言中文件的存取方式是________。

A.顺序存取B.随机存取C.顺序存取.随机存取均可D.顺序存取.随机存取均不可13.C语言中最简单的数据类型包括______A) 整型.实型.逻辑型B) 整型.实型.字符型C) 整型.字符型.逻辑型 D) 整型.实型.逻辑型.字符型14.sizeof(float)是______A) 一种函数调用B) 一个不合法的表示形式C) 一个整型表达式D) 一个浮点表达式15.x.y.z被定义为int型变量,若从键盘给x.y.z输入数据,正确的输入语句是______A) input x,y,z; B) scanf("%d%d%d",&x,&y,&z);C) scanf("%d%d%d",x,y,z); D) read("%d%d%d",&x,&y,&z);16.表达式:10!=9的值是_____A) true B) 非零值C) 0 D) 117.表示关系x<=y<=z的c语言表达式为________A) (X<=Y)&&(Y<=Z) B) (X<=Y)AND(Y<=Z)C) (X<=Y<=Z) D) (X<=Y)&(Y<=Z)18.程序片段:在TC20中, int i=65536; printf("%d",i);的输出结果是____A) 65536 B) 0 C) 有语法错误,无输出结果 D) -119.当调用函数时,实参是一个数组名,则向函数传送的是____A) 数组的长度 B) 数组的首地址 C) 数组每一个元素的地址 D) 数组每个元素中的值20.对于基本类型相同的两个指针变量之间,不能进行的运算是_______A) < B) = C) + D) -21.假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是______A) 3 B) 6 C) 10 D) 2022.假定有以下变量定义: int k=7 ,x=12; 则能使值为3的表达式是_______A x%=(k%=5)B x%=(k-k%5)C x%=k-k%5D (x%=k)-(k%=5)23.请读程序片段(字符串内没有空格): printf("%d",strlen("ATS012\1\\\017"));的输出结果是________A) 11 B) 10 C) 9 D) 824.请选出合法的C语言赋值语句_____A) a=b=58; B) i++=5; C) a=58,b=58 D) k+5=int(a+b);25.若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是 ___A) -3 B) 9 C) -12 D) 626.若int类型占两个字节,则以下语句输出为________。

C语言(第七章数组)

C语言(第七章数组)

对部分元素赋初值(前面的连续元素)。如: int b[10]={0,1,2,3,4};
表示数组元素的值为:
b[0]=0; b[1]=1; b[2]=2; b[3]=3; b[4]=4; 后5个元素的初值为0。
注意:不能只对不连续部分元素或后面的连续
元素赋初值。 语句: int a[10]={, , , , ,1,2,3,4,5};
main ( ) { int a[2] [3]={{1, 2,3},{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"); } }
运行结果如下:
1
1
2
3
5
8
89
13
144
21
133
34
377
55
610
987
1597
1584
4181
6765
四、简单预处理指令
1. 指令格式:
#define 符号常量
2. 指令作用
文本串
用整型表达式替换程序中所有的符号常量。

c语言数组函数的使用方法

c语言数组函数的使用方法

c语言数组函数的使用方法一、前言C语言是一种非常流行的编程语言,其强大的数据处理和算法能力使其成为许多程序员的首选。

在C语言中,数组是一种非常重要的数据类型,它可以存储多个相同类型的元素。

而函数则是C语言中另一个非常重要的概念,它可以将代码分解为可重用的模块。

本文将介绍C语言中数组和函数的基本概念以及如何使用它们。

我们将讨论如何创建和初始化数组、如何使用数组进行简单的数学计算、以及如何定义和调用函数。

二、数组2.1 创建和初始化数组在C语言中,我们可以使用以下方式来创建一个数组:```cint myArray[10];```这样就创建了一个包含10个整数元素的整型数组。

注意,这里我们需要指定数组元素的类型(int),并且需要指定数组元素数量(10)。

我们也可以在定义时对数组进行初始化:```cint myArray[5] = {1, 2, 3, 4, 5};```这样就创建了一个包含5个整数元素的整型数组,并将第1个到第5个元素分别初始化为1到5。

如果我们只想对部分元素进行初始化,也可以这样做:```cint myArray[5] = {1, 2};```这样就创建了一个包含5个整数元素的整型数组,并将第1个和第2个元素分别初始化为1和2,其余元素将被自动初始化为0。

如果我们不指定数组大小,也可以使用以下方式来创建一个动态数组:```cint* myArray = malloc(sizeof(int) * 10);```这样就创建了一个包含10个整数元素的整型动态数组。

注意,我们需要使用malloc函数来分配内存空间,并且需要指定内存空间的大小(sizeof(int) * 10)。

2.2 访问和修改数组元素要访问数组中的某个元素,我们可以使用以下语法:```cmyArray[index];```其中,index表示需要访问的元素下标。

注意,C语言中的数组下标从0开始计数。

例如,要访问myArray中的第3个元素,可以这样做:```cint x = myArray[2];```这样就将myArray中的第3个元素赋值给了变量x。

c语言允许的数据类型

c语言允许的数据类型

c语言允许的数据类型C语言允许的数据类型在C语言中,数据类型是用来定义变量或函数返回值的属性。

C语言中允许的数据类型包括基本数据类型和派生数据类型。

本文将详细介绍C语言允许的数据类型及其特点。

1. 基本数据类型1.1 整型(int)整型是C语言中最基本的数据类型之一,用于表示整数。

整型可以分为有符号整型和无符号整型。

有符号整型可以表示正数、负数和零,而无符号整型只能表示非负数和零。

整型的大小取决于编译器和操作系统,但一般情况下,int类型占用4个字节。

1.2 浮点型(float和double)浮点型用于表示带有小数点的数值。

C语言中提供了两种浮点型数据类型:float和double。

float类型占用4个字节,而double类型占用8个字节。

double类型的精度比float类型更高,可以表示更大范围的数值。

1.3 字符型(char)字符型用于表示单个字符。

在C语言中,字符型变量通常占用1个字节。

字符型可以表示ASCII码、字母、数字、符号等各种字符。

2.1 数组(array)数组是由相同类型的元素组成的集合。

在C语言中,数组可以存储多个元素,并通过下标来访问各个元素。

数组的大小在定义时确定,并且不可改变。

2.2 指针(pointer)指针是用于存储内存地址的变量。

通过指针,可以间接访问存储在内存中的数据。

指针在C语言中非常重要,它可以用于动态分配内存、传递函数参数等。

2.3 结构体(struct)结构体是由不同类型的变量组成的集合。

在C语言中,结构体可以用来表示复杂的数据结构。

通过结构体,可以将多个不同类型的变量组织在一起,形成一个逻辑上的整体。

2.4 共用体(union)共用体是一种特殊的数据类型,可以在相同的内存位置存储不同的数据类型。

共用体的大小取决于最大的成员变量的大小。

2.5 枚举(enum)枚举用于定义一组命名的常量。

通过枚举,可以为一组相关的常量赋予有意义的名称,提高代码的可读性。

C语言 — 第六章 数组(大学使用教程)

C语言 — 第六章 数组(大学使用教程)
21
数组常用的循环形式
法一 int i,a[100]; for(i=0;i<100;i++) a[i]=i; 法二 int i,a[100]; for(i=0;i<=99;i++) a[i]=i;
C程序中常用的是第一种方法。 程序中常用的是第一种方法。 此法中,循环变量的终值是“小于”而非“等于” 此法中,循环变量的终值是“小于”而非“等于” 数组长度!否则将导致“越界”的发生。 数组长度!否则将导致“越界”的发生。


• 数组是一组有序的同类型数据 。 • 数据称为数组的元素。 数据称为数组的元素。
6
数组的用处
保存大量同类型的相关数据 – 如矩阵运算,表格数据等 如矩阵运算,
数组的特点
快速地随机访问 一旦定义, 一旦定义,不能改变大小
7
§6.1 数组的定义与初始化
数组的定义 : 数组在使用前要进行定义: 名称、类型、维数、 数组在使用前要进行定义 名称、类型、维数、大小 定义格式: 定义格式: 类型标识符 数组名[常量表达式1][常量表达式2]…… 数组名[常量表达式1][常量表达式2] 1][常量表达式2]
如有数组 int a[5]; 其中数据为:2、4、23、6、78 其中数据为: 、 、 、 、 则存放情况如下: 则存放情况如下:
12
数组在内存 中的首地址
2000 2002
2的低位字节 的低位字节 2的高位字节 的高位字节 4的低位字节 的低位字节 4的高位字节 的高位字节
a[0] a[1] a[2] a[3] a[4]
即a=2000
2004 2006 2008
int a[5]={ 2,4, 23,6,78 };

C语言(数组)习题与答案

C语言(数组)习题与答案

一、单选题1、下列描述中不正确的是()A.字符串的结束符是'\0'。

B.可以对字符型数组进行整体输入、输出。

C.字符型数组中能存放字符串。

D.字符串函数声明在ctype.h中。

正确答案:D2、下面是有关C语言字符数组的描述,其中错误的是()A.不可以用赋值语句给字符数组名赋字符串B.可以用输入语句把字符串整体输入给字符数组C.字符数组只能存放字符串D.字符数组中的内容不一定是字符串正确答案:C3、下面是对数组s的初始化操作,其中不正确的是()A.char s[5]= " ";B.char s[5]={'a'};C.char s[5]={"a"};D.char s[5]= "abcdef";正确答案:D4、下面叙述正确的是()A.字符串"123 "与"123"相等。

B.字符串"123"小于字符串"2"。

C.两个字符串所包含的字符个数不相同时,才能进行大小比较。

D.字符个数多的字符串比字符个数少的字符串大。

正确答案:B5、下面程序段的输出结果是()char a[7]=“123456”;char b[4]=”ABC”;strcpy(a,b);printf(“%c”,a[5]);A.\0B.C.5D.6正确答案:D6、以下对二维数组a的正确说明是__。

A.double a[1][4];B.float a(3)(4);C. floatf a(3,4);D. int a[3][];正确答案:A7、以下能对二维数组a进行正确初始化的语句是__。

A. int a[][3]={{1,2,3},{4,5,6}};B.int a[2][]={{1,0,1},{5,2,3}};C.int a [2][4]={{1,2,3},{4,5},{6}};D. int a[][3={{1,0,1},{},{1,1}};正确答案:A8、若有说明: int a[3][4]={0};则下面正确的叙述是__。

C语言array数组的用法详解

C语言array数组的用法详解

C语⾔array数组的⽤法详解⽬录⼀维数组的创建与初始化程序⼀:程序⼆:程序三程序四(⼆维数组 - ⼆维数组的列绝对不能省略)⼆维数组在内存中的存储程序⼀数组作为函数参数,怎么作?实例:冒泡排序数组名:⼀维数组的创建与初始化数组是⼀种相同类型元素的集合程序⼀:#include<stdio.h>#include<string.h>int main(){创建⼀个数组int arr1[10];// [常量]初始化 int arr[10]={1,2,3};不完全初始化,剩下的元素默认初始化0.char arr2[5];初始化 char arr[5]={'a','b'};,不完全初始化,剩下元素默认初始化0.初始化 char arr[5]="ab" 这是可⾏的,因为隐藏⼀个'\0',后⾯的0使我们⾃⼰给的(这个字符串都给给它的==),不是系统默认int n = 5;char ch[n]; 这样创建数组是错误,因为n还是变量,值是被赋值了,并不会改变它的属性char arr3[5] = { 'a', 98/*b的ASCII码等于98*/ };//可⾏上式等价于下式char arr3[5] = {'a','b'}char arr4[] = "abcd";//加上后⾯隐藏的'\0',⼤⼩为5当我们并没有指定⼤⼩的时候,它会根据后⾯的数据,⾃⼰给定⼤⼩char arr5[] = "abcdef";printf("%d\n",sizeof(arr5));// 7 sizeof晕倒'\0',把它算进去,在停⽌计算printf("%d\n", strlen(arr5));//6 strlen是遇到'\0'(不包含),就停⽌计算char arr6[] = { 'a', 'b','c','\0' };printf("%d\n",strlen(arr6));//如果没有'\0'结束标志符,它会⼀直算个数,直到遇到'\0',输出的是⼀个随机数printf("%d\n", sizeof(arr6));//没有'\0'它就少算⼀个就是3return 0;}程序⼆:#include<stdio.h>#include<string.h>int main(){char arr[] = "abcdef";//元素下标是从0开始pritnf("%c\n",arr[0]); //arr[0] == a,表⽰⾸元素a,输出结果为a如果要依次打印字符串所有元素⽤循环更简单,字符串的 '\0' 是隐藏的,⼀般是不⽤打印的int i = 0;int len = strlen(arr);// 计算元素个数for (i = 0; i < len; i++){printf("%c ",arr[i]);// a b c d e f}return 0;}程序三#include<stdio.h>int main(){int arr[] = {1,2,3,4,5,6,7,8,9,10};int sz = sizeof(arr) / sizeof(arr[0]);// sizeof(数组名)计算的整个数组的字节⼤⼩,我们只要再求⼀个元素的⼤⼩就可以了,因为数组是⼀群相同类型数据的集合,所以我// 假设 int a[10];数组 a 有 10个 int(4byte)类型的元素,整个数组的⼤⼩就是 4*10 == 40 byte,数组⼤⼩除以数组元素⼤⼩,不就是数组元素个数嘛。

c语言--- 数组

c语言--- 数组
例:int a[10]; a 1010 95 a[0] a[1] 定义a为一维数组,有 10个元素,都是int型。 编译时分配连续内存 内存字节数=数组维数* sizeof(元素数据类型)
=10×2
数组名表示数组所 1012 在内存首地址也是 a[0]的地址,是地 1014 址常量 :
1028
80
66 :
第7章 数 组
引言
一维数组 二维数组 字符数组与字符串
7.1 引言
一、数组的引入 为了便于处理一批类型相同的数据,引入了数组类型.
例:某班有40名学生,求该班成绩的平均分
#include <stdio.h> main( ) { int j , sum , s ; float ave ; sum=0; for(j=1; j<=40 ; j++) { scanf(“%d”,&s); sum=sum+s; } ave=sum/40; printf(“ave=%f”,ave); } 假设现在要保存每个学 生的成绩,那就需要40个变 量,但这样一来输入、输出、 计算都会变得繁琐,若成千 上万数据,显然不合适。 在这种情况下,我们可以 使用数组类型,声明一个数 组含有40个整型元素,每个 数组元素存放一个成绩,这 样,成绩的输入、输出、计 算就可通过循环来实现.
• 如果要对n个数据排序,就需要进行n-1轮的比较,每次都对相 邻两个数进行比较,将较大的数交换到后一个元素中。每1轮 的比较都找出未排好的数据中的最大数放在这几个数的后面。 • 例如,第1轮需要比较n-1次,在n个数中找出最大数放在数组 的最后1个元素中;
• 第2轮将对剩下的前n-1个数进行比较,需要比较(n-1)-1次,将 前n-1个数中的最大者放入数组的倒数第2个元素中; • ……以此类推,第n-1轮需要进行1次比较,将剩下的2个数中 的较大者放入a[1]中,将最小的数放入a[0]中。 • 当第n-1轮比较进行完后,所有的数据都按照升序在数组中排 列。

C语言 数组ppt

C语言 数组ppt
imin = i; for (j=i+1; j<10; j++) {
if (a[j] < a[imin]) imin = j;
} if (imin != i) {
temp = a[i]; a[i] = a[imin]; a[imin] = temp; } }
for (i=0; i<10; i++) printf("%3d",a[i]);
第6章 数组
内容提要
数组定义和基本操作; 常用算法:求最大最小值、排序、查找等; 用字符数组存取字符串; 使用字符串处理函数处理字符串
2023/10/17
2
一维数组(Array)的定义
类型 数组名[长度]; – 长度为常量表达式,不可以是变量(但C99提供了动态数组)
例:int a[10]; – 定义一个有10个元素的数组,每个元素的类型均为int – 系统会在内存分配连续的10个int空间给此数组 – a 是数组名,同时也代表着此数组的首地址
31
int a[10]={1,3,5,7,9,12,14,16,18,20}, number; int low = 0, high= 9 ,mid,pos = -1, find = 0
printf("请输入要查找的数:"); scanf("%d",&number);
while (low <= high) {
9
20
#include <stdio.h> int main() {
Bubble sort
int a[10]={93,84,52,46,25,0,66,18,39,70}, i, j, temp;

(C语言)数组的使用(数组访问和数组作为函数参数)

(C语言)数组的使用(数组访问和数组作为函数参数)

(C语言)数组的使用(数组访问和数组作为函数参数)数组是C语言中一种重要的数据结构,它是一系列具有相同类型的元素的集合。

在C语言中,我们可以通过数组来方便地存储和操作大量的数据。

一、数组的访问1.声明数组在C语言中,我们可以通过声明数组来创建一个数组变量。

数组的声明包括数组的类型和数组的名称,以及数组的大小。

例如,我们可以声明一个包含10个整数的数组如下:int numbers[10];这里,我们声明了一个名为numbers的整型数组,数组大小为10个元素。

注意,数组中的元素索引从0开始,因此numbers[0]表示数组中的第一个元素,numbers[1]表示数组中的第二个元素,以此类推。

2.访问数组元素我们可以使用数组名和元素索引来访问数组中的元素。

例如,要访问数组numbers的第一个元素,可以使用numbers[0]。

我们还可以通过循环遍历数组的所有元素,依次读取或修改它们的值。

例如,以下代码演示了如何通过循环遍历数组并输出每个元素的值:```c#include <stdio.h>int maiint numbers[5] = {1, 2, 3, 4, 5};for(int i = 0; i < 5; i++)printf("%d ", numbers[i]);}return 0;```上述代码将输出:12345二、数组作为函数参数数组作为函数参数时,可以通过传递数组的指针来实现对数组的传递。

在函数中,我们可以通过指针来访问和修改数组的元素。

以下是一个示例代码:```c#include <stdio.h>void printArray(int *arr, int size)for(int i = 0; i < size; i++)printf("%d ", arr[i]);}int maiint numbers[] = {1, 2, 3, 4, 5};printArray(numbers, 5);return 0;```上述代码定义了一个名为printArray的函数,该函数接受一个整型指针和数组的大小作为参数。

c语言数组元素运算

c语言数组元素运算

c语言数组元素运算(原创版)目录1.引言2.C 语言数组元素运算的基本概念3.C 语言数组元素运算的方法4.C 语言数组元素运算的实例5.结论正文1.引言C 语言是一种广泛应用的编程语言,其功能丰富,操作简单。

在 C 语言中,数组是一种重要的数据结构,数组元素的运算是编程过程中经常遇到的问题。

本文将从 C 语言数组元素运算的基本概念、方法、实例等方面进行详细的介绍。

2.C 语言数组元素运算的基本概念在 C 语言中,数组是一种由相同类型的数据元素组成的集合。

数组元素可以通过下标进行访问和修改。

数组元素的运算包括加法、减法、乘法、除法等基本运算,以及逻辑运算(如&&、||、! 等)和位运算(如&、|、^、~等)。

3.C 语言数组元素运算的方法C 语言中数组元素的运算可以通过循环、函数等形式实现。

循环是一种常用的方法,可以通过 for 循环、while 循环等实现数组元素的遍历和运算。

函数是一种模块化的代码组织方式,可以将数组元素的运算封装在函数中,实现代码复用。

4.C 语言数组元素运算的实例以下是一个 C 语言数组元素运算的实例,该实例实现了一个简单的计算数组元素之和的函数:```c#include <stdio.h>int sum(int *arr, int size) {int sum = 0;for (int i = 0; i < size; i++) {sum += arr[i];}return sum;}int main() {int arr[] = {1, 2, 3, 4, 5};int size = sizeof(arr) / sizeof(arr[0]);int sum = sum(arr, size);printf("数组元素之和:%d", sum);return 0;}```该实例中,我们定义了一个名为`sum`的函数,该函数接收一个整型指针数组`arr`和数组的大小`size`作为参数。

c语言数组统一赋值 -回复

c语言数组统一赋值 -回复

c语言数组统一赋值-回复C语言是一种广泛应用于系统编程、嵌入式开发以及科学计算领域的编程语言。

它具有高效、可靠和易于理解的特点,因此受到了广大开发者的喜爱。

在C语言中,数组是一种非常重要的数据结构,它可以用于存储多个相同类型的数据。

当我们需要对多个数据进行处理时,数组的使用会变得十分便捷。

本文将重点讨论如何在C语言中统一给数组赋值,并逐步回答相关问题。

首先,让我们来了解一下数组的定义和基本使用方法。

在C语言中,数组的定义需要指定数据类型和数组长度。

例如,我们可以定义一个包含5个整数的数组:cint numbers[5];这样就定义了一个名为numbers的整型数组,它可以存储5个整数。

为了给数组赋值,我们可以使用下标操作符([])来访问数组中的元素,然后将具体的值赋给相应的元素。

例如,我们可以给numbers数组的第一个元素赋值为10:cnumbers[0] = 10;需要注意的是,数组的下标从0开始,因此第一个元素的下标是0,第二个元素的下标是1,依此类推。

接下来的操作将详细介绍。

1. 如何一次性给整数数组赋值?当我们需要给整数数组赋一系列相同的值时,可以使用下面的方法:cint numbers[5] = {10, 10, 10, 10, 10};这样就把整数数组的所有元素都赋值为10了。

需要注意的是,大括号内的值的个数必须和数组的长度相同,否则会导致编译错误。

对于更大的数组,这种方法通常更易于书写和理解。

2. 如何统一给浮点数数组赋值?和整数数组一样,我们可以使用相同的方法对浮点数数组进行赋值。

例如,下面的代码将把浮点数数组的所有元素都赋值为3.14。

cfloat numbers[4] = {3.14, 3.14, 3.14, 3.14};这样就完成了对浮点数数组的统一赋值。

3. 如何一次性给字符串数组赋值?对于字符串数组,我们可以使用相同的方法进行统一赋值。

例如,下面的代码将把字符串数组的所有元素都赋值为同一个字符串“Hello”。

c语言输入参数函数放数组

c语言输入参数函数放数组

c语言输入参数函数放数组在C语言中,函数是一种用于执行特定任务的代码块。

在编写函数时,我们可以定义输入参数,以便在函数内部使用。

在本文中,我们将讨论如何在C语言中将数组作为函数的输入参数。

在C语言中,数组是一种存储相同类型数据的连续内存区域。

将数组作为函数的输入参数可以使我们在函数内部访问和修改这些数据,而不需要进行数据的复制。

要将数组作为函数的输入参数,我们需要使用数组的名称和数据类型作为函数的参数。

以下是一个将数组作为输入参数的基本函数的示例:```cvoid printArray(int arr[], int size) {for (int i = 0; i < size; i++) {printf("%d ", arr[i]);}}```在上面的例子中,`int arr[]` 是一个整数数组,`int size` 是数组的大小。

函数内部使用了一个循环来遍历数组并打印出每个元素的值。

当我们调用这个函数时,我们只需要将数组作为参数传递给函数即可:```cint main() {int myArray[] = {1, 2, 3, 4, 5};printArray(myArray, size);return 0;}```在上面的示例中,我们定义了一个名为`myArray`的整数数组,并将其作为参数传递给`printArray`函数。

我们还计算了数组的大小并将其作为第二个参数传递给函数。

最终,函数将打印出数组的内容。

在函数中,我们可以修改数组的值,这将影响到主函数中的数组。

例如,以下是一个函数,用于将数组的元素乘以2:```cvoid multiplyArray(int arr[], int size) {for (int i = 0; i < size; i++) {arr[i] *= 2;}}```在函数内部,我们使用一个循环遍历数组,并将每个元素乘以2。

当我们调用这个函数时,数组的值将被修改:```cint main() {int myArray[] = {1, 2, 3, 4, 5};multiplyArray(myArray, size);printArray(myArray, size);return 0;}```在上面的示例中,首先我们定义了一个名为`myArray`的数组,并将其作为参数传递给`multiplyArray`函数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

例:int a[3][4]={1, 5, 9};
1 5 9 0 0 0 0 0 0 0 0 0
2) 二维数组的行长可不指定,系统自动依据初值确 定,而列长必须指定; 例:int a[ ][4]={1, 2, 3, 4, 5, 6, 7, 8}; 系统自动确定行数为2。
数组-关键点
• ARRAY_LENGTH()宏
int array[m][n]={{值1,值2,…,值n},{值1,值2,…,值n}…};
按行连续赋值可写为:
int array[m][n]={值,值,…};

二维数组的元素也称为双下标变量,其引用方式为:
数组名[下标][下标];
int array[5][3]={{80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85} }; int array[5][3]={ 80,75,92,61,65,71,59,63,70,85,87,90,76,77,85}; int array[][3]={ 80,75,92,61,65,71,59,63,70,85,87,90,76,77,85}; int array[5][3]={{80},{61},{59},{85},{76}}; //只对部分元素赋初值 array[1][1] = 65;
数组-二维数组的逻辑结构和存储结构
二维数组的逻辑结构是一个二维数据表(或距阵); 如:学生成绩表
姓名 科目 数学 外语 物理 化学
0x220000
┇ 87 73 91 76
张三
87
73
91
76
0x220016
82
89 67
李四
82
89
67
73
0x220032
王五 93 70 80 82
73
93 70 80 82 ┇
数组-二维数组的初始化
初始化规则: 1) 可仅对部分元素赋初值 例:int a[3][4]={{1}, {5}, {9}};
1 0 0 0 5 0 0 0 9 0 0 0
a[0][0] a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] a[1][2] a[1][3] a[2][0] a[2][1] a[2][2] a[2][3]
数组名[下标]
• 下标只能为整型常量或整型表达式。 • 数组首地址:直接通过数组名访问数组首地址或者通 过首个元素的地址访问。
int latitude[5] = {0, 1, 2, 3, 4}; √ int latitude[] = {0, 1, 2, 3, 4}; √ int latitude[5] = {0, 1}; √
数组-二维数组的定义
一般形式: 类型标识符 数组名[常量表达式] [常量表达式] 列长 行长
命名方法同变量,但不能重名;
说明元素类型,可以是基本类型,也可以 是自定义的结构体类型; 例: int a[3][4]; float b[5][10]; 定义了一个3行4列的二维整型数组a;及5行10列的 二维实型数组b。
数组名的值实际上是一个指针常量,指向的是第一个元素的地址
2) array + 2
等同于&array[2]
3) array[0]
第一个元素
4) &array[0]
第一个元素的地址
5) *(array + 2)
array[2]
数组-讨论
• int matrix[3][4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}}; 说明以下表达式的含义: 1) matrix 2) matrix + 2 3) matrix[0] 4) matrix[0] + 2 5) matrix[0][0] 6) &matrix[0] 7) &matrix[0][0] 8) *(matrix + 1) 9) *(matrix + 1) + 2 10)*(*(matrix + 1) + 2)
数组-讨论
• 如下函数声明: int function(char para[32]); 1)参数char para[32],实际上传递的是什么? 2)sizeof(para) = ? 3)说明以下几个定义的差异: int vector[5] = {1, 2, 3, 4, 5, 6}; int vector[5] = {1, 2, 3, 4, 5}; int vector[5] = {1, 2, 3, 4}; int vector[] = {1, 2, 3, 4};
数组-一维数组的定义
一般形式: 类型标识符 数组名[常量表达式] 指定数组元素个数; 形式:整常数/符号常量
命名方法同变量,但不能重名;
说明元素类型,可以是基本类型,也可以 是自定义的结构体类型; ;
例:int a[5]; 定义了长度为5的一维整型数组a;
数组-一维数组的定义
• 不能在方括号中用变量来表示元素的个数,但是可以 是符号常量或常量表达式。
构造类型的特点: 每种构造类型都是由若干基本类型的量按一 定规则组织而成。
数组
• • • • •
一维数组 数组和指针 二维数组 关键点 讨论
数组-什么是数组? 数组是同一类型的一组数据(10个 char 或15个 int 数据) ,在内存中顺 序存放。
整个数组共用一个名字,而其中的每 一项又称为一个元素。
访问数组元素: latitude[2]; latitude[i++];
√ √
首地址:latitude或&latitude[0]
数组和指针
• 指针是一种用于存放另外一个变量的地址的变量。
类型说明符 *变量名;
• char c; • char *p;
数组和指针
• int a[10];
• int *pa; • pa = &a[0];
数组
培训目的
通过本课程的学习,达到掌握C语言基础知识,能独立 运用C语言进行程序设计的目的。
内容纲要
• 数组
回顾--C语言数据类型
C数据类型: 基本类型——整型、浮点型、字符型、枚举型; 构造类型——数组、结构体、共用体; 基本类型的特点: 每个基本类型都是不可再分割的量,基本类 型的变量在定义、存储、含义上都是独立的。
• char c[] = "BASIC\ndBASE"; sizeof(c)=? printf("%s\n", c);
数组-讨论
• int age[] = {0, 1, 2, 3, 4}; int agecopy[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; 问: 1)for (i = 0; i < 10; i++) { printf("%d", age[i]); } 这段代码执行的结果如何? 2)for (i = 0; i < 10; i++) { printf("%d", agecopy[i]); } 这段代码执行的结果如何? 3)printf("%d",age); 这段代码执行的结果如何? 4)age + 1 – age = ? 5)(int)(age + 1) - (int)age = ? 6)如果是long age[5];4和5的结果分别是多少?
数组-讨论
• 对于二维数组, int age[5][6] = { {0, 1, 2, 3, 4, 5}, {6, 7, 8, 9, 10, 11}, {12, 13, 14, 15, 16, 17}, {18, 19, 20, 21, 22, 23}, {24, 25, 26, 27, 28, 29} }; 表达式age[4, 3]等价于什么?
9 5 2 7
数组-一维数组的初始化
初始化规则:
1) 初值只能是常数,逗号分隔; 2) 系统自动将静态存储类别的数组各元素赋初值0; 如: static int a[5]; /*各元素自动为0*/ int b[10]; /*各元素初值不定*/ 3) 初值个数可少于数组长度; 如:int a[5]={1, 3, 5}; /*其余为不可预知的值*/ 5) 系统可自动以初值的个数确定数组的长度; 如:float b[ ]={1.1, 2.2, 3.3, 4, 5, 6, 7, 8}; b数组长度自动为8; 分配存储空间大小:32 bytes
#define ARRAY_LENGTH(x) (sizeof(x) / sizeof(x[0])) 示例: float ratios[] = {0.0, 0.0, 0.58, 0.92, 1.12}; … for (i = 0; i < ARRAY_LENGTH(ratios); i++) { … }
数组-讨论
• C语言认为matric不是二维数组而是一维数组,且这个一维数组的每个元素又是一维 数组。 1) matrix //int (*matric)[4],指向整形数组的指针,指向第一个子数组 2) matrix + 2 //同上,指向第三个子数组 3) matrix[0] //等同于matric+0,指向第一个子数组 4) matrix[0] + 2 //等同于&matric[0][2], matric[0][2]的地址 5) matrix[0][0] //第一个元素 6) &matrix[0] //第一个子数组的地址 7) &matrix[0][0] //第一个元素的地址 8) *(matrix + 1) //指向整型的指针,也就是指向第二行中的第一个元素 9) *(matrix + 1) + 2 //指向整型的指针,也就是指向第二行中的第3个元素 10)*(*(matrix + 1) + 2) //第二行中的第3个元素的值
相关文档
最新文档