C语言程序设计期末考试题及答案.docx
C语言程序设计期末考试题及答案一、选择题1 .判断两个字符串是否相等,应用()A) if(a=b)B) if(a=b)C) if ! strcmp(a, b)(正确答案)D) if(strcmp(a, b)2 .有以下程序(strcat ()函数用来连接两个字符串),程序运行后的输出结果 是(B)ttinclude <string. h>main () char a20>z,ABCD0EFG0z,, b二IJK;strcat (a, b);printf(sn,a);A) ABCDEOFGOIJKB) ABCDIJK (正确答案)0 IJKD) EFGIJK3 .假设有定义 int a4 = 0, 1,2, 3, 4, 5, 6, 7,8,9, 10, 11);,那么数组的第一 维的大小为()A) 3(正确答案)B) 2C) 4D)不确定4 .阅读下述程序:()main() int x;scanf(d,&x) ; x= fun (x) ; printf (dn,x);A) 55(正确答案)B) 54C) 65D) 4527 .以下程序执行后的输出结果是()int fun(int x, int n) static int sum=O, i;for(i=0; ireturn sum;main()int a(5) = l,2, 3,4, 5, b4 = 6, 7,8,9, s=0;s= fun (a, 5) +fun (b, 4);printf(%dn, s);A) 45B) 50C) 60(正确答案)D) 5528 .以下程序运行后的输出结果是()Void fum( int p) int d_2;p=d+; pintf(,p) main() int a=l;fun(a);printf(%dn,a) ;A) 32B) 12C) 21(正确答案)D) 2229 .下表达中不正确的选项是:()在函数中,通过return语句传回函数值在函数中,可以有多条return语句在C程序中,主函数main()后的一对园括号中也可以带有形参在C程序中,调用函数必须在一条独立的语句中完成。(正确答案)30 .以下程序的输出结果是:()fun (int a, int b, int c) c=a+b;main () int c;fun (3, 6, c);printf (; c);A) 0B) 3C)9D)无定值(正确答案)31.以下表达正确的选项是()oA)在对一个C程序进行编译的过程中,可发现注释中的拼写错误B)在C程序中,main函数必须位于程序的最前面0 c语言本身没有输入输出语句(正确答案)D) C程序的每行中只能写一条语句32 . 一个C程序的执行是从()oA)本程序的main函数开始,到main函数结束(正确答案)B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束0本程序文件的第一个函数开始,到本程序main函数结束D)本程序的main函数开始,到本程序文件的最后一个函数结束33 .以下表达不正确的选项是()oA) 一个C源程序必须包含一个main函数B) 一个C源程序可由一个或多个函数组成0 C程序的基本组成单位是函数D)在C程序中,注释说明只能位于一条语句的后面(正确答案)34.计算机高级语言程序的运行方法有编译执行和解释执行两种,以下表达 中正确的选项是()OA) C语言程序仅可以编译执行(正确答案)B) C语言程序仅可以解释执行0 C语言程序既可以编译执行又可以解释执行D)以上说法都不对35 . 一个C语言程序是由()oA) 一个主程序和假设干个子程序组成B)函数组成(正确答案)0假设干过程组成D)假设干子程序组成36 .以下表达中错误的选项是()oA) C语言的可执行程序是由一系列机器指令构成的B)用C语言编写的源程序不能直接在计算机上运行C)通过编译得到的二进制目标程序需要连接才可以运行D)在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件(正确答案)37 .假设x、i、j、k都是int型变量,那么计算下面表达式后,x的值为()。 x=(i=4, j=16, k=32)A) 4B) 160 32(正确答案)C) 5238 .以下表达正确的选项是()oA) C语言程序是由过程和函数组成的B) C语言函数可以嵌套调用,例如:fun (fun (x)(正确答案)0 C语言函数不可以单独编译D) C语言中除了 main函数,其他函数不可作为单独文件形式存在39 .以下四组选项中,均不是C语言关键字的选项是()oA) de i2 temp(正确答案)B)getc char printfC)include case scanfD)while go pow40 .以下四组选项中,均是不合法的用户标识符的选项是O oA) W P 0 doB) b-a goto int (正确答案)C) float laO _AD) -123 abc TEMP41 .下面不正确的字符常量是()oA) “c”(正确答案)B) ,一C)''D) 'K'42 .以下四组选项中,均是合法转义字符的选项是()oA),",'(正确答案)B) 、''017',C) '018''f' 'xab'D) '0''xlf'43 .以下表达不正确的选项是()oA)在C程序中,逗号运算符的优先级最低B)在C程序中,MAX和max是两个不同的变量0假设a和b类型相同,在计算了赋值表达式a=b后,b中的值将放入a中, 而b中的值不变D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只 能输入实型数值(正确答案)44 .字母A的ASCH码为十进制数65,且c2为字符型,那么执行语句c2= 'A' + '6' - '3'后,c2中的值为()oA) D (正确答案)B) 68C)不确定的值D) C45 .以下表达正确的选项是()oA)在C程序中,每行只能写一条语句B)假设a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型 数(正确答案)0在C程序中,%是只能用于整数运算的运算符(字符型也可以)D)在C程序中,无论是整数还是实数,都能被准确无误地表示46 . sizeof(float)是()。A) 一个双精度型表达式B) 一个整型表达式(正确答案)C) 一种函数表达式D) 一个不合法的表达式47 .设有说明:char w; int x; float y; double z; 那么表达式 wx+z-y 值的 数据类型为O OA) floatB) charC) intD) double (正确答案)48 .设C语言中,一个int型数据在内存中占2个字节,那么unsigned int型 数据的取值范围为()OA) 0-255B) 032767C) 065535(正确答案)D) 0214748364749 .设以下变量均为int类型,那么值不等于7的表达式是()oA) (x=y=6, x+y, x+1)B) (x=y=6, x+y, y+1)c) (x=6, x+1, y=6, x+y)(正确答案)D) (y=6, y+1, x=y, x+1)50 .以下变量定义中合法的是()oA) short _a=015;(正确答案)B) double b=e2. 5;C) long do=0xfdaL;D) float 2_and=le-3;51 .有以下程序ttinclude <stdio. h>main () int x=011;printf (dn,+x);程序运行后的输出结果是()。A)12B)llC) 10(正确答案)D)952 .以下正确的描述是().A)continue语句的作用是结束整个循环的执行B)只能在循环体内和switch语句体内使用break语句(正确答案)C)在循环体内使用break语句或continue语句的作用相同D)从多层循环嵌套中退出时, 只能使用got。语句53 . putchar函数可以向终端输出一个()。A)整型变量表达式B)实型变量值C)字符串D)字符或字符型变量值(正确答案)54.根据下面的程序及数据的输入和输出形式,程序中输入语句的正确形式 应该为()。main () char chi, ch2, ch3;输入语句printf( a%c % %c”,chi, ch2, ch3);输出形式:ABC输入形式:ABCA) scanf( %c%c%cv , &chl, &ch2, &ch3);B) scanf ( %c, %c, %cv , &chl, &ch2, &ch3);C) scanf ( a%c %c %c",&chl, &ch2, &ch3);(正确答案)D)scanf( a%c%c" , &chl, &ch2, &ch3);55.阅读以下程序,当输入数据的形式为:25, 13, 10<CR> (注:<CR>表示 回车),那么正确的输出结果为()。main () int x, y, z;scanf (,&x, &y, &z);printf ( "x+y+z=dn",x+y+z);A)x+y+z=48B)x+y+z=35C)x+z=35D)不确定值(正确答案)56 .ch是字符型变量,下面不正确的赋值语句是()oA) ch= 'a' +' b'(正确答案)B) ch= '0' ;C) ch= 7 + 9 ;D) ch=5+9;57 .以下关于结构化程序设计的表达中正确的选项是()oA)一个结构化程序必须同时由顺序、分支、循环三种结构组成B)结构化程序使用goto语句会很便捷C)在C语言中,程序的模块化是利用函数实现的(正确答案)D)由三种基本结构构成的程序只能解决小规模的问题58 .有以下程序include <stdio. h>main ()int al, a2; char cl, c2;scanf( %d%c%d%cv , &al, &cl, &a2, &c2);printf ( a%d,%c,%d,%cv , al, cl, a2, c2);假设想通过键盘输入,使得al的值为12, a2的值为34, cl的值为字符a, c2 的值为字符b,程序输出结果是:12, a, 34, b那么正确的输入格式是(). (以 下代表空格,<CR>代表回车)A) 12a34b (正确答案)B) 12_a_34_bC) 12, a, 34, bD) 12_a34_b59 .逻辑运算符两侧运算对象的数据类型()oA)只能是0和1B)只能是0或非0正数0只能是整型或字符型数据D)可以是任何类型的数据(正确答案)60 .判断char型变量ch是否为大写字母的正确表达式是()。A) 'A' <=ch<= 'Z'B) (ch>= 'A' )&(ch<= Z )C) (ch>=)&&(ch二 2 )(正确答案)D) ( 'A'= ch)AND(>= ch)61.假设希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表 达式的值为“假”。那么以下不能满足要求的表达式是O oA) A%2=1B) ! (A%2=0)0 !(A%2)(正确答案)D) A%262 . 设有:int a= 1, b=2, c=3, d=4, m=2, n=2;执行(m=a>b) && (n二c>d)后 n 的值为()。A) 1B) 2(正确答案)C) 3D) 463 .以下程序的运行结果是()。main () int a, b, d=241;a=d/100%9;b=(-l)&&(-l);printf (%d” , a, b);A) 6, 1B) 2, 1(正确答案)C) 6,0D) 2,064 .int x=10, y=20, z=30;以下语句执行后x, y, z的值是() if(x>y) z=x; x=y; y=z;A) x=10,y=20,z=30B) x=20,y=30,z=30(正确答案)C) x=20,y=30,z=10D) x=20,y=30,z=2065 .以下程序的运行结果是()。main () int m=5;if(m+>5)printf( "dn",m);else;printf( u%dn , m-);A) 4B) 5#include <string. h> main()char str10, temp10;int i;gets (temp);for(i=0; i<4; i+) gets(str);if(strcmp(temp, str)>0) strcpy(temp, str);print(s, temp);假设输入为 ChinaU. S.AKoreaYCanadaJapano 那么输出是A) Canada (正确答案)B) JapanC) KoreaD) China5.以下语句(字符串内没有空格字符): printfstrlen(atsn012l);的输出结果是()A) 12B) 100 6(正确答案)D) 766 . if语句的基本形式是:if (表达式)语句,以下关于“表达式”值的表达 中正确的选项是()OA)必须是逻辑值B)必须是整数值C)必须是正数D)可以是任意合法的数值(正确答案)67 .假设运行时给变量x输入12,那么以下程序的运行结果是()。main () int x, y;scanf ( "%d" , &x);y=x>12 ? x+10 : x-12;printf ( "%dn",y);A) 4B) 3C) 2D) 0(正确答案)68 .有以下程序include <stdio. h>main ()int c=0, k;for (k=l;k<3;k+)switch(k)default:c+=k;case 2:c+;break;case 4:c+=2;break;printf( "dn",c);程序运行后的输出结果是()A) 3 (正确答案)B)5C)7D)969 .设有程序段int k=10; while(k=0)k=k-l;这下面描述中正确的选项是().A)while循环执行10次B)循环是无限循环C)循环体语句一次也不执行(正确答案)D)循环体语句执行一次70 .有以下程序#include <stdio. h>main ()int a=l, b=0;i f (! a) b+;else if(a=0) if (a) b+=2;else b+=3;printf( "%dn",b);程序运行后的输出结果是()。A) 0(正确答案)B)1C) 2D) 371 .语句while(!E);中的表达式!E等价于().A)E=0B)E!=1C)E!=O(正确答案)D)E=l72 .下面程序的运行结果是().#include<stdio. h>main () int num=O;while(num<=2) num+;printf(%dn, num);)A)1B) 1 20 1 2 3(正确答案)D) 12 3 473.有以下程序main() char b, c; int i ;b=,a' ; c- A,;for(i=0;i<6;i+) if (i%2) putchar(i+b);else putchar(i+c);printf (n);)程序运行后的输出结果是().A) ABCDEFB) AbCdEf (正确答案)C) aBcDeFD) abcdef74 .假设有如下语句int x=3;doprintf (dn,x-=2); while(!(一x);那么上面程序段()A)输出的是1B)输出的是1和-2(正确答案)C)输出的是3和0D)是死循环75 .以下程序段().x=-l;dox=XX; while(!x);A)是死循环B)循环执行二次C)循环执行一次(正确答案)D)有语法错误76 .下面程序的运行结果是().#include<stdio. h>main () int y=10;doy-; while(-y);printfy-);A) -1B)1C)8D) 0(正确答案)77.执行语句for(i=l;i+<4;);后变量i的值是().A) 3B)4C) 5 (正确答案)D)不定78 .假设i为整型变量,那么以下循环执行次数是().for (i=2; i0;) printf ("%d,i一);A)无限次B)0次(正确答案)C)1次D)2次79 . printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5 列。如果字符串长度大于5,那么输出按方式();如果字符串长度小于5,那么输出按方式( C) OA)从左起输出该字符串,右补空格B)按原字符长从左向右全部输出(正确答案)0右对齐输出该字符串,左补空格(正确答案)D)输出错误信息80 .下面程序段的运行结果是(A)循环次数为().int n=0; while (n+<=2);printf n);A) 2B) 3(正确答案)C)5D)有语法错81. C语言程序的基本单位是(C)程序行(正确答案)语句函数字符。82 .假设已定义int a,那么表达式a=10, a+10, a+的值是()A. 20B. 10C. 21D. 11 (正确答案)83 .为表示关系x>y,z,应使用C语言表达式()oA. (x>=y)&&(y>=z)(正确答案)B. (x>=y) AND (y>=z)C. (x二 y> = z)D. (x>=y) & (y>=z)84 .己知:int a10;那么对a数组元素的正确引用是()A. a10B. a3. 5C. a (5)(正确答案)D. a085 .有如下程序,int x=l, a=0, b=0;switch (x)(case 0:b+;break;case 1:a+;break;printf C'a=%d, b=%dn,a, b);该程序的输出结果是()A)a=2, b=lB) a=l, b=l;Oa=l, b=0(正确答案)D) a=2, b=2a=0,0 9(正确答案)D) 116 .以下程序的输出结果是()#include <string. h>main () char str 12 = 's' ,' t' , 'n', ' g' ;prinf(dn,strlen(str), sizeof(str);)A) 12, 12B) 6, 12(正确答案)C) 7,12D) 12,6.假设有定义int a48;,那么以下选项中对数组元素 (0<=j<4, 0<=j<8)的错误引用是()A) (&a0 0+8i+j)B) (a+i) j(正确答案)C) (a+i)+j)D) (ai+j)7 .假设定义inta5;,那么对数组元素地址的正确引用是()A) &a5B) a+2(正确答案)C) a+D) &a8 .以下程序段的输出结果是()main() char a24;strcpy( a0, are );strcpy(al, you);a03='&'printf (z,%s n,a);A) are&you (正确答案)B) youC) areD) &9 .以下程序段的输出结果是() main() char ch35= AAAA, BBB, CC ; printf(%sn, chl);A) AAAAB) BBB(正确答案)C) CCD) BBBCC10 .以下描述中不正确的选项是:()A)字符型数组可以存放字符串B)可以对字符型数组进行整体输入、输出C)可以对整形数组进行整体输入、输出(正确答案)D)不能在赋值语句中通过赋值运算符对字符型数组进行整体赋值。 12.假设要定义一个具有5个元素的整型数组,以下语句中错误的选项是:() A) int a5 = 0;B) int b = 0, 0, 0, 0,0;C) int c2+3;D) int n=5;dn;(正确答案)13.以下表达中不正确的选项是()A)建立函数的目的之是为了提高程序的效率(正确答案)B)建立函数的目的之一是为了提高程序的可读性0建立函数的目的之是为了提高程序员的生产效率D)函数的递归调用不能提高程序的执行效率14以下函数的类型是()fun c ( doublex ) printf (%fn, XX );A)与参数x的类型相同B) void类型0 int类型(正确答案)D)无法确定15.阅读以下程序:()f( int b, intn)(int i, r;r= 1for (i=0;i<=n;i+ )r=r bi;return rmain () intx, a = 2, 3, 4, 5, 6, 7, 8, 9);x=f (a, 3);printf (%d n,x );上面程序输出结果是A) 720B) 120(正确答案)C) 24D) 616 . C语言程序中,假设对函数类型未加显式声明,那么函数的隐含类型为()A) doubleB) int (正确答案)C) charD) void17 .以下对C语言函数的有关描述中,正确的选项是()A)在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传给实参 (正确答案)B) C函数既可以嵌套定义,又可以递归调用C)函数必须有返回值,否那么不能使用函数D)C程序中有调用关系的所有函数必须放在同一个源程序文件中18 .有以下程序,执行后的输出结果是()fun (intx, int y) return (x+y);main() inta=l, b=2, c=3, sum;sum-fun( (a+, b+, a+b), c+ );printf (z,%d n,sum );A) 6B) 7C) 8(正确答案)D) 919 .以下函数调用语句中,含有的实参个数是()func (expl, . (exp2, exp3), (exp4. exps, exp6):A) 1B) 20 3(正确答案)D) 620 .以下程序的输出结果是()int f (a, b)int a, b; 形参传统声明法 int CC=a;if(a>b) c二 I;else if(a=b) c=0; else c=-l; returm C)main ()int i=2, p;p二f (i, i+1);printf ( %d, p);A) -1(正确答案)B) 0C) 1D) 221 .以下程序的输出结果是()main ()double f ();int i, 3; float a= 0. 0;for(i=0;i< m;i+ )a+二 f ;printfa);)double f ( int n) int i; double s=l.0;for (i=l;i<=n;i+)s+= 1. 0/i ;return S;A) 5.500000(正确答案)B) 3. 000000C) 4. 000000D) 8. 2522 .以下程序的输出结果是()fun (int x, int y, int z) z=xx+yy;main()(int a=31;fun (5, 2, a);printf ( %d,a);A) 0B) 29C) 31(正确答案)D)无定值23 .以下函数的功能是()fun (char s , char t ) int i=-l;while(i+, siti && si != '0' );return (si=, 0' && ti=" 0');A)比拟串s和t的长度B)比拟串s和t的大小C)比拟串s和t是否相等(正确答案)D)将串1赋给串s24 . C语言程序中,当调用函数时,()A)实参和形参各占一个独立的存储单元(正确答案)B)实参和形参可以共用存储单元C)可以由用户指定是否共用存储单元D)由计算机系统自动确定是否共用存储单元25 .以下程序执行后变量w中的值是() int funl( double a) return a=a; int fun2( double x, double y ) double a=0, b-0;A=funl(x) ; b-=funl (y); returm (int) (a+b);main() double w; w=fun2(l.l, 2. 0), . . A) 5B) 50 5. 0(正确答案)D) 0.026.执行以下程序时,给变量x输入10,程序的输出结果是() int fun ( int n ) if (n-1 ) return 1;elsereturn (n+ fun (n-1);