《东华理工大学计算机C语言期末预测卷.docx》由会员分享,可在线阅读,更多相关《东华理工大学计算机C语言期末预测卷.docx(94页珍藏版)》请在课桌文档上搜索。
1、case1:Printf(%d”,i);case2:rintf(*%dz,i);default:printf(*%c,i);执行后输出的结果是OA、011122B、012C、012020D、120【答案】A【解析】当执行SWitCh语句时,首先计算紧跟其后一对括号中的值,然后在语句体内寻找与该值吻合的CaSe标号。若相等,则执行该标号后开始的各语句,包括在其后的所有case和default后的语句,直到switch语句体结束。4、程序设计语言中oA、while循环语句的执行效率比do-while循环语句的执行效率高B、while循环语句的循环体执行次数比循环条件的判断次数多1,而do-whil
2、e语句的循环体执行次数比循环条件的判断次数少1C、while语句的循环体执行次数比循环条件的判断次数少1,而do-while语句的循环体执行次数比循环条件的判断次数多1D、while语句的循环体执行次数比循环条件的判断次数少1,而CIOrhile语句的循环体执行次数等于循环条件的判断次数【答案】D5、C语言函数内定义的局部变量的隐含存储类别是AstaticB、 autoC、 registerD、 extern【答案】B6、下列变量定义中合法的是()。A、shorta=l-.Ie-I;B、doubleb=l+5e2.5;C、longdo=0xfda1.;Dsfloat2and=l-e-3;计算机
3、C语言期末预测卷(一)(总分100分.考试时长60分钟题号、总分阅卷人分值100100得分考生应检查“答题卡”正反两面,如果发现“答题卡”字迹模糊,行列歪斜或单面缺印等现象,要及时向监考员报告。作答时须保持答题卡整洁,不得破损、折皱、沾水(汗考试结束前要离开考场的考生须先按答题卡、试卷、草稿纸从上到下的顺序平放在桌面上,再举手提出离场。一、单项选择题(每小题2分,共100分)1、设整型变量n的值为2,执行语句n+=n-=n*n;后,n的值是。A、0B、4C、-4D、2【答案】C2、该语句打印结果为(每个d后都有空格)printf(%d”,printf(*%d,printf%d,43);A、 4
4、321B、 434343Cx4332D、4321【答案】C3、有以下程序main()inti;for(i=0;i3;i+)switch(i)【答案】D12、关于C语言,下列说法正确的是。A、程序就是算法B、一个变量只能定义为一种数据类型C、一个变量只能存储一个字符D、若a和b类型相间,执行a=b;后,b中数值将丢失【答案】B13、下述程序的输出结果是。ftincludevoidmain()(inta5=l,2,3,4,5;int*p=a,*q=p;printf(W,*(p+);Printf(%d”,*q);A、22B、11C、34D、12【答案】D【解析】程序首先定义了一个指向一维数组a的指针
5、p,一个指向指针变量P的指针变量q,输出*(p+)是先输出*p即a0的值,再将指针P指向数组的下一个元素al,输出*q是输出指针P所指向单元的内容,即al的值。14、对于以下递归函数f,调用f(3)的返回值是ointf(intn)(if(n)returnf(n-l)+n:elsereturnn;)A、10B、6C、3D、0【答案】B【答案】A7、在定义inta56;后,数组a中的第10个元素是(设a00为第一个元素)A、a25B、aC、 alDxal5【答案】C8、己知字母a的ascii码十进制值为97,则执行以下语句后的输出为。yhgchara=a,;printf(,%d,%cn,*,a+*
6、2-0,a+*3*-*0*);A、b,cB、a-运算不合法,故有语法错C、98,cD、格式描述和输出项不匹配,输出无定值【答案】C9、设宏定义#出?门隧PI3.1415926,用宏名PI替换的是。A、算术表达式B、字符串C、单精度实型数D、双精度实型数【答案】B10、已知字母a的ascii代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是OA、kk=A,&kk=AKKV=N)C、(kk+32)=a&(kk+32)=65&kkregisterD、 autoPrintf(%dn”,c&c);程序运行后的输出结果是OA、OB、70C、35D、1【答案】C【解析】按
7、位与,因为0&0=0,所以任何数与自身按位与,结果仍为此数,不发生变化。19、若在某函数内部有定义:inta34;则数组a中各元素。A、可在程序的运行阶段得到初值0B、可在程序的编译阶段得到初值0C、不能得到确定的初值D、可在程序的编译或运行阶段得到初值0【答案】C【解析】在函数内部定义的存储类型为auto的变量或数组,如果没有进行初始化,就不能得到确定值。20、设有如下定义structss(charname10;intage;charsex;std3,*p=std;下面各输入语句中错误的是。A、scanf(飞d,&(*p).age);B、scanf(%s”,&std.name);C、sean
8、(*%c*,&std0.sex);D、scanf(*%c*,&(p-sex);【答案】B【解析】本题考核的知识点是结构型数组的应用。选项A中“&(*p).age”代表的是stdOage的地址,是正确的,选项C也是正确的,选项D先用指针变量引用结构型的成员sex,然后取它的地址,也是正确的,选项B中的“std.name是错误的引用,因为Std是数组名,代表的是数组的首地址,地址没有成员“name。所以B选项为所选。15、下面程序段的输出为#include*stdio.hmain()printf(*%dn*,123;j-)(if(j%3)j-;j;-j;printf(*d*,j);)A、63B、7
9、4C、62Ds73【答案】B25、c语言中数组名作为参数传递给函数,作为实在参数的数组名被处理为oA、该数组的长度B、该数组的元素个数C、该数组中各元素的值D、该数组的首地址【答案】D【解析】数组作为函数参数时,传入的是该数组的首地址。26、设有说明:Charc;intx;doublez;则表达式c*x+z值的数据类型为A、floatB、intC、 charD、 double【答案】D21、算法要有确定的含义,不能出现二义性指的是算法的咖个特性?A、有穷性B、确定性C、可行性D、输入【答案】B22、以下选项中,能用作用户标识符的是oAvoidB、8_8C、_0_D、unsigned【答案】C2
10、3、下列程序的输出结果是include,stdio.h#defineN3JtdefineM3voidfun(intaMN)printf(*%dn*,*(al+2);mainOintaMN;inti,j;for(i=0;iM;i+)for(j=0;jN;j+)aij=i+j-(i-j);fun(八);)A、3B、4C、5D、6【答案】B【解析】若有以下定义:inta34,i,j;,且OWiV3,0jfloat-shortint-double27、以下关于排序算法的叙述中,正确的是oA、冒泡排序法中,元素的交换次数与元素的比较次数一定相同B、冒泡排序法中,元素的交换次数不少于元素的比较次数C、简单
11、选择排序中,关键字相同的记录在排序前后的相对位置一定不变D、简单选择排序中,关键字相同的记录在排序前后的相对位置可能交换【答案】D【解析】本题考查算法方面的基础知识。冒泡排序法的基本思路是:将相邻位置的关键字进行比较,若为逆序则交换之。重复该过程,直到序列已排好序。显然,在这个过程中,元素间的比较次数应大于等于交换次数。简单选择排序的思路是:第一趟在n个记录中选取最小记录,将其与序列的第一个元素交换,第二趟在展1个记录中选取最小记录,将其与序列的第二个元素交换,第i趟在n-i+l个记录中选取最小的记录,将其与序列的第i个元素交换,直到序列的第n个元素为止。在这个过程中,关键字相同的两个记录在排
12、序前后的相对位置可能发生变化。例如,序列为(30,30,12)时,选择排序法需要将第一个元素30与最后一个元素12进行交换,这样就使得两个30的相对位置改变了。28、在C语言中,字符型数据在内存中以()形式存放。A、补码B、ASCII码C、反码D、原码【答案】B29、判断两个字符串是否相等,正确的表达方式是oAxwhile(sl=s2)B、while(sl=s2)C、while(strcmp(sl,s2)=0)Dwhile(strcmp(sl,s2)=0)【答案】C30、C语言可执行程序从什么地方开始执行?()A、程序中第一条可执行语句B、程序中第一个函数C、程序中的main。函数D、包含文件
13、中的第一个函数【答案】Cx=m2+n*ab+l2;printf(*%fn*,x);A、27.OOOOOOB、27.500000C、28.000000D、28.500000【答案】A39、以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能4defineMIN-2147463647intfindmax(intx,intn)(inti,max;for(i=0;in;i+)(max=MIN;if(maxxi)max=xi;returnmax;造成错误的原因是。A、定义语句inti,max中max未赋值B、赋值语句max=MIN;中,不应该给max赋MlN值
14、C、语句if(maVi)max=xi;中判断条件设置错误D、赋值语句InaX=MIN;放错了位置【答案】D40、有以下程序structstucharname10;intnum;intscore;D、该结构体中所有成员所需存储空间的总和【答案】D35、有以下程序#definef(x)(x*x)main()intil,i2;il=f(8)f(4);i2=f(4+4)f(2+2);printf(*%d,%dn*,i1,i2);)程序运行后的输出结果是。A、 64,28B、4,4C、4,3D、64,64【答案】C36、在循环结构中可以使得同一组语句一次也不执行。A、当型循环B、直到型循环C、都不能实现
15、D、do-while语句【答案】A37、宏定义用于将一个标识符定义为一个As常量B、字符串C、整数D、长整数【答案】B【解析】宏定义用于将一个标识符定义为一个字符串38、下列程序的输出结果为0main()intm=7,n=4;floata=38.4,b=6.4,x;C、算术表达式D、任意表达式【答案】D44、有如下程序#includevoidmain()(intx=23;do(printfC%d*,x);)while(!x);该程序的执行结果是0A、321B、23C、不输出任何内容D、陷入死循环【答案】B45、有如下程序段int*p,a=10,b=l;p=&a;a=*p+b;执行该程序段后,a
16、的值为。A、12B、11C、10D、编译出错【答案】B46、能正确表示当X的取值在1,10或200,210范围内为真,否则为假的表达式是OA、(x=l)&(x=200)&(x=l)II(x=200)I(x=l)M(x=200)&(x=l)11(x=200)(x=210)【答案】Cmain()structstus5=*yangsan*,20041,703,*lisiguo*,20042,580,*wangyin*,20043,680,*sundan*,20044,550,*penghua*,20045,537,*p5,*t;inti,j;for(i=0;i5;i+)pi=si;for(i=0;i
17、4;i+)for(j=i+l;jscorepj-scoie)(t=pi;pi=pj;pj=t;)printf(“5d%dn*,sl.score,pl-score);)执行后输出结果是OA、550550B、 680680C、 580550D、 580680【答案】C41、复合语句应用()括起来。A、小括号B、方括号C、大括号D、尖括号【答案】C42、有如下程序段int*p,a=l,b=2;P=&b;a=*p+a;执行该程序段后,a的值为。A、2B、3C、4D、编译出错【答案】B43、在C的if语句中,可用作条件的表达式是oA、关系表达式B、逻辑表达式【解析】根据C语言运算符的优先级,&要高于II
18、,所以先算“与”再算“或”,符合题意。C选项中,当X取值在1,10时,表达式(x=l)&(XV=IO)为真,又因为接下来是或逻辑运算,符故后面的表达式无需判断,整个表达式即为真。47、对二维数组的正确定义是_A、inta=1,2,3,4,5,6);B、inta2=1,2,3,4,5,6;Cxinta3=1,2,3,4,5,6);D、inta2,3=1,2,3,4,5,6);【答案】C48、若某计算机字长为32位,内存容量为2gb,按字编址,则可寻址范围为oAs1024MBB、IGBC、512MBD、2GB1答案】C【解析】内存容量2GB=2*1024*1024*1024*8位,按字编址时,存储
19、单元的个数为2*1024*1024*1024*8/32=512*1024*1024,即可寻址范围为512MB049、判断字符串a和b是否相等,应当使用。A、 if(a=b)B、 if(a=b)C、if(strcmp(a,b)D、if(strcmp(a,b)=0)【答案】D50、下列叙述中错误的是oA、计赛机不能直接执行用C语言编写的源程序B、C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件C、后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件D、后缀为.obj和.exe的二进制文件都可以直接运行【答案】I)【解析】C源程序经过程序编译之后生成一个后缀为“
20、.obj”的二进制文件(称为目标文件),然后由称为“连接程序”的软件包文件与C语言提供的各种库函数连接起来生成一个后缀为“.exe”的可运行文件。elseif(x=-0)y=O;elsey=-l;D、y=O;if(x=O)if(x=O)y=l;elsey=-l;【答案】B3、main()intx=1,a=0,b=O;switch(x)case0:b+;case 1: a+;case 2: a+;b+;printf(a=%d,b=,a,b);该程序的输出结果是()A、2,1B、1,1C、1,0D、2,2【答案】A4、下列C语言程序段中关于WhiIe循环体正确的说法是inti=l;while(5)
21、(i+;if(i3)break;A、三次循环B、四次循环C、五次循环D、六次循环【答案】A5、以下有关function过程的说法中,正确的是。A、函数名在过程中只能被赋值一次B、如果在函数体内没有给函数名赋值,则该函数无返回值计算机C语言期末预测卷(二)(总分100分.考试时长60分钟题号一总分阅卷人分值100100得分考生应检查“答题卡”正反两面.如果发现“答题卡”字迹模糊,行列歪斜或单而缺印等现象,要及时向监考员报告。作答时须保持答题卡整洁,不得破损、折皱、沾水(汗考试结束前要离开考场的考生须先按答题卡、试卷、草稿纸从上到下的顺序平放在桌面上,再举手提出离场。一、单项选择题(每小题2分,共
22、100分)1、串是任意有限个(46)OA、符号构成的集合B、字符构成的序列C、字符构成的集合D、符号构成的序列【答案】B【解析】本题考查串的定义和特点。串是由零个或多个字符组成的有限序列。串中的内容可以是字母、数字或其他字符,串中字符的个数就是串的长度,如果没有字符,则是空串,其长度为零。2、与y=(x0?l:xV0?T:0)”;的功能相同的if语句是。A、if(x0)y=l;elseif(xO)y=l;elseif(xO)y=l;9、下面不能正确进行字符串赋值操作的语句是oA、chars5=ABCDE;B、chars5=A,B,C,D,E;C、char*s;s=ABCDEF”;D、char*
23、s;scanf(*%s*,s);【答案】A10、设a、b和、C都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的表达式为()A、a&bB、a=bC、aIlb+c&bcD、!(a-b)&(!cIl1)【答案】DIk有如下函数定义;voidfunc(inta,int&b)a+;b+;若执行代码段:intx=0,y=l;func(x,y);则变量X和y的值分别是oA、0和1B、1和1C、0和2D、1和2【答案】C【解析】本题考查的知识点是:函数参数的传递方式。C的默认参数传递方式是传值,即将实参值的副本传递(拷贝)给被调用函数的形参。如果需要传地址,可通过传递指针、引用或数组类型
24、的参数来实现。传值时,对形参的改变不会影响到实参;而传地址,则会同时改变实参。本题中形参a是普通参数,即传值调用,函数中对a增1不会影响到实参X的值;而形参b是引用,即传址调用,函数中对b增1同时也改变了实参y的值(y也增1了)。故最终结果是0和2,应该选择C。12、一个汉字的内码长度为2字节,其每个字节的最高二进制位的值分别为oA、0,0C、如果在定义函数时没有说明函数的类型,则该函数是无类型的D、执行函数过程中的EXitFUnCtion语句,将退出该函数,返回到调用点【答案】D6、以下选项中,与k=n+完全等价的表达式是oA、 k=n,n=n+lB、 n=n+l,k=nC、 k=+nD、
25、k+=n+l【答案】A【解析】k=n+的意思是先将n的值赋给k,然后n的值再加1,选项A)符合题意;选项B)和C)是先使n的值加1,然后再赋值给k;选项D)等价于k=k+(n+l).7、以下程序输出的结果为_main()char*alpha6=*abcd*,efgh,ijkl,mnop,qrst,uvwx;char*p;inti;p=alpha;for(i=0;i4;i+)printf(*%s*,pi):)a、AbcdefghijklB、 ABCDC、ABCDEFGHIJK1.NfNOPD、AEIM【答案】C【解析】alphaO指向“ABCD”的首地址;alpha指向aEFGHw的首地址;al
26、pha2指向“IJK1.”的首地址,依此类推。当执行p=alpha后,P指向指针数组alpha的首地址。for循环中输出了4个字符串。8、已知英文字母m的ascii码值为6dh,那么,码值为4dh的字母是。A、NB、MC、PD、1.【答案】B【解析】因为6DH和4DH相差32,故4DH是M的ASCII码。Char型指针变量,所指向的内存单元所占用的字节数是不同的,因而不能将字符指针变量P的值赋给整型指针变量s。15、程序段如下intk=0;while(k+=2)printf(*%dn*,k);则执行结果是OA、1B、2C、0D、无结果【答案】A16、设i,j,k均为int型变量,则执行完下面的
27、for循环后,k的值为for(i=0,j=10jij)k=i+j;A、12B、10C、11D、9【答案】B17、所有在函数中定义的变量及函数的形式参数,都属于.A、全局变量B、局部变量C、静态变量D、常量【答案】B【解析】全局变量是在所有函数定义、类定义和程序块之外声明的变量,局部变量是在某个函数定义、类定义或程序块之内声明的变量。用关键字StatiC声明的局部变量称为静态变量,故正确答案为B项。18下面程序段的运行结果是.chara7=wabcdef*;charb4=abc;strcpy(a,b);printf(*%cz,a5);A、空格B、0C、eD、f【答案】D19、设有以下语句,其中不
28、是对a数组元素的正确引用的是:(其中0WiV6)inta6=11,22,33,44,55,66),*m=a;B、1,1C、1,OD、O,1【答案】B【解析】汉字的内码=汉字的国标码+8080H,所以汉字内码的最高位为1。13、下列定义数组的语句中不正确的是_A、staticinta23=1,2,3,4,5,6);B、staticinta23=1,4,5;C、 staticinta3=1,4);D、staticinta=1,2,3,4,5,6;【答案】D14、请选出正确的程序段A、 int*p;SCanf(%d”,p):B、 int*s,k;*s=100;C、 int*s,k;char*p,c;
29、S=&k;p=&c;*p=,a,;D、 int*s,k;char*p,e;S=&k;p=&c;s=p;*s=l;【答案】C【解析】本题的选项A)和B)犯了一个同样的错误,即指针变量P定义后并没有指向具体的变量。也就是说,P中没有确定的地址值,它的值是不可预见的,所指向的单元也是不可预见的,因此不能进行赋值操作。另外,在选项D)中,S是int型指针变量,p是D、C语句是完成某种程序功能的最小单位【答案】D24、以下的for循环次数是多少次?for(x=0,y=0;(y!=123)|(x4)x+);A、执行3次B、执行4次C、循环次数不定D、是无限循环【答案】D25、若有如下定义语句:inta10
30、三1,2,3,4,5,6,7,8,9,10;则对数组正确的引用是Asa10B、 aa35C、 aa9D、aa4+4【答案】D26、vc6.0中int类型变量所占字节数是A、1B、2C、3D、4【答案】D27、数组inta34;其中错误的数组引用为。A、a00B、al3C、a33D、 a0【答案】C28、结构化程序流程图中一般包括三种基本结构,下述结构中哪一种不属于基本结构()A、顺序结构B、条件结构C、选择结构D、嵌套结构【答案】D【解析】结构化程序流程图包括三种基本结构:顺序结构、条件结构和选择结构。29、下列哪个是C语言的有效标识符A、&(*(a+i)B、*(ai)C、 miD、 ai【答
31、案】A20、设有以下语句typedefstructsintg;charh;t;则下面叙述中正确的是。A、可用S定义结构体变量B、可以用T定义结构体变量C、S是struct类型的变量D、T是StrUCtS类型的变量【答案】A21、以下关于long、int和Short类型数据占用内存大小的叙述中正确的是,A、均占4个字节B、根据数据的大小来决定所占内存的字节数C、由用户自己定义D、由C语言编译系统决定【答案】D22、有如下程序inta10=1,2,3,4,5,6,7,8,9,10),*p=a;则数值为9的表达式是As*P+9B、 *(P+8)C、 *P+=9D、P+8【答案】B23、以下叙述正确的
32、是。A、在C程序中,主函数必须位于程序的最前面B、在C程序中,一行只能写一条语句C、C程序的基本结构是程序行A、实参可以是常量、变量、表达式B、形参可以是常量、变量、表达式C、实参可以为任意类型D、形参应与其对应的实参类型一致【答案】B33、若有定义:int*p3;,则以下叙述中正确的是OA、定义了一个类型为int的指针变量p,该变量具有三个指针B、定义了一个指针数组p,该数组含有三个元素,每个元素都是类型为int的指针C、定义了一个名为*p的整型数组,该数组含有三个int类型元素D、定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素【答案】B34、当定义一个结构体变量
33、时,系统分配给它的内存是oA、各成员所需内存量的总和B、结构中第一个成员所需内存量C、结构中最后一个成员所需内存量D、成员中占内存量最大者所需的容量【答案】A35、有以下程序#inctudeincludemain()int*a,*b,*c;a=b=c=(int*)malloc(sizeof(int);*a=l:*b=2,*c=3;a=b;Printf(%d,%d,%dn”,*a,*b,*c);程序运行后的输出结果是。A、3,3,3B、2,2,3C、1,2,3D、1,1,3【答案】AA、_NolB、No.1C、12345D、int【答案】A【解析】标识符是一个以字母或下划线开始的,由字母、下划线
34、和数字组成的字符串,标识符不能与任意关键字同名。30、已有文本文件1.tXt.,其中的内容为:IiaOningShenyang!。以下程序中,文件t.txt己正确为读”而打开,由文件指针fr指向该文件,则程序的输出结果是o#includemain()file*fr;chars80;fgets(s,6,fr);Printf(%sn”,s);fclose(fr);)A、shenyangB、1iaoningshenyangC、IiaonD、Iiaoni【答案】C31、有以下程序段:Charcl,c2,c3;scanf(*%c%c%c*,&cl,&c2,&c3);若要给clC2、c3分别输入字母abe
35、,则以下对输入形式的描述正确的是oA、字母ABC之间可以用空格分隔B、字母ABC之间不能有分隔符C、字母ABC之间可以用回车符分隔D、字母ABC之间可以用Tab键分隔【答案】B【解析】在使用scanf函数时要注意,在用“枇格式输入字符时,分隔符(空格符、制表符(Tab键)、回车符)和转义字符都将作为有效字符进行输入。题目中要求以字符形式输入三个数据,空格、回车符、Tab键均会被视为有效字符赋给对应变量,所以字母ABC之间不能有分隔符,B选项正确。32、在C语言中以下说法不正确的是0D、 45.O【答案】B39、下列描述中正确的是。A、标识符首字符的后面可以跟数字B、标识符不区分大小写C、复合数
36、据类型变量包括布尔型、字符型和浮点型D、数组属于基本数据类型【答案】A【解析】选项B错误,c语言标识符是区分大小写的:选项C错误,且合数据类型应该包括数组、类和接口;选项D错误,数组应该属于复合数据类型;选项A正确,标识符首字符的后面可以跟数字、字母、下划线和美元符号。40、对以下定义的表述中,正确的是structnode(intnum;charname10;)stud;A、stud是一个结构体变量B、SlUd是一个结构体类型C、node是一个结构体数据D、node是一个结构体变量【答案】A【解析】node结构体变量。41、以下叙述中不正确的是cA、在C程序中,逗号运算符的优先级最低B、在C程
37、序中,APH和aph是两个不同的变量C、若a和b类型相同,在计算赋值表达式a=b后,b中的值将放入a中,而b中的值不变D、当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值【答案】D【解析】在C语言所有的运算符中,逗号运算符的优先级最低。C语言中区分大小写,所以APH和aph是两个不同的变量。赋值表达式a=b表示将b的赋付给a,而b本身的值保持不变;通过键盘可以向计算机输入允许的任何类型的数据。选项D)中当从键盘输36、若有以下程序ftincludemain()inta=6,b=0,c=0;for(;a;)b+=a;a-=+c;)printf(%d,%d,%dn”,a,b,c);)则程序的输出结果是OA、0,14,3B、1,14,3C、0,18,3D、0,14,6【答案】A【解析】循环执行3次,使a为0,循环结束,最终abC分别为0