c试题
(完整版)C语言试题库(完整版)

C语言试题库一、单项选择第一章 C语言概述(1)一个C程序的执行是从A、本程序的MAIN函数开始,到MAIN 函数结束。
B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。
C、本程序的MAIN函数开始,到本程序的最后一个函数结束。
D、本程序文件的第一个函数开始,到本程序的MAIN函数结束。
(2)以下叙述正确的是A、在C程序中,MAIN函数必须位于程序的最前面。
B、 C程序的每行中只能写一条语句。
C、 C语言本身没有输入输出语句。
D、在对一个C程序进行编译的过程中,可发现注释中的拼写错误。
(3) C语言规定,在一个源程序中,MAIN主函数的位置是在:A、必须在最前面。
B、必须在系统调用的库函数的后面C、可以在任意位置。
D、必须在最后面(4)一个C程序是由:A、一个主程序和若干子程序组成B、函数组成C、若干过程组成D、若干子程序组成(5)以下叙述不正确的是:A、一个C源程序可由一个或多个函数组成B、一个C源程序必须包含一个MAIN函数C、 C程序的基本组成单位是函数D、在C程序中,注释说明只能位于一条语句的后面第二章数据类型、运算符与表达式(1)若x, i, j, k都是int型变量,则计算下面表达式后,x的值为x=( i=4, j=16, k=32)A、4B、16C、32D、52(2)下列四组选项中,均不是C语言键字的选项是A、define , IF, typeB、getc, char, printfC、include, scanf, caseE、 if, struct, type(3)下面四个选项中,均是不合法的用户标识符的选项是A、A,P_0,doB、float,1a0, _AC、b-a, goto, intD、_123, temp, INT(4)若有代数式3ae/bc,则正确的C语言表达式是A、a/b/c*e*3B、3*a*e/bcC、3*a*e/b*cD、a*e/c/b*3(5)已知各变量的类型说明如下:int k, a, b;unsinged long w=5;double x=1.42;则以下不符合C语言语法的表达式是A、x%(-3)B、w+=-2;C、k=(a=2,b=3,a+b)D、a+=a-=(b=4)*(a=3)第三章简单C程序设计(1)putchar函数可以向终端输出一个A、整型变量表达式值B、实型变量值C、字符串D、字符或字符型变量值(2)若x,y均定义为int型,z定义为double 型,以下合法的scanf函数调用语句是A、scanf(“%d%lx,%le”,&x,&y,&z);B、scanf(“%2d*%d%lf”,&x,&y,&z);C、scanf(“%x%*d%o”,&x,&y,&z);D、scanf(“%x%o%6.2f”,&x,&y,&z);(3)当输入数据的形式为:25,13,10<回车>时,以下程序的输出结果为main(){int x,y,z;scanf(“%d%d%d”,&x,&y,&z);printf(“x+y+z=%d\n”,x+y+z);}A、x+y+z=48B、x+y+z=35C、x+z=35D、不确定值(4) 以下能正确的定义整型变量a,b和c,并对它们赋初值为5的语句是A、int a=b=c=5;B、int a, b, c=5;C、a=5, b=5, c=5;D、a=b=c=5;(5) 若有以下定义,则正确的赋值语句是int a,b; float x;A、a=1, b=2;B、b++;C、a=b=5;D、b=int(x);第四章选择结构程序设计(1)能正确表示“当x的值在[1,10]和[200,210]的范围为真,否则为假”的表达式是A、(x>=1)&&(x<=10)&&(x.>=200)&&(x<=210)B、(x>=1)││(x<=10) ││(x.>=200) ││(x<=210)C、(x>=1) &&(x<=10) ││(x.>=200) &&(x<=210)D、(x>=1)││(x<=10)&& (x.>=200) ││(x<=210)(2)以下程序的运行结果是#include “stdio.h”main(){int a,b,d=241;a=d/100%9;b=(-1)&&(-1);printf(“%d,%d”,a,b);}A、6,1B、2,1C、6,0D、2,0(3)请阅读以下程序:main(){int a=5 , b=0 , c=0;if (a+b+c) printf(“* * *\n”); else printf(“$ $ $\n”); }以上程序。
c语言试题及答案

1、以下正确的说法是( B )(A) 用户若需要调用标准库函数,调用前必须重新定义(B) 用户可以重新定义标准库函数,若如此,该函数将失去原有含义(C) 系统根本不允许用户重新定义标准库函数(D) 用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调2、以下正确的函数声明形式是( A )(A) double fun(int x, int y)(B) double fun(int x; int y)(C) double fun(int x, int y);(D) double fun(int x,y);3、以下正确的函数形式是( D )(A) double fun(int x, int y) { z=x+y; return z;}(B) fun(int x,y) { int z; return z;}(C) fun(x,y) { int x,y; double z; z=x+y; return z;}(D) double fun(int x, int y) { double z; z=x+y; return z;}4、以下正确的说法是( A )在C语言中(A) 实参和与其对应的形参各占用独立的存储单元(B) 实参和与其对应的形参共占用一个存储单元(C) 只有当实参和与其对应的形参同名时才共占用存储单元(D) 形参是虚拟的,不占用存储单元5、若调用一个函数,且此函数中没有return语句,则正确的说法是( A )该函数(A) 没有返回值(B) 返回若干个系统默认值(C) 能返回一个用户所希望的函数值(D) 返回一个不确定的值6、以下不正确的说法是( B )C语言规定(A) 实参可以是常量、变量和表达式(B) 形参可以是常量、变量和表达式(C) 实参可以为任意类型(D) 形参应与其对应的实参类型一致7、以下正确的说法是( C )(A) 定义函数时,形参的类型说明可以放在函数体内(B) return后边的值不能为表达式(C) 如果函数值的类型与返回值类型不一致,以函数值类型为准(D) 如果形参与实参的类型不一致,以实参类型为准8、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( B )(A) 地址传递(B) 单向值传递(C) 由实参传给形参,再由形参传回给实参(D) 由用户指定传递方式9、以下程序有语法性错误,有关错误原因的正确说法是( C )void main(){int G=5,k;void prt_char();......k=prt_char(G);......}(A) 语句void prt_char(); 有错,它是函数调用语句,不能用void说明(B) 变量名不能使用大写字母(C) 函数说明和函数调用之间有矛盾(D) 函数名不能使用下划线10、C语言允许函数值类型缺省定义,此时该函数值隐含的类型是( B )(A) float型(B) int型(C) long型(D) double型11、C语言规定,函数返回值的类型是由( D )(A) return语句中的表达式类型所决定(B) 调用该函数时的主调函数类型所决定(C) 调用该函数时系统临时决定(D) 在定义该函数时所指定的函数类型所决定12、下面函数调用语句含有实参的个数为( B )func((exp1,exp2),(exp3,exp4,exp5));(A) 1(B) 2(C) 4(D) 513、以下错误的描述是( D )函数调用可以(A) 出现在执行语句中(B) 出现在一个表达式中(C) 做为一个函数的实参(D) 做为一个函数的形参14、以下程序的功能是计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。
C语言试题

C语言习题精选第一章、程序设计基本概念一.选择题1.C语言规定,必须用(C)作为主函数(A)function (B)include (C)main(D)stdio2.一个C程序可以包含任意多个不同名的函数,但有且仅有一个(B),一个C程序总是从(B)开始执行。
(A)过程(B)主函数(C)函数(D)include3.! C源程序是由(A)构成的(A)函数(B)函数和过程(C)超文本过程(D)子程序4.(A)是C程序的基本构成单位(A)函数(B)函数和过程(C)超文本过程(D)子程序5.! 下列说法正确的是(C)(A)一个函数的函数体必须要有变量定义和执行部分,二者缺一不可(B)一个函数的函数体必须要有执行部分,可以没有变量定义(C)一个函数的函数体可以没有变量定义和执行部分,函数可以是空函数(D)以上都不对6.下列说法正确的是(D)(A)main函数必须放在C程序的开头(B)main函数必须放在C程序的最后(C)main函数可以放在C程序的中间部分,即在一些函数之前在另一个函数之后,但在执行C程序时是从程序开头执行的(D)main函数可以放在C程序的中间部分,即在一些函数之前在另一些函数之后,但在执行C程序时是从main函数开始的7.下列说法正确的是(C)(A)在执行C程序时不是从main函数开始的(B)C程序书写格式严格限制,一行内必须写一个语句(C)C程序书写格式自由,一个语句可以分写在多行上(D)C程序书写格式严格限制,一行内必须写一个语句,并要有行号8.在C语言中,每个语句和数据定义是用(C)结束(A)句号(B)逗号(C)分号(D)括号9.下列字符串是标识符的是(A)(注:以字母或下划线开头)(A)_HJ (B)9_student (C)long(D)LINE 110.以下说法正确的是(C)(A)C语言程序总是从第一个定义的函数开始执行(B)在C语言程序中,要调用的函数必须在main()函数中定义(C)C语言程序总是从main()函数开始执行(D)C语言程序中的main()函数必须放在程序的开始部分11.(B)不是C语言提供的合法关键字()(A)switch (B)print (C)case(D)default12.C语言提供的合法关键字是(A)(A)break (B)print (C)funition(D)end13.C语言提供的合法关键字是(A)(A)continue (B)procedure (C)begin(D)append二.填空题1.一个C源程序至少包含一个(主函数),即(main())2.!一个函数由两部分组成,它们是(函数的说明部分)和(函数体)3.!函数体一般包括(变量的定义部分)和(执行部分)4.!函数体的范围是(最外层的一对大括弧内的部分)5.!C语言是通过(输入和输出函数)来进行输入和输出的6.!在C语言中,凡在一个标识符后面紧跟着一对圆括弧,就表明它是一个(函数)7.C语言的关键字都用(小写){大写或小字}8.!主函数名后面的一对圆括号中间可以为空,但一对圆括号不能(省)第二章、 C程序设计的初步知识一.选择题1.C语言中不能用来表示整常数的进制是(D)(A)十进制(B)十六进制(C)八进制(D)二进制2.在C语言中,反斜杠字符是(D)(A)\n (B)\t (C)\v (D)\\3.在ASCII代码表中可以看到每一个小写字母比它相应的大写字母的ASCII码(A)(A)大32 (B)大64 (C)小32 (D)小14.设d为字符变量,下列表达式不正确的是(C)(A)d=97 (B)d=‟a‟ (C)d=”a”(D)d=‟g‟5.10+‟a‟+1.5-567.345/‟b‟的结果是(B)(A)long (B)double (C)int (D)unsigned float6.!在C语言中,运算对象必须是整型数的运算符是(A)(A)% (B)/ (C)%和/ (D)**7.为表示关系x>=y>=z,应使用C语言表达式(A)(A)(y<=x)&&(y>=z) (B)(x>=y)AND(y>=z)(C)(x>=y>=z) (D)(x>=y)&(y>=z)8.若欲表示在if后a不等于0的关系,则能正确表示这一关系的表达式为(D)(A)a<>0 (B)!a (C)a=0 (D)a!=09.?下列常数中,合法的C常量是(A)(A)”x-y” (B)‟105‟ (C)‟Be‟ (D)7ff10.?下列常数中,合法的C常量是(A)(A)-0. (B)‟105‟ (C) …AB‟(D)3+511.下列常数中,合法的C常量是(A)(A)‟\n‟ (B)e-310 (C)‟DEF‟ (D)‟1234‟12.下列常数中,不合法的C常量是(B)(A)-0x2a1 (B)lg3 (C)‟[… (D)”CHINA”13.下列常数中,不合法的C常量是(B)(A)-0x3b1 (B)123e+2.3 (C)‟}‟ (D)6e+714.?下列符号中,可以作为变量名的是(C)(A)+a (B)12345e (C)a3B (D)5e+015.写出下面程序的输出结果(A)main(){int x,y,z;x=y=1;z=x++-1;printf(“%d,%d\t”,x,z);z+=-x+++(++y||++z);printf(“%d,%d”,x,z);}(A)2,0 3,-1 (B)2,1 3,0 (C)2,0 2,1 (D)2,10 ,116.写出下面程序的输出结果(D)main(){int x=40,y=4,z=4;x = y = =z;printf(“%d”,x);x = x = = (y-z);printf(“%d”,x);}(A)4 0 (B)4 1 (C)1 1 (D)1 017.写出下面程序的输出结果(A)main(){int I,j;I=16; j=(I++)+I;printf(“%d”,j);I=15;printf(“%d %d”,++I,I);}(A)32 16 15 (B)33 15 15 (C)34 15 16(D)34 16 1518.若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值为(C)(A)1 (B)2 (C)2.0 (D)2.519.?下列程序的执行结果是(B)#define sum 10+20main(){ int b=0,c=0;b=5;c=sum*b;printf(“%d”,c);}(A)100 (B)110 (C)70 (D)15020.表达式(double)(20/3)的值为(B)(A)6 (B)6.0 (C)2 (D)3二.填空题1.如果int I=3;则k=(I++)+(I++)+(I++),则k =(9),I=(6);2.?如果int I=3;则k=(I++)+(++I)+(I++),则k=(12), I=(6);3.?如果int I=3;则k=(++I)+(++I)+(I++),则k=(15),I=(6);4./如果int I=3;则k=(++I)+(++I)+(++I),则k=(18),I=(6);5.已知在ASCII字符集中,字母A的序号为65,下面程序的输出结果为(K,5)main(){char c=‟A‟; int I=10;c = c+10;I = c%I;Printf(“%c,%d\n”,c,I); }6.!C语言的数据类型有四大类,其分别为(基本数据类型),(构造类型),(指针),(空类型)。
C语言试题 (无答案)

C语言复习题一、选择题1. C语言中,if语句后的表达式()A.只能是关系表达式B. 只能是逻辑表达式C.只能是关系或逻辑表达式D. 可以是任何合法的表达式2 关于与switch语句配套的case语句中所使用的表达式,说法正确的是()。
A.可以是变量B. 可以是常量或变量C.只能是常量或常量表达式D.无论是何种表达式,只要在执行时有确定的值就行3.下列数组定义语句中,正确的是()A. int a[][]={1,2,3,4,5,6};B.char a[2][3]=‟a‟,‟b‟;C.int a[][3]={1,2,3,4,5,6};D.int a[][]={{1,2,3},{4,5,6}};4. 已定义int a[][3]={1,2,3,4,5,6,7,8,9};则a[1][2]的初值为()A. 2B. 4C. 6D. 85.以下正确的函数首部是()。
A. void fun(int x,int y)B. void fun(int x;int y)C. void fun(int x,y)D. void fun(x,y)6.下面语句中,:int *px = &a;其中指针变量的名字应该()A. *pzB. aC. pxD. &a7. 当调用函数时,实参时一个数组名,则向函数传递的是()A. 数组的长度B.数组的首地址C. 数组的每一个元素的地址D. 数组的每一个元素的值8.以下叙述正确的是()A. 全局变量的作用域一定比局部变量的作用域作用范围的B. 静态static类型变量的生存期贯穿于整个程序的运行期间C. 函数的形参都属于全局变量D. 未在定义语句中赋初值的auto变量和static变量的初值都是随机值9.假设已有#define M(r)r*r,则语句printf(“%d”,M(2+3));的执行结果是()A.11B.5C.25D.410. 已知int a=12;a的地址是2200,若想使整型指针变量p指向a,赋值正确的是()A &a=2200;B *p=12;C *p=2200D p=&a;11. 以下可用作C语言用户自定义标识符的一组是()A. Void, return, ifB. printf, include, fabsC. Max, _abs, MainD. 2abc, pay$, sum-1012. 下面定义字符型变量ch的语句不正确的是()A. char ch=‟\X2A‟;B. char ch=”c”;C. char ch=65;D. char ch=NULL;13. 以下选项中,与k=n++;完全等价的语句是()A. k=n;n=n+1;B. n=n+1;k=n;C. k=++n;D. k+=n+1;14. 已定义inta[][3]={1,2,3,4,5,6,7,8,9};,则a[1][2]的初值为()A. 2B. 4C. 6D. 815. 当调用函数时,实参是一个数组名,则向函数传递的是()A. 数组的长度B. 数组的首地址C. 数组的每一个元素的地址D. 数组的每一个元素的值16. 对for(表达式1;;表达式3),可理解为()A. for(表达式1;0;表达式3)B. for(表达式1;1;表达式3)C. 语法错误D. 仅执行循环一次17. 转换说明符%x的输出形式是()。
完整word版,C语言程序设计期末考试试题(含答案)

C语言程序设计期末考试试题及其答案一、单项选择题(本大题共20题,每题2 分,共40分)1、以下不是C语言的特点的是( )A、C语言简洁、紧凑B、能够编制出功能复杂的程序C、C语言可以直接对硬件进行操作D、C语言移植性好2、以下不正确的C语言标识符是( )A、ABCB、abcC、a_bcD、ab.c3、一个C语言程序是由( )A、一个主程序和若干子程序组成B、函数组成C、若干过程组成D、若干子程序组成4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( )A、有零个或多个输入B、有零个或多个输出C、有穷性D、可行性5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( )A、intB、floatC、doubleD、不确定6、在C语言中,char型数据在内存中的存储形式是( )A、补码B、反码C、源码D、ASCII码7、有如下程序,输入数据:12345M678<cR>后(<CR>表示回车),x的值是( ) 。
#include<stdio.h>main(){int x;float y;scanf("%3d%f",&x,&y);}A、12345B、123C、45D、3458、若有以下定义int a,b; float x,则正确的赋值语句是( )A、a=1,b=2B、b++;C、a=b=5D、b=int(x);9、以下程序的执行结果是( )#include<stdio.h>{int i=10,j=10;printf("%d,%d\n",++i,j--);}A、11,10B、9,10C、11,9D、10,910、巳知字母A的ASCII码是65,以下程序的执行结果是( )#include<stdio.h>main(){char c1='A',c2='Y';printf("%d,%d\n",c1,c2);A、A,YB、65,65C、65,90D、65,8911、下列运算符中优先级最高的是( )A、<B、十C、%D、!=12、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是( ) 。
C语言试题库(含答案)

D、print f("%c\n",class[2].name[0]);
标准答案:D
【5】设单精度变量f,g的值均为5.0,则下面的表达式中,使f为10.0的表达式是。
A、f+=g
B、f-=g+5
C、f*=g-5
D、f/=g*5
标准答案:A
if(ch=='/')w=a/b;
B、B)if(ch=='*')w=a*b;
else if(ch=='/')w=a/b;
if(ch=='+')w=a+b;
else if(ch=='-')w=a-b;
C、if(ch=='+')w=a+b;
else if(ch=='-')w=a-b;
if(ch=='*')w=a*b;
A、15
B、10
C、25
D、20
标准答案:A
【15】程序段的基本结构中,不包含()。
A、函数结构
B、循环结构
C、顺序结构
D、分支结构
标准答案:A
【1】执行语句scanf("%d,%d",&m,&n);使m和n的值分别为1和2,正确输入是。
A、1
B、2
C、1,2
D、12
标准答案:c
【3】若用数组名作为函数调用的实参,传递给形参的是()。
#include<stdio.h>
main()
{int i=1;
c语言试题
编程序
• 1、从键盘上输入两个整数,比较两个数的大小, 并输出较大者 • #include<stdio.h> • void main() • { float f1,f2,t; • scanf("%f%f",&f1,&f2); • if(f1>f2)printf("%f\n",f1); • else printf("%f\n",f2); • }
• 10.若有说明语句:int a[][3]={1,2,3,4,5,6}; 则a数组第一维的大小是 。 • A. 1 B. 2 C.3 D. 无确 定值 • 11. C语言允许函数值类型的缺省定义,此 时该函数值隐含的类型是______。 • A、float型 B、long型 C、int型 D、 double型
• 4、长度为10的int类型数组和长度为3 的 double类型数组,哪一个数组占用的内存 空间多(4) • 5、字符数组a)char a[]=―one‖;占多少内存 字节(5) • 6、如果ch<‗A‘或ch>‗Z‘,那么,表达式 ch>=‗A‘&& ch<=‗Z‘的值是(6)
• 7、编写C语句,交换a、b的值(7) • 8、为了使用库函数getchar(),必须在程序 中包含命令(8) • 9、设int numbers[5]={17,25,30,56,58};编 写C的for语句,将数组numbers中的每个元 素减去3。使用变量i跟踪下标。(9)
• • • • • • • • #include<stdio.h> void main() { int i,a[10],sum; for(i=0;i<10;++i)scanf(―%d‖,&a[i]); sum=a[0]; for(i=1;i<10;++i)if(a[i]>sum)sum=a[i]; printf(―sum=%d\n‖,sum); }
C语言试题
C语言试题C语言试题大全引导语:c语言相关的试题都会考察什么内容呢?以下是店铺整理的C语言试题大全,欢迎参考阅读!一、填空题(10分,第1小题4分,其余每空1分)1.设有下列登记表,请采用最佳方式定义一种数据类型来表示这些数据的集合。
其中,配偶姓名用spouseName表示,子女人数用children表示。
2.C语言中构造数据类型包括、、。
3.C语言中用_______表示逻辑值“假”,用________表示逻辑值“真”。
4.char*p[10];这条语句的含义是:。
二、判断下列问题描述正确与否,正确的打“√”,错误的打“×”。
(4分,每题1分)1.如果在程序中定义静态变量和全局变量时,未明确指明其初始值,那么它们可以在程序编译阶段自动被初始化为0值。
()2.在C语言中,可以用typedef定义一种新的数据类型。
()3在C语言中,实参与其对应的形参各占独立的存储单元。
()4.在C语言中,函数的定义可以嵌套。
()三、选择题:(10分,每题2分)1.若用数组名作为函数调用时的实参,则实际上传递给形参的是()。
A.数组的首地址B.数组的第一个元素值C.数组中全部元素的值D.数组元素的'个数2.判断两个字符串s1和s2相等,应当使用( )。
A.if (s1 == s2)B. if (s1 = s2)C.if (!strcmp(s1,s2))D. if (strcmp(s1,s2))3.在while(x)语句中的x与下面条件表达式等价的是:。
A. x!=0B. x==1C. x!=1D. x==04.二维数组a有m行n列,则在a[i][j]之前的元素个数为()。
A. j*n+iB. i*n+jC. i*n+j-1D. i*n+j+15.设有声明语句:int a=1,b=0;则执行以下语句后输出为:。
switch (a){case 1:switch (b){case 0:printf("**0**");break;case 1:printf("**1**");break;}case2: printf("**2**");break;}A.**0**B.**0****2**C.**0****1****2**D.有语法错误四、写出下列程序的运行结果。
C语言全国试题(五-循环结构程序设计)
填空题(全国二级C 2008C2-8)
若有定义:int k;,以下程 序段的输出结果是__#_#_2_#_#_4__。
for (k=2; k<6; k++,k++ ) printf (“##%d”,k);
选择题(全国二级C 2007Q1-22)
C 有以下程序,程序的运行结果是 。
#include <stdio.h>
{ int i;
for ( i=1 ; i<=40; i++)
{ if (i++%5==0)
if (++i%8==0)printf("%d ",i); }
printf("\n"); }
A) 5
B) 24
C) 32
D) 40
选择题(全国二级C 2005Q1-27)
设变量已正确定义,则以下能正确
计算f=n!的程序段是 D 。
有以下程序段,且变量已正确定义和赋值
for ( s=1.0,k=1;k<=n; k++ ) s=s+1.0/(k*(k+1));
printf(“s=%f\n\n”,s); 请填空,使下面程序段的功能与之完全相同
s=1.0; k=1; while ( ___k_<_=_n__ ) { s=s+1.0/(k*(k+1)); __k_+_+__ ; } printf(“s=%f\n\n”,s);
以下程序的功能是计算: s=1+12+123+1234+12345。请填空。 main( ) { int t=0, s=0, i; for(i=1; i<=5; i++)
C 试题及答案
C++程序设计模拟试卷(一)一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1. 编写C++程序一般需经过的几个步骤依次是()A. 编辑、调试、编译、连接B. 编辑、编译、连接、运行C. 编译、调试、编辑、连接D. 编译、编辑、连接、运行答案:B解析:(P21)经过编辑、编译、连接和运行四个步骤。
编辑是将C++源程序输入计算机的过程,保存文件名为cpp。
编译是使用系统提供的编译器将源程序cpp生成机器语言的过程,目标文件为obj,由于没有得到系统分配的绝对地址,还不能直接运行。
连接是将目标文件obj转换为可执行程序的过程,结果为exe。
运行是执行exe,在屏幕上显示结果的过程。
2. 决定C++语言中函数的返回值类型的是()A. return语句中的表达式类型B. 调用该函数时系统随机产生的类型C. 调用该函数时的主调用函数类型D. 在定义该函数时所指定的数据类型答案:D解析:(P51)函数的返回值类型由定义函数时的指定的数据类型决定的。
A项的表达式的值要转换成函数的定义时的返回类型。
3. 下面叙述不正确的是()A. 派生类一般都用公有派生B. 对基类成员的访问必须是无二义性的C. 赋值兼容规则也适用于多重继承的组合D. 基类的公有成员在派生类中仍然是公有的答案:D解析:(P136)继承方式有三种:公有、私有和保护。
多继承中,多个基类具有同名成员,在它们的子类中访问这些成员,就产生了二义性,但进行访问时,不能存在二义性。
赋值兼容规则是指派生类对象可以当作基类对象使用,只要存在继承关系,所以单继承或多继承都适用。
基类中的公有成员采用私有继承时,在派生类中变成了私有成员,所以D项错误。
4. 所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是()A. 类B. 对象C. 函数体D. 数据块答案:A解析:(P39)类即数据和操作的组合体,数据是类的静态特征,操作是类具有的动作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.在C++中,函数的参数有两种传递方式,它们是值传递和_____。
2.当一个成员函数被调用时,该成员函数的_____指向调用它的对象。
3.在基类和派生类中,派生类可以定义其基类中不具备的数据和操作。
对两个有相同名字的数据成员进行访问时,如果没有虚函数_____,对此数据成员的访问将出现歧义。
4.拷贝构造函数使用_类的引用____作为参数初始化创建中的对象。
5.在公有继承的情况下,基类数据成员在派生类中的访问权限__私有___。
6.描述命题"A小于B或小于C"的表达式为____。
7.用new申请某一个类的动态对象数组时,在该类中必须能够匹配到首地址_____构造函数,否则应用程序会产生一个编译错误。
8.静态数据成员在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象_____。
9.为了避免可能出现的歧义,C++对if…else语句配对规则规定为:else总是与_____配对。
10.设"int a=3,b=4,c=5;",表达式"(a+b)>c&&b==c"的值是_____。
11.面向对象的程序设计有四大特征,它们是抽象、封装、继承_____、_派生____。
12.在C++中,定义重载函数时,应至少使重载函数的参数个数或参数类型_____;在基类和派生类中,成员函数的覆盖是指_____。
13.构造函数与析构函数除功能不同外,在定义形式上,它们的区别还包括构造函数名与类名相同,而析构函数名是在类名前加一个~、_____、_____。
14.动态联编要满足两个条件,它们是_____、_____。
15.在C++类中,有一种不能定义对象的类,这样的类只能被继承,称之为_____,定义该类至少具有一个_____。
16.在C++类中,const关键字可以修饰对象和成员函数,const对象不能_____,const成员函数不能_____。
17.举出C++中两种用户自定义的数据类型:_____、_____。
18. C++中没有字符串类型,字符串是通过_____来表示的,每一个字符串都有一个结尾字符_____。
19. C++中没有输入输出语句,输入输出是通过_____实现的,写出一条打印整型变量n的输出语句:_____。
20.举出C++中两种代码复用的方式:_____、_____。
1.在C++中,用数组、指针、和作为函数参数,能够将参数值带回。
2.在C++中,虽然友元提供了类之间数据进行访问的一种方式,但它破坏了面向对象程序设计的特性。
3.在C++中,构造派生类对象时,总是先从的初始化开始的。
4.拷贝构造函数是在用一个对象初始化另一个对象时被调用,系统缺省的拷贝构造函数的工作方法是————5.类是用户定义的类型,具有类类型的变量称作--————。
6.在5个运算符"*(乘号)、<=、!=、!、&&"中,优先级由高到低的顺序是!、*(乘号)、<=、!=、&&。
7.在C++中,类定义一般用class关键字,不过用struct关键字也可以定义类,它们定义类的区别在于在缺省访问权限时,struct 类成员是公有的,而class 类成员是私有的。
8.静态的成员函数没有隐含的this指针,所以,它们只能访问静态的数据成员。
9.与"(!a==0)"等价的C++表达式是(a>0||a<0)或(a)。
10.若a=6,b=4,c=2,则表达式"!(a-b)+c-1&&b+c/2"的值是1。
11.在面向对象的程序设计中,通过_封装_实现数据隐藏;通过_继承_实现代码的复用。
12.在下面的程序段中,语句"const int* c=&a;"和语句"int* const d=&b;"的含义分别是const int a=78;int b=28;const int* c=&a;int* const d=&b;13.用new申请有10个元素的指针数组str,假定数组元素是指向字符型数据的指针,该C++语句为14.在C++中构造一个对象时,其数据成员在构造函数中初始化。
对于内嵌的对象、——、——数据成员需要在构造函数的成员初始化列表中初始化。
15.在类的定义中,说明为protected的数据成员称为保护成员。
保护数据成员具有双重作用:对于其派生类而言,——;而对于其外部的程序而言,——16.C++中有两种数据类型:——和——可以使用——修饰符。
17.举出C++中两种流程控制语句if语句、for循环语句。
18.预编译指令由三种,它们是:文件包含、宏定义和条件编译。
19.C|++中,对象保存在内存中,栈内存是自动分配和释放的,而堆存需要用户自己申请和释放。
20.在C++函数中,可用return语句带回一个值。
如果有多个返回值,可用指针、引用等带回。
清华大学计算机系--- C++期末考试题答案一、填空题(25小题,共50分)(以下每小题1分,共10分)1.在C++中,函数的参数有两种传递方式,它们是值传递和——2.当一个成员函数被调用时,该成员函数的——指向调用它的对象。
3.在基类和派生类中,派生类可以定义其基类中不具备的数据和操作。
对两个有相同名字的数据成员进行访问时,如果没有—,对此数据成员的访问将出现歧义。
4.拷贝构造函数使用——作为参数初始化创建中的对象。
5.在公有继承的情况下,基类数据成员在派生类中的访问权限——。
6.描述命题"A小于B或小于C"的表达式为——。
7.用new申请某一个类的动态对象数组时,在该类中必须能够匹配到——构造函数,否则应用程序会产生一个编译错误。
8.静态数据成员在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象——9.为了避免可能出现的歧义,C++对if…else语句配对规则规定为:else总是与——配对。
10.设"int a=3,b=4,c=5;",表达式"(a+b)>c&&b==c"的值是——11.面向对象的程序设计有四大特征,它们是抽象、封装、____,_____12.在Visual C++中,定义重载函数时,应至少使重载函数的参数个数或参数类型_____;在基类和派生类中,成员函数的覆盖是指派生类成员函数与在基类被覆盖的成员函数名、参数个数、参数类型和返回值类型均相同13.构造函数与析构函数除功能不同外,在定义形式上,它们的区别还包括构造函数名与类名相同,而析构函数名是在类名前加一个____,_______,________。
14.动态联编要满足两个条件,它们是_________,__________.15.在C++类中,有一种不能定义对象的类,这样的类只能被继承,称之为_______,定义该类至少具有一个______.16.在C++类中,const关键字可以修饰对象和成员函数,const对象不能______,const成员函数不能______17.举出C++中两种用户自定义的数据类型:_____,_____8.C++中没有字符串类型,字符串是通过______来表示的,每一个字符串都有一个结尾字符_____ 19.C++中没有输入输出语句,输入输出是通过_____实现的写出一条打印整型变量n的输出语句:___ 20.举出C++中两种代码复用的方式:_____,______题号1 2 3 4 5 6 7 8 9 10 11 12 13 14 15答案a b b c c d d c a d b d a d d1. 假定一个类的构造函数为a ( int aa, int bb) { a = aa; b = bb; },则执行a x(4,5);语法后,x.a和x.b的值分别为( ).a.4和5b.5和4c.4和20d.20和52. 假定ab为一个类,则执行ab x;语句时将自动调用该类的( ).a.有参构造函数b.无参构造函数c.拷贝构造函数d.赋值重载函数3.c++语言建立类族是通过( ).a.类的嵌套b.类的继承c.虚函数d.抽象类4. 执行语句序列ofstream outf("salary.dat");if (…) coutc++中,数据封装要解决的问题是( ).a.数据规范化排列b.数据高速转换c.避免数据丢失d.切断了不同模块之间的数据的非法使用8. 如果class类中的所有成员在定义时都没有使用关键字public,private或protected,则所有成员缺省定义为( ).a.publicb.protectedc.privated.static9. 设置虚基类的目的是( ).a.消除两义性b.简化程序c.提高运行效率d.减少目标代码10. 关于内联成员函数,以下说法错误的是:( ).a. 为了提高运行时的效率,对于较简单的函数可以声明为内联形式.b. 内联函数体中不要有复杂结构(如循环语句和switch语句).c. 将函数体放在类的声明中或使用inline 关键字可声明内联成员函数.d. 内联函数的声明可以不必出现在内联函数第一次被调用之前.11. 关于构造函数,以下说法错误的是:( ).a. 构造函数的作用是在对象被创建时使用特定的值构造对象,或者说将对象初始化为一个特定的状态.在对象创建时由系统自动调用.b. 基类的构造函数可以被派生类所继承.c. 如果程序中未声明,则系统自动产生出一个缺省形式的构造函数.d. 允许为内联函数,重载函数,带缺省形参值的函数.12. 关于析构函数,以下说法错误的是:( ).a. 完成对象被删除前的一些清理工作.b. 在对象的生存期结束时系统自动调用它,再释放此对象所属的空间.c. 如果程序中未声明析构函数,编译器将自动产生一个缺省的析构函数.d. 析构函数可以带一个或多个参数.13. 关于c++标识符的作用域与可见性,以下说法错误的是:( ).a. 在同一作用域中,可以声明同名的标识符.b. 块作用域中声明的对象是动态生存期的对象(习惯称局部生存期对象).在文件作用域中声明的对象具有静态生存期.c. 如果某个标识符在外层中声明,且在内层中没有同一标识符的声明,则该标识符在内层可见.d. 对于两个嵌套的作用域,如果在内层作用域内声明了与外层作用域中同名的标识符,则外层作用域的标识符在内层不可见.14. 关于c++的友元与友元函数,以下说法错误的是:( ).a. 友元是c++提供的一种破坏数据封装和数据隐藏的机制.可以使用友元函数和友元类.为确保数据的完整性及封装,应尽量不用或少用友元.b. 友元函数是在类声明中说明的非成员函数,在它的函数体中能够通过对象名访问private 和protected成员.c. 通过将一个模块声明为另一个模块的友元,一个模块能够引用到另一个模块中本是被隐藏的信息.d. 友元函数访问对象中的成员不必通过对象名.15. 关于c++的运算符重载,以下说法错误的是:( ).a. 只能重载c++语言中已有的运算符,不可臆造新的.b. 可以重载为类成员函数.也可以重载为友元函数.c. 经重载的运算符,其操作数中至少应该有一个是自定义类型.d. 可以改变原运算符的优先级和结合性.也可以改变操作数个数.请将其代码填在题后的括号内。