C语言习题集合(数组)-(1)

上传人:痛*** 文档编号:110594548 上传时间:2022-06-18 格式:DOC 页数:25 大小:101.50KB
收藏 版权申诉 举报 下载
C语言习题集合(数组)-(1)_第1页
第1页 / 共25页
C语言习题集合(数组)-(1)_第2页
第2页 / 共25页
C语言习题集合(数组)-(1)_第3页
第3页 / 共25页
资源描述:

《C语言习题集合(数组)-(1)》由会员分享,可在线阅读,更多相关《C语言习题集合(数组)-(1)(25页珍藏版)》请在装配图网上搜索。

1、 第四章 数组41 选择题1. 以下关于数组的描述正确的是( )。 A. 数组的大小是固定的,但可以有不同的类型的数组元素B. 数组的大小是可变的,但所有数组元素的类型必须相同C. 数组的大小是固定的,所有数组元素的类型必须相同D. 数组的大小是可变的,可以有不同的类型的数组元素2. 以下对一维整型数组a的正确说明是( )。 A.int a(10); B. int n=10,an;C.int n; D. #define SIZE 10 scanf(%d,&n); int aSIZE; int an; 3. 在C语言中,引用数组元素时,其数组下标的数据类型允许是( )。 A. 整型常量B. 整型

2、表达式C. 整型常量或整型表达式D. 任何类型的表达式4. 以下对一维数组m进行正确初始化的是( )。 A. int m10=(0,0,0,0) ; B. int m10= ;C. int m =0; D. int m10=10*2; 5. 若有定义:int bb 8;。则以下表达式中不能代表数组元bb1的地址的是( )。 A. &bb0+1 B. &bb1 C. &bb0+ D. bb+16. 假定int类型变量占用两个字节,其有定义:int x10=0,2,4;,则数组x在存中所占字节数是( )。 A. 3 B. 6 C. 10 D. 207. 若有以下说明: int a12=1,2,3,

3、4,5,6,7,8,9,10,11,12; char c=a,d,g; 则数值为4的表达式是( )A. ag-c B. a4 C. ad-c D. ad-c8. 以下程序段给数组所有的元素输入数据,请选择正确答案填入( )。 #includemain() int a10,i=0;while(i=0;i-) ai=10-i;printf(%d%d%d,a2,a5,a8);A. 258 B. 741 C. 852 D. 36911. 以下程序运行后,输出结果是( )。 main() int n5=0,0,0,i,k=2;for(i=0;i=1); for(j=i-1;j=0;j-) printf(

4、%d,aj); printf(n);A. 10000 B. 10010 C. 00110 D. 1010013. 以下程序运行后,输出结果是( )。 main()int a10, a1 =1,3,6,9,10, a2 =2,4,7,8,15,i=0,j=0,k;for(k=0;k4;k+)if(a1ia2j) ak=a1i+;else ak=a2j+; for(k=0;k4;k+) printf(%d,ak); A. 1234 B. 1324 C. 2413 D. 432114. 以下程序运行后,输出结果是( )。main() int i,k,a10,p3;k=5;for (i=0;i10;i

5、+) ai=i;for (i=0;i3;i+) pi=ai*(i+1);for (i=0;i3;i+) k+=pi*2;printf(%dn,k);A. 20 B. 21 C. 22 D. 2315. 以下程序运行后输出结果是( )。 main( ) int n3,i,j,k;for(i=0;i3;i+) ni=0;k=2;for (i=0;ik;i+)for (j=0;jk;j+) nj=ni+1;printf(%dn,n1); A. 2 B. 1 C. 0 D. 316. 下列程序的主要功能是输入10个整数存入数组a,再输入一个整数x,在数组a中查找x。找到则输出x在10个整数中的序号(从

6、1开始);找不到则输出0。程序缺少的是 ( )。 main()int i,a10,x,flag=0;for(i=0;i10;i+) scanf(%d,&ai);scanf(%d,&x);for(i=0;i2!1 D. a2018. 若有定义:int b34=0;则下述正确的是( ) 。 A. 此定义语句不正确B. 没有元素可得初值0C. 数组b中各元素均为0D. 数组b中各元素可得初值但值不一定为019. 若有以下数组定义,其中不正确的是( ) 。 A. int a23;B int b3=0,1,2,3;C. int c100100=0;D. int d3=1,2,1,2,3,1,2,3,4;

7、20. 若有以下的定义:int t54;能正确引用t数组的表达式是( )。A. t24 B. t50 C. t00 D. t0,021. 在定义int m 3=1,2,3,4,5,6;后,m10的值是( )。 A. 4 B. 1 C. 2 D. 522. 在定义int n56后第10个元素是( )。 A. n25 B. n24 C. n13 D. n1423. 若二维数组c有m列,则计算任一元素cij在数组中的位置的公式为( )。(假设c00位于数组的第一个位置)A. i*m+j B. j*m+i C. i*m+j-1 D. i*m+j+124. 若有以下定义语句,则表达式“x11*x22”的

8、值是( )。 float x33=1.0,2.0,3.0,4.0,5.0,6.0;A. 0.0 B. 4.0 C. 5.0 D. 6.0 25. 以下程序运行后,输出结果是 ( )。 main() int a44=1,3,5,2,4,6,3,5,7;printf(%d%d%d%dn,a03,a12,a21,a30);A. 0650 B. 1470 C. 5430 D. 输出值不定26. 以下程序运行后,输出结果是( )。 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+=aai1;print

9、f(“%dn”,s);A. 11 B. 19 C. 13 D. 2027. 有以下程序 main( ) int a33=1,2,3,4,5,6,i,j,s=0;for(i=1;i3;i+)for(j=0;j=i;j+) s+=aij;printf(%dn,s);该程序的输出结果是( )。A. 18 B. 19 C. 20 D. 2128. 若定义如下变量和数组: int i;int x33=1,2,3,4,5,6,7,8,9;则下面语句的输出结果是( )。for(i=0;i= 0&chi= 9;i+=2)s=10*s+chi- 0;printf(%dn,s);A. 12ba56 B. 6521

10、 C. 6 D. 6238. 运行下面的程序,如果从键盘上输入:123456789,输出结果是( )。 A. 123,456,789 B. 1,456,789C. 1,23,456,789 D. 1,23,456 main() char s100; int c, i; scanf(%c,&c); scanf(%d,&i); scanf(%s,s); printf(%c,%d,%sn,c,i,s); 39. 运行下面的程序,如果从键盘上输入: ab c def则输出结果为( )。A. a B. a C. ab D. abcdefb b cc c dd def#include #define N

11、6 main() char cN; int i=0; for( ;iN;ci=getchar(),i+); for( i=0;iN;i+) putchar(ci); printf(n); 40. 运行下面的程序,如果从键盘上输入:ABC时,输出的结果是( )。 #includemain() char ss10=12345;strcat(ss, 6789 );gets(ss);printf(%sn,ss); A. ABC B. ABC9 C. 123456ABC D. ABC45678941. 判断两个字符串是否相等,正确的表达方式是( )。A. while(s1=s2) B. while(s1

12、=s2) C. while(strcmp(s1,s2)=0) D. while(strcmp(s1,s2)=0)42. 以下程序的输出结果是( )。main() char str12= s,t,r,i,n,g; printf(%dn,strlen(str); A. 6 B. 7 C. 11 D. 1243. 若有以下程序片段: char str =abn012;printf(%d,strlen(str);上面程序片段的输出结果是 ( )。A. 3 B. 4 C. 6 D. 1244. 若有以下程序段,输出结果是( )。 char s =141141abct;printf (%dn,strlen

13、(s);A. 9 B. 12 C. 13 D. 1445. 设有static char str =Beijing;则执行printf(%dn, strlen(strcpy(str,China);后的输出结果为 ( )。 A. 5 B. 7 C. 12 D. 1446. 以下程序运行后,输出结果是( )。 main() char cf35=AAAA,BBB,CC;printf(%sn,ch1);A. AAAA B. BBB C. BBBCC D. CC47. 以下程序运行后,输出的结果是( )。 #include #includemain() char w 10=ABCD,EFGH,IJKL,M

14、NOP,k; for (k=1;k3;k+)printf(%sn,&wkk);A. ABCD B. ABCDFGH EFGKL IJMC. EFG D. FGHJK KLO 48. 以下程序运行后,输出结果是( )。 main() char arr24; strcpy(arr,you); strcpy(arr1,me); arr03=&; printf(%s n,arr); A. you&me B. you C. me D. err42 填空题1. C语言中,数组元素的下标下限为 _。 2. C程序在执行过程中,不检查数组下标是否_。 3. 在定义时对数组的每一个元素赋值叫数组的_;C语言规定

15、,只有_存储类型和_存储类型的数组才可定义时赋值。 4. 下面程序的运行结果是_。 #define N 5main()int aN=1,2,3,4,5,i,temp;for(i=0;iN/2;i+)temp=ai; ai=aN-i-1; aN-i-1=temp;printf(n);for(i=0;iN;i+) printf(%d , ai);5. 以下程序以每一行输出4个数据的形式输出a数组。#includemain()int a20,i;for(i=0;i20;i+) scanf(%d, 【1】);for(i=0;i20;i+)if ( 【2】 ) 【3】 ;printf(%3d,ai);p

16、rintf(n);6. 以下程序分别在a数组和b数组中放入an+1和bn+1个由小到大的有序数,程序把两个数组中的数按由小到大的顺序归并到c数组中。#includemain()int a10=1,2,5,8,9,10, an=5,b10=1,3,4,8,12,18,bn=5;int i,j,k,c20,max=9999;aan+1=bbn+1=max;i=j=k=0;while(ai!=max)|(bj!=max)if(aibj) ck= 【1】; k+; 【2】;else ck= 【3】; k+; 【4】;for(i=0;i=0.0& n1000) sum+=【1】 ; xn= 【2】 ;

17、n+; scanf(%f,&a); ave=【3】 ; printf(Output:n); printf(ave=%fn,ave); for (i=0;in;i+) if ( 【4】 ) printf (%fn,xi); 8. 以下程序把一个整数转换成二进制数,所得二进制数的每一位放在一维数组中,输出此二进制数。注意:二进制数的最低位在数组的第一个元素中。#includemain()int b16,x,k,r,i;printf(please input binary num to x); scanf(%d,&x);printf(%dn,x);k=-1;do r=x% 【1】 ;b+k=r;x/

18、= 【2】 ;while(x=1);for(i=k; 【3】 ;i-)printf(%d,bi); printf(n); 9. 输入10个整数,用选择法排序后按从小到大的次序输出。 #define N 10main( ) int i,j,min,temp,aN;for(i=0;iN;i+)scanf(%d, 【1】);printf(n);for(i=0; 【2】; i+)min=i;for(j=i;jaj) 【3】 ;temp=ai;ai=amin;amin=temp; for (i=0;iN;i+)printf(%5d,ai);printf(n);10. 当先后输入1,3,4,12,23时,

19、屏幕上出现_;再输入12时,屏幕上出现_。#include#define N 5main()int i,j,number,top,bott,min,loca,aN,flag;char c;printf(please input 5 numbers aiai-1n);scanf(%d,&a0); i=1;while(i=ai-1) i+; printf(n);for(i=0;iN;i+) printf(%4d,ai); printf(n);flag=1;while(flag) scanf(%d,&number); loca=0; top=0; bott=N-1;if (numberaN-1) l

20、oca=-1;while(loca=0)&(top=bott)min=(bott+top)/2;if(number=amin)loca=min;printf(%d is the %dth numbern,number,loca+1);else if (numberamin) bott=min-1;else top=min+1;if (loca=0|loca=-1) printf(%d is not in the list n,number);c=getchar();if (c=N|c=n) flag=0;11. 以下程序运行结果是 _. #includemain()int a33=1,2,3,

21、4,5,6,7,8,9,i,s1=0,s2=1;for(i=0;i=2;i+) s1=s1+ aii;s2=s2*aii;printf(s1=%d,s2=%d,s1,s2); 12. 以下程序完成功能是:计算两个3*4阶矩阵相加,并打印出结果。请填空。#includemain()int a34=3,-2,1,2,0,1,3,-2,3,1,0,4;int b34=-2,3,0,-1,1,0,-2,3,-2,0,1,-3;int i,j,c34; for(i=0;i3;i+) for(j=0;j4;j+) _; for(i=0;i3;i+) for(j=0;j4;j+)printf(%d,cij)

22、;printf(n);13. 以下程序的运行结果是_.main() int i, j,a33;for(i=0;i3;i+)for(j=0;j3;j+)if(i=3) aij=ai-1ai-1j+1;else aij=j;printf(%4d,aij); printf(t);14. 阅读下列程序:#includemain() int i, j, row, column,m;static int array33=100,200,300,28,72,-30,-850,2,6;m=array00;for (i=0; i3; i+)for (j=0; j3; j+)if (arrayijm) m=arr

23、ayij; row=i; column=j;printf(%d,%d,%dn,m,row,column);上述程序的输出结果是 _。 15. 若想通过以下输入语句使a中存放字符串1234,b中存放字符5,则输入数据的形式应该是_。 : . char a10,b; scanf(a=%s b=%c,a,&b); : .16. 以下程序段的输出结果是_。main() char b=Hello,you; b5=0; printf(%sn, b ); 17. 若有以下程序段,若先后输入:EnglishGood则其运行结果是_。main() char c160,c23; int i=0,j=0; scan

24、f(%s,c1); scanf(%s,c2); while(c1i!= 0) i+; while(c2j!= 0) c1i+=c2j+; c1i= 0;printf(n%s,c1);18. 从键盘输入由5个字符组成的单词,判断此单词是不是hello,并显示结果。#includemain()static char str =h,e,l,l,o; char str15;【1】 ;for(i=0;i5;i+)【2】 ;flag=0;for(i=0;i5;i+)if 【3】 flag=1; break;if(flag) printf(this word is not hello);else print

25、f(this word is hello);19. 以下程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。请填空。 #include #include main() char a=clanguage,t; int i, j, k; k=strlen(a); for(i=0; i=k-2; i+=2) for(j=i+2; j=k; 【1】) if( 【2】 ) t=ai; ai=aj; aj=t; puts(a); printf(n); 20. 输入5个字符串,将其中最小的打印出来。 main()char str10,temp10; int i;【1】;for(i=0;

26、i0) 【2】;printf(nThe first string is:%sn,temp);21. 以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如:输入的两个字符串分别为abcdef和abceef,则输出为-1。请填空。 #include main( ) char str1100,str2100,c; int i,s; printf(n input string 1:n); gets(str1); printf(n input string 2:n); gets(str2); i=0; while(strli=str2i&(str1

27、i!= 【1】) i+; s= 【2】 ; printf(%dn,s); 22. 设有下列程序:#include#includemain() int i;char str10, temp10;gets(temp);for (i=0; i4; i+) gets(str);if (strcmp(temp,str)0) strcpy(temp,str);printf(%sn,temp);上述程序运行后,如果从键盘上输入(在此代表回车符):C+BASICQuickCAdaPascal则程序的输出结果是 _。 23. 以下程序功能是:统计从终端输入的字符中每个大写字母的个数。用#号作为输入结束标志,请填

28、空。 #include #include main( ) int num26,i; char c; for(i=0; i26; i+) numi=0; while( 【1】 != #) /*统计从终端输入的大写字母个数*/ if( isupper(c) numc-65+=1; for(i=0; i26; i+) /*输出大写字母和该字母的个数*/ if(numi) printf(%c:%dn,i 【2】 , numi); 24. 下面程序段完成功能是:输出两个字符串中对应字符相等的字符。请填空。char x = language;char y = llngga;int i=0;while (x

29、i!= 【1】 &yi!= 【2】 ) if (xi=yi) printf(%c, 【3】);else i+;25. 下面程序完成功能是:计算一个字符串中子串出现的次数。 #include main() int i ,j, k,count;char str120,str220;printf(zhu chuan:);gets(str1);printf(zi chuan:);gets(str2);【1】;for(i=0;str1i;i+)for(j=i,k=0;str1j=str2k;j+,k+)if ( 【2】 )count+;printf(chuxian cishu=%dn,count); 2

30、6. 下面程序完成以下功能:从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔。#includemain() char s81;int i , c, num=0,word=0;【1】;for(i=0;(c=si)!=0;i+) if(c=32) 【2】; else if (word=0) word=1; 【3】; printf(there are %d words.n,num); 27. 下面程序完成功能是:判定用户输入的正整数是否为“回文数”,所谓“回文数”是指正读反读都相同的数。请填空。 #include main() int buffer10, i,k,flag;long nu

31、mber ,n;printf(please input one number);scanf(%ld,&number);k=0;n=number;do 【1】 ;k=k+1;n=n/10;while (n!=0); flag=1; for( i=0;i=(k-1)/2;i+) if ( 【2】 ) flag=0; if(flag) printf(%ld is huiwenshun,number); else printf(%ld is not huiwenshun,number);43 答案及部分解析一选择题答案1. C 2. D 3. C 4. C 5. C 6. D 7. D 8. A 9.

32、 A 10. C 11. D 12. B 13. A 14. B 15. D 16. B 17. C 18. B 19. D 20. C 21. A 22. C 23. D 24. A25. A 26. B 27. A 28. C 29. C 30. A31. B 32. D 33. C 34. C 35. C 36. D37. C 38. D 39. C 40. A 41. C 42. A43. C 44. A 45. A 46. B 47. D 48. A 11. 解析:程序中的for语句为n0和n1重新赋了值,但要输出的应该是n2(nk)值。13. 解析:第一个for语句中当k=0时 a

33、10a20,a1=2,j值为1;当k=2时,a11a21 a3=4,j值为2第二个for语句输出a数组。14. 解析:第一个for循环是为了将0,1,2,3,4,5,6,7,8,9分别赋给a0-a9;第二个for循环再将a0,a2,a6的值赋给p0,p1,p2;第三个for循环将3个数组下标变量值*2后累加,结果为16,再和k初值5相加,最终结果为21。27. 解析:本题考点是关于给数组赋初值时,初值的个数少于数组中元素个数。a数组实际存储状态是a02=0,a12=0,a22=0.35. 解析:字符串的最后一个字符应该是结束符0。36. 解析:在程序执行语句部分,不允许把字符串赋予一个数组。4

34、0. 解析:函数strcat()是字符串连接。gets()中输入数据时以回车符作为结束符。在纳入存时,输入字符串末尾的回车符自动变换成代码0,从而使它成为C字符串。它在stdio.h中被定义,输出ss时,遇到“0”停止输出。47. 解析:本题中strcpy(arr,”you”)函数的功能是将”you” 3个字符分别赋给arr00、 arr01 和a02;strcpy(arr1,”me”) 函数的功能是将 “me” 分别赋给arr10和a11。二填空题答案1. 答案:02. 答案:越界3. 答案:初始化 静态 外部4. 答案:5 4 3 2 1 5. 答案:【1】&ai 【2】i%4=0 【3】

35、printf(n);6. 答案:【1】ai 【2】i+或+i 【3】bj 【4】j+或+j7. 答案:【1】a 【2】a 【3】sum/n 【4】xi=0解析: 采用辗转相除法进行进制之间的相互转换,将结果存储在一维数组b中,最后显示其值即可。9. 答案:【1】&ai 【2】iaj解析: 外层for循环控制i步长为2,层for循环控制j步长为2.当i=0时,j=2,a0a2,交换c和a;j=4,a0a4不交换字符;j=6,a0=a6, 不交换字符;j=8,a0a8 不交换字符; 当i=2时,j=4,a2a6, 交换a和c字符;j=8,a2a6, 交换c和g字符;j=8,a4a8, 交换e和g字符;输出”alancuegg”。20. 答案:【1】 gets(temp) 【2】 strcpy(temp,str)21. 答案:【1】 0或0 【2】 strli-str2i22. 答案:QuickC23. 答案: 【1】 (c=getchar() 注意,外层括号不得遗漏 【2】 +65 或 +A24. 答案:【1】 0 【2】 0 【3】 xi+25. 答案:【1】 count=0 【2】!str2k+126. 答案:【1】 gets(s) 【2】 word=0 【3】 num+27. 答案:【1】 bufferk=n%10 【2】 bufferi!=bufferk-1-i 页脚

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


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