c语言程序设计数组.docx
- 文档编号:9812517
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:34
- 大小:29.29KB
c语言程序设计数组.docx
《c语言程序设计数组.docx》由会员分享,可在线阅读,更多相关《c语言程序设计数组.docx(34页珍藏版)》请在冰豆网上搜索。
c语言程序设计数组
第一章CH6数组
6.1选择题
1.以下对一维数组a的正确说明是:
D
A)chara(10);B)inta[];
C)intk=5,a[k];D)chara[3]={‘a’,’b’,’c’};
详见教材,一维数组的定义、初始化
类型符数组名[常量表达式]
类型符是指数组中数组元素的类型;数组名要符合标识符命名规则;常量表达式是指数组的长度(数组中包含元素的个数),其值只能是整数,不可以是变量,而且从1开始计数。
选项A,常量表达式只能放在中括号[]中
选项B,只有在对数组初始化(即赋值)的时候才可以省略数组的长度,B中并未对a进行初始化。
选项C,常量表达式不能为变量。
2.以下能对一维数组a进行初始化的语句是:
(C)
A.inta[5]=(0,1,2,3,4,)B.inta(5)={}
C.inta[3]={0,1,2}D.inta{5}={10*1}
详见教材,一维数组的定义、初始化
选项B,D,常量表达式只能放在中括号[]中
选项A,数组可以看做是若干个相同数据类型元素的有序集合,因此以集合的形式对其初始化,使用{}对其初始化,选项A用了().
3.在C语言中对一维整型数组的正确定义为D。
A)inta(10);B)intn=10,a[n];
C)intn;a[n];D)#defineN10
inta[N];
4.已知:
inta[10];则对a数组元素的正确引用是(D)。
A、a[10]B、a[3.5]C、a(5)D、a[0]
详见教材,数组元素的引用
数组名[下标]
引用数组元素时,[]中的下标为逻辑地址下标,只能为整数,可以为变量,且从0开始计数
inta[10]表示定义了一个包含10个整型数据的数组a,数组元素的逻辑地址下标范围为0~9,即a[0]表示组中第1个元素;a[1]表示组中第2个元素;a[2]表示组中第3个元素;......;a[9]表示组中第10个元素.
选项A,超过了数组a的逻辑地址下标范围;
选项B,逻辑地址下标只能为整数
选项C,逻辑地址下标只能放在[]中
5.若有以下数组说明,则i=10;a[a[i]]元素数值是(C )。
inta[12]={1,4,7,10,2,5,8,11,3,6,9,12};
A.10B.9C.6D.5
先算a[a[i]]内层的a[i],由于i=10,因此a[i]即a[10].
a[10]对应下面数组中的元素为9.因此a[a[i]]即为a[9]
a[9]对应下面数组中的元素为6.因此a[9]即为6
6.若有说明:
inta[][3]={{1,2,3},{4,5},{6,7}};则数组a的第一维的大小为:
(B)
A.2B.3C.4D.无确定值
57D)369
二维数组的一维大小,即指二维数组的行数,在本题中,按行对二维数组赋值,因此内层有几个大括号,数组就有几行
7.对二维数组的正确定义是(C )
A.inta[][]={1,2,3,4,5,6};B.inta[2][]={1,2,3,4,5,6};
C.inta[][3]={1,2,3,4,5,6};D.inta[2,3]={1,2,3,4,5,6};
详见教材,二维数组的定义、初始化
类型符数组名[常量表达式][常量表达式]
二维数组可以看做是矩阵
类型符是指数组中数组元素的类型;数组名要符合标识符命名规则;第一个常量表达式是指数组的行数;第二个常量表达式是指数组的列数;常量表达式的值只能是整数,不可以是变量,而且从1开始计数。
一维数组初始化时可以省略数组长度
二维数组初始化时可以省略行数,但不能省略列数
选项A,B,都省略了列数
选项D,不符合二维数组定义的一般形式,行、列常量表达式应该放在不同的[]中
8.已知inta[3][4];则对数组元素引用正确的是__C___
A)a[2][4]B)a[1,3]C)a[2][0]D)a
(2)
(1)
详见教材,数组元素的引用
数组名[下标][下标]
引用数组元素时,[]中的下标为逻辑地址下标,只能为整数,可以为变量,且从0开始计数
第一个[下标]表示行逻辑地址下标,第二个[下标]表示列逻辑地址下标。
因此a的行逻辑地址范围0~2;a的列逻辑地址范围0~3;
选项A,列逻辑地址下标超过范围
选项B,D,的引用形式不正确。
9.以下不能正确定义二维数组的选项是__D____。
A、inta[2][2]={{1},{2}};B、inta[][2]={1,2,3,4};
C、inta[2][2]={{1},2,3};D、inta[2][]={{1,2},{3,4}};
10.以下能正确定义二维数组的是___B___。
A、inta[][3];B、inta[][3]={2*3};C、inta[][3]={};D、inta[2][3]={{1},{2},{3,4}};
11.以下程序的输出结果是___A___。
main()
{
inta[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\n",s);
}
A、18B、19C、20D、21
12.以下程序的输出结果是__C____。
main()
{inti,x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
printf("%d,",x[i][2-i]);
}
A、1,5,9B、1,4,7C、3,5,7D、3.6.9
13.以下数组定义中错误的是___B___。
A、intx[][3]={0};B、intx[2][3]={{1,2},{3,4},{5,6}};
C、intx[][3]={{1,2,3},{4,5,6}};D、intx[2][3]={1,2,3,4,5,6};
14.以下数组定义中不正确的是___D___。
A、inta[2][3];B、intb[][3]={0,1,2,3};
C、intc[100][100]={0};D、intd[3][]={{1,2},{1,2,3},{1,2,3,4}};
15.有以下程序
main()
{
intm[][3]={1,4,7,2,5,8,3,6,9};
inti,j,k=2;
for(i=0;i<3;i++)
{printf("%d",m[k][i]);}
}
执行后输出结果是___C___。
A、456B、258C、369D、789
16.以下能正确定义数组并正确赋初值的语句是___D___。
A、intN=5,b[N][N];B、inta[1][2]={{1},{3}};
C、intc[2][]={{1,2},{3,4}};D、intd[3][2]={{1,2},{34}};
17.以下程序的输出结果是___A___。
main()
{
inta[4][4]={{1,3,5},{2,4,6},{3,5,7}};
printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]);
}
A、0650B、1470C、5430D、输出值不定
18.定义如下变量和数组:
inti;
intx[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、159B、147C、357D、369
19.有以下程序
main()
{
intx[3][2]={0},i;
for(i=0;i<3;i++)scanf("%d",x[i]);
printf("%3d%3d%3d\n",x[0][0],x[0][1],x[1][0]);
}
若运行时输入:
246<回车>,则输出结果为___B___。
A、200B、204C、240D、246
20.当调用函数时,实参是一个数组名,则向函数传送的是___B___。
A、数组的长度B、数组的首地址C、数组每一个元素的地址D、数组每个元素中的值
21.有以下程序
voidsum(inta[])
{a[0]=a[-1]+a[1];}
main()
{inta[10]={1,2,3,4,5,6,7,8,9,10};
sum(&a[2]);
printf("%d\n",a[2]);
}
程序运行后输出结果是__A____。
A、6B、7C、5D、8
22.有以下程序
main()
{chars[]="abcde";
s+=2;
printf("%d\n",s[0]);
}
执行后的结果是___D___。
A、输出字符a的ASCII码B、输出字符c的ASCII码C、输出字符cD、程序出错
23.请读程序:
#include
f(intb[],intn)
{inti,r;
r=1;
for(i=0;i<=n;i++)r=r*b[i];
returnr;
}
main()
{intx,a[]={2,3,4,5,6,7,8,9};
x=f(a,3);
printf("%d\n",x);
}
上面程序的输出结果是___B___。
A、720B、120C、24D、6
24.若要求定义具有10个int形元素的一维数组a,则以下的定义语句中错误的是____D__。
A、#defineN10inta[N];B、#definen5inta[2*n];
C、inta[5+5];D、intn=10,a[n];
25.合法的数组定义是__D____。
A、inta[]="string";B、inta[5]={0,1,2,3,4,5};
C、chars="string";D、chara[]={0,1,2,3,4,5};
26.以下能正确定义一维数组的选项是___B___。
A、inta[5]={0,1,2,3,4,5};B、chara[]={0,1,2,3,4,5};
C、chara={'A','B','C'};D、inta[5]="0123";
27.有如下程序
main()
{intn[5]={0,0,0},i,k=2;
for(i=0;i n[i]=n[i]+1; printf("%d\n",n[k]); } 该程序的输出结果是___D___。 A、不确定的值B、2C、1D、0 28.以下程序的输出结果是___C___。 main() {inti,a[10]; for(i=9;i>=0;i--)a[i]=10-i; printf("%d%d%d",a[2],a[5],a[8]); } A、258B、741C、852D、369 29.执行下面的程序段后,变量k中的值为___A___。 intk=3,s[2]; s[0]=k;k=s[1]*10; A、不定值B、32C、30D、10 30.若有定义和语句: chars[10]: s="abcd";printf("%s\n",s); 则结果是(以下u代表空格)___D___。 A、输出abcdB、输出aC、输出abcduuuuuD、编译不通过 31.函数调用: strcat(strcpy(str1,str2),str3)的功能是___C___。 A、将串str1复制到串str2中后再连接到串str3之后 B、将串str1连接到串str2之后再复制到串str3之后 C、将串str2复制到串str1中后再将串str3连接到串str1之后 D、将串str2连接到串str1之后再将串str1复制到串str3中 32.以下正确定义字符串的语句是__D____。 A、charstr[]={'\064'};B、charstr="\x43"; C、charstr='';D、charstr[]="\0"; 33.有以下程序 main() { chars[]="\n123\\"; printf("%d,%d\n",strlen(s),sizeof(s)); } 执行后输出结果是___C___。 A、赋初值的字符串有错B、6,7C、5,6D、6,6 34.有以下程序 #include main() {charp[]={'a','b','c'};charq[10]={'a','b','c'}; printf("%d%d\n",strlen(p),strlen(q)); } 以下叙述中正确的是___B___。 A、在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3 B、由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3 C、由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3 D、由于p和q的数组中都没有字符串结束符,故长度不能确定 35.有以下程序 main() {charp[]={'a','b','c'},q[]="abc"; printf("%d%d\n",sizeof(p),sizeof(q)); }; 程序运行后和输出结果是___C___。 A、44B、33C、34D、43 36.已知职工记录描述如下,在TurboC中,系统为变量w分配()字节的空间。 structworker {intno; charname[20]; charsex; union {intday;intmonth;intyear;}birth; }w; A29B20C25D6 37.下面选项中正确的赋值语句是(设chara[5],*p=a;)()。 Ap="abcd"Ba="abcd" C*p="abcd"D*a="abcd"; 38.设有以下程序段,则值为6的表达式是()。 structst{intn;structst*next;}; staticstructsta[3]={5,&a[1],7,&a[2],9,0},*p; p=&a[0]; Ap++->nB++p->n Cp->n++D(*p).n++ 39.inta[4]={5,3,8,9};其中a[3]的值为()。 D A.5B.3C.8D.9 40.以下4个字符串函数中,()所在的头文件与其他3个不同。 A A.getsB.strcpyC.strlenD.strcmp 41.以下4个数组定义中,()是错误的。 D A.inta[7]B.#defineN5longb[N] C.charc[5]D.intn,d[n]; 42.对字符数组进行初始化,()形式是错误。 B A.charc1[]={'1','2','3'}B.charc2[]=123 C.charc3[]={'1','2','3','\0'}D.charc4[]="123"; 43.在数组中,数组名表示()。 A A.数组第1个元素的首地址B.数组第2个元素的首地址 C.数组所有元素的首地址D.数组最后1个元素的首地址 44.若有以下数组说明,则数值最小的和最大的元素下标分别是()。 B inta[12]={1,2,3,4,5,6,7,8,9,10,11,12}; A.1,12B.0,11C.1,11D.0,12 45.若有以下说明,则数值为4的表达式是()。 D inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};charc=’a’,d,g; A.a[g-c]B.a[4]C.a['d'-'c']D.a['d'-c] 46.设有定义: chars[12]="string";则printf("%d\n",strlen(s));的输出是()。 A A.6B.7C.11D.12 47.设有定义: chars[12]="string";则printf("%d\n",sizeof(s));的输出是()。 D A.6B.7C.11D.12 48.合法的数组定义是()。 A A.chara[]="string"B.inta[5]={0,1,2,3,4,5} C.chara="string"D.chara[]={0,1,2,3,4,5} 49.合法的数组定义是()。 D A.inta[3][]={0,1,2,3,4,5}B.inta[][3]={0,1,2,3,4}; C.inta[2][3]={0,1,2,3,4,5,6}D.inta[2][3]={0,1,2,3,4,5,}; 50.下列语句中,正确的是()。 D A.chara[3][]={'abc','1'}B.chara[][3]={'abc','1'}; C.chara[3][]={'a',"1"}D.chara[][3]={"a","1"}; 51.下列定义的字符数组中,输出printf("%s\n",str[2]);的输出是()。 C staticstr[3][20]={"basic","foxpro","windows"}; A.basicB.foxproC.windowsD.输出语句出错 52.下列各语句定义了数组,其中哪一个是不正确的()。 C A.chara[3][10]={"China","American","Asia"} B.intx[2][2]={1,2,3,4}; C.floatx[2][]={1,2,4,6,8,10} D.intm[][3]={1,2,3,4,5,6}; 53.数组定义为inta[3][2]={1,2,3,4,5,6},值为6的数组元素是()。 B A.a[3][2]B.a[2][1]C.a[1][2]D.a[2][3] 54.下面的程序中哪一行有错误()。 D #include main() { floatarray[5]={0.0};//第A行 inti; for(i=0;i<5;i++) scanf("%f",&array[i]); for(i=1;i<5;i++) array[0]=array[0]+array[i];//第B行 printf("%f\n",array[0]);//第C行 } A.第A行B.第B行C.第C行D.没有 55.下面哪一项是不正确的字符串赋值或赋初值的方式()。 C A.char*str;str="string"; B.charstr[7]={'s','t','r','i','n','g'}; C.charstr1[10];str1="string"; D.charstr1[]="string",str2[]="12345678"; 56.若有以下说明和语句,则输出结果是哪一项()。 C (strlen(s)为求字符串s的长度的函数) chars[12]="abook! "; printf("%d",strlen(s)); A.12B.8C.7D.11 57.若有以下说明和语句,则输出结果是()。 B (strlen(s)为求字符串s的长度的函数) charsp[]="\t\v\\\0will\n"; printf("%d",strlen(sp)); A.14B.3C.9D.字符串中有非法字符 58.若有以下说明和语句,则输出结果是()。 C charstr[]="\"c: \\abc.dat\""; printf("%s",str); A.字符串中有非法字符 B.\"c: \\abc.dat\" C."c: \abc.dat" D."c: \\abc.dat" 6.2读程序 1.有如下程序: #include main() {inti,a[10]; for(i=9;i>=0;i--) a[i]=10-i; printf(“%d%d%d”,a[2],a[5],a[8]); } 运行结果为: 852 例题6.1一定看懂! 首先定义整型变量i,整型数组a,a的长度为10,即a中包含10个整型元素(整型变量) 执行for循环语句 初值i=9,使得循环条件i>=0成立,执行循环体 第1次循环 执行a[i]=10-i等价于a[9]=10-9=1 计算表达式3,即i--,i为8,使得循环条件i>=0成立,继续执行循环体 第2次循环 执行a[i]=10-i等价于a[8]=10-8=2 计算表达式3,即i--,i为7,使得循环条件i>=0成立,继续执行循环体 第3次循环 执行a[i]=10-i等价于a[7]=10-7=3 计算表达式3,即i--,i为6,使得循环条件i>=0成立,继续执行循环体 第4次循环 执行a[i]=10-i等价于a[6]=10-6=4 计算表达式3,即i--,i为5,使得循环条件i>=0成立,继续执行循环体 第5次循环 执行a[i]=10-i等价于a[5]=10-5=5 计算表达式3,即i--,i为4,使得循环条件i>=0成立,继续执行循环体 第6次循环 执行a[i]=10-i等价于a[4]=10-4=6 计算表达式3,即i--,i为3,使得循环条件i>=0成立,继续执行循环体 第7次循环 执行a[i]=10-i等价于a[3]=10-3=7 计算表达式3,即i--,i为2,使得循环条件i>=0成立,继续执行循环体 第8次循环 执行a[i]=10-i等价于a[2]=10-2=8 计算表达式3,即i--,i为1,使得循环条件i>=0成立,继续执行循环体 第9次循环 执行a[i]=10-i等价于a[1]=10-1=9 计算表达式3,即i--,i为0,使得循环条件i>=0成立,继续执行循环体 第10次循环 执行a[i]=10-i等价于a[0]=10-0=10 计算表达式3,即i--,i为-1,使得循环条件i>=0不成立,跳出循环体 2.有如下程序: #include main() {inti,a[6]; for(i=0;i<6;i++) a[i]=i; for(i=5;i>=0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 数组
![提示](https://static.bdocx.com/images/bang_tan.gif)