C语言程序设计 第六章 数组.docx
- 文档编号:10172519
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:19
- 大小:22.67KB
C语言程序设计 第六章 数组.docx
《C语言程序设计 第六章 数组.docx》由会员分享,可在线阅读,更多相关《C语言程序设计 第六章 数组.docx(19页珍藏版)》请在冰豆网上搜索。
C语言程序设计第六章数组
一、 选择题
1、在C语言中,引用数组元素时,其数组下标的数据类型允许是 。
A)、 整型常量 B)、 整型表达式
C)、 整形常量或整形表达式 D)、 任何类型的表达式
2、以下对一维整型数组a的正确说明是____
A)、 inta(10);B)、 intn=10,a[n];
C)、 intn;scanf(“%d”,&n); inta[n];
D)、#defineSIZE10 inta[SIZE];
3、若有定义:
inta[10],则对数组a元素的正确引用是
A)、 a[10] B)、a[3.5] C)、a(5) D)、a[10-10]
4、以下能对一维数组a进行正确初始化的语句是 。
A)、 inta[10]={0,0,0,0,0}; B)、 inta[10]={};
C)、 inta[]={0}; D)、 inta[10]={10*1};
5、若有定义:
inta[3][4],则对数组a元素的正确引用是________
A)、 a[2][4] B)、a[1,3] C)、a(5) D)、a[10-10]
6、以下能对二维数组a进行正确初始化的语句是_______
A)、 inta[2][]={{1,0,1},{5,2,3}};B)、 inta[][3]={{1,2,3},{4,5,6}};
C)、 inta[2][4]={{1,2,3},{4,5},{6}};D)、 inta[][3]={{1,0,1},{},{1,1}};
7、若有说明:
inta[3][4]={0};则下面正确的叙述是_______
A)、 只有元素a[0][0]可得到初值0B)、 此说明语句不正确
C)、 数组a中各元素都可得到初值,但其值不一定为0
D)、 数组a中每个元素均可得到初值0
8、下面是对s的初始化,其中不正确的是_____
A)、chars[5]={“abc”};B)、chars[5]={‘a’,’b’,’c’,’d’,’e’,’\0’};
C)、 chars[5]=””; D)、 chars[5]=”abcdef”;
9、在C语言中,引用数组元素时,其数组下标的数据类型允许是()
A)整型常量B)整型表达式C)整型常量或整型表达式D)任何类型的表达式
10、以下对一维整形数组a的正确说明是()。
A)inta(10);B)intn=10,a[n];
C)intn;D)#defineSIZE10
scanf(“%d”,&n);inta[SIZE];
inta[n];
11、若有说明:
inta[10];则对a数组元素的正确引用是()。
A)a[10]B)a[3.5]C)a(5)D)a[10-10]
12、在C语言中,一位数组的定义方式为:
类型说明符数组名()。
A)[常量表达]B)整型表达式C)[整型常量]或[整型表达式]D)[整型常量]
13、以下对一维整形数组a进行正确初始化的语句是()。
A)inta[10]=(0,0,0,0,0);B)inta[10]={};C)inta[]={0};D)inta[10]={10*1};
14、以下对二维整形数组a的正确说明是(。
A)inta[3][];B)floata(3,4);C)doublea[1][4];D)floata(3)(4);
15、若有说明:
inta[3][4];则对a数组元素的正确引用是(。
A)a[2][4]B)a[1,3]C)a[1+1][0]D)a
(2)
(1)
16、若有说明:
inta[3][4];则对a数组元素的非法引用是()。
A)a[0][2*1]B)a[1][3]C)a[4-2][0]D)a[0][4]
17、以下对二维整形数组a进行正确初始化的语句是()。
A)inta[2][]={{1,01},{5,2,3}};B)inta[][3]={{1,2,3},{4,5,6}};
C)inta[2][3]={{1,2,3},{4,5},{6}};D)inta[][3]={{1,0,1},{},{1,1}};
18、以下不能对二维整形数组a进行正确初始化的语句是()。
A)inta[2][3]={0};B)inta[][3]={{1,2},{0}};
C)inta[2][3]={{1,2},{3,4},{5,6}};D)inta[][3]={1,2,3,4,5,6};
19、若有说明:
inta[3][4]={0};则下面正确的叙述是()。
A)只有元素a[0][0]可得到初值0B)此说明语句不正确
C)数组a中各元素都可得到初值,但其值不一定为0
D)数组a中每个元素均可得到初值0
20、若有说明:
inta[][4]={0,0};则下面正确的叙述是()。
A)数组a中每个元素均可得到初值0B)二维数组a的第一维大小为1
C)因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1
D)只有元素a0][0]和a[0][1]可得到初值0,其余元素均得不到初值0
21、若有说明:
inta[3][4];则数组a中各元素()。
A)可在程序的运行阶段得到初值0B)可在程序的编译阶段得到初值0
C)不能得到确定的初值D)可在程序的编译或运行阶段得到初值0
22、C语言规定,数组名做实参时,它和对应形参之间的数据传递方式是:
()
A)用户指定传递方式B)无传递C)单向值传递D)地址传递
23、下面程序()。
(每行程序前面的数字表示行号)。
1 main()
2 {
3 inta[3]={3*0};
4 inti;
5 for(i=0;i<3;i++)scanf("%d",&a[i]);
6 for(i=1;i<3;i++)a[0]=a[0]+a[i];
7 printf("%d\n",a[0]);
8 }
A)第3行有错误 B)第7行有错误 C)第5行有错误 D没有错误
24、下面程序()。
(每行程序前面的数字表示行号)。
1 main()
2 {
3 inta[3]={1};
4 inti;
5 scanf("%d",&a);
6 for(i=1;i<3;i++)a[0]=a[0]+a[i];
7 printf("a[0]=%d\n",a[0]);
8 }
A)3 B)6 C)7 D)5
25、下面程序()。
1main()
2{
3inta[3]={0};
4intI;
5for(I=0;I<3;I++)scanf(“%d”,&a[I]);
6for(I=1;I<4;I++)a[0]=a[0]+a[I];
7printf(“%d\n”,a[0]);
8}
A)没有错误B)第3行有错误C)第5行有错误D)第6行有错误、
26、若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为()。
A、i*m+jB、j*m+iC、i*m+j-1D、i*m+j+1
27、对以下说明语句的正确理解是()。
inta[10]={6,7,8,9,10};
A)将5个初值依次赋给a[1]至a[5]B)将5个初值依次赋给a[0]至a[4]
C)将5个初值依次赋给a[6]至a[10]D)因为数组长度与初值的个数不同,所以此语句不正确
28、以下不正确的定义语句是()。
A)doublex[5]={2.0,4.0,6.0,8.0,10.0};B)inty[5]={0,1,3,5,7,9};
C)charc1[]={‘1’,’2’,’3’,’4’,’5’};
D)charc2[]={‘\x10’,’\xa’,’\x8’};
29、若有说明:
inta[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是()。
A)2B)3C)4D)无确定值
30、若二维数组a有m列,则在a[i][j]前面的元素个数为()。
A)j*m+IB)i*m+jC)i*m+j-1D)i*m+j+1
31、定义如下变量和数组:
intk;
inta[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是()。
for(k=0;k<3;k++)printf(“%d”,a[k][2-k]);
A)357B)369C)159D)147
32、以下正确的定义语句是()。
A)inta[1][4]={1,2,3,4,5};B)floatx[3][]={{1},{2},{3}};
C)longb[2][3]={{1},{1,2},{1,2,3}};D)doubley[][3]={0};
33、下面程序的运行结果是()。
main()
{inta[6][6],i,j;
for(i=1;i<6;i++)
for(j=1;j<6;j++)
a[i][j]=(i/j)*(j/i);
for(i=1;i<6;i++)
{for(j=1;j<6;j++)
printf("%2d",a[i][j]);
printf("\n");}
}
A)11111
11111
11111
11111
11111
B)00001
00010
00100
01000
10000
C)10000
01000
00100
00010
00001
D)10001
01010
00100
01010
10001
34、下面程序的运行结果是()。
main()
{inta[6],i;
for(i=1;i<6;i++)
{a[i]=9*(i-2+4*(i>3))%5;
printf(“%2d”,a[i]);}}
A)–40404B)–40403C)–40443D)–40440
35、下面是对S的初始化,其中不正确的是()。
A)chars[5]={‘abc”};B)chars[5]={‘a’,’b’,’c’};
C)chars[5]=””;D)chars[5]=”abcdef”;
二、填空题
1、在C语言中,二维数组的定义方式为:
类型说明符数组名【】;
2、在C语言中,二维数组元素的内存中的存放顺序是【】。
3、若有定义:
doublex[3][5];则x数组中行下标的下限为【,列下标的上限为【】。
4、若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为:
【】。
(假设a[0][0]位于数组的第一个位置上。
)
5、若有定义:
inta[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值是【】,a[2][1]得到的初值是【】。
6、若有以下输入(
main()
{intb[51],x,i,j=0,n=0;
scanf(“%d”,&x);
while(x>-1){b[++n]=x;scanf(“%d”,&x);}
for(i=1;i<=n;i++)
if(b[i]%2==0)b[++j]=b[i];
for(i=1;i<=j;i++)printf(“3%d”,b[i]);printf(“\n”);
}
7、下面程序以每行4个数据的形式输出a数组,请填空。
#defineN20
main()
{inta[N],i;
for(i=0;i for(i=0;i {if(【】)【】 printf(“3%d”,a[i]);} printf(“n”);} 8、下面程序将二维数组a的行和列元素互换后存到另一个二维数组b中。 请填空。 main() {inta[2][3]={{1,2,3},{4,5,6}}; intb[3][2],i,j; printf(“arrara: \n”); for(i=0;i<=1;i++) {for(j=0;【】;j++) {printf(“5%d”,a[i][j]); 【】;} printf(“\n”);} printf(“arrayb: \n”); for(i=0;【】;i++) {for(j=0;j<=1;j++) printf(“5%d”,b[i][j]); printf(“\n”); }} 9、下面程序的运行结果是【】。 main() {inta[2][3]={{1,2,3},{4,5,6}}; intb[3][2],i,j; printf(“arrara: \n”); for(i=0;i<=1;i++) {for(j=0;j<=2;j++) {printf(“5%d”,a[i][j]); b[j][i]=a[i][j];} printf(“\n”);} printf(“arrayb: \n”); for(i=0;i<=2;i++) {for(j=0;j<=1;j++) printf(“5%d”,b[i][j]); printf(“\n”);}} 10、下面程序可求出矩阵a的两条对角线上的元素之和。 请填空。 mian() {inta[3][3]={1,3,6,7,9,11,14,15,17},sum1=0,sum2=0,i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) if(i==j)sum1=sum1+a[i][j]; for(i=0;i<3;i++) for(【】;【】;j--) if((i+j)==2sum2=sum2+a[i][j]; printf(“sum1=%d,sum2=%d\n”,sum1,sum2); } 11、下面程序的运行结果是【】。 main() {inta[5][5],i,j,n=1; for(i=0;i<5;i++) for(j=0;j<5;j++) a[i][j]=n++; printf(“Theresultis: \n”); for(i=0;i<5;i++) {for(j=0;j<=I;j++) printf(“4%d”,a[i][j]); printf(“\n”);}} 12、下面程序可求出矩形阵a的主对角线上的元素之和。 请填空。 main() {inta=[3][3]={1,3,5,7,9,11,13,15,17},sum=0,I,j; for(i=0;i<3;i++) for(j=0;j<3;j++) if(【】)sum=sum+【】; printf(“sum=%d\n”,sum);} 13、以下程序可求出所有的水仙花数。 (提示: 所谓水仙花数是指一个三位正整数, 其各位数字之和的立方之和等于该正整数。 例如: 407=4×4×4+0×0×0+7×7×7。 故407是一个水仙花数。 )请填空。 main() {intx,y,z,a[8],m,i=0; printf(“Thespecialnumbersare(inthearrangeof1000): \n”); for(【】;m++) x=m/100; y=【】; z=m%10; if(x*100+y*10+z==x*x*x+y*y*y+z*z*z) {【】;i++;}} for(x=0;x printf(“%6d”,a[x]);} 14、下面程序的运行结果是【】。 main() {inti,j,a[2][3]={{2,4,6},{8,10,12}}; printf(“Theorigianalarrayis: \n”); for(i=0;i<=2;i++) {for(j=0;j<=3;j++) printf(“%4d”,a[i][j]); printf(“\n”);} printf(“\ntheresultis: \n”); for(i=0;i<3;i++) {for(j=0;j<2;j++) printf(“%4d”,a[i][j]); printf(“\n”);}} 15、下面程序的功能是输入5个整数,找出最大数和最小数所在的位置,并把二者对调,然后输出调整后的5个数。 请填空。 main() {inta[5],max,min,i,j,k; for(i=0;i<5;i++) scanf(“%d”,&a[i]); min=a[0]; for(i=1;i<5;i++) if(a[i] max=a[0]; for(i=1;i<5;i++) if(a[i]>max){max=a[i];【】;} 【】 print(“\nThepositionofminis: %3d\n”,k); printf(“Thepositionofmaxis: %3d\n”,j); for(i=0;i<5;i++) printf(“%5d”,a[i]);} 三、编程题 1、用选择法对10个整数排序(从小到大) 2、有一篇文章,共有3行文字,每行有80个字符。 要求分别统计出其中英文大写字母,小写字母,中文字母,中文字符,数字,空格及其他字符的个数。 (提示: 中文字符是两个字节,且数值均大于128的字符)。 3、编程实现将一个字符串的内容颠倒过来。 4、求整形数组的最大值。 5、找出二维数组的鞍点,即该位置上的元素是该行上的最大值,是该列上的最小值。 二维数组也可能没有鞍点。 6、从键盘上输入若干个学生的成绩,计算出平均成绩,并输出不及格的成绩和人数。 7、设计函数,在二维数组中产生如下形式的扬辉三角形。 1 11 121 1331 14641 ······ 8、回文是从前向后和从后向前读起来都一样的句子。 写一个函数,判断一个字符串是否为回文,注意处理字符串中有中文也有西文的情况。 9、某人有5张2角和4张3角的邮票,使用这些邮票能组合出多少种不同面值的邮资。 约瑟夫环问题: 编号为1,2,3,···,n的n个人按顺时针方向围坐一圈,每人持有一个正整数密码。 一开始任选一个正整数m作为报数上限值,从第一个人开始按顺时针报数,报到m时停止,报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。 设计程序求出出列顺序。 参考答案 一、 选择题 题号 1 2 3 4 5 6 7 8 9 答案 A D A A A B D A C 题号 10 11 12 13 14 15 16 17 18 答案 D D D C C C D B C 题号 19 20 21 22 23 24 25 26 27 答案 D D B D A D D D B 题号 28 29 30 31 32 33 34 35 答案 B B B A D C C D 二、填空题 1、常量表达式常量表达式2、按行主顺序存放3、0,44、i*m+j+i 5、0,66、104682461227105467983246122-1 7、&a[i]i%4==0printf(“\n”)8、j<=2b[j][i]=ai<=2 9、arraya: 23 56 arrayb: 4 5 6 10、j=2j>=0 11、Theresultis: 1 67 1213 171819 2122232425 12、i==ja[i][j]13、m=100;m<1000m/10-x*10a[i]=m 14、Theoriginalarrayis: 46 81012 Theresultis: 28 410 612 15、j=ik=ia[j]=max;a[k]=min 三、 编程题 1、 main() {inti,j,min,temp,a[11]; printf("enterdata: \n"); for(i=1;i<=10;i++) scanf("%d",&a[i]);6 printf("\n"); for(i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); for(i=1;i<=9;i++) {min=i; for(j=i+1;j<=10;j++) if(a[min]>a[j])min=j; temp=a[i]; a[i]=a[min]; a[min]=temp;} printf("\nthesortednumber: \n"); for(i=1;i<=10;i++) printf("%5d",a[i]);} 2、 main() {inti,j,upp,low,dig,spa,oth; chartext[3][80]; upp=low=dig=spa=oth=0; for(i=0;i<3;i++) {printf("\npleaseinputline%d: \n",i++); gets(text[i]); for(j=0;j<80&&text[i][j]! ='\0';j++) {if(text[i][j]>'A'&&text[i][j]<='Z') upp++; elseif(text[i][j]>='a'&&text[i][j]<='z') low++; elseif(text[i][j]>='0'&&text[i][j]<='9') dig++; elseif(text[i][j]=='') spa++; else oth++;}} for(i=0;i<3;i++) printf("%s\n",text[i]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计 第六章 数组 语言程序设计 第六