您好,欢迎来到五一七教育网。
搜索
您的当前位置:首页习题课(数组)

习题课(数组)

来源:五一七教育网
习题课

一、单项选择题。

1.关于数组定义语句“数据类型符 数组名[长度];”,下列说法中正确的是( ) A.数据类型不可以是double B.数组名可以选C的保留字

C.长度是一个任意的整型表达式 .

D.一个数据定义语句中不可以定义数据类型不同的多个数组 2.关于给一维数组元素赋初值,下列说法中错误的是( )。

A.在一个数据定义语句中,可以给所有数组赋初值,也可以只给部分数组赋初值 B.可以给一维数组的全部元素赋初值,也可以只给前面的部分元素赋初值 C.对某个一维数组的前若干个元素赋初值,后面未赋初值的元素无初值。 D.对某个一维数组所有元素赋初值,数组的长度可以省略 3.设有数据定义语句“int a[200];”,下列数组元素引用中下标不越界的是() A.a[-1] B。a[0] C. a[201] D.a[200] 4.若有以下数据定义语句,则数值为4的表达式是( )

Int a[l2]={1,2,3,4,5,6,7,8,9,10,11,12}; char c=’a’,d,g; A.a[g-c] B.a[4] C.a[‘d’-‘c’] D.a[‘d’-c] 5.关于给二维数组赋初值,下列说法中错误的是( )。 A.给所有元素均赋初值,列长度可以省略

B.给所有行的前若干个元素赋初值,行长度可以省略

C.可以分行给二维数组元素赋初值,例如:int a[2]]3]={{1,2,3},{4,5,6}}; D.可以不分行给二维数组元素赋初值,例如:int a[2][3]={1,2,3,4,5,6}; 6.若有数据定义语句“char s[][4]={”1”,“2”};”,下列说法中正确的是( )。 A.s[0][0]是字符1,s[0][1]是字符2 B.,s[0][0]是字符1,s[0][1]是空格字符 C.s[0][0]是字符1,s[1][0]是字符2 D.语法出错

7.下列数据定义语句中,正确的是( ) A.chara [3][]={‘abc’,‘1’};B.char a[][3]= {‘abc’,‘1’} C.char a[3][]={‘a’,”1”}; D.char a[][3]={“a”,”1”}; 8.合法的数组定义是( )。

A.char a[6]={”string”}; B.int a[5]={0,1,2,3,4,5,}; C.char a={”string”}; D. char a[]={0,1,2,3,4,5}; 9.设有下列程序段,执行该程序段时输入:xyz 12回车,则字符数组s中获得的字符串是( ) char s[100]; scanf(“%s”,s);

A.”xyz” B.”xyz ” C.”xyz 12” D.”xyz 12\\n” 10.设有如下数据定义语句,则正确的叙述为( )。

char x[]={“abcdef”};char y[]={‘a’,’b’,’c’,’d’,’e’,’f’,’g’}; A.数组x和数组y等价 B。数组x和数组y的长度相同

C.数组x的长度大于数组y的长度 D.数组x的长度小于数组y的长度 11.设有定义:char s[12]={“string”};,则printf(“%d\\n”,strlen(s));的输出是( A)。 A.6 B.7 C. 11 D. 12 12.语句“printf(”%d\n”,strlen(\"ats\n012\1\\\\”));”的输出结果是 ( )

A.11 B.10 C.9 D.8

13.关于系统函数strcpy(x1,x2,x3)的下列说法中,错误的是( )。 A.函数中的参数x3是可以省略的

B.函数的基本功能是将字符串x2中的前x3个字符组成的字符串复制到字符数组x1中 C.x1可以是数组名

D.x2必须是存放字符串的字符数组名,不能是字符串

14.函数调用“strcat(strcpy(strl,str2),str3)”的功能是( )。 A.将字符串strl复制到字符串str2中后再连接到字符串str3之后 B.将字符串strl连接到字符串str2之后再复制到字符串str3中

C.将字符串str2复制到字符串strl中后再将串str3连接到字符串stxl之后 D.将字符串str2连接到字符串strl之后再将字符串strl复制到字符串str3中 15.设有下列程序段,正确的说法是( ) 第1行 int i;

第2行 float s[5]={1.0,2}; 第3行 float a[l]={1};

第4行 for(i=1; i<4; i++) a[0]=a[0]+s[i]; 第5行 printf (”%f,%f\\n”,a[0],s[4]);

A. 没有错误 B.第2行出错 C.第3行出错 D.第4行出错

二、填空题

1.执行语句”int b[5]={0},a[][3]={1,2,3,4,5,6};” 后b[4]=( ),a[1][2]= ( ) 2.设有定义语句“int a[3][4]={{l},{2},{3}};”,则a[1][1]= ( ),a[2][1]= ( ) 3.如果将下列矩阵存放到名为s的二维数组中,对应的数据定义语句是( ) 70.5 85.0 69.5 92.5 .5 78.0 4.设有数据定义语句“double s[3][2];”,则s[0][1]、s[1][0]、s[3][0]、s[0][2]、s[3][2] 中属于下标越界的二维数组元素有:( ) . 5.如果使用“冒泡排序法”使5个数据从小到大排列,则“相邻两数比较”的总次数是( ) 6.定义数组时,对一组来说,给( )元素赋初值,就可以省略数组的长度;对二维数组来说,给( )元素赋初值或给( )元素赋初值,就可以省略数组的行长度。

7.若在程序中用到“puts()”函数时,应在程序开头写上( ) 命令,若在程序中用到“strlen()”函数时,应在程序开头写上( )命令。

8.对于系统函数strcmp(x1,x2),在( ) 情况下,函数的返回值是小于0的整数, 在( )情况下,函数的返回值是等于0;在( )情况下.函数的返回值是大于0的整数。

9.设有数据定义语句“char s[]={“abc”};”,则数组s的长度为( );字符a是存放在数组元素( ) 中的,数组元素s[3]的值是( ) 。

三、阅读程序题

1.阅读下列程序,写出程序运行的输出结果。 void main()

{int arr[10],i,k=0;

for(i=0;i<10;i++) arr[i]=i;

for(i=1;i<4;i++) k+=arr[i]+I; printf(”%d\n”,k); }

2.阅读下列程序,写出程序运行的输出结果。 void main()

{ char s[]={”12121”},i=0; while(s[++i]!=’\0’)

if (s[i-1]==’1’) printf(“%c’,s[i]); } 3.阅读下列程序,写出程序运行的输出结果。 void main()

{ int a[][3]={9,7,5,3,1,2,4,6,8} int i,j,s1=0,s2=0; for(i=0;i<3;i++) for(j=0;j<3;j++)

{if(i==j) s1=s1+a[i][j]; if(i+j==2)s2=s2+a[i][j]; }

printf(“%d\\n%d\\n”,s1,s2); } 4.阅读下列程序,写出程序运行的输出结果。 void main()

{ char a[]={‘*’, ‘*’, ‘*’, ‘*’, ‘*’}; int i, j, k; for(i=0;i<5;i++) {printf(”\n”);

for(j=0;j5.阅读下列程序,写出程序运行的输出结果。 void main()

{char ch,s[100]={“abcdef”};, int i,j;

for(i=1; i<3;i++) { ch=s[5];

for(j=4;j>=0;j--)s[j+1]=s[j]; s[0]=ch;}

printf(“%s\\n”,s); }

6. 阅读下列程序,写出程序运行的主要功能。 void main()

{ chars[]={”abcl2.3-AB”}; Inti=0,j;

while(s[i]!=’\0’)

if (((‘a’<=s[i]])&&(s[i]<=’z’))|| (‘A’<=s[i]])&&(s[i]<=’Z’) i++; else

{ j=i;

while((s[j]=s[j+1])!=’\\0’) j++; printf(“%s\\n”,s); }

7.读下列程序,写出程序的主要功能。 void main() { int i,j;

Float a[3][3],b[3][3],x; for(i=0; i<3; i++)

for(j=0;j<3;j++) { scanf(“%f”,&x); a[i][j]=x;} for(i:0;i<3;i++)

for(j=0;j<3;j++) b[j][i]=a[i][j]; for(i:0;i<3;i++) { printf(“\\n”);

for(j=0;j<3;j++) printf(“%f”,b[i][j]) } }

8. 阅读下列程序,写出程序运行的主要功能。 void main() { int i,j;

float a[3][3],b[3][3],c[3][3],x; for(i=0; i<3; i++)

for(j=0;j<3;j++) {scanf(“%f”,&x); a[i][j]=x;} for(i=0;i<3;i++)

for(j=0;j<3;j++) { scanf(“%f”,&x); b[i][j]=x } for(i=0;i<3;i++)

for(j=0;j<3;j++) c[i][j]=a[i][j]+b{i}[j];} for(i=0; i<3; i++) { printf(“\n”); for(j=0;j<3;j++)

printf(“%f”,c[i][j]); } }

四、程序填空题

1.下面程序的功能是输出数组s中最大元素的下标,请填写程序中缺少的语句成份。 void main() { int k, p;

Int s[]={1, -9, 7, 2, -10,3}; for (p=0, k=p; p<6; p++)

if(s[p]>s[k])

printf(”%d\n”,k);}

2. 下面程序的功能是输入一个字符串,逆序排列后输出。请填写程序中缺少的语句. #include #include void main()

{ char ch,s1[100],s2[100]; int i, j, n; gets(s1);

for(i=0,j=n-1; i3.下列程序的功能是输入一个字符串,将其中的所有大写字母换成小写字母,小写字母换成大写字母后输出。请填写程序中缺少的语句或语句成分。 void main() { char s[81]; Int i=0; scanf(”%s”,s); while(s[i]!=’\\0’)

{ if ((‘A’<=s[i])&&(s[i]<=’Z’)) ; else

if((‘a’<=s[i])&&(s[i]<=’z’)) s[i]-=32; ; }

printf(”%s”,s); }

4.下列程序是输入10个单精度实数存人数组a,将其中最大数和最小数对调后输出。请填写程序中缺少的语句。 void maib()

{ float a[10],max,min,x; int i,max_i,min_i;

for(i=0;i<10; i++) scanf(“%f”,&a[i]); ; max=min=0;

for(i=1;i<10;i++)

if(maxa[i])

{min=a[i];min_i=i;} }

x=a[max_i],a[max_i]=a[min_i],a[min_i]=x; for(i=0;i<10;i++) printf(”%7.2f”,a[i]); }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 517ttc.cn 版权所有 赣ICP备2024042791号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务