《二级C语言选择题.pdf》由会员分享,可在线阅读,更多相关《二级C语言选择题.pdf(94页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1.下列叙述中正确的是X正确答案为DA)C 语言编译时不检查语法+B)C 语言的子程序有过程和函数两种C)C 语言的函数可以嵌套定义D)C 语言所有函数都是外部函数2.以下叙述中正 确 的 是 X正确答案为BA)C 语言的源程序不必通过编译就可以直接运行B)C 语言中的每条可执行语句最终都将被转换成二进制的机器指令C)C 源程序经编译形成的二进制代码可以直接运行D)C 语言中的函数不可以单独进行编译3.C 语言程序的基本单位是 X 正确答案为CA)程序行 B)语句 C)函数 D)字符4.以下叙述中正确的是X正确答案为AA)构成C 程序的基本单位是函数B)可以在一个函数中定义另一个函数C)mai
2、n。函数必须放在其它函数之前D)所有被调用的函数一定要在调用之前进行定义5.在一个C 程序中 X 正确答案为BA)main函数必须出现在所有函数之前B)main函数可以在任何地方出现C)main函数必须出现在所有函数之后D)main函数必须出现在固定位置5.以下关于函数的叙述中正确的是 X正确答案为BA)每一个函数都可以被其他函数调用(包括main瞰)。B)每一个函数都可以被单独编译。C)每个函数都可以单独运行。D)在一个函数内部可以定义另一个函数。6.C 语言中用于结构化程序设计的三种基本结构是X正确答案为AA)顺序结构、选择结构、循环结构B)if、switch、breakC)for、whi
3、le、do-while D)if、for、continue7.结构化程序由三种基本结构组成,三种基本结构组成的算法X正确答案为AA)可以完成任何复杂的任务B)只能完成部分复杂的任务C)只能完成符合结构化的任务D)只能完成一些简单的任务8.以下叙述中正确的是X正确答案为AA)C 程序中注释部分可以出现在程序中任意合适的地方B)花括号“”和“”只能作为函数体的定界符C)构成C 程序的基本单位是函数,所有函数名都可以由用户命名D)分号是C 语句之间的分隔符,不是语句的一部分9.以下叙述中错误的是 X正确答案为CA)C 语句必须以分号结束。B)复合语句在语法上被看作一条语句。C)空语句出现在任何位置都
4、不会影响程序运行。D)赋值表达式末尾加分号就构成赋值语句。10一个算法应该具有“确定性”等 5 个特性,下面对另外4 个特性的描述中错误的是 X正确答案为BA)有零个或多个输入B)有零个或多个输出C)有穷性 D)可行性11.算法具有五个特性,以下选项中不属于算法特性的是 X 正确答案为BA)有 穷 性 B)简 洁 性 C)可 行 性 D)确定性12.以下叙述中正确的是 X 正确答案为CA)用 C 程序实现的算法必须要有输入和输出操作B)用 C 程序实现的算法可以没有输出但必须要有输入C)用 C 程序实现的算法可以没有输入但必须要有输出D)用 C 程序实现的算法可以既没有输入也没有输出13.用C
5、 语言编写的代码程序 X 正确答案为BA)可立即执行B)是一个源程序C)经过编译即可执行D)经过编译解释才能执行14.C 语言中最简单的数据类型包括X正确答案为BA)整型、实型、逻 辑 型 B)整型、实型、字符型C)整型、字符型、逻 辑 型 D)整型、实型、逻辑型、字符型15.以下选项中属于C 语言的数据类型是 X 正确答案为CA)复 数 型 B)逻 辑 型 C)双精度型D)集合型16.下列叙述中正确的是X正确答案为DA)C 语言中既有逻辑类型也有集合类型B)C 语言中没有逻辑类型但有集合类型C)C 语言中有逻辑类型但没有集合类型D)C 语言中既没有逻辑类型也没有集合类型17.以下叙 述 正
6、确 的 是 X正确答案为BA)可以把define和 if定义为用户标识符B)可以把define定义为用户标识符,但不能把if定义为用户标识符C)可以把if定义为用户标识符,但不能把define定义为用户标识符D)define和 if都不能定义为用户标识符18.下列关于C 语言用户标识符的叙述中正确的是 X 正确答案为BA)用户标识符中可以出现在下划线和中划线(减号)B)用户标识符中不可以出现中划线,但可以出现下划线C)用户标识符中可以出现下划线,但不可以放在用户标识符的开头D)用户标识符中可以出现在下划线和数字,它们都可以放在用户标识符的开头19.以下选项中合法的用户标识符是X正确答案为BA)
7、long B)_2Test C)3Dmax D)A.dat20.下列选项中,合法的C 语言关键字是 X 正确答案为DA)VAR B)cher C)integer D)default21.以下有4 组用户标识符,其中合法的一组是 X 正确答案为CA)For-sub Case B)4d DO SizeC)f2_G3 IF abc D)WORD void define22.以下不能定义为用户标识符的是X正确答案为DA)scanf B)Void C)_3com_ D)int23.以下4 组用户定义标识符中,全部合法的一组是 X 正确答案为AA)main enclude sin B)If-max tur
8、boC)txt REAL 3COM D)int k_2 _00124.下列选项中,不能用作标识符的是X正确答案为DA)1234 B)I 2 0 int 2 D)2 int25.以下不能定义为用户标识符的是X正确答案为DA)Main B)_0 C)_int D)sizeof26.C 语言提供的合法的数据类型关键字是X正确答案为BA)Double B)short C)integer D)Char27.在C 语言提供的合法的关键字是 X 正确答案为DA)swicth B)cher C)Case D)default28.以下叙述错误的是 X正确答案为AA)用户所定义的标识符允许使用关键字。B)用户所定
9、义的标识符应尽量作到“见名知意”。C)用户所定义的标识符必须以字母或下划线开头。D)用户所定义的标识符中,大小写字母代表不同标识。全国计算机等级考试二级笔试试卷(1 4)若变量已正确定义并赋值,以下符合C 语言语法的表达式是A)a:=b+l B)a=b=c+2 C)int 18.5%3 D)a=a+7=c+b(1 5)下列可用于C 语言用户标识符的一组是A)void,define,WORD B)a3_b3,_123,CarC)For,-abc,IF Case D)2a,DO,sizeof(16)C 语言中运算对象必须是整型的运算符是A)%=B)/C)=D)=(1 7)若变量a,i己正确定义,且
10、 i 已正确赋值,合法的语句是A)a=l B)+i;C)a=a+=5;D)a=int(i);(1 8)已知int t=0;while(t=l).则以下叙述正确的是A)循环控制表达式的值为0 B)循环控制表达式的值为1C)循环控制表达式不合法 D)以上说法都不对(1 9)若变量已正确说明为float型,要通过语句scanf(%f%f%f,&a,&b,&c);给2 赋予10.0,b 赋予22.0,c赋予3 3.0,下列不正确的输入形式是A)1022V回车 33(回车 B)10.0,22.0,33.Ov回车C)10.022.033.0 回车 D)10 22 回车 33(2 0)有如下程序:main(
11、)(int x=l,a=0,b=0;switch(x)case 0:b+;case 1:a+;case 2:a+;b+;printf(Ha=%d,b=%d na,b);该程序的输出结果是A)a=2,b=1 B)a=l,b=l C)a=l,b=O D)a=2,b=2(2 1)有以下程序main()inti=l,j=l,k=2;if(j+llk+)&i+)printf(n%d,%d,%d nM,i,j,k);)执行后输出结果是A)1,1,2 B)2,2,1 C)2,2,2 D)2,2,3(2 2)有如下程序main()float x=2.0,y;if(x0.0)y=0.0;else if(x6)n
12、-;printf(M%d,n);)该程序的输出结果是A)987 B)876 C)8765 D)9876(2 4)在下列选项中,没有构成死循环的是A)int i=100;while(1)i=i%100+1;if(i100)break;B)for(;);C)int k=10000;dok+;while(k10000);D)int s=36;while(s)-s;(2 5)设 int x=l,y=l;表 达 式(!xlly)的值是A)0 B)1 C)2 D)-1(2 6)若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是A)函数调用可以作为独立的语句存在B)函数调用可以作为一个函数的实参C
13、)函数调用可以出现在表达式中D)函数调用可以作为一个函数的形参(2 7)有以下程序float fun(int x,int y)return(x+y);main()int a=2,b=5,c=8;printf(%3.0fn,fun(int)fun(a+c,b),a-c);)程序运行后的输出结果是A)编译出错 B)9 C)21 D)9.0(2 8)若有以下调用语句,则不正确的fun函数的首部是main()-int a 50,n;fun(n,&a 9);A)void fun(int m,int x 口 )B)void fun(int s,int h 41)C)void fun(int p,int*s
14、)D)void fun(int n,int a)(29)fseek函数的正确调用形式是A)fseek(文件指针,起始点,位移量)B)fseek(文件指针,位移量,起始点)C)fseek(位移量,起始点,文件指针)D)fseek(起始点,位移量,文件指针)(3 0)若 fp 是指向某文件的指针,且已读到文件末尾,则函数feof(f p)的返回值是A)EOF B)-1 C)1 D)NULL(3 1)若有说明语句:charc=72;则变量cA)包 含 1个字符 B)包含2 个字符C)包含3 个字符 D)说明不合法,c 的值不确定(3 2)若有说明int a 3 4 ;则 a 数组元素的非法引用是A)
15、a 0 2*1 B)a 1 3C)a 4-2 0 D)a 0 4(3 3)设有以下说明语句struct stuint a;float b;stutype;则下面的叙述不正确的是A)struct是结构体类型的关键字B)struct stu是用户定义的结构体类型C)s t u t y p e是用户定义的结构体类型名D)a和b都是结构体成员名(3 4)在C语言中,引用数组元素时,其数组下标的数据类型允许是A)整型常量 B)整型表达式C)整型常量或整型表达式 D)任何类型的表达式(3 5)若运行时给变量x输 入1 2,则以下程序的运行结果是m a i n ()i n t x,y;s c a n f (
16、%d ,&x);y=x 1 2?x+1 0:x-1 2;p r i n t f (%d n ,y);)A)0 B)22 C)1 2 D)1 0 (3 6)以下说法正确的是A)C语言程序总是从第一个的函数开始执行B)在C语言程序中,要调用函数必须在m a i n ()函数中定义C)C语言程序总是从m a i n ()函数开始执行D)C语言程序中的m a i n ()函数必须放在程序的开始部分(3 7)表达式0 x 1 3八0 x 1 7的值是A)0 x 0 4 B)0 x 1 3 C)0 x E 8 D)0 x 1 7(3 8)有以下程序#d e f i n e F (X,Y)(X)*(Y)m
17、a i n ()i n t a=3,b=4;p r i n t f (%d n ,F (a+,b+);)程序运行后的输出结果是A)1 2 B)1 5 C)1 6 D)20(3 9)下列程序执行后的输出结果是v o i d f u n c (i n t *a,i n t b )b L 0 =*a+6;m a i n ()i n t a,b 5 ;a=0;b 0 =3;f u n c (&a,b);p r i n t f (%d n ,b 0 );)A)6 B)7 C)8 D)9(4 0)若有下面的程序段:c h a r s =c h i n a ;c h a r *p;p=s;则下列叙述正确的是
18、A)s和p完全相同B)数组s中的内容和指针变量p中的内容相等C)s数组长度和p所指向的字符串长度相等D)*p与s 0 相等(4 1)以下程序中函数sort的功能是对a 数组中的数据进行由大到小的排序void sort(int a ,int n)inti,j,t;for(i=0;in-l;i+)for(j=i+l;jn;j+)if(a Li a j)t=a i;a Li=a Lj;a j=t;)main()int aa 10=1,2,3,4,5,6,7,8,9,10,i;sort(&aa 3,5);for(i=0;i10;i+)printf(d,”,aa i );printf(H nn);程序运
19、行后的输出结果是A)1,2,3,4,5,6,7,8,9,10,B)10,9,8,7,6,5,43,2,1,C)1,2,3,8,7,6,5,4,9,10,D)1,2,10,9,8,7,6,5,4,3,(4 2)以下程序的运行结果是#include stdio.hmain()struct dateint year,month,day;today;printf(M%d nn,sizeof(struct date);)A)6 B)8 C)10 D)12(4 3)若有语句int*point,a=4;和 point二&a;下面均代表地址的一组选项是A)a,point,*&a B)&*a,&a,*point
20、C)*&point,*point,&a D)&4&*point,point(4 4)在调用函数时,如果实参是简单的变量,它与对应形参之间的数据传递方式是A)地址传递 B)单向值传递C)由实参传形参,再由形参传实参 D)传递方式由用户指定(4 5)已定义以下函数fun(char*p2,char*pl)(while(*p2=*pl)!=0*)pl+;p2+;)函数的功能是A)将 p l所指字符串复制到p2所指内存空间B)将 p l所指字符串的地址赋给指针p2C)对 p l和 p2两个指针所指字符串进行比较D)检查p l 和 p2两个指针所指字符串中是否有、(T(4 6)若执行下述程序时,若从键盘输
21、入6 和 8 时,结果为main()int a,b,s;scanf(%d%d”,&a,&b);s=aif(anext=&c;q-next=p-next;D)(*p),next=q;(*q),next=&b;二、填空题(8)下列程序的输出结果是8】。maim()char b =Hello you;b 5=0;printf(%sn,b);解析:语句b 5=0;相当于语句b 5=0 ,且 0 为字符串结束标志,输出时遇 到 0 就停止输出。(9)当调用函数时,实参是一个数组名,则向函数传递的是【9】。解析:在函数中,可以通过指针变量来引用调用函数中对应的数组元素,此操作是通过传递数组的首地址来实现。
22、(1 0)以下程序的输出结果是【10】。int a=1234;printf(%2d n,a):解析:在与格式符之间插入一个整形数来指这输出宽度,并不影响数据的完整性,当插入的宽度小于实际的宽度时,则实际的宽度输出。(1 1)用高级语言编写的程序称为【11】程序,它可以通过解释程序翻译一句执行一句的方式执行,也可以通过编译程序一次翻译产生目标程序,然后执行。解析:用高级语言编写的程序称为源程序,源程序不能在计算机上直接运行,运行源程序有两种方式:一种是通过解释程序,对源程序逐句解释执行;另一种是先让编译程序将源程序一次翻译产生目标程序(目标程序是计算机可直接执行的机器语言程序,它是一种二进制代码
23、程序),然后执行目标程序。(1 2)以下程序的输出结果是【12】。main()(int a=0;a+=(a=8);printf(%dn,a);解析:赋值表达式的值就是所赋值变量的值,本题中a+=8相当于a=a+8,对表达式逐步进行求解:a+=(a=8)此时,a 的值由于赋值为8,而不是0a+=8a=a+8a=16(1 3)函 数 void fun(float*sn,in tn)的功能是:根据以下公式计算S,计算结果通过形参指针 sn传回;n 通过形参传入,n 的值大于等于0。请填空。void fiin(float*sn,int n)float s=0.0,w,f=-1.0;int i=0;fo
24、r(i=0;ino例如:m=12,n=8时,运行结果应该是495.000000。请在题目的空白处填写适当的程序语句,将该程序补充完整。#include#include float fun(int m,int n)int i;double p=1.0;for(i=l;i=m;i+)15;for(i=l;i=n;i+)【1 6;for(i=l;i=m-n;i+)p=p/i;return p;main()clrscr();printf(Mp=%fnM,fun(12,8);解析:本题中,欲 求 p 的值,需要先求m,n,m-n的阶乘值,可用循环语句实现。(1 5)该程序运行的结果是【17】。#incl
25、ude#include#define M 100void fun(int m,int*a,int*n)int i,j=0;fbr(i=l;i=m;i+)if(i%7=0lli%ll=0)a j+=i;*n=j;main()int aa M ,n,k;clrscr();fun(10,aa,&n);for(k=0;kn;k+)if(k+1)%20=0)printf(n nH);else printf(u%4dn,aa k );printf(nM);解析:解答本题的关键是要读懂程序,试题要找出能被7 或 11整除的所有整数,注意数学中 的“或”和 C 语言中的“或”的区别,但在此处,if 条件语句中
26、用了“II”运算符,若要找能同时被7 和 11整除的所有整数则在if()中应用“&”运算符。当然,如果m 的值输入5 0,即表达式fun(10,aa,&n);为fun(50,aa,&n);时输入结果为:7 11 14 21 22 28 33 35 42 44 49。(1 6)下列程序的功能是:求出ss所指字符串中指定字符的个数,并返回此值。例如,若输入字符串123412132,输入字符1,则输出3,请填空。#include#include#define M 81int fun(char*ss,char c)int i=0;for(;18;ss+)if(*ss=c)i+;return i;mai
27、n()char a M,ch;clrscr();printf(nPlease enter a string:);gets(a);printf(nPlease enter a char:);ch=getchar();printf(nThe number of the char is:%d n,fun(a,ch);解析:从字符串ss 中找出子字符串的方法是:从 第 1 个字符开始,对字符串进行遍历;若SS串的当前字符等于t 串的第1个字符,两字符串的指针自动加1,继续比较下一个字符;若比较至字符串的结尾,则跳出循环;若 SS串的字符和C串的字符对应不同,继续对SS串的下一个字符进行处理。本程序是采
28、用逐一比较的方式找出出现的次数。循环的作用是在串中从左到右逐一走动,if()的作用是进行判断是否相同,若与C相同则表示又出现一次。(1 7)下面程序把从终端读入的文本(用作为文本结束标志)输出到一个名为bi.dat的新文件中,请填空。#include stdio.hFILE*fp;char ch;if(fp=fopen(19)=NULL)exit(0);while(ch=getchar()!=)fputc(ch.fp);fclose(fp);)解析:fopen函数的调用方式通常为:FILE*fpfp=fopen(文件名,使用文件方式);(1 8)设有如下宏定义#define MYSWAP(z,
29、x,y)z=x;x=y;y=z;以下程序段通过宏调用实现变量a,b 内容交换,请填空。float a=5,b=16,c;MYSWAP(20,a,b);解析:该题考查两个知识点:(1)用一个指定的标识符(即名字)来代表一个字符串,它的一般形式为#define标 识 符 字符串(2)在 MYSWAP宏定义中,利用中间变量z 来交换x 和 y 的值,所以要实现a 和 b 的交换,只需通过中间变量即可,所以,此处应填c。(2.)一、选择题(1 1)下列叙述中正确的是A)C 语言编译时不检查语法 B)C 语言的子程序有过程和函数两种C)C 语言的函数可以嵌套定义 D)C 语言的函数可以嵌套调用(1 2)
30、在 C 语言中,退格符是A)n B)t C)f D)b(1 3)以下叙述中正确的是A)构成C 程序的基本单位是函数B)可以在一个函数中定义另一个函数C)main()函数必须放在其他函数之前D)所有被调用的函数一定要在调用之前进行定义(14)在 C 程序中,判逻辑值时,用“非 0”表示逻辑值“真”,又用“0”表示逻辑值“假二在求逻辑值时,用()表示逻辑表达式值为“真,又 用()表示逻辑表达式值为“假二A)I 0 B)0 I C)非 0 非 0 D)1 1(1 5)在 C 语言中,运算对象必须是整型数的运算符是A)%B)C)%和 D)*(1 6)字符型数据在机器中是用ASCII码表示的,字 符“5
31、”和“7”在机器中表示为A)10100011 和 01110111 B)01000101 和 01100011C)00110101 和 00110111 D)01100101 和 01100111(1 7)若已定义:inta=25,b=14,c=19;以下三目运算符(?:)所构成语句的执行后a=25&b=2&c?printf(*a=%d,b=%d,c=%d n,a,b,c):printf(#a=%d,b=%d,c=%d n,a,b,c);程序输出的结果是A)*a=25,b=13,c=19 B)*a=26,b=14,c=19C)#a=25,b=13,c=19 D)#a=26,b=14,c=19(
32、1 8)若有定义:int a=7;float x=2.5,y=4.7;则表达式 x+a%3*(int)(x+y)%2/4 的值是A)2.500000 B)2.750000 C)3.500000 D)0.000000(1 9)下列程序段的输出结果是:int a=1234;float b=123.456;double c=12345.54321;printf(%2d,%2.1f,%2.1f,a,b,c);A)无输出 B)12,123.5,12345.5C)1234,123.5,12345.5 D)1234,123.4,1234.5(2 0)若运行以下程序时,从键盘输入ADescriptor(表示回
33、车),则下面程序的运行结果是#include main()char c;int v0=l,vl=0,v2=0;doswitch(c=getchar()case a:case A:case e:case E :case i:case I :case o:case O :case u:case U:vl+=l;de fault:v0+=1;v2+=1;while(c!=n,);printf(v0=%d,vl=%d,v2=%dn,v0,vl,v2);A)v0=7,vl=4,v2=7 B)v0=8,vl=4,v2=8C)v0=ll,vl=4,v2=ll D)v0=13,vl=4,v2=12(2 1)设
34、有以下程序段i n t x=O,s=O;w h i l e (!x!=0)s+=+x;p r i n t f (M%dn,s);则 A)运行程序段后输出0 B)运行程序段后输出1C)程序段中的控制表达式是非法的 D)程序段执行无限次(2 2)有如下程序m a i n ()f l o a t x=2.0,y;i f (x 1 0.0)y=1.0/x;e l s e y=1.0;p r i n t f (H%f n ,y);该程序的输出结果是A)0.0 0 0 0 0 0 B)0.2 5 0 0 0 0 C)0.5 0 0 0 0 0 D)1.0 0 0 0 0 0(2 3)执行下面的程序段后,变
35、量k中的值为i n t k=3,s 2;s 0 =k;k=s 1 *1 0;A)不定值 B)3 3 C)3 0 D)1 0(24)以下程序段的描述,正确的是x=-l;d o x=x*x;w h i l e (!x);A)是死循环 B)循环执行两次 C)循环执行一次 D)有语法错误(25)以下选项错误的是A)m a i n ()i n t x,y,z;x=0;y=x-l;z=x+y;B)m a i n ()i n t x,y,z;x=0,y=x+1;z=x+y;C)m a i n ()i n t x;i n ti n t y;x=0,y=x+1;z=x+y;D)m a i n ()i n t x
36、,y,z;x=0;y=x+1;z=x+y,(2 6)有如下程序段i n t a=1 4,b=1 5,x;c h a r c=f A;x=(a&b)&(c B);执行该程序段后,x的值为A)t u r e B)f a l s e C)0 D)1(2 7)下列程序执行后的输出结果是void fund(int i);void func2(int i);char st =,hello,friend!n;void fund(inti)printf(n%cn,st L i);if(i3)i+=2;func2(i);void func2(int i)printf(M%c,st L i);if(i3)i+=2
37、;funcl(i);main()int i=0;fund(i);printf(nn );A)hello B)hel C)hlo D)him(2 8)以下函数返回a 所指数组中最大值所在的下标值fun(int*a,int n)int i,j=O,p;P=j;for(i=j;ia p);return(p);在下划线处应填入的内容是A)i=p B)a p=a Li C)p=j D)p=I(2 9)下面说明不正确的是A)char a 10=china;B)char a 10,*p=a;p=,china*,C)char*a;a=china;D)char a 10,*p;p=a=Kchinan(3 0)以
38、下程序的输出结果是#include void prt(int*x,int*y,int*z)printf(u%d,%d,%dn,+*x,+*y,*(z+);main()int a=10,b=40,c=20;prt(&a,&b,&c);prt(&a,&b,&c);A)11,42,3112,22,41B)11,41,2012,42,20C)11,21,4011,21,21D)11,41,2112,42,22(3 1)若有函数内部说明:int a 3 4 ;则数组a 中各元素A)可在程序的运行阶段得到初值0B)可在程序的编译阶段得到初值0C)不能得到确定的初值D)可在程序的编译或运行阶段得到初值0(3
39、 4)定义如下变量和数组:int k;inta 3 3=9,8,7,6,5,4,321;则下面语句的输出结果是for(k=0;k3;k+)printf(%d,a Ek k );A)7 5 3 B)95 1 C)963 D)74 1(3 5)下列程序执行后的输出结果是main()char arr 2 4;strcpy(arr,you);strcpy(arr 1/me1);arr 0 3=&;printf(M%snn,arr);A)you&me B)you C)me D)err(3 6)有以下函数char fun(char*p)return p;该函数的返回值是A)无确切的值 B)形参p 中存放的
40、地址值C)一个临时存储单元的地址 D)形参p 自身的地址值(3 7)以下正确的说法是A)定义函数时,形参的类型说明可以放在函数体内B)return后边的值不能为表达式C)如果函数值的类型与返回值类型不一致,以函数值类型为准D)如果形参与实参类型不一致,以实参类型为准(3 8)有以下程序int f(int n)if(n=l)return 1;else return f(n-1)+1;main()int i,j=0;for(i=l;i j共执行的次数是main()int i=0,j=10,k=2,s=0;for(;)i+=k;i f(ij)printf(d”,s);break;s+=i;)A)4
41、B)7 C)5 D)6(4 3)以下4个选项中,不能看做一条语句的是A);B)a=5,b=2.5,c=3.6;C)if(a5);D)if(b!=5)x=2;y=6;(4 4)在C语言中,变量的隐含存储类别是A)auto B)static C)extern D)无存储类别(4 5)若有以下程序#include void f(int n);main()void f(int n);f(5);)void f(int n)printf(d nn,n);则以下叙述中不正确的是A)若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数fB)若在主函数前对函数f进行说明,则在主函数和其后的其他函数中都可
42、以正确调用函数fC)对于以上程序,编译时系统会提示出错信息:提示对f函数重复说明D)函数f无返回值,所以可用void将其类型定义为无返回值型(4 6)若有下面的说明和定义struct test int ml;char m2;float m3;union uu char ul 5;int u2 12;ua;myaa;则 sizeof(struct test)的值是A)12 B)16 C)14 D)9(4 7)以下程序的输出是struct st int x;int*y;*p;int dt 4=10,20,30,40);struct st aa 4=50,&dt 0,60,&dt 01,60,&dt
43、 0,60,&dl 0;main()p=aa;printf(%dn,+(p-x);)A)10 B)11 C)51 D)60(4 8)若有运算符v,sizeof,八,&二,则它们按优先级由高至低的正确排列次序是A)sizeof,&=,A B)sizeof,A,&=C)A,sizeof,&=D),A,&=,sizeof(4 9)函数fseek(pf,OL,SEEK_END)中的SEEK_END代表的起始点是A)文件开始 B)文件末尾 C)文件当前位置 D)以上都不对(5 0)有以下程序#include main()FILE*fp;int i=20,j=30,k,n;fp=fopen(”dl.dat
44、”,”w“);fprintf(fp,n%d nM,i);fprintf(fp,n%d n ,j);fclose(f p);fp=fopen(ndl.dat,Y,);fscanf(fp,%d%d”,&k,&n);printf(%d%dn,k,n);fclose(f p);)程序运行后的输出结果是A)20 30 B)20 50 C)30 50D)30 20二、填空题(6)以下程序的运行结果是6L#define MAX(a,b)(ab?a:b)+1main()int i=6,j=8,k;printf(d n”,MAX(i,j);)解析:本题考查宏定义与三目运算符的综合用法,宏定义是原样替换,本题中,
45、如 果 ab成立,则 a+1的值为整个表达式的值,否则为b+1的值为整个表达式的值,(应注意后面的加 1)。(7)以下程序的功能是从健盘输入若干学生的成绩,并输出最高成绩和最低成绩,当输入负数时结束。请填空。m a i n ()f l o a t x,a m a x,a m i n;sc a n f (%f ,&x);a m a x=x;a m i n=x;w h i l e (7 )i f (x a m a x)a m a x=x;e l sei f 8 a m i n=x;e l se sc a n f (%f ,&x);)p r i n tf (n a m a x=%f n a m i
46、n=%f n,a m a x,a m i n);)解析:本题先从键盘接受数值,并分别赋给a m a x(用于保存最高成绩)和a m i n (用干保存最低成绩),然后通过w h i l e循环控制是否结束输入,并且通过i f语句来给a m a x和a m i n赋值和进行下一次的输入。(8)在对文件操作的过程中,若要求文件的位置指针回到文件的开始处,应当调用的函数是 9 L答案;r e w i n d。(9)在计算机中,字符的比较是对它们的 1 0 进行比较。解析:C语言中,字符也可以进行比较运算,且是按照ASCH码值进行的。(1 0)在内存中,存储字符x 要占用1个字节,存储字符串X要 占
47、用【1 1】个字节。解析:计算机存储一个字符用1个字节,存储字符串时,每个字符用占用1个字节,另在字符串的有效字符之后存储1个字符串的结束标记符。所以存储字符串“X”要占用2个字节,存储字符x 只 要1个字节。(1 1)下列程序的输出结果是1 6.0 0,请填空。m a i n ()i n t a=9,b=2;f l o a t x=1 2 ,y=l,l,z;z=a/2+b*x/y+l/2;p r i n tf (%5.2 f n,z );)解析:本题最后一条语句,表示以浮点格式输出z的值,宽度为5,其中所含2位小数,应该注意的是,两个整型运算结果仍为整型,如1/2的结果为0,对本题可逐步求解
48、:l 6.0 0=9/2+2*x/l.1 +1/21 6.0 0=4+2*x/1.1+01 2.0 0=2*x/l.l所 以,x的值为6.6 o(1 2)设在主函数中有以下定义和函数调用语句,且f u n函数为v o i d类型;请写出f u n函数的首部【1 3。要求形参名为b。m a i n ()doubles 10 2 2 ;int n;fun(s);)解析:本题中,为了明确表示“不带回值”,可 以 用“void”定 义“无类型”(或 称“空类型”)。这系统就保证不使函数带回任何值,二维数组的第一维可以省略。(1 3)下列程序的功能是输入一个整数,判断是否是素数,若为素数输出1,否则输出
49、0,请填空。main()int i,x,y=l;scanf&x);for(i=2;i=x/2;i+)if 14 y=0;break;printf(d n”,y);)解析:为判数x 是否是素数,预置变量y 的值为1 (x 可能是素数),然后用循环,用 2 至x/2的整数i 测试对x 的整除性,若能被其中的某个整数整除,则 x 是合数,置 y 的值为0(x 不是素数),结束测试循环。若都不能整除,则 x 为素数。i 能否整除x,可用求余运算x%i等于0 来判定。所以程序中的空框可填x%i=0。测试x 为素数的代码可写成:y=l;for(i=2;i=x/2;i+)if(x%i=0)y=0;break
50、;(1 4)下面程序的功能是将一个字符串str的内容颠倒过来,请填空。#includemain()int i15;char str =1234567,;for(i=O,j=strlen(str)16;ij;i+J)k=str Ei;str Ei=str j;str j=k;printf(s n”,s tr);)解析:颠倒一个字符串中的字符,就是首尾对应的元素两两交换。简单地可用两个游标变量 i 和j,i 是前端元素的下标,j 是后端元素的下标,交换以这两个变量值为下标的元素str i 和开始时,i 的值为0,j 的值为字符串末元素的下标(字符串长度减1)。每次交换后,i 增 1,j 减 l o