C语言数组PPT课件

上传人:仙*** 文档编号:181336803 上传时间:2023-01-12 格式:PPT 页数:56 大小:368KB
返回 下载 相关 举报
C语言数组PPT课件_第1页
第1页 / 共56页
C语言数组PPT课件_第2页
第2页 / 共56页
C语言数组PPT课件_第3页
第3页 / 共56页
点击查看更多>>
资源描述
2021/3/91第七章第七章 数数 组组 数组是内存中的一种数据集合,用于存贮较大数组是内存中的一种数据集合,用于存贮较大量的相同类型的数据元素,在程序中数组有一个量的相同类型的数据元素,在程序中数组有一个名字,并通过下标访问数组的某个元素。名字,并通过下标访问数组的某个元素。7.1 一维数组一维数组一、一维数组的定义一、一维数组的定义语法格式:元素类型名语法格式:元素类型名 数组名数组名元素个数元素个数;如如:int a5,b8;double y15,c20;#define N 10long posN;int cN+1;/*正确正确*/例如:例如:int n=10,an;/*错误错误*/只能是整型常量表达式2021/3/92二、一维数组元素的引用二、一维数组元素的引用语法格式:语法格式:数组名数组名下标表达式下标表达式如如:若有定义若有定义 int a4;则元素则元素a0,a1,a2,a3是数组的有效元素。是数组的有效元素。a4并非有效元素,属于并非有效元素,属于下标超范围。下标超范围会引起死机或程序错下标超范围。下标超范围会引起死机或程序错误,但误,但C语言不自动检查下标是否超范围,故语言不自动检查下标是否超范围,故必须在设计阶段从程序逻辑上保证下标不超范必须在设计阶段从程序逻辑上保证下标不超范围围。必须是整型表达式数组下标固定从0开始编号7.1 一维数组一维数组2021/3/93一维数组的元素在内存中是连续存放的。一维数组的元素在内存中是连续存放的。n例如:若有例如:若有int a10;,则,则a数组中包含的数组中包含的10个元个元素在内存中的存储情况如下:素在内存中的存储情况如下:三、一维数组存贮空间分析:三、一维数组存贮空间分析:a0a1 a2 a3 a4 a5 a6 a7 a8 a9 n如如:double a5;该数组共该数组共5个元素,个元素,存贮存贮5个个double型实数,共占用型实数,共占用40字节字节存贮空间。存贮空间。7.1 一维数组一维数组2021/3/94四、一维数组的初始化四、一维数组的初始化在定义数组时,允许对在定义数组时,允许对静态静态(数组定义前加有数组定义前加有static保留保留字字)数组、数组、外部数组外部数组(定义于所有函数以及复合语句之外定义于所有函数以及复合语句之外)及及main()定义的定义的auto型数组型数组进行进行初始化初始化。7.1 一维数组一维数组初始化格式:初始化格式:static 类型说明符类型说明符 数组名数组名=常量列表常量列表;例例:static int a4=1,2,3,4;2021/3/95(1)static与外部数组不初始化,初值自动为与外部数组不初始化,初值自动为0(2)初始化时,可以不指定元素个数初始化时,可以不指定元素个数 static int a=1,2,3,4;则数组则数组a自动为自动为4个元素,个元素,与上面的定义形式完全等价。与上面的定义形式完全等价。(3)可以可以只对前部分元素只对前部分元素进行初始化,余下的元进行初始化,余下的元素初值自动为素初值自动为0。(main()中的中的auto型也是这样)型也是这样)如如:static int a5=1,2,3;则则 a3与与a4自动为自动为0。说明说明:四、一维数组的初始化四、一维数组的初始化2021/3/96例例7.1 将数值将数值5,3,4,5,3,6,6,4,3,2,9赋予数组赋予数组a并求其和。并求其和。程序:程序:#includeint a=5,3,4,5,3,6,6,4,3,2,9;main()int sum,i;sum=0;for(i=0;i=10;i+)sum+=ai;printf(sum=%dn,sum);7.1.3 一维数组应用举例一维数组应用举例2021/3/97例例7.2 编写一程序,编写一程序,求全班求全班40个学生计算个学生计算机的平均成绩。机的平均成绩。其算法可用如图其算法可用如图7.1所所示的流程图表示。示的流程图表示。程序程序:(要求学生自己要求学生自己写出写出)开始开始结束结束输出输出vs=0,i=0假假真真i40输入输入ai,s=s+aii=i+1v=s/407.1.3 一维数组应用举例一维数组应用举例2021/3/98基本思想基本思想:每一趟在:每一趟在n-i+1(i=1,2,.,n-1)个记录中个记录中(第(第i趟)选取关键字最小的记录作为有序序列趟)选取关键字最小的记录作为有序序列中第中第i个记录。个记录。方法方法:n个数,比较个数,比较n-1趟趟 第第i趟趟(i=1,2,.,n-1)比较比较n-i次,选择一个次,选择一个最小的记录交换一次。最小的记录交换一次。选择排序总共要进行(选择排序总共要进行(n-1)+(n-2)+1=n(n-1)/2比较,比较,最多最多n-1次交换。次交换。例例7.3 使用使用选择法选择法对输入的对输入的10个整型数据进个整型数据进行从小到大排序。行从小到大排序。选择排序法选择排序法2021/3/99a0a1a2a3a5284136716741362816716362841716283641716283641原始数据原始数据第一轮第一轮第二轮第二轮第三轮第三轮第四轮第四轮比较次数比较次数4321for(i=0;in-1;i+)k=i;for(j=i+1;jn;j+)if(ajak)k=j;if(k!=i)t=ai;ai=ak;ak=t;要求学生写出完整程序语言描述:语言描述:/*k指示当前比较的最小值下标指示当前比较的最小值下标*/2021/3/910练习练习:写出该程序写出该程序选择排序法选择排序法2021/3/911一、二维数组的定义一、二维数组的定义语法格式:语法格式:元素类型名元素类型名 数组名数组名下标下标1维数维数下标下标2维数维数;如如:int a58;/*5行行 8列整型数组列整型数组*/又如:又如:#define N 6long mNN;/*N行行 N列长整型数组列长整型数组*/行数列数7.2 二维数组二维数组2021/3/912二、二维数组元素的引用二、二维数组元素的引用语法格式:语法格式:数组名数组名行行下标下标列列下标下标其中,下标表达式必须是其中,下标表达式必须是整型表达式整型表达式;下标固定从下标固定从0开开始编号始编号。如如:若有定义若有定义int a34;则则左上角左上角元素下标为元素下标为a00,右下角右下角元素下标为元素下标为a23。C语言不自动检查下标是否超范围,故必须在设计阶段语言不自动检查下标是否超范围,故必须在设计阶段从程序逻辑上保证下标不超范围从程序逻辑上保证下标不超范围。2021/3/913例如,若有例如,若有int a23;,则,则a数组中包含的二行三数组中包含的二行三列共列共6个元素在内存中的存储情况如下:个元素在内存中的存储情况如下:a00a01a02a10a11a12三、二维数组存贮空间分析:三、二维数组存贮空间分析:2021/3/914也只能对也只能对static或外部数组、或外部数组、main()中的中的auto型数组进行型数组进行初始化。初始化。初始化方法:初始化方法:标准形式标准形式 static int a23=1,2,3,4,5,6;注意:用内层注意:用内层表示行,每行可视作一个一维表示行,每行可视作一个一维数组,并数组,并按行初始化按行初始化。2.对所有元素初始化对所有元素初始化可以缺省行数和内层可以缺省行数和内层如如:上述初始化可写为上述初始化可写为static int a3=1,2,3,4,5,6或或static int a3=1,2,3,4,5,6;或或1.static int a23=1,2,3,4,5,6;7.2.2、二维数组的初始化、二维数组的初始化2021/3/915(3)static与外部数组不初始化,初与外部数组不初始化,初值自动为值自动为0(4)每行可以只对前几列元素每行可以只对前几列元素进行进行初始化,余下的元素初值自动初始化,余下的元素初值自动为为0。如如:static int a3=1,2,3;则则 矩阵元素初值如下矩阵元素初值如下:(5)指定行数时指定行数时,可以,可以只初始化前面几行只初始化前面几行,余下各行元素初值自动为余下各行元素初值自动为0.如如:static int a43=1,2,3,4,5,6;则矩阵初值如下:则矩阵初值如下:1 0 02 3 01 0 02 3 4 5 6 00 0 07.2.2、二维数组的初始化、二维数组的初始化2021/3/916例例7.4 将下表存入数组将下表存入数组a,按行求元素之和并显示。,按行求元素之和并显示。25 13 3210 54 537.2.3 应用举例应用举例程序:#includemain()int a24,i;a00=25;a01=13;a02=32;a10=10;a11=54;a12=53;for(i=0;i=1;i+)ai3=ai0+ai1+ai2;for(i=0;i=1;i+)printf(%d%d%d%d n,ai0,ai1,ai2,ai3);2021/3/917例例7.5:输入一个三行四列的矩阵:输入一个三行四列的矩阵A,计算其转,计算其转置矩阵置矩阵B,输出矩阵,输出矩阵B。2 34 5 61 42 53 6ABbji=aij7.2.3 应用举例2021/3/9187.2.3 应用举例应用举例#includemain()int a23=1,2,3,4,5,6;int b32,i,j;printf(array a:n);for(i=0;i=1;i+)for(j=0;j=2;j+)printf(%5d,aij);bji=aij;printf(n);printf(array b:n);for(i=0;i=2;i+)for(j=0;j=1;j+)printf(%5d,bij);printf(n);程序:2021/3/919例例7.6 编写一程序,求全班编写一程序,求全班40个学生每个学生三个学生每个学生三门功课的平均成绩。门功课的平均成绩。1.定义数据结构定义数据结构40个学生个学生3门功课的存放门功课的存放:int a4030;每个学生三门功课的平均成绩存放每个学生三门功课的平均成绩存放:int v40;2.输入学生成绩输入学生成绩3.求每个学生平均成绩求每个学生平均成绩:vi=(ai0+ai1+ai2)/3,4.输出结果输出结果.分析:分析:7.2.3 应用举例应用举例2021/3/920程序:程序:#includemain()int a403,s,i,j,v40;for(i=0;i40;i+)for(j=0;j3;j+)scanf(%d,&aij);for(i=0;i40;i+)s=0;for(j=0;j3;j+)s=s+aij;vi=s/3;for(i=0;i40;i+)printf(%d%dn,i,vi);2021/3/921例例7.7 在在N行行M列的二维数组列的二维数组x中,找出数组的中,找出数组的最大值以及此最大值所在的行、列下标。最大值以及此最大值所在的行、列下标。分析分析:1.定义二维数组定义二维数组:int xNM;定义变量定义变量 max:存放最大值存放最大值 line:存放最大值行号存放最大值行号 col:存放最大值列号存放最大值列号 2.找最大值找最大值:max初始值初始值=x00,line及及col的初始值为的初始值为0,再将二维数组再将二维数组x中的元素逐个与中的元素逐个与max进行比较,确定新的进行比较,确定新的max和和line及及col的值,直到二维数组的值,直到二维数组x中的元素全部处理中的元素全部处理完。完。3.输出数据输出数据7.2.3 应用举例应用举例2021/3/922程序运行结果如下:input array numbers:12 31 4020 67 80max=80line=1col=2程序:程序:#define N 2#define M 3#include stdio.hmain()int i,j,xNM,max,line,col;printf(input array numbers:n);for(i=0;iN;i+)for(j=0;jM;j+)scanf(%d,&xij);max=x00;line=col=0;for(i=0;iN;i+)for(j=0;jM;j+)if(maxxij)max=xij;line=i;col=j;printf(nmax=%dtline=%dtcol=%dn,max,line,col);2021/3/9237.3.1 字符数组的定义、引用与初始化字符数组的定义、引用与初始化1字符数组的定义字符数组的定义n一维字符数组的定义形式如下:一维字符数组的定义形式如下:char 数组名数组名常量表达式常量表达式;例如:例如:char a10;n二维字符数组的定义形式如下:二维字符数组的定义形式如下:char 数组名数组名常量表达式常量表达式1常量表达式常量表达式2;例如:例如:char a34;7.3 字符数组字符数组2021/3/9247.3 字符数组字符数组2字符数组元素的引用字符数组元素的引用n一维字符数组元素的引用形式如下:一维字符数组元素的引用形式如下:数组名数组名下标下标 例如:例如:a2 a1+1n二维字符数组的元素的引用形式如下:二维字符数组的元素的引用形式如下:数组名数组名行下标行下标列下标列下标例如:例如:a10 a03-22021/3/9257.3 字符数组字符数组3字符数组的初始化字符数组的初始化n一维字符数组的初始化形式如下一维字符数组的初始化形式如下:static 类型说明符类型说明符 数组名数组名=字符常量列表字符常量列表;例如:例如:char a10=H,e,l,l,o,!n二维字符数组的初始化形式如下二维字符数组的初始化形式如下:static 类型说明符类型说明符 数组名数组名=字符常量列表字符常量列表,;例如:例如:char a23=A,B,C,D2021/3/9267.3 字符数组字符数组n说明:说明:n(1)如果花括号中提供的字符个数大于数组长度,则)如果花括号中提供的字符个数大于数组长度,则作语法错误处理。作语法错误处理。n(2)如果花括号中提供的字符个数小于数组长度,则)如果花括号中提供的字符个数小于数组长度,则只将这些字符赋给数组中的前面那些元素,其余元素只将这些字符赋给数组中的前面那些元素,其余元素自动定为空字符(即自动定为空字符(即0)。)。n(3)如果花括号中提供的字符个数与预定的数组长度)如果花括号中提供的字符个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。初值个数确定数组长度。2021/3/9277.3.2 字符串与字符数组字符串与字符数组n1字符串和字符串结束标志字符串和字符串结束标志nC语言约定用语言约定用0作为字符串的结束标志,它占内存作为字符串的结束标志,它占内存空间,但不计入串的长度。空间,但不计入串的长度。0的代码值为的代码值为0。n字符型一维数组来存储字符型一维数组来存储一个字符串一个字符串,用字符型二维数,用字符型二维数组来存储组来存储多个字符串多个字符串。2021/3/9287.3.2 字符串与字符数组字符串与字符数组n2用字符串常量给数组赋初值(初始化)。用字符串常量给数组赋初值(初始化)。例如,如果有:例如,如果有:char c6=“china”;或或char c6=“china”;或或char c=“china”;则数组则数组c在内存中的存储情况如下:在内存中的存储情况如下:c0c1c2c3c4c5china02021/3/929n3字符数组与字符串的输入输出(1)用格式符)用格式符“%c”逐个字符输入输出:逐个字符输入输出:7.3.2 字符串与字符数组字符串与字符数组#includemain()char a10;int i;for(i=0;i10;i+)scanf(%c,&ai);printf(n);for(i=0;i10;i+)printf(%c,ai);2021/3/930n(2)用格式符)用格式符“%s”整个字符串输入输出:整个字符串输入输出:#includemain()char a10;scanf(%s,a);printf(n);printf(%s,a);7.3.2 字符串与字符数组字符串与字符数组2021/3/931注意:注意:(1)用)用%s格式输出字符数组时,遇格式输出字符数组时,遇0结束输出,且输出字符结束输出,且输出字符中不包含中不包含0。(2)若数组中包含一个以上的)若数组中包含一个以上的0,则遇第一个,则遇第一个0时结束输出。时结束输出。(3)用)用%s格式输入或输出字符数组时,函数格式输入或输出字符数组时,函数scanf的地址项、函的地址项、函数数printf的输出项都是字符数组名。这时数组名前不能再加的输出项都是字符数组名。这时数组名前不能再加&符符号,因为数组名就是数组的起始地址。号,因为数组名就是数组的起始地址。(4)用语句)用语句“scanf(%s,s);”为字符数组为字符数组s输入数据时,遇空格输入数据时,遇空格键或回车键时结束输入,但所读入的字符串中不包含空格键或回键或回车键时结束输入,但所读入的字符串中不包含空格键或回车键,而是在字符串末尾添加车键,而是在字符串末尾添加0。(5)用一个)用一个scanf函数输入多个字符串,输入时应以空格键或回车函数输入多个字符串,输入时应以空格键或回车键作为字符串间的分隔。键作为字符串间的分隔。7.3.2 字符串与字符数组字符串与字符数组2021/3/932n使用字符串函数时应在程序前包含头文件:使用字符串函数时应在程序前包含头文件:#include n(1)puts(字符串字符串):字符串输出函数。:字符串输出函数。功能:将一个字符串输出到终端。输出的字符串包含转义功能:将一个字符串输出到终端。输出的字符串包含转义字符。字符。示例:示例:char str=chinanbeijing;puts(str);输出:输出:chinabeijing7.3.3 字符串函数2021/3/9337.3.3 字符串函数n(2)gets(字符数组):字符串数组输入函数。(字符数组):字符串数组输入函数。n功能:从终端输入一个字符串到字符数组,该函数返功能:从终端输入一个字符串到字符数组,该函数返回值是字符数组的起始地址。回值是字符数组的起始地址。示例:示例:char str10;gets(str);如果键盘输入:如果键盘输入:China则数组则数组str在内存中的存储情况如下:在内存中的存储情况如下:str0str1str2str3str4str5str6str7str8str9chian00000注意:用puts和gets函数只能输入或输出一个字符串。2021/3/9347.3.3 字符串函数字符串函数n(3)strcat(字符数组字符数组1,字符数组字符数组2):连接两个字符:连接两个字符串函数。串函数。n功能:连接两个字符串中的字符,把字符串功能:连接两个字符串中的字符,把字符串2接到字符接到字符串串1的后面,结果放在字符串的后面,结果放在字符串1中,函数调用后得到一中,函数调用后得到一个函数值个函数值字符串字符串1的地址。的地址。n示例:如果有:示例:如果有:char str110=Ch;char str2=ina;strcat(str1,str2);n则:字符数组则:字符数组str1中存储的字符串为中存储的字符串为“Ch ina”。说明:说明:(1)字符数组)字符数组1必须足够大,以便能容纳连接后的新字符串。必须足够大,以便能容纳连接后的新字符串。(2)连接前两个字符串后面都有一个)连接前两个字符串后面都有一个0,连接时将字符串,连接时将字符串1后面的后面的0取消,只在新串的最后保留一个取消,只在新串的最后保留一个0。2021/3/9357.3.3 字符串函数n(4)strcpy(字符数组字符数组,字符串字符串):字符串复制函数。:字符串复制函数。功能功能:将字符串拷贝到字符数组中去。:将字符串拷贝到字符数组中去。示例示例:如果有:如果有:char str110,str2=china;strcpy(str1,str2);则:字符数组则:字符数组str1中存储的字符串为中存储的字符串为“Ch ina”。n示例示例:下面的用法是不合法的:下面的用法是不合法的:str1=china;str1=str2;n如果用赋值语句,则只能将字符逐个赋给一字符数组元素。如果用赋值语句,则只能将字符逐个赋给一字符数组元素。示例示例:char a6;a0=c;a1=h;a2=i;a3=n;a4=a;a5=02021/3/9367.3.3 字符串函数n(5)strcmp(字符串字符串1,字符串,字符串2):字符串比较函数。:字符串比较函数。n功能:按功能:按ASCII码值大小比较,将两个字符串自左至码值大小比较,将两个字符串自左至右逐个字符相比较,直到出现不同的字符或到右逐个字符相比较,直到出现不同的字符或到0为为止。如果全部字符相同,则认为相等;如果出现不相止。如果全部字符相同,则认为相等;如果出现不相同的字符,则以第一个不相同的字符的比较结果为准。同的字符,则以第一个不相同的字符的比较结果为准。比较的结果由函数值带回。比较的结果由函数值带回。n(1)字符串)字符串1=字符串字符串2,函数值为,函数值为0。n(2)字符串)字符串1字符串字符串2,函数值为正整数。,函数值为正整数。n(3)字符串)字符串1字符串字符串2,函数值为负整数。,函数值为负整数。2021/3/9377.3.3 字符串函数n示例:如果有:示例:如果有:char str110 =Chinese,str2=China;int a;a=strcmp(str1,str2);则:则:a的值为一正整数。的值为一正整数。n注意:对两个字符比较,不能用以下形式:注意:对两个字符比较,不能用以下形式:if(str1=str2)printf(yes);而只能用:而只能用:if(strcmp(str1,str2)=0)printf(yes);。2021/3/9387.3.3 字符串函数n(6)strlen(字符数组字符数组):求字符串长度函数。:求字符串长度函数。n功能:求字符串长度。函数值为字符串的实际长度,功能:求字符串长度。函数值为字符串的实际长度,不包括不包括0在内。在内。n示例:如果有:示例:如果有:char str10=china;printf(%d,strlen(str);则输出结果为:则输出结果为:52021/3/9397.3.3 字符串函数n(7)strlwr(字符串字符串):字符串小写函数。:字符串小写函数。功能:将字符串中的大写字母转换成小写字母。功能:将字符串中的大写字母转换成小写字母。n(8)strupr(字符串字符串):字符串大写函数。:字符串大写函数。功能:将字符串中的小写字母转换成大写字母。功能:将字符串中的小写字母转换成大写字母。2021/3/9407.3.3 字符串函数n例例7.8 用户从键盘输入一个字符串(字符串中不包含空格),当用户从键盘输入一个字符串(字符串中不包含空格),当输入回车时认为输入结束,统计输入字符串中的小写英文字母、输入回车时认为输入结束,统计输入字符串中的小写英文字母、大写英文字母、数字字符、其他字符的个数。大写英文字母、数字字符、其他字符的个数。分析:分析:n字符串放在字符数组字符串放在字符数组sn用普通的整型变量用普通的整型变量m,n,x,y分别存储统计得到的输入字符串分别存储统计得到的输入字符串中的小写英文字母、大写英文字母、数字字符、其他字符的个数。中的小写英文字母、大写英文字母、数字字符、其他字符的个数。n用一个单循环控制,对字符数组用一个单循环控制,对字符数组s中的元素逐个进行判断,根据中的元素逐个进行判断,根据不同情况(元素值是否为小写英文字母、大写英文字母、数字字不同情况(元素值是否为小写英文字母、大写英文字母、数字字符、其他字符)对相应计数变量计数。符、其他字符)对相应计数变量计数。n循环控制条件是当前所处理的字符串中的字符不是字符串结束标循环控制条件是当前所处理的字符串中的字符不是字符串结束标志志0,即一个字符串的所有字符还没有处理完毕。,即一个字符串的所有字符还没有处理完毕。2021/3/941n程序:程序:n#include nmain()n n int i,m,n,x,y;n char s80;n printf(input a string:n);n scanf(%s,s);n m=n=x=y=0;n i=0;n while(si!=0)n n if(si=a&si=A&si=0&si=9)x+;n else y+;n i+;n n printf(az:%dnAZ:%dn09:%dnothers:%dn,m,n,x,y);n2021/3/9427.3.3 字符串函数n例例7.9 将字符串将字符串s1从第从第m个字符开始剩余的所有字符送入字符数个字符开始剩余的所有字符送入字符数组组s2中。中。分析:分析:n该程序用一个单循环控制,将字符数组该程序用一个单循环控制,将字符数组s1中的元素从第中的元素从第m个字符个字符开始剩余的所有字符依次逐个送入字符数组开始剩余的所有字符依次逐个送入字符数组s2中。中。n程序中用两个整型变量程序中用两个整型变量i、j分别标识元素在原字符数组分别标识元素在原字符数组s1中的下中的下标和在目标数组标和在目标数组s2中的下标,每循环一次,即传送一个字符后,中的下标,每循环一次,即传送一个字符后,i、j的值增的值增1。n循环控制条件是当前所处理的原字符数组循环控制条件是当前所处理的原字符数组s1中的元素不是字符串中的元素不是字符串结束标志结束标志0,即原字符数组,即原字符数组s1中从第中从第m个字符开始剩余的所个字符开始剩余的所有字符还没有处理完毕。有字符还没有处理完毕。2021/3/943n程序:程序:n#include nmain()nn int i,j,m;n char s180,s280;n printf(input a string:n);n gets(s1);n printf(input start point:n);n scanf(%d,&m);n i=m-1;n j=0;n while(s1i!=0)n n s2j=s1i;n i+;n j+;n n s2j=0;n puts(s2);n2021/3/9447.4 本章考点n一维数组的定义、引用及初始化。一维数组的定义、引用及初始化。n二维数组的定义、引用及初始化。二维数组的定义、引用及初始化。n字符串和字符数组。字符串和字符数组。n字符串处理函数。字符串处理函数。2021/3/9457.5 典型试题详解1以下能正确定义一维数组的选项是以下能正确定义一维数组的选项是_。A)int num;B)#define N 100;int numN;C)int num0100 D)int N=100;int numN;正确答案:正确答案:B(知识点:一维数组的定义)(知识点:一维数组的定义)2021/3/9467.5 典型试题详解n2假设假设int类型变量占用两个字节,其有定义:类型变量占用两个字节,其有定义:int x10=0,2,4;,则数组,则数组x在内存中所占的字节数是在内存中所占的字节数是_。nA)3B)6 C)10D)20n正确答案:正确答案:D(知识点:一维数组的定义)(知识点:一维数组的定义)2021/3/9477.5 典型试题详解3以下程序运行后的输出结果是以下程序运行后的输出结果是_。main()int i,n=0,0,0,0,0;for(i=1;i=4;i+)ni=ni-1*2+1;printf(%d ,ni);正确答案:正确答案:1 3 7 15(知识点:一维数组的定义与引用)(知识点:一维数组的定义与引用)2021/3/9487.5 典型试题详解4以下数组定义中不正确的是以下数组定义中不正确的是_。A)int a23;B)int b3=0,1,2,3;C)int c100100=0;D)int3=1,2,1,2,3,1,2,3,4;正确答案:正确答案:D(知识点:二维数组的初始化)(知识点:二维数组的初始化)试题分析:二维数组初始化时,对数组第一维的长度可试题分析:二维数组初始化时,对数组第一维的长度可以不指定,但第二维的长度不能省略。以不指定,但第二维的长度不能省略。2021/3/9497.5 典型试题详解5有以下程序:有以下程序:main()int aa44=1,2,3,4,5,6,7,8,3,9,10,2,4,2,9,6;int i,s=0;for(i=0;i4;i+)s+=aailprintf(%dn,s)执行后的输出结果是执行后的输出结果是_。A)11 B)19 C)13 D)20正确答案:正确答案:B(知识点:二维数组的定义、引用及初始化)(知识点:二维数组的定义、引用及初始化)试题分析:该程序是求试题分析:该程序是求aa0l、aa1l、aa2l、aa3l之和并输出。之和并输出。2021/3/9507.5 典型试题详解6以下不能正确进行字符串赋初值的语句是以下不能正确进行字符串赋初值的语句是_。A)char str5=good!;B)char str=good!;C)char str6=good!;D)char str5=g,o,o,d;正确答案:正确答案:A(知识点:字符数组的初始化)(知识点:字符数组的初始化)试题分析:每个字符串末尾都有一个结束试题分析:每个字符串末尾都有一个结束0,因此,字符串,因此,字符串 good!在内存中占在内存中占6个字符型存储单元,在初始化时,可以不个字符型存储单元,在初始化时,可以不指定数组的大小,或指定一个大于或等于指定数组的大小,或指定一个大于或等于6的值。选项的值。选项D中给出的中给出的初值个数小于数组的大小初值个数小于数组的大小5,则将初值赋给数组前面的元素,其,则将初值赋给数组前面的元素,其后的元素值为后的元素值为0。2021/3/9517.5 典型试题详解7以下程序的输出结果是以下程序的输出结果是_。main()char ch35=AAAA,BBB,CC;printf(%sn,ch1);A)AAAAB)BBB C)BBBCCD)CC正确答案:正确答案:B(知识点:字符数组的初始化)(知识点:字符数组的初始化)试题分析:程序中定义试题分析:程序中定义ch是一个字符型的二维数组,由于二维数组可以看是一个字符型的二维数组,由于二维数组可以看做是由一维数组构成的一维数组,做是由一维数组构成的一维数组,ch35是由是由ch0、ch1、ch2构成的,而构成的,而ch0、ch1、ch2又都是由又都是由5个字符型元素构成的一维个字符型元素构成的一维数组,因此数组,因此ch1即是二维数组即是二维数组ch35的第二行的字符串的第二行的字符串BBB所在所在一维数组的名字,因为其元素是字符类型,可以用数组的名字(即数组一维数组的名字,因为其元素是字符类型,可以用数组的名字(即数组的首地址)来表示所存储的字符串的首地址)来表示所存储的字符串BBB,输出时去掉字符串定界符,输出时去掉字符串定界符“”。2021/3/9527.5 典型试题详解8有下列程序:有下列程序:main()char s=n123 printf(%d,%dn,strlen(s),sizeof(s);程序运行后的输出结果是程序运行后的输出结果是_。A)赋初值的字符串有错)赋初值的字符串有错B)6,7C)5,6 D)6,6正确答案:正确答案:C(知识点:字符串处理函数、转义字符)(知识点:字符串处理函数、转义字符)试题分析:程序的输出结果是试题分析:程序的输出结果是strlen(s)和和sizeof(s)两个函数的值。函数两个函数的值。函数strlen(s)是求字符串是求字符串s(用字符数组存储)的长度,即字符串(用字符数组存储)的长度,即字符串s中有效字中有效字符的个数,不包括字符串结束标志符的个数,不包括字符串结束标志0,根据对根据对s的初始化处理,字符串的初始化处理,字符串s中包含两个转义字符中包含两个转义字符n和和,因此字符串,因此字符串s的长度为的长度为5。函数。函数sizeof(s)是求字符数组是求字符数组s在内存中所占的字节数,根据程序中对在内存中所占的字节数,根据程序中对s的初始的初始化处理,字符数组化处理,字符数组s的长度省略,即由其后的初始值来确定,是字符串的长度省略,即由其后的初始值来确定,是字符串s中有效字符的个数加中有效字符的个数加1(即加上字符串结束标志(即加上字符串结束标志0),为),为6,由于每,由于每个数组元素是字符类型,在内存中占一个字节,所以字符数组个数组元素是字符类型,在内存中占一个字节,所以字符数组s在内存中在内存中所占的字节数为所占的字节数为6。注意,如果字符串。注意,如果字符串s的长度在定义时给出了确定的值,的长度在定义时给出了确定的值,则计算其在内存中所占字节数时,按给定的长度计算。则计算其在内存中所占字节数时,按给定的长度计算。2021/3/9537.5 典型试题详解9当执行下面的程序时,如果输入当执行下面的程序时,如果输入ABC,则输出是,则输出是_。#include#includemain()char ss10=12345;gets(ss);strcat(ss,6789);printf(%s,ss);A)ABC6789B)ABC67C)12345ABC6D)ABC456789正确答案:正确答案:A(知识点:字符串处理函数)(知识点:字符串处理函数)2021/3/9547.5 典型试题详解n试题分析:程序开始虽然对字符数组试题分析:程序开始虽然对字符数组ss进行了初始化,进行了初始化,但其后又用函数但其后又用函数gets(ss)从键盘上重新输入为字符串从键盘上重新输入为字符串ABC,再通过函数,再通过函数strcat(ss,6789)将字符串将字符串6789连接到连接到ss的尾部,字符串的尾部,字符串ss即为即为ABC6789。2021/3/9557.5 典型试题详解10下列程序执行后的输出结果是下列程序执行后的输出结果是_。main()char arr24;strcpy(arr0,you);strcpy(arr1,me);arr03=&;printf(%sn,arr0);A)you&meB)youC)meD)err正确答案:正确答案:A(知识点:字符串处理函数)(知识点:字符串处理函数)试题分析:程序中定义了二维字符数组试题分析:程序中定义了二维字符数组arr24,即包括两个字符型一维数组,即包括两个字符型一维数组arr0和和arr1,通过两个字符串复制函数,通过两个字符串复制函数strcpy(arr0,you)和和strcpy(arr1,me)将字符串将字符串you和字符串和字符串me分别复制到分别复制到arr0和和arr1,这时,再赋,这时,再赋arr03的值为字符的值为字符&,即覆盖了字符串,即覆盖了字符串you后的字符串结束标志后的字符串结束标志0,由于二维数组在内存中是按行连续存放的,当输出字符串由于二维数组在内存中是按行连续存放的,当输出字符串arr0时,将从时,将从arr0的第一个字符开始输出,直到遇到第一个字符串结束标志的第一个字符开始输出,直到遇到第一个字符串结束标志0(即(即arr1中字中字符串符串me后的结束标志)为止。后的结束标志)为止。2021/3/956放映结束 感谢各位的批评指导!谢谢 谢!谢!让我们共同进步
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!