资源描述
word第一局部:选择题40分,2分/小题第一章 程序设计概述 第二章 C语言概述1、下面关于C语言的表示中,正确的答案是A.每行只能写一条语句 B. 程序中必须包含有输入语句C. main函数必须位于文件的开头 D. 每条语句最后必须有一个分号2、下面关于C语言的表示中,错误的答案是A.假如一条语句较长,也可分写在下一行上 B. 构成C语言源程序的根本单位是表达式C. C语言源程序、小写字母是有区别的D. 一个C语言源程序可由一个或多个函数组成3、下面表示错误的答案是 A. 所有语句都必须以分号;完毕B. 语句是构成C语言源程序的根本单位C. C语言源程序必须包含一个main()函数D. 注释局部在程序编译和运行时不起作用4、C程序中main函数的位置A. 必须位于程序文件的最前面B. 必须在系统库函数后面C. 可以在自定义函数后面 D. 必须位于程序文件的最后面5、C语言的函数体由括起来A. ( )B. C. D. /* */6、关于C语言的表示中,不正确的答案是A. C程序可由一个或多个函数组成 B. C程序必须包含一个main()函数C. C程序的根本组成单位是函数 D. 注释说明只能位于一条语句的后面7、一个程序的执行是从A.本程序的第一个函数开始,到最后一个函数完毕B. 本程序的main函数开始,到main函数完毕C. 本程序的main函数开始,到最后一个函数完毕D. 本程序的第一个函数开始,到main函数完毕8、结构化程序设计的三种根本结构是A.函数结构、分支结构、判断结构 B. 函数结构、嵌套结构、平行结构C. 顺序结构、分支结构、循环结构 D. 分支结构、循环结构、嵌套结构9、调试程序是指对程序进展A.编辑 B. 编译 C. 查错和排错 D. 连接10、C语言中,复合语句的构成是将一系列语句置于A. begin与end之间 B. 一对圆括号“ 之间C. 一对花括号“ 之间 D. 一对方括号“ 之间11、构成C语言源程序的根本单位是A.语句 B. 过程 C. 表达式 D. 函数12、以下表示正确的答案是 。A.注释局部可单独占用一行,也可跟在语句的后面B.函数体定界符也可用一对方括号 D.由于C语言源程序都是从main()函数开始执行,所以main()函数必须位于程序文件最前面13、 是结构化程序设计应遵循的原如此。B.不可使用嵌套根本控制结构表示复杂程序逻辑C.应使用顺序、选择、循环三种根本控制结构表示程序逻辑D.为提高程序效率,应尽量使用goto语句14、描述一个算法可以有不同的方式,常见的有 。A.汇编语言、高级语言和低级语言 B.自然语言、流程图和伪代码C.机器语言、汇编语言和高级语言 D.高级语言、自然语言和伪代码15、C源程序的编译是指对源程序A.进展录入与编辑 B.生成以二进制代码形式表示的目标程序 第三章 数据类型、运算符与表达式1、在C语言中,正确的用户标识符是A.2、C语言的根本数据类型包括A.整型、实型、字符型 B. 整型、实型、字符型、逻辑型C. 整型、字符型、逻辑型 D. 整型、实型、逻辑型3、以下是正确的常量A. E-5B. 1E5.1C. a12D. 32766L4、以下是正确的变量名A. a.beeB. p11C. intD. p_115、以下是正确的字符常量A. “cB. /C. WD. “32a6、以下是不正确的字符串常量A. abcB. “1212C. “0D. “ “7、C语言的整型数据在存中的存储形式是A.原码 B. 反码 C. 补码 D. ASCII码8、以下是正确的浮点数A. e3B. .62C. 2e4.5D. 1239、如下不属于C语言关键字的是A. continueB. integerC. staticD. signed10、C语言的字符型数据在存中的存储形式是A. 原码 B. 补码 C. 反码 11、在C语言中,变量所分配的存空间大小是A. 由变量的类型决定 B. 由用户自己决定 C. 任意的 D. 均为两个字节12、关于C语言数据类型,表示正确的答案是 A.变量使用前应定义相应的数据类型 B.不允许使用空类型 13、Turbo C中,根本数据类型存储空间长度的排列顺序是 A.charintlong intfloatdouble B.char=intlong intfloatdouble C.charintlong intfloat=double D.char=intlong int=y=500的C语言表达式为A. y=500)B. y=500)C. 800=y=500D. y=500)51、假如有定义:int x=3,y=4;如此表达式!x|y的值为A. 1 B. 0 C. 3 D. 452、假如有定义:int i=7,j=8;如此表达式i=j|ij的值为A. 1 B. 变量i的值 C. 0 D. 变量j的值53、假如希望当a的值为奇数时,表达式的值为“真,a的值为偶数时,表达式的值为假。如此不能满足要求的表达式是A. a%2=1B.!(a%2=0)C.!(a%2)D.a%254、假如有定义:int x=3,y=4,z=5;如此值为0 的表达式是A. x&yB.x=yC.x|y+z&y-zD.!(xy)&!z|1)55、假如已定义:int a=1,b=2,c=2; 如此表达式 (a+b)/1.0/c的值是 。56、C语言中,能正确表示条件10x20的逻辑表达式是A. 10x10|x10&10)&(x20)57、以下运算符中优先级最低的是A. D.|58、double a=5.2;如此正确的赋值表达式是A. a+=a-=(a=4)*(a=3)B.a=a*3=2C.a%3D.a=double(-2)59、char a=R;如此正确的赋值表达式是A. a=(a+)%4B.a+2=3C.a+=256- D.a=07860、inta=R;如此正确的表达式是A. a%10B.a=int(3e2)C.2*a=a+D.a=a+a=a+361、设有语句float x=3.0,y=3.0;使x值为6.0的表达式是A. x*=y-4B.x*=yC.x=y+4D.x+=y62、假如有定义:float x=3.5,int z=8;如此表达式x+z%3/4的值为A. 3。75 B. 3.5 C. 3 D. 463、假如已定义:int x,y; 如此如下不能正确表示数学关系式|x-y|5的表达式是 A.(x-y)5|(x-y)5 C.(x-y)5 D.(x-y)*(x-y)2564、假如有定义:int a=2,b=3;float x=3.5,y=2.5;如此表达式(float)(a+b)/2+(int)x%(int)y的值是A. 3.5 B. 3.0 65、假如有定义:int b=7;float a=2.5,c=4.7;如此表达式a+(b/2*(int)(a+c)/2)%4的值是A. 66、以下程序的运行结果是#define M(a,b) a*bmain() int x=3,y=2,s1,s2; s1=M(x+y,x-y); s2=M(x-y,x+y);printf(%d,%dn,s1,s2);A. -1,7B.5,5C.7,-1D.5,-567、以下表示中,正确的答案是A. “#define PRICE=30定义了与30等价的符号常量PRICEB.预编译处理命令行都必须以“#开头C. 程序中使用带参的宏时,参数类型要与宏定义时一致D. 宏名只能包含大写字母和数字字符68、以下表示中,正确的答案是A. 宏展开不占用运行空间,只占用编译时间B. 预编译处理命令行必须以分号完毕C. 一个源程序只能有一个预编译处理命令行D. 使用带参数的宏定义时,应该说明每个参数的数据类型69、以下的表示中不正确的答案是A. 宏展开不占用运行时间,只占用编译时间 B. 宏名无类型C. 宏名必须用大写字母表示 D. 预处理命令行都必须以#号开始70、以下程序运行后,屏幕输出为#define MIN(a,b) (a)(b)?(a):(b)main() int x=2,y=3,z; z=2*MIN(x,y);printf(%d,z);A. 71、如下#include命令中,正确的答案是A. #inclue string.hB.#include string.hC.#include (string.h)D.#include72、下面程序的输出结果是 #include #define ONE 1 #define TWO ONE+1 #define THREE TWO+1void main () printf(%dn,THREE-ONE);A. 产生错误 B. 1 C. 2 D. 373、如下表示错误的答案是 。A.预处理命令行都必须以#号开始C.C语言源程序中参加一些预处理命令是为了改良程序设计环境,提高编程效率D.宏定义可出现在源程序中任意适宜的位置,且必须在行末加分号74、以下程序的运行结果是 #define ADD(x) x+xmain() int m=1,n=2,k; k=ADD(m+n)*3;printf(%d,k);A. 75、下面程序的运行结果是#define M 10#define S(x) x*x#define F(x) (x*x)main() int n1,n2; n1=1000/S(M); n2=1000/F(M); printf(%d,%dn,n1,n2);A. 10,10B.1000,10C.10,1000D.1000,100076.在对无符号数的位运算中,操作数左移一位相当于。77.假如有定义:int a=20,b=28,c;如此执行语句c=(ab)=a|b;第四章 程序控制结构1、如下程序段的运行结果是 。 int a=6,b=5;if (ab+) printf(True: %dn,+a); else printf(False: %dn,b+);A.True: 7 B.False: 6 C.False: 5 D.True: 62、假如已定义 int a,b,c,k; 如下程序段与语句k=(ab?(ac?1:0):0); 功能等价的是。A.if(ab) & (ac) k=1; else k=0; B.if(ab) | (ac) k=1; else k=0; C.if(ab) k=0; else if(ac) k=1; else k=0; D.if(ac) k=1; else if(ab) k=0; else k=0;3、如下程序段的运行结果是 。int x;if(x=3) printf(%dn,x+);else if(x3) printf(%dn,x+2);else printf(%dn,x+3);4、如下 不能当作一条语句。A.if(k0) m=1; else n=2; B.m=1,n=2,k=3; C.if(k0); D.if(k=0) m=1; n=2;5、以下程序段运行时,假如从键盘输入10,如此输出结果是int a;scanf(“%d,&a);if(a+10) printf(“%dn,a);else printf(“%dn,+a);A. 6、以下程序的运行结果是void main() int x,y=1,z; z=-1; if(z=0) z=-z; else x=y0?3:5;printf(“%dn,x);A. 7、对于整型变量x,下属if语句与赋值语句:x=x%2=0?1:0;不等价。A. if(x%2!=0) x=0;else x=1;B.if(x%2) x=1;else x=0;C. if(x%2=0) x=1;else x=0;D.if(x%2=1) x=0;else x=1;8、以下程序段运行的结果是int a,b,c,x; a=b=c=0;x=15; if(!a) x-; else if(b); if(c) x=3; else x+=4; printf(%dn,x);A. 9、假如有定义:int a=1,b=2,c=3;如此执行以下程序段后a,b,c的值分别为if(a6) printf(“%dn,n);else printf(“%dn,+n);A. 16、下面关于switch语句的表示中,错误的答案是A. case后面的表达式可以是关系表达式语句是多分支选择语句C. 每一个case后面的值必须互不一样,否如此会出现矛盾的现象D. 在执行一个case分支后,可用一个break语句使流程跳出switch语句17、假如有定义:int a=1,b=2,c=3;如此以下程序段运行后c的值为if(ab)c=a*b;elsec=a-b;A. 18、假如有定义:int x;以下不会产生死循环的是A. for(;(x=getchar()!=n;);B.while(1)x+;C.for(i=10;i+);D.for(;x+=1);19、在循环语句的循环体中,break语句的作用是A. 暂停程序的运行 B. 完毕本次循环C. 继续执行break语句之后的循环体各语句D. 提前完毕循环,接着执行该循环后续的语句20、循环语句的循环体中,continue语句的作用是 。A.继续执行continue语句之后的循环体各语句 B.完毕本次循环,并跳出循环21、以下程序段运行后,循环体中的“count+=2;语句运行的次数为int i,j,cuont=0;for(i=1;i=4;i+) count+=2; printf(“%d,count);A. 4次 B. 10次 C. 16次 D. 20次22、在c语言中while循环和do-while循环的主要区别是A. do-while循环体可以使用break语句,while循环体不能使用break语句的循环体至少无条件执行一次,while的循环体不是循环体可以使用continue语句,while循环体不能使用continue语句的循环体至少无条件执行一次,do-while的循环体不是23、以下程序段运行后,循环体运行的次数为int i=0,x;for(;i10;i+) x=x+i;A. 10B.0C.1D. 无限24、以下程序段运行后变量n的值为int i=1,n=1;for(;i3;i+)continue;n=n+i;A. 25、有以下程序:void main() int i; for(i=0;i3;i+) switch(i) case 1:printf(“%d,i); case 2:printf(“%d,i); case 3:printf(“%d,i);执行后输出的结果是A. 11122 B. 01222 C. 013020 D. 12026、以下程序的运行结果是void main() int sum=0,item=0; while(item=6) break;printf(“%dn,sum);A. 27、以下程序的运行结果是voin main() int sum=0,item=0; while(item5) item+;if(item=2)continue; sum+=item;printf(“%dn,sum);A. 28、以下程序段执行后变量sum的值为int i,j=1,sum=0;for(i=1,i=3,i+) sum+=j; j+;A. 29、以下程序的运行结果是#includemain() int y=10; do y-; while(-y); printf(%dn,y-);A. 30、如下程序段运行时,语句k+=2; 执行的次数是 。 int i,k=0; for(i=7;i3;i-,i-) k+=2;31、如下程序段运行后m的值为 。int i,j,m=0;for(i=1;i=3;i+) for(j=2;j=5) sum+=2; 33、如下程序段执行时,循环体的执行次数是 。int i=7,a=0;for (i+;i=1; i-) switch(i) case 1: printf(%d, i); break; case 2: printf(%d, i); default : printf(%d, i); 35、如下程序段的运行结果是 。int a=0, i=1;while(i5);for(i=0;i2);for(i=0;i5;i+) printf(%d,ai);A. 11 2 3 4 5B.1 2 3 4 5C.11 12 13 14 15D.11 12 3 4 510、下面关于数组的表示中,正确的答案是A. 数组必须先定义,然后使用 B. 定义数组时,可不加类型说明符C. 定义数组后,可通过赋值运算符“=对该数组名直接赋值D. 在数据类型中,数组属于根本类型11、以下程序段的运行结果是int i=0,a=6,5,3,7;do ai+;while(ai4);for(i=0;i4;i+) printf(%d,ai);A. 12、有如下程序段:int t3=1,2,3,4,5,6,7,8,9,10,11,12;printf(%dn,t21);如此执行该程序段后输出结果是A. 8 B. 7 C. 4 D. 213、以下程序段运行后s的值是int a33=1,2,3,1,2,3,1,2,3;int i,j,s=1;for(i=0;i3;i+)for(j=i;j3;j+) s*=aij;A. 14、以下不能对二维数组arr进展正确初始化的语句是A. int arr23=0;B.int arr3=1,2,3,4,5;C.int arr23=1,2,3,4,5,6;D.int arr23=1,3,4,5;15、假如有定义:int a34=1,2,0,1,2,3;如此a11的值为A. 0 B. 1,2 C. 1 D. 316、假如有定义:int a33;如此表达式&a21-a的值为A. 7 B. 8 C. 6 D. 917、假如有定义:int i=0,x=0;int a33=1,2,3,4,5,6,7,8,9;如此以下程序段运行后x的值为for(;i3;i+) x+=ai2-i;A. 18、假如有定义int a23;如此对数组元素的非法引用的是A. a01/2B.a11C.a4-40D.a0319、以下数组定义中,正确的答案是A. int a2=1,2,3,4,5;B.int a2=0,;C.int a22=1,2,3;D.int a=1,2,3,4;20、假如有定义int a3=1,2,3,4,5,6,7,8,9;如此表达式sizeof(a)/sizeof(a0)的值为A. 3 B. 4 C. 5 D. 921、以下程序段运行后s的值是int a33=1,2,3,4,5,1,2,3,4;int i,j,s=1;for(i=0;i3;i+)for(j=i+1;j3;j+) s*=aij;A. 22、设已定义:int a4=0,0;如此如下描述错误的答案是A. 数组a的每个元素都可得到初值0 B. 二维数组a的第一维大小为1C. 数组a的行数为1 D. 只有元素a00和a01可得到初值0,其余元素均得不到初值023、如下程序段的运行结果是 。int a=1,3,4,6,9,i,x=1; for(i=0;i3;i+) x+=ai+1;printf(%dn,x);24、如下程序段的运行结果是 。 int a =8,7,6,5,4,3,2,1,i,sum=0;for(i=0;i8;i+)if(i=3) sum+=ai;else sum-=ai;printf(%dn,sum);25、如下程序段的运行结果是 。 int a =0,1,2,3,4,5,6,7,8,9,i=0,t;while(i=7) t=ai; ai=ai+2; ai+2=t; i+=2; for(i=0;i10;i+) printf(%d,ai);26、如下程序段的运行结果是 。 int a=2,4,6,8,10,i; for(i=0;i4;i+) ai=ai+1+2; for(i=0;i5;i+) printf(%d ,ai);A.4 6 8 10 10 B.4 6 8 10 12 C.6 8 10 12 10 D.6 8 10 12 1427、如下程序段的运行结果是 。 int a=6,5,4,3,2,1,i; for(i=0;i6;i+) if(i%2) ai+=2; for(i=0;i6;i+) printf(%d ,ai);A.6 7 4 5 2 3 B.8 5 6 3 4 1 C.8 7 6 5 4 3 D.6 7 6 5 4 528、以下程序段运行的结果是 。int a3=1,2,3,4,5,6,7,8,9;printf(%dn,a12);29、假如有定义: int a22;如此表达式sizeof(a)的值为 。30、假如有定义: int a3=1,2,3,4,5; 如此以下描述中正确的答案是 。A.数组a包含5个元素 B.数组a的第一维大小可以取任意值 C.数组a的行数为5 D.元素a02的初值为3第六章 指针1、设有以下语句,如此是对a数组元素的不正确引用,其中0=i10。 int a10=0,1,2,3,4,5,6,7,8,9,*p=a;A. ap-aB.*(&ai)C.piD.*(*(a+i)2、假如有定义int *p1,*p2;如此指针变量p1、p2不能进展运算的是A. B. = C. + D. -3、以下关于指针概念的表示中,错误的答案是A. 一个指针变量只能指向同一类型的变量 B. 一个变量的地址称为该变量的指针C. 两个同类型的指针变量可以作加减运算 D. 任何指针变量都可以与空指针NULL进展比拟4、以下程序段运行后*p+3的值为char a=good;char *p;p=a;A. dB.0C.存放d的地址D.05、以下程序段运行后*(+p)的值为char a5=work;char *p;p=a;A. wB. 存放w的地址 C. oD. 存放o的地址6、假如有定义:int *p,a=4;p=&a;如此以下均代表地址的是A. a,pB.&a,pC. &a,*pD.a,*p7、假如有说明语句:double *p,a;如此能通过scanf语句正确给输入项读入数据的程序段是A. *p=&a;scanf(“%lf,p);B.*p=&a;scanf(“%lf,*p);C. p=&a,scanf(“%lf,*p);D.p=&a;scanf(“%lf,p);8、假如已定义:int x=12;对int *p=&x;和*p=x;这两条语句的正确理解是A. 语句是在对指针变量p定义时初始化,使p指向x;而语句是将变量x的值赋给指针变量p所指向的变量B. 语句和中的*p含义一样,都表示给指针变量赋值C. 语句是在对指针变量p定义时初始化,使p指向x;而语句是将变量x的值赋给指针变量pD. 语句和的执行结果都是把变量x的地址赋给指针变量p9、下面语句正确的答案是A. int *p;*p=20; B.char *s=abcdef;printf(“%sn,s);C. char str=abcd;str+;D.char str=a,b,c;printf(“%s,str);10、假如有定义int a6,*p=a;如此以下不能表示数组元素a5的是A. *(a+5)B.*p+5 C. p5D.*(p+5)11、假如已定义:int a=5,*p;且p=&a;如此以下表示中不正确的答案是A. &(*p)=&aB.*(&a)=aC. &(*p)=pD.*(p+)=a+12、假如有以下程序段,如此*p+的值是int *p;int a=1,2,3,4,5,6,7,8,9,10,11,12;p=a+3;A.2 B. 3 C.5 D.413、以下程序段的运行结果是int x=2,3,4,5,6,7,*p=x;int i,s=0;for(i=1;i6;i+) s+=pi+;printf(%d,s);A. 14、下面程序的运行结果是main() int x=36,y=63; int *p,*q,*t; p=&x;q=&y; t=p; p=q;q=t;printf(%d,%dn,x,y);A. 36,36B.63,63C. 36,63D.63,3615、以下程序段运行后x的值为int a=1,2,3,4,5,6,7;int i,x,*p;x=1;p=&a2;for(i=0;i3;i+) x*=*(p+i);A. 不确定 B. 24 C. 120 D. 6016、以下程序段运行后x的值为int a=1,2,3,b=4,2,5;int *p,*q;int i,x;p=a;q=b;for(i=0;i3;i+) if(*(p+i)=*(q+i) x=*(p+i)*2;A. 2B.4C. 5D. 不确定17、以下程序运行结果是main() char a=1357,*p; for(p=a;pa+4;p+) printf(%s,p);A. 18、下面程序的输出结果是#includevoid main() int i; char *s=abc; for(i=0;i3;i+) printf(%sn,s+i);A. abc bc c bc abcC. abc c bc ab abc19、下面程序的输出结果是#includevoid main() char *str=12345,*ps=str+4; printf(%cn,ps-4);A. 1B.2C. 3D. 错误20、以下程序执行时,输入1 2 3 4 5,输出为#include#define N 5void main()int aN;int *p=a;while(pa) printf(%d,*(-p);A. 5 4 3 2 1B.1 2 3 4 5C. 2 3 4 5 1D.4 3 2 1 521.以下程序段的运行结果是int x=2,3,4,5,6,7,*p=x;int i,s=0;for(i=1;i6;i+=2)s+=*(p+i);printf(%d,s);22.以下程序运行结果main()int a=9,8,7,6,5,4,*p,*q,i;p=a;q=p+5;for(i=0;i6;i+)
展开阅读全文