C语言考前复习有答案的考前必看.doc

上传人:豆**** 文档编号:34339251 上传时间:2022-08-16 格式:DOC 页数:28 大小:104.50KB
返回 下载 相关 举报
C语言考前复习有答案的考前必看.doc_第1页
第1页 / 共28页
C语言考前复习有答案的考前必看.doc_第2页
第2页 / 共28页
点击查看更多>>
资源描述

《C语言考前复习有答案的考前必看.doc》由会员分享,可在线阅读,更多相关《C语言考前复习有答案的考前必看.doc(28页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、如有侵权,请联系网站删除,仅供学习与交流C语言考前复习有答案的考前必看【精品文档】第 28 页分章节练习题第一、二章数据类型、运算符与表达式一、单选题1、下列属于字符型常量的是 C 。A、AA B、“B” C、a D、x93L2、 C语言中,字符(char)型数据在微机内存中的存储形式是 _ D _。A、反码 B、补码 C、EBCDIC码 D、ASCII码3、若变量已正确定义,要将a和b中的数进行交换,下面不正确的语句组是_C_。A、a=a+b,b=a-b,a=a-b; B、t=a,a=b,b=t; C、a=t; t=b; b=a; D、t=b;b=a;a=t;4、 判断char型变量c是否为

2、大写字母的最简单且正确的表达式是_D_。A、A=c=A)&(c=Z) C、(A=c) D、(c=A)&(c=Z)5、运算符|代表 B 。A、按位或 B、逻辑或 C、按位异或 D、按位取反6、下列符号中,不可以作为变量名的是_D_.A、 _var B、VAR10 C、 varx D、2def7、 运算符&代表 A 。A、按位与 B、逻辑与 C、按位异或 D、按位取反8、表达式18/4*sqrt(4.0)/8值的数据类型为_B_.A、intB、floatC、charD、不确定二、填空题1. C+程序执行过程生成的3种文件及扩展名为_源代码文件 .cpp_、_.目标代码文件.obj_和_目标代码文件

3、.obj_。2. 表达式x=x+1表示成增量表达式为_x+;_。3. 若y是int型变量,且y=6,则表达式 ( y%2+(y+1)/2 ) 的值为_3_。4. 若要在程序文件中使用数学标准函数,则必须在开始的#include命令中使用_头文件。5. 表达式0x13 0x17的值是_4_。6. 定义一个整型常量VALUE,其值为40的定义语句为_#define VALUE 40 。7. 与3x3+xy3+y3对应的C+表达式是_3*y*y*y+x*y*y*y+y*y*y 8. 的整数可以用 十进制 、_八进制_、和_十六进制_三种进位制表示。9. C语言的基本数据类型有_整型_、_浮点型(实型

4、)_和_字符型_。10. 表达式3.5+1/2的计算结果是_3.5_。11. 和C+程序总是从_main() 开始执行。12. 若k为int型变量且赋值11。请写出运算k+后表达式的值为_11_ _, k变量的值_ 12 _。13. 若要在一个C在程序文件中用cin和cout进行输入输出操作,则必须在开始的#include命令中使用_头文件。第三章输入和输出一、单选题1、printf函数中用到格式符5s,如果字符串长度大于5,则输出方式为_ B _。A、从左起输出该字串,右补空格 B、按原字符长从左向右全部输出C、右对齐输出该字串,左补空格 D、输出错误信息2、C+中,有以下定义:int a,

5、b;若要从键盘输入变量a,b的值,则正确的输入语句是_A_。A、cinab; B、cinaab; D、coutab;第四章控制结构一、单选题1、以下程序的输出结果是(A)。includemain( ) int x,y;for (x=1,y=1;x20) break; if(y%3= =1) y+=3; continue; y-=10;printf(“%d,%dn”,x,y);A 8,22 B 7,20 C 6,22 D 5,202、break语句的正确的用法是_ B _。 A、无论在任何情况下,都中断程序的执行,退出到系统下一层。 B、在多重循环中,只能退出最靠近的那一层循环语句。 C、跳出多

6、重循环。D、只能修改控制变量。3、下面程序的运行结果是_B _。main( )int x=4,y=5;if (xy)&(+x0) cout(x+y);cout12?x+10:x-12; printf(dn,y); A、0 B、22 C、12 D、 108、C语言中whi1e和do-while循环的主要区别是_A_ _。A、do-while的循环体至少无条件执行一次 B、while的循环控制条件比do-while的循环控制条件严格C、do-while允许从外部转到循环体内 D、do-while的循环体不能是复合语句9、continue语句的正确的用法是 A 。 A、跳过该循环体中剩余的语句而强行

7、开始下一次循环。 B、在多重循环中,只能退出最靠近的那一层循环语句。 C、跳出多重循环。 D、无论在任何情况下,都中断程序的执行,退出到系统下一层。10、有如下程序: void main() int n=9; while(n6)n-; printf(%d,n); 该程序的输出结果是_B_。 A、987 B、876 C、8765 D、9876二、填空题1、结构化程序设计的三种基本结构是:_顺序结构_、_循环结构_和_条件结构_。2、执行if(x|!x) printf(”ABC”);else printf(”XYZ”);屏幕上显示的是_ABC_。三、程序填空题1、程序打印如下形式的图形void m

8、ain() for(int i=1;i=4;i+) for(int j=1; j=0 ) if(xamax) amax=x; if( xamin ) amin=x; scanf(“%f”,&x); printf(“namax=%fnamin=%fn”,amax,amin);3、以下程序把大写字母A-Z转换成对应的小写字母a-z,其它字符不转换。 #includevoid main() char ch;scanf(“%c”, &ch );ch=(_ch=A _)?ch+32:ch;printf(“char=%cn”,ch);4、下列程序求100之内的自然数中偶数之和。#includevoid m

9、ain() int i=1,s; s=0 ; while (i100) if (i%2=0) s+=i ; i+ ; printf(“s=%dn”,s );5、6、下面程序的功能是:输出 100以内(不包含100)能被 3整除且个位数为 6的所有整数,请填空。includestdiohvoid main() int i, j;for(i=1; _i=1),请填空。double fun(double x,int y) _int i_; double z;for(i=1,z=1;_i=y_ _;i+) z=z*x;_return z_ _;四、改错题: 下面的程序完成数值1到N之间的奇数之和。在m

10、ain()函数中输入N值,并输出求和结果。在sum()函数中完成奇数累加,并把累加结果作为函数值返回。请更改程序中的五个错误。注意:不得增行或删行,也不得更改程序结构。#include int sum(int m) int i,s=0;for (i=m;i=1;i+-) if (i%2=1) s=s+i; return s; void main( ) int n; printf(”请输入N的值:”);scanf(”%d”,&n);printf(”奇数之和为%d”,sum(n);第六章数组一、单选题1、下列说法正确的是 B 。A、在2000,2001,20022007这几个连续的地址单元中可存放

11、8个数据。B、在2000,2001,20022007这几个连续的地址单元中可存放8个字符。C、在2000,2001,20022007这几个连续的地址单元中可存放字符串”ABCDEFGH”。D、在2000,2001,20022007这几个连续的地址单元中可存放8个整数。2、在下面的一维数组定义中,哪一个有语法错误_C_。A、int a =1,2,3; B、int a10=0; C、 int a; D、int a5;3、调用函数strlen(“abcdtefng”)的返回值是。A A、9 B、7 C、6 D、44、设有数组定义: char array=China; 则数组 array所占的空间为_

12、C _。A、4个字节B、5个字节C、6个字节D、7个字节5、要使字符串变量str具有初值ABCDEFGH,正确的定义语句是_ D _。A、char str8=A,B,C,D,E,F,G,H;B、char str8=ABCDEFGH;C、char str=A,B,C,D,E,F,G,H;D、char str=ABCDEFGH;6、 以下能正确进行字符串赋值的是 C 。A、char s5=a,e,I,o,u; B、char s5;s=”good”;C、char s5=”abcd”; D、 char s5;s=”good”;7、 设有如下定义,则正确的叙述为 C 。 char x=“abcdefg”

13、; char y=a,b,c,d,e,f,g;A、数组x和数组Y等价 B、数组x和数组y的元素个数相同C、数组x的元素个数大于数组y的元素个数 D、数组x的元素个数小于数组y的元素个数8、 有定义:char ch,s30; int a,b;下列输入语句正确的是_C_。A、scanf(“%d%f”,&a,&b);B、scanf(“%s%c”,&s,&ch);C、scanf(“%c%s”,&ch,s);D、scanf(“%d%c”,a,ch);9、有以下程序: void main() char p=a,b,c,q=”abc”; printf(“%d %d”,sizeof(p),sizeof(q);

14、 程序运行后的输出结果是( C )。 A、4 4 B、3 3 C、 3 4 D、4 310、(多选)在VC中,要定义一个int型一维数组art,并使其各元素具有初值89,-23,0,0,0,正确的定义语句有( A C D ).A.int art5=89,-23;B.int art=89,-23;C.int art5=89,-23,0,0,0;D.int art=89,-23,0,0,0;11、(多选)要定义一个int型二维数组bat,并使其各元素具有初值 1 2 3 4 2 3 0 0 3 0 0 0 0 0 0 0正确的定义语句有( B C D ) A.int bat4=1,2,3,4,2,

15、3,3; B.int bat44=1,2,3,4,2,3,0,0,3,0,0,0,0,0,0,0; C.int bat4=1,2,3,4,2,3,3,0; D.int bat44=1,2,3,4,2,3,3;12、(多选)要使字符串数组STR含有ABCD,EFG和XY三个字符串,正确的定义语句有( B C D ). A.char STR4=ABCD,EFG,XY; B.char STR5=ABCD,EFG,XY; C.char STR6=ABCD,EFG,XY; D.char STR7=A,B,C,D,0,EFG,XY;13、若用数组名作为函数调用的实参,传递给形参的是 A 。A、数组的首地址

16、 B、数组第一个元素的值 C、数组中全部元素的值 D、数组元素的个数二、填空题1、已知数组T为一有10个单元的整型数组,下面的语句试图按相反的顺序显示输出T中的10个元素的相反数;请补充完整下面的语句: for(int j=9;j=0;j-) cout_-Tj_;2、已知数组T为一有10个单元的整型数组,下面的语句试图求出这10个单元的合计值,并用s保存这个值;请补充完整下面的语句: int s=_0_; for(int j=0;j10;j+) _s+=Tj_;3、已知数组d 定义为double d53;则d是一个( 5)行( 3)列的二维数组,总共有(15 )个 元素,最大行下标是(4 ),

17、最大列下标是(2 ).4、已知数组e定义为int e4=1,2,3,4,5,6,7,8;,则e是一个( 2)行( 4)列的二维数组,总共有(8 )个元素,最大行下标是(1 ),最大列下标是( 3),其首行的每个元素的值分别是( 1 2 3 4).5、已知数组f定义为double f3=1,2,5,6,7,8;,则e是一个(3 )行( 3)列的二维数组,总共有(9 )个元素,按行列出的各元素的值是( 1,2,0 5,0,0 6,7,8 ).6、要使g成为具有如下初始值的二维int型数组: 1 0 0 0 0 1 2 0 0 0 1 2 3 0 0 1 2 3 4 0 1 2 3 4 5最简单的定

18、义g的语句是( int g5=1,1,2,1,2,3,1,2,3,4,1,2,3,4 );7、下面的语句按行显示输出5行3列数组m的所有元素,请补充完整: for(int i= 0 ;i 5 ; i+ ) coutendl; for(_int j=0_;_j3_;j+) cout_mij_ ;8、执行语句序列 char str1=ABCD,str210=XYZ; for(int i=0;str2i+1=str1i;i+); 后,数组str2中的字符串是( XABCD ).三、程序填空题1、下列程序是一个求数组元素之和的程序。主程序中定义并初始化了一个数组,然后计算该数组各元素之和,并输出结果。

19、函数sum计算数组元素之和。请完成下列程序。#includesum(int,int);void main( ) int a5=2,3,6,8,10; int total; total=_sum(a,5)_; cout数组元素之和为:_total_endl;int sum(int array,int len) int s=0; for(int i=0;ilen;i+) s +=arrayi ; return s;2、下面的语句显示输出6行6列数组h的主对角线上的所有元素,请补充完整:for(int i= 0 ;i 6 ;i+) cout hii ;3、下面的程序通过函数average计算数组中各

20、元素的平均值。 float average(int pa,int n) int i; float avg=0.0; for(i=0;in;i+) avg=avg+ pai ; avg= avg/i ; return avg; void main() int i,a5=2,4,6,8,10; float mean; mean=average( a ,5); printf(“%fn”,mean); 4、以下函数返回数组s中最大元素的下标,数组中元素的个数由t传入。int Findmax(int s,int t) int m,n; for(n=0,m=n;nsm) n=m ; return n ;5

21、、下面程序是用递归函数fib(n)计算斐波那契(Fibonacci)数列第n项。斐波那契数列为:0,1,1,2,3,5 int fib(int n) if(n=0)return(0); if(n=1) return(1); if(n1) return( fib(n-1) + fib(n-2) );第七章指针一、单选题1、若有语句int *point,a=4;和 point=&a;下面均代表地址的一组选项是_D_。 A、a,point,*&a B、&*a,&a,*point C、*&point,*point,&a D、&a,&*point,point2、程序中对fun函数有如下说明:void *

22、fun();此说明的含义是_C_ _。 A、fun函数无返回值 B、fun函数的返回值可以是任意的数据类型 C、fun函数的返回值是无值型的指针类型 D、指针fun指向一个函数,该函数无返回值3、已知:int *p, a,b;p=&a; 则语句“b=*p; ”中的运算符“*”的含义是 C 。A、指针定义 B、乘法运算符 C、取指针所指变量内容 D、取变量地址4、C语言的语句char *line5;是指 A 。A、line 是一个数组,其数组的每一个元素是指向字符的指针。B、line是一个指针,指向一个数组,数组的元素是为字符型。C、A和B 均不对,但它是C语言正确的语句。D、C语言不允许这样的

23、语句。5、若有定义:int x,*pb;则以下正确的赋值表达式是_A_。A、pb=&x B、pb=x C、*pb=&x D、*pb=*x6、说明语句“float (*p)(int);”的含义是_C _。A、p是一个指向一维数组的指针变量B、p是指针变量,指向一个整型数据C、p是一个指向函数的指针,该函数的返回值是一个浮点型,且有一个整型数据作参数D、以上都不对7、设变量定义为 int a3=1,4,7,8,*p=&a2;, 则*p的值是 A 。 A、&a2 B、4 C、 7 D、 18、 要使指针变量p指向2维数组A的第一个元素(0行0列元素),正确的赋值表达式是 D 。A、p=A或p=A00

24、 B、p=A0或p=A00C、p=A0或p=&A00 D、p=A或p=&A009、下列说法正确的是 C 。A、空指针也称为void 指针,是一种不指向任何数据的指针。B、空指针也称为无类型指针,是一种可指向任何类型数据的指针。C、除了void指针外,任何非空指针都指向某种既定类型的数据。D、void指针也称为无类型指针,是一种不指向任何数据的指针。10、 若已定义:int a9, *p=a;并在以后的语句中未改变p的值,不能表示a1地址的表达式为 C 。A、p+1 B、a+1 C、a+ D、+p11、已知:int x; int y10; 下列_A_是合法的。 A、&x B、&(x+3) C、&

25、5 D、&y12、 已知一运行正常的程序中有这样两个语句:int *p1,*p2=&a;p1=b;由此可知,变量a和b的类型分别是 C 。A、int和int B、int *和int C、int和int* D、int*和int*13、(多选)已知变量ld定义为:long ld;在下面关于指针p的定义中,不能通过p修改ld的有(B D )。A long *p=&ld;B long const *p=&ld;C long *const p=&ld;D const long *p=&ld;14、要使指针变量p指向2维数组A的第一个元素(0行0列元素),正确的赋值表达式是( D)。A p=A或p=A00

26、B p=A0或p=A00C p=A0或p=&A00D p=A或p=&A0015、已知函数f1的原形是:void f1(int *a,char *b);,变量v1,v2的定义是:int v1;char v2=”ABCDW”;,把v1和v2分别作为第一参数和第二参数来调用函数f1,正确的调用语句是(B)。 A.f1(v1,v2); B.f1(&v1,v2); C.f1(v1,&v2); D.f1(&v1,&v2);16、已知函数f1的原形是:void f1(int *a,long b);变量v1,v2的定义是:int v1;long v2;把v1和v2分别作为第一参数和第二参数来调用函数f1,正确

27、的调用语句是( B)。A f1(v1,v2); B.f1(&v1,v2); C.f1(v1,&v2); D.f1(&v1,&v2);17、设有下列定义:static int x,*p=&x,*q; scanf(“%d,%d”,p,q); 若输入3,4,则x的值为_ A _。 A、3 B、4 C、0 D、无法确定二、填空题1、若正常执行了如下语句:int m=1,2,3,4,5,6,7,8,*p1=m+3,*p2=&m6,*p3;p3=p1+3;coutendl*p1 *p2 *p3;则程序的输出是_4 7 75_。2、P为一指针变量,将P所指向单元的数据值加1并作为表达式的值的表达式是_+(*

28、p)_。3、要使用引用jr代表变量int j;jr应定义为 int & jr=j; 。4、 已知变量ld定义为:int ld;,现需要一个只能指向ld的指针p,且禁止通过p修改ld,则p应定义为 const int *p=ld; 。5、 P为一指针变量,取p所指向单元的数据作为表达式的值,然后使p指向下一个单元的表达式是 *p+ 。6、已知指针p为int型指针,且其指针值为5000,则p+3的指针值为 5012 。(注:sizeof(int)=4)7、若正常执行了如下语句:int m5=9,8,4,5,6,*p1=m,*p2=&m3,n;n=p2-p1;则n的值为_3_。 8、p1,p2都是字

29、符指针,p1指向字符串“ABCDEFGIJKLMN”,p2-p1的差为5,则执行coutp2;时显示在屏幕上的是 FGIJKLMN 。9、P为一指针变量,使p指向下一个单元,然后取该单元的数据作为表达式的值的表达式是 *+ p 。10、已知变量n定义为:int n;,现需要一个只能指向n的指针p,且允许通过p修改n,则p应定义为 int const *p=&n 。11、若要进行堆内存的申请及释放,则必须在开始的#include命令中使用_ _头文件。12、已知变量ld定义为:long ld;,现需要一个指向ld的指针p,但又禁止通过p修改ld,则p应定义为 long *const p=ld 。

30、13、P为一指针变量,取p所指向单元的数据作为表达式的值,然后使p指向下一个单元的表达式是(*p+ )。14、P1,p2都是字符指针,p1指向字符串“ABCDEFGIJKLMN”,p2-p1的差为9,则执行语句coutp2;时显示在屏幕上的是(FGIJKLMN)。15、已知指针p为int型指针,且其指针值为5000,则p+3的指针值为( 5012)。16、已知函数fa的原形是: int fa(int,char *);,pfa是指向fa的指针,则pfa的定义是(int (*pfa)(int,char*)=fa )17、已知函数fb的原形是:char *fb(const char *);,pfb是指向fb的指针,则pfb的定义是(int(*pfb)(const char *)=*fb )。18、要使用引用jr代表变量int j;jr应定义为(int & jr=j )。19、要使引用pr代表变量char *p;pr应定义为(int & pr=*p )。20、已知变量a,b定义为:int a=99,&b=a;则couta-1,b+1;的输出是(98,100 )。21、已知变量x,y定义为:int x=99,98,97,&y=x1;则couty-1,0 couts1endl; else if (strcmp(s1,s2)=0) couts1s2endl;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com