全国计算机二级C语言各章节复习题_第1页
全国计算机二级C语言各章节复习题_第2页
全国计算机二级C语言各章节复习题_第3页
全国计算机二级C语言各章节复习题_第4页
已阅读5页,还剩163页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

全国计算机二级C语言各章节复习题第一章c语言概述略第2章程序的灵魂---算法一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置to)1以下叙述中正确的是C语言比其他语言高级B)C语言可以不用编译就能被计算机识别执行C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式D)C语言出现的最晚,具有其他语言的一切优点正确答案:C以下叙述中正确的是AB)可以在一个函数中定义另一个函数C)main()函数必须放在其他函数之前D)所有被调用的函数一定要在调用之前进行定义声明正确答案:A以下说法正确的是A)C语言程序总是从第一个的函数开始执行B)在C语言程序中,要调用函数必须在main()函数中定义CD)C语言程序中的main()函数必须放在程序的开始部分正确答案:CC语言规定,在一个源程序中,main函数的位置A)必须在最开始B)必须在系统调用的库函数的后面C)正确答案:CD)必须在最后以下叙述不正确的是A)一个C源程序可由一个或多个函数组成B)一个C源程序必须包含一个main函数C)C程序的基本组成单位是函数D任意位置正确答案:D2.6下列叙述中正确的是A)C语言编译时不检查语法B)C语言的子程序有过程和函数两种C)C语言的函数可以嵌套定义D)正确答案:D以下叙述正确的是A)在C程序中,每行中只能写一条语句B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数C)在C程序中,无论是整数还是实数,都能被准确无误地表示D)在C程序中,%是只能用于整数运算的运算符正确答案:D以下说法错误的是A)一个算法应包含有限个步骤B)在计算机上实现的算法是用来处理数据对象的C)算法中指定的操作,不能通过已经实现的基本运算执行有限次后实现D)算法的目的是为了求解正确答案:C算法是指为解决某个特定问题而采取的确定且有限的步骤,下面不属于算法的五个特性的是A)有零个输入或多个输入B有效性C)有穷性D)确定性正确答案:B2.10下列关于C语言的说法不正确的是A)C语言既具有高级语言的一切功能,也具有低级语言的一些功能B)不C)注释可以出现在程序中任意合适的地方D)命令行后面不能加分号,命令行不是C语言的语句正确答案:B2.11以下说法错误的是A)高级语言都是用接近人们习惯的自然语言和数学语言作为语言的表达形式B)计算机只能处理由0和1的代码构成的二进制指令或数据C)c)D)每一种高级语言都有它对应的正确答案:C编译程序2.12C语言中用于结构化程序设计的3种基本结构是A)顺序结构、选择结构、循环结构B)if,switch,breakC)for,while,do-whileD)if,for,continue正确答案:A二、填空题(请将每一个空的正确答案写在答题卡相应序号后。)13用高级语言编写的程序称为【1】程序,它可以通过解释程序翻译一句执行一句的方式执行,也可以通过编译程序一次翻译产生目标程序,然后执行。正确答案:源程序2.14C语言程序的注释可以出现在程序中的任何地方,一个注释以【2】作为开始和结束。正确答案:/**/第3章数据类型运算符与表达式一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。)C语言中最简单的数据类型包括A)整型、实型、逻辑型B)C)整型、字符型、逻辑型D)字符型、实型、逻辑型C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符A)必须为字母B)必须为下划线C)D)可以是字母,数字和下划线中任一字符3下列可用于C语言用户标识符的一组是A)void,define,OWORDB)a3_b3,_123,CarC)For,-abc,IFCaseD)2a,DO,sizeof下面四个选项中,均是不正确的8进制数或16进制数的选项是A)0160x8f018B)Oabc017OxaC)010-0x110x16D)0al27ff-123下列数据中,不合法的C语言实型数据的是A)0.123B)123e3C)2.Ie3.5D)789.0在16位C编译系统上,若定义longa;,则能给a赋40000的正确语句是long后面要加L,%ldA)a=20000+20000;B)a=4000*10;C)a=30000+10000;D)a=4000L*10L;若有说明语句:charc='\72';则变量cA)包含1个字符B)包含2个字符C)包含3个字符D)说明不合法,c的值不确定有字符串如下,"\n\\\407asl\"\xabc",则字符串的长度为A)6B)7C)正确答案:D8D)3.9C语言中运算对象必须是整型的运算符是A)(%两侧均要求为整数)B)/C)=D)<=正确答案:A10若变量已正确定义并赋值,以下符合C语言语法的表达式是A)a:=b+lB)C)int18.5%3D)a=a+7=c+b正确答案:B11若变量a,i已正确定义,且i已正确赋值,合法的语句是A)a==1B)C)a=a++=5:D)a=int(i);正确答案:B3.12若有定义:inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是AB)2.750000C)3.500000D)0.000000正确答案:A13若有运算符”,sizeof「,&=,则它们按优先级由高至低的正确排列次序是A)sizeof,&=,«,BC),«,sizeof,&=D)«,,&=,sizeof正确答案:B14以下不正确的叙述是A)在C程序中,逗号运算符的优先级最低B)在C程序中,APH和aph是两个不同的变息里C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值正确答案:D3.15已知inti,a;执行语句1=(a=3,a++, a,a+4,a+5,++a);后,变量i的值为A)2B)3C)4D)5正确答案:C16设变量a是int型,f是float型,i是double型,则表达式10+'a'+i*f值的数据类型为A)intB)floatCD)不确定正确答案:C3.17在C语言中,char型数据在内存中的存储形式是A)补码B)反码C)原码D确答案:D18字符型数据在机器中是用ASCII码表示的,字符'5'和'7'在机器中表示为A)10100011和01110111B)01000101和01100011CD)01100101和01100111确答案:C3.19不能进行++和--运算的数据类型为A)指针B)整型C)长整型确答案:D3.20设有intx=ll;则表达式(x++*l/3)的值是341112正确答案:A3.21以下程序的输出结果是main(){inta=21,b=l1;printf(飞d\n",—a+b,—b+a);)303132D)33正确答案:A22假设整型变量a,b,c的值均为5,则表达式a+++b+++c++的值为17161514正确答案:C正正正23已知inta=6;则执行a+=a-=a*a;语句后,a的值为先进行a-=a*a的计算360-24-60正确答案:D24设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是n=(n*100+0.5)/100.0m=n*100+0.5,n=m/100.0n=n*100+0.5/100.0n=(n/100+0.5)*100.0正确答案:B25sizeof(float)是一个双精度型表达式一个整型表达式一种函数调用一个不合法的表达式正确答案:B3.26在C语言中,int,char和short三种类型数据在内存中所占用的字节数A)由用户自己定义B)均为2个字节C)是任意的D)由所用机器的机器字长决定正确答案:D27以下变量x,y,z均为double类型且已正确赋值,不能正确表示数学式子x-j-y-rz的C语言表达式是x/y*zx*(1/(y*z))x/y*l/zx/y/z正确答案:A3.28下列关于复合语句和空语句的说法错误的是A)复合语句是由“{”开头,由“}”结尾的B)复合语句在语法上视为一条语句C)复合语句内,可以有执行语句,不可以有定义语句部分D)C程序中的所有语句都必须由一个分号作为结束正确答案:C3.29下列关于字符串的说法中错误的是A)在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符'\0'作为字符串结束标志B)''0'作为标志占用存储空间,计入串的实际长度C)在表示字符串常量的时候不需要人为在其末尾加入''0'D)在C语言中,字符串常量隐含处理成以'\0'结尾正确答案:B二、填空题(请将每一个空的正确答案写在答题卡相应序号后。)30以下程序的输出结果是[1】。inta=1234;printf a);正确答案:12343.31在计算机中,字符的比较是对它们的【2】进行比较。正确答案:ASCII码3.32在内存中,存储字符'X,要占用1个字节,存储字符串"X"要占用【3】个字节。正确答案:23.33在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为4:一个double型数据在内存中所占的字节数为。正确答案:834以下程序段的输出结果是[5】omain(){inta=2»b=3>c=4;a*=16+(b++)-(++c);printf("%d",a);)正确答案:2816+3-5=14*2=28以下程序段的输出结果是【6】.intx=17,y=26;printf("%d",y/=(x%=6));正确答案:5x%=6=>x=x%6=5y=y/5=5下列y的值是[7】。inty;y=sizeof(2.25*4);正确答案:83.37以下程序的输出结果是[8]。main(){inti=010八进制的,j=10;pirntf("%d,%d\n”,i,j);}正确答案:8,103.38已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch='a'+'8' 3'的值为【9】o正确答案:fa后移5位得f3.39如下语句printf(线c\n",'B'+40);在执行后的输出结果是【10】。正确答案:jB+'32'=bb+'8'=j3.40定义inta=5,b=20;若执行语句printf("刎\);后,输出的结果为[11]。正确答案:9第4章顺序程序设计一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题K-相应位置上。)4.1若变量已正确说明为float型,要通过语句scanf("%f%f%f",&a,&b,&c);给@赋予10.0,b赋予22.0,c赋予33.0,下列不正确的输入形式是10〈回车>22〈回车>33〈回车〉10.0,22.0,33.0〈回车〉10.0〈回车>22.033.0〈回车)1022〈回车>33〈回车〉正确答案:B现有以下程序段ftincludemain(){inta,b,c;scanf("a=%*d%d,b=%d%*d,c=%d",&a,&b,&c);printf(*a=%d,b=%d,c=%d\n*,a,b,c);)若输出的结果为a=20,b=30,c=40,则以下能够正确输入数据的是a=10]20,b=20]30,c=4020,30,40a=20,b=30,c=40a=10]20,b=30]20,c=40[注]:表示空格,表示回车正确答案:DX,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是INPUTx、y、z;scanf(*%d%d%d*,&x,&y,&z);scanf("%d%d%d”,x,y,z);read("%d%d%d”,&x,&y,&z);正确答案:B4.4已有定义inta=-2;和输出语句printf("%81x",a);以下正确的叙述是A)整型变量的输出形式只有%d一种B)%x是格式符的一种,它可以适用于任何一种类型的数据C)%x是格式符的一-种,其变量的值按十六进制输出,但%81x是错误的D)%81x不是错误的格式符,其中数字8规定了输出字段的宽度正确答案:D4.5下列程序段的输出结果是:inta=1234;floatb=123.456;doublec=12345.54321;printf(%2.1f,%2.1fa,b,c);A)无输出12,123.5,12345.51234,123.5,12345.51234,123.4,1234.5正确答案:C4.6执行下列程序时输入:123<空格>456<空格>789<回车〉输出结果是main(){chars[100];intc,i;scanf("%c",&c);scanf&i);scanfs);printf(/z%c,%d,%s\n^,c,i,s);}123,456,7891,456,789C)1,23,456,789D)1,23,456正确答案:D4.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=25,b=13,c=19***a=26,b=14,c=19tttttta=25,b=13,c=19###a=26,b=14,c=19正确答案:C4.8请选出以下语句的输出结果printf("%d\n”,strlen("\t\〃\065\xff'n"));5148D)输出项不合法,无正常输出正确答案:A4.9下列程序的输出结果是main()(doubled=3.2;intx,y;x=1.2;y=(x+3.8)/5.0;printf(飞d\n”,d*y);A)33.203.07正确答案:C4.10调用gets和puts函数时,必须包含的头文件是stdio.hstdlib.hdefineD)以上都不对正确答案:A11阅读下面程序段ftinclude"stdio.h"main(){charc;c=('z'-'a')/2+'A';putchar(c);}输出结果为MN0Q正确答案:A二、填空题(请将每一个空的正确答案写在答题卡相应序号后。)4.12下列程序的输出结果是16.00,请填空。main(){inta=9,b=2;floatx=[1],y=l.1,z;z=a/2+b*x/y+l/2;printf("%5.2f\n",z);}正确答案:6.64.13在使用putchar和getchar函数处理字符时,必须在程序的开头出现包含头文件的命令行是[2]o正确答案:include4.14下列程序的输出结果是13】,[4]o#includemain(){floata=-l.3;b=l.3;printf("%f,fabs(a),fabs(b);}正确答案:1.300000正确答案:L30000015执行程序时的输入为123456789,则程序的运行结果为【5】。ttinclude"stdio.h"main(){inta,b;scanf("-%*2d",&a,&b);printf(zz%d\nz,,a-b);}正确答案:7第5章选择结构程序设计一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。)1在C程序中,判逻辑值时,用“非0”表示逻辑值“真”,又用“0”表示逻辑值“假”。在求逻辑值时,用()表示逻辑表达式值为“真”,又用()表示逻辑表达式值为“假”。1001C)非0非0D)11正确答案:A5.2已知intx=6,y=2,z;则执行表达式z=x=x>y后,变量z的值为0145正确答案:B5.3能正确表示逻辑关系:“a210或aWO”的C语言表达式是a>=10ora<=0a>=0|a<=10a>=10&&a<=0a>=10||a<=0正确答案:D5.4若变量c为char类型,能正确判断出c为小写字母的表达式是'a'<=c<=rz'(c>=za')||(c<=zz')('a'<=c)andCz'>=c)D)(c>=,a')&&(c<='z')正确答案:D5设intx=l,y=l;表达式(!x||y--)的值是012-1正确答案:B5.6有如下程序段inta=14,b=15,x;charc='A';x=(a&&b)&&(c<‘B');执行该程序段后,X的值为torefalse01正确答案:D5.7以下程序的输出结果是main(){inta=4,b=5,c=0,d;d=!a&&!b|;!c;printf(*%d\n*,d);}10C)非0的数D)-1正确答案:A设有:inta=l,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值是1234正确答案:B已知x,y,z均为整型变量,且值均为1,则执行语句++x||++y&&++z;后,表达式x+y的值为1203D)4正确答案:C5.10表达式a<B||(C&D)中运算符优先级最高的是I&<D)()正确答案:D5.11若运行时给变量x输入12,则以下程序的运行结果是main(){intx,y;scanf("%d",&x);y=x>12?x+10:x-12;printf("%d\n',y);}0221210正确答案:A5.12已知charch=zCf;则以下表达式的值是ch=(ch>=,A'&&ch<=fZ')?(ch+32):ch;AaZD)c正确答案:D5.13若有条件表达式(exp)?a++:b—,则以下表达式中能完全等价于表达式(exp)的是(exp-=O)(exp!=O)(exp==l)D)(exp!=l)正确答案:B5.14有以下程序main(){inti=l,j=l,k=2;if((j++|k++)&&i++)printf(*%d,%d,%d\n*,i,j,k);}执行后输出结果是1,1,22,2,1C)2,2,2D)2,2,3正确答案:C5.15请阅读以下程序:main(){inta=5,b=0,c=0;if(a=b+c)printf("***\n");elseprintf("$$$\n")以上程序A)有语法错不能通过编译B)可以通过编译但不能通过连接C)输出***D)输出$$$正确答案:D16若执行下述程序时,若从键盘输入6和8时,结果为main(){inta,b,s;scanf(*%d%d*,&a,&b);s=a;if(a<B)s=b;s*=s;printf("%d",s);)366448D)以上都不对正确答案:B5.17有如下程序main(){floatx=2.0,y;if(x<0.0)y=0.0;elseif(x<10.0)y=l.0/x;elsey=l.0;printf(〃%f\n”,y);}该程序的输出结果是A)0.000000B)0.2500000.5000001.000000正确答案:C5.18以下4个选项中,不能看做一条语句的是A);a=5,b=2.5,c=3.6;if(a<5);if(b!=5)x=2;y=6;正确答案:D5.19若intk=8;则执行下列程序后,变量k的正确结果是main(){intk=8;switch(k){case9:k+=l;case10:k+=l;case11:k+=l;break;default:k+=l;}printf(级d\n",k);}1211109正确答案:D20阅读如下程序段#include"stdio.h"main(){inta=45,b=40,c=50,d;d=a>30?b:c;switch(d){case30:printf(绘d,”,a)case40:printf(^%d,b);case50:printf("%d,”,c);default:printf('#");}}则输出的结果是40,50,50,#40,#40,50,#5.21现有如下程序段,此程序段编译有错误,则程序段的错误出在#includemain(){inta=30,b=40,c=50,d;d=a>30?b:c;switch(d){casea:printf("%d,”,a);caseb:printf(飞d,",b);casec:printf("%d,”,c);default:printf("#〃);}}A)default:printf("#");这个语句d=a>30?b:c;这个语句casea:printf('%d,”,a);caseb:printf(飞d,",b);casec:printf;这三个语句switch(d)这个语句正确答案:C二、填空题(请将每一个空的正确答案写在答题长相应序号后。)5.22设y是int型,请写出y为奇数的关系表达式【1】。正确答案:(y%2)==l或(y%2)!=05.23设inta=5,b=6,表达式(++a==b )?++a:—b的值是【2】.正确答案:75.24将以下程序写成三目运算表达式是【3】.if(a>b)max=a;elsemax=b;正确答案:max=(a>b)?a:b;25以下程序输出的结果是[4】omain(){inta=5,b=4,c=3,d;d=(a>b>c);printf("%d\n",d);}正确答案:05.26若从键盘输入58,则以下程序输出的结果是[5】omain(){inta;scanf("%d",&a);if(a>50)printf ;if(a>40)printf('%d”,a);if(a>30)printfa);)正确答案:5858585.27阅读下面语句,则程序的执行结果是16】。ttinclude*stdio.h"main(){inta=-l,b=l,k;if((++a<0)&&!(b--<=0))printf(线d,%d\n”,a,b);elseprintf("%d,%d\n”,b,a);}5.28阅读下面程序,则在执行时候的输出为【7】,#include"stdio.h〃main()(intx=l,y=2,z=0;if(x=2)z=x,x=y,y=z;printf(*%d,%d\n*,x,y);}正确答案:2,25.29以下程序的输出结果是[8】omain(){intx=100,a=10,b=20,okl=5,ok2=0;if(aelseif(ok2)x=10;elsex=-l;printf("%d\n',x);}正确答案:-15.30阅读下面的程序,当程序在执行时,如果输入的是'Az,则输出结果为[9]ottinclude"stdio.h"main(){chara;a=getchar();switch(a){case65:printf'A')case66:printf(线c",'B')default:printf("%s\n","other");}}正确答案:ABother第6章循环控制一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置to)1对表达式for(表达式1;;表达式3)可理解为for(表达式1;0;表达式3)for(表达式1;1;表达式3)for(表达式1;表达式1;表达式3)D)for(表达式1;表达式3;表达式3)正确答案:B6.2在下列选项中,没有构成死循环的是inti=100:while(1){i=i0+1;if(i>100)break;)for(;;);intk=10000;do{k++;}while(k>10000);ints=36;while(s)——s;3下面有关for循环的正确描述是for循环只能用于循环次数已经确定的情况for循环是先执行循环体语句,后判断表达式C)在for循环中,不能用break语句跳出循环体D)for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来正确答案:D4若inti,j;,KOfor(i=j=0;i<10&&j<8;i++,j+=3)控制的循环体执行的次数是9832正确答案:C6.5阅读下列程序段,则程序的输出结果是ttinclude*stdio.h*main(){inta=10,b=10,k;for(k=0;a>8;b=++k)printf(飞d,%d,”,a—,—b);printf("\n");}10,10,10,0,10,9,9,0,10,10,9,1,9,9,9,1,考生答案:正确答案:B6.6有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件:若分成7个零件一组,则多3个零件:若分成9个零件一组,则多5个零件。下面程序是求这堆零件总数,请选择填空。#includemain(){inti;for(i=100;i<200;i++)if((i-2)%4==0)if(!((i-3)%7))if()printf('%d”,i);)i%9=5i%9!=5(i-5)%9!=0(i-5)%9==0正确答案:D6.7下列程序的输出结果是^include"stdio.h"main(){inti,a=0,b=0;for(i=l;i<10;i++){if(i%2==0){a++;continue;}b++;}printf(^a=%d,b=%d^,a,b);}a=4,b=4a=4,b=5a=5,b=4a=5,b=5正确答案:B6.8阅读下列程序,则执行结果是#include"stdio.h"main(){inta=0,b=0,c=0,i;for(i=0;i<4;i++)switch(i){case0:a=i++;casel:b=i++;case2:c=i++;case3:i++;}printf(z,%d,%d,%d,%d\nz,,a,b,c,i);}0,1,3,41,2,3,400,1,2,5D)0,2,3,4正确答案:C6.9阅读下列程序,程序的输出结果是ttinclude"stdio.h"main()int叫n;floatk;for(m=6;m>2;m—){k=0;for(n=m;n>l;n--)k=k+m*n;}printf k);}5.00000015.00000025.00000035.000000正确答案:B6.10下面程序的运行结果是#include"stdio.h"main(){intj,i,k二0;for(j=50;j<=60;j++){if(!(k))printf('\n");for(i=2;i<J;I++)&NBSP;if(!(j%i))break;{printf(%T,j);k++;}))5359595335959535正确答案:A11已知intt=0;while(t=l){.・・}则以下叙述正确的是A)循环控制表达式的值为0B)循环控制表达式的值为1C)循环控制表达式不合法D)以上说法都不对正确答案:B6.12设有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf("%d",s);A)运行程序段后输出0B)运行程序段后输出1C)程序段中的控制表达式是非法的D)程序段执行无限次正确答案:B6.13下列程序的输出结果是^include"stdio.h"main(){inti=6;while(i—)printf -i);printf(*\n*);}531420654321D)死循环正确答案:B6.14对下I,II两个语句描述正确的是I.while(1)H.for(;;)A)都是无限循环I是无限循环,I[错误I循环一次,II错误D)以上答案都错正确答案:A15以下程序段的描述,正确的是x=T;do{x=x*x;}while(!x);A)是死循环B)循环执行两次C)循环执行一次D)有语法错误正确答案:C16若有如下语句intx=3;do{printf(*%d\n*,x-=2);}while(!( x))则上面程序段A)输出的是1B)输出的是1和-2C)输出的是3和0D)是死循环正确答案:B下面程序的运行结果是ttincludemain(){inta=l,b=10;do{b~=a;a++;}while(b--<0);printf(,za=%d,b=%d\n*,a,b);A)a=3,b=llB)a=2,b=8C)a=l,b=-lD)a=4,b=9正确答案:B若运行以下程序时,从键盘输入ADescriptor(表示回车),则下面程序的运行结果是#includemain(){charc;intvO=l,vl=0,v2=0;do{switch(c=getchar()){case'a':case'A’:case'ez:case'E’:case'i':case'I’:case'o':case'O’:case'u':case'U/:vl+=l;default:vO+=l;v2+=l;}}while(c!='\n');printf(*vO=%d,vl=%d,v2=%d\n*,vO,vl,v2);}v0=7,vl=4,v2=7v0=8,vl=4,v2=8vO=ll,vl=4,v2=Uv0=13,vl=4,v2=12正确答案:D19下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空。ttincludemain(){inti=0,j,k;do{i++;k=316-13*i;}while();j=k/ll;printf(*316=13*%d+ll*%d*,i,j);)k/11kk/1l==0k==0正确答案:B20C语言中while和do-while循环的主要区别是do-while的循环体至少无条件执行一次while的循环控制条件比do-while的循环控制条件更严格do-while允许从外部转到循环体内do-while的循环体不能是复合语句正确答案:A21下列说法中错误的是A)只能在循环体内使用break语句B)在循环体内使用break语句可以使流程跳出本层循环体,从而提前结束本层循环C)在while和do…while循环中,continue语句并没有使整个循环终止D)continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环判断正确答案:A二、填空题(请将每一个空的正确答案写在答题卡相应序号后。)6.22设i,j,k均为int型变量,则执行完下面的for语句后,k的值为【1】。for(i=0,j=10;i<=j;i++,j--)k=i+j;正确答案:106.23下列程序的功能是输入一个整数,判断是否是素数,若为素数输出1,否则输出0,请填空。main(){inti,x,y=l;scanf&x);for(i=2;i<=x/2;i++)if[2]{y=0;break;}printf(飞d\n”,y);)正确答案:(x%i==0)6.24以下程序的输出结果是[3】omain(){inty=9;for(;y>0;y—)if(y%3==0){printf —y);continue;})正确答案:85225阅读下面程序段,则执行后的输出结果为【4】ottinclude"stdio.h"main(){inta=l;for(;a<=15;)if(-H-a%5!=2)continue;elseprintfa);printf("\rT);}正确答案:27126.26阅读下面语句,则执行后的输出结果为【5】ftinclude"stdio.h"main(){chara,b;for(a=,O',b=/9';aprintf a,b);printf("\n");}正确答案:09182736456.27阅读下面程序,则执行后程序的结果为【6】^include"stdio.h〃main(){inta=0,b=0;while(a<15)a++;while(b++<15);printf("%d,%d\n”,a,b);}正确答案:15,16第7章数组一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题长相应位置上。)若有说明intaE3][4];则a数组元素的非法引用是a[0][2*1]a[1][3]a[4-2][0]a[0][4]正确答案:D在C语言中,引用数组元素时,其数组下标的数据类型允许是A)整型常量B)整型表达式C)整型常量或整型表达式D)任何类型的表达式正确答案:C执行下面的程序段后,变量k中的值为intk=3,s[2];s[0]=k;k=s[1]*10;A)不定值333010正确答案:A7.4定义如下变量和数组:intk;inta[3][3]={9,8,7,6,5,4,3,2,1};则下面语句的输出结果是for(k=0;k<3;k++)printfa[k][k]);7539510963D)741正确答案:B7.5下列程序执行后的输出结果是main(){chararr[2][4];strcpy(arr,"you");strcpy(arr[1] ;arr[0][3]='1;printf("%s\n〃,arr);}you&meyoumeerr正确答案:A6设有数组定义:chararray[]="China”;则数组array所占的空间为5个字节C)6个字节D)7个字节正确答案:C以下不正确的定义语句是doublex[5]={2.0,4.0,6.0,8.0,10.0};inty[5]={0,1,3,5,7,9};charcl口={'1','2','3','4','5'}:charc2[]={'\xl0','\xa','\x8'};正确答案:B若有说明:inta口[3]={1,2,3,4,5,6,7};则a数组第一维的大小是234D)无确定值正确答案:B对以下说明语句的正确理解是inta[10]={6,7,8,9,10);A)将5个初值依次赋给a[1]至a[5]B)将5个初值依次赋给a[0]至a[4]C)将5个初值依次赋给a[6]至a[10]D)因为数组长度与初值的个数不相同,所以此语句不正确正确答案:B10若有说明:inta口[4]={0,0};则下面不正确的叙述是A)数组a的每个元素都可得到初值0B)二维数组a的第一维大小为1C)当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小D)只有元素a[0][0]和a[0][1]可得到初值,其余元素均得不到确定的初值正确答案:D7.11有以下程序main(){chara口={'a','b','c','d','e','f','g','h',''0'};inti,j;i=sizeof(a):j=strlen(a);printf(*%d,%d\b*,i,j);)程序运行后的输出结果是9,98,901,8D)9,8正确答案:D7.12假定int类型变量占用两个字节,其有定义:intx[10]={0,2,4};,则数组x在内存中所占字节数是3610D)20正确答案:D13以下能对二维数组c进行正确的初始化的语句是intc[3][]={⑶,⑶,⑷};intc口[3]={{3},{3},{4}};intc[3][2]={{3},{3},{4},{5}}:intc口[3]={⑶,{},⑶};正确答案:B14在C语言中,一维数组的定义方法为类型说明符数组名A)[常量表达式]B)[整型常量]C)[整型变量]D)[整型常量]或[整型表达式]正确答案:A若二维数组a有m歹U,则计算任一元素a[i]口]在数组中相对位置的公式为组的第一个位置上)i*m+jj*m+Ii*m+j-li*m+j+l正确答案:A下面程序输出的结果是main(){inti;inta[3][3]={1,2,3,4,5,6,7,8,9);for(i=0;i<3;i++)printf(*%d*,a[2-i][i]);}1597530357D)591正确答案:Ba[0][0]位于数(假设7.17以下不能对二维数组a进行正确初始化的语句是inta[2][3]={0};inta口[3]={{1,2},{0});inta[2][3]={{1,2},{3,4},{5,6}};inta[][3]={1,2,3,4,5,6};正确答案:C7.18阅读下面程序,则程序段的功能是♦tinclude"stdio.h"main(){intc[]={23,1,56,234,7,0,34},i,j,t;for(i=l;i<7;i++){t=c[i]:while(j>=0&&t>c[j]){c[j+1]=C[j];j—;)c[j+1]=t;)for(i=0;i<7;i++)printf(*%d",c[i]);putchar('\n');)A)对数组元素的升序排列B)对数组元素的降序排列C)对数组元素的倒序排列D)对数组元素的随机排列正确答案:B19下列选项中错误的说明语句是chara[]={,t'o'y'o'u',''0'};chara[]={"toyou\0"};chara口="toyou\0”;chara[]='toyou\0z;正确答案:D7.20下述对C语言字符数组的描述中错误的是A)字符数组的下标从0开始B)字符数组中的字符串可以进行整体输入/输出C)可以在赋值语句中通过赋值运算符“="对字符数组整体赋值D)字符数组可以存放字符串正确答案:C7.21阅读下列程序,则在执行后,程序的运行结果为ttinclude"stdio.h"ttinclude"string,h^main()(chara[30]二"nicetomeetyou!”;strcpy(a+strlen(a)/2,"you");printf(飞s\n”,a);}nicetomeetyouyounicetomeetyouyounicetoyou正确答案:D7.22现有如下程序段ttinclude-stdio.h"main(){intk[30]={12,324,45,6,768,98,21,34,453,456};intcount=0,i=0;while(k[i]){if(k[i]%2==0IIk[i]%5=0)count++;i++;printf(*%d,%d\n*,count,i);则程序段的输出结果为7,88,87,108,10正确答案:D7.23有如下定义语句:intaa口[3]={12,23,34,4,5,6,78,89,45}则45在数组aa中的行列坐标各为3,23,12,22,1正确答案:C7.24现在有如下程序-include"stdio.h"main(){chars[80];inti,j;gets(s);for(i-j-0;s[i]!='\0';i++)if(s[i]!='H')s[j]='\0z;puts(s)这个程序段的功能是删除输入的字符串中字符'H',则空线上应当添入的是s[j++]=s[i];j++;s[j]=s[i++];j++;s[j++]=s[i]:s[j]=s[i];正确答案:C25以下二维数组c的定义形式是intc[3][]floatc[3,4]doublec[3][4]floatc(3)(4)正确答案:C26已知:intc[3][4];则对数组元素引用正确的是c[1][4]c[1.5][0]c[1+0][0]D)以上表达都错误正确答案:C7.27若有以下语句,则正确的描述是chara[]="toyou”;charb[]={'t'o'y'o','u'};a数组和b数组的长度相同a数组长度小于b数组长度a数组长度大于b数组长度a数组等价于b数组正确答案:C28已知:chara[15],b[15]Ilovechina”};则在程序中能将字符串Ilovechina赋给数组a的正确语句是a="Ilovechina”;strcpy(b,a);a=b;strcpy(a,b);正确答案:D29已知:chara[20]="abc”,b[20]="defghi”;则执行下列语句后的输出结果为printf('%d",strlen(strcpy(a,b)));11605D)以上答案都不正确正确答案:B7.30阅读如下程序段,则程序在先后输入love和china后,输出结果是ftinclude^includemain(){chara[30],b[30];intk;gets(a)gets(b);k=strcmp(a,b);if(k>0)puts(a);elseif(k<0)puts(b);}lovechinalovechinaD)没有输出结果正确答案:A二、填空题(请将每一个空的正确答案写在答题卡相应序号后。)7.31下面程序的功能是输出数组s中最大元素的下标,请填空。main(){intk,p,s[]={1,-9,7,2,-10,3);for(p=0,k=p;p<6;p++)if(s[p]>s[k])[1]printf(飞d\n”,k);}正确答案:k=p;7.32以下程序可把输入的十进制数以十六进制数的形式输出,请填空。main(){charb[17]={"0123456789ABCDEF"};intc[64],d,i=0,base=16;longn;printf("Enteranumber:\n*);scanf("%ld",&n);do{c[i]=[2];i++;n=n/base;}while(n!=0);printf("Transmitenewbase:\n");for(-i;i>=0;-i){d=c[i];printf('%c",b[3]);}printf('\n");}正确答案:n°se[d]33以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如,若一维数组中的数据是:2223445666677899101010删除后,数组中的内容应该是:2345678910o请填空。ftincludettdefineN80intfun(inta[],intn){inti,j=l;for(i=l;i<N;I++)if(a[j-1][4]a[i])a[j++]=a[i];[5];}main(){inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10},i,n=19;printf("Theoriginaldata:\n");for(i=0;iprintfa[i]);n=fun(a,n);printf(,z\nThedataafterdeleted:\n〃);for(i=0;iprintfa[i]);printf('\n\n");}正确答案:!=returnj7.34下列程序的输出的结果是[6】,[7]omain(){inti,jrow,colum,m;staticintarray[3][3]={{100,200,300},{28,72,-30}{-850,2,6}};m=array[0][0];for(i=0;i<3;i++)for(j=0;j<3;j++)if(array[i][j]<m){m=array[i][j];colum=j;row=i;}printf(zz%d,%d,%d\n*,m,row,colum);}正确答案:-850,〜2,035下面程序是求出数组arr的两条对角线上元素之和,请填空。ttinclude*stdio.h"main(){intarr[3][3]={2,3,4,8,3,2,7,9,8},a=0,b=0,i,j;for(i=0;i<3;i++)for(j=0;j<3;j++)if([8])a=a+arr[i][j];for(i=0;i<3;i++)for([9];j>=0;j-)if([10])b=b+arr[i][j];printf("%d,%d\n”,a,b)正确答案:i==jj=2i+j==2第8章函数一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。)1若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是A)函数调用可以作为独立的语句存在B)函数调用可以作为一个函数的实参C)函数调用可以出现在表达式中D)函数调用可以作为一个函数的形参考生答案:正确答案:D在调用函数时,如果实参是简单的变量,它与对应形参之间的数据传递方式是A)地址传递B)单向值传递C)由实参传形参,再由形参传实参D)传递方式由用户指定考生答案:正确答案:B以下正确的说法是A)定义函数时,形参的类型说明可以放在函数体内return后边的值不能为表达式C)如果函数值的类型与返回值类型不一致,以函数值类型为准D)如果形参与实参类型不一致,以实参类型为准考生答案:正确答案:C以下正确的说法是A)用户若需调用标准库函数,调用前必须重新定义B)用户可以重新定义标准库函数,若如此,该函数将失去原有含义C)系统根本不允许用户重新定义标准库函数D)用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动调用考生答案:正确答案:B以下叙述正确的是A)函数可以嵌套定义但不能嵌套调用B)函数既可以嵌套调用也可以嵌套定义C)函数既不可以嵌套定义也不可以嵌套调用D)函数可以嵌套调用但不可以嵌套定义考生答案:正确答案:D下面对C语言的描述中,正确的是A)函数一定有返回值,否则无法使用函数C语言函数既可以嵌套定义又可以递归调用C)在C语言中,调用函数时,只能将实参的值传递给形参D)C语言程序中有调用关系的所有函数都必须放在同一源程序文件中考生答案:正确答案:C8.7下列说法中错误的是A)静态局部变量的初值是在编译时赋予的,在程序执行期间不再赋予初值B)若全局变量和某一函数中的局部变量同名,则在该函数中,此全局变量被屏蔽O静态全局变量可以被其他的编辑单位所引用D)所有自动类局部变量的存储单元都是在进入这些局部变量所在的函数体(或复合语句)时生成,退出其所在的函数体(或复合语句)时消失考生答案:正确答案:C以下程序有语法错误,有关错误原因的正确说法是main()(intG=5,k;voidprt_char();k=prt_char(G);}A)语句voidprt_char();有错,它是函数调用语句,不能用void说明B)变量名不能使用大写字母C)函数说明和函数调用语句之间有矛盾D)函数名不能使用下划线考生答案:正确答案:C以下正确的函数头定义形式是doublefun(intx,inty)doublefun(intx;inty)doublefun(intx,inty);doublefun(intx,y);考生答案:正确答案:A10以下所列的各函数首部中,正确的是voidplay(var:Integer,varb:Integer)voidplay(inta,b)voidplay(inta,intb)Subplay(aasinteger,basinteger)考生答案:正确答案:C11不合法的main函数命令行参数表示形式是main(inta,char*c口)main(intarc,char**arv)main(intargc,char*argv)main(intargv,char*argc[])考生答案:正确答案:C12下面函数调用语句含有实参的个数为func((expl,exp2),(exp3,exp4,exp5));1245考生答案:正确答案:B8.13设有如下函数fun(floatx){printf("\n%d”,x*x);)则函数的类型是A)与参数x的类型相同B)是voidC)是int型D)无法确定考生答案:正确答案:Cfloatfun(intx,inty){return(x+y);}main(){inta=2,b=5,c=8;printf(*%3.Of\n*,fun((int)fun(a+c,b),a-c));}程序运行后的输出结果是A)编译出错9219.0考生答案:正确答案:B8.15以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序voidsort(inta[],intn){inti,j,t;for(i=0;ifor(j=i+l;jif(a[i]{t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(&aa[3],5);for(i=0;i<10;i++)printf(*%d/,aa[i])程序运行后的输出结果是1,2,3,4,5,6,7,8,9,10,10,9,8,7,6,5,4,3,2,1,1,2,3,8,7,6,5,4,9,10,1,2,10,9,8,7,6,5,4,3,考生答案:正确答案:C8.16下列程序执行后的输出结果是voidfund(inti);voidfunc2(inti);charst[]="hello,friend!”;voidfund(inti){printfst[i]);if(i<3){i+=2;func2(i);}}voidfunc2(inti){printfst[i]);if(i<3){i+=2;funcl(i);})main(){inti=0;fund(i);printf('\n");}A)hellohelhlohim考生答案:正确答案:C8.17以下函数返回a所指数组中最大值所在的下标值fun(int*a,intn){inti,j=0,p;P=j;for(i=j;iif(a[i]>a[p1);return(p);}在下划线处应填入的内容是i=pa[p]=a[i]p刁p=I考生答案:正确答案:D18有以下程序intf(intn){if(n==l)return1;elsereturnf(n-1)+1;{inti,j=0;for(i=l;i<3;i++)j+=f(i);printf("歌;)程序运行后的输出结果是4321考生答案:正确答案:B19有如下程序:longfib(intn){if(n>2)return(fib(n-l)+fib(n-2));elsereturn(2);}mainO{printf(线d\n”,fib(3));}该程序的输出结果是2468考生答案:正确答案:B8.20下列函数的运行结果是main(){inti=2,p;intj,k;j=i;k=++i;P=f(j,k);printf("%d”,p);}intf(inta,intb){intc;if(a>b)c=l;elseif(a==b)c=0;elsec=-l;return(c);)-112D)编译出错,无法运行考生答案:正确答案:A8.21阅读下列程序,当运行函数时,输入asdafaaz67,则输出为#includettinclude#includeintfun(char*str){inti,j=0;for(i=0;str[i]!=/\0z;i++)if(str[i]!='')str[j++]=str[i];str[j]=z\0z;}main(){charstr[81];intn;clrscr();printf("Inputastring:");gets(str);puts(str);fun(str);printf("%s'n",str);)asdafaaz67asdafaaz67asdz67考生答案:正确答案:A22以下程序的输出结果是longfun(intn){longs;if(n==l|n==2)s=2;elses=n-fun(n-l);returns;}main(){printf(飞ld\n”,fun(3));}1234考生答案:正确答案:A23已有变量定义和函数调用语句:inta=25;print_value(&a);下面函数的正确输出结果是voidprint_value(int*x){printf("%d\n”,++*x);}23242526考生答案:正确答案:D8.24卜.面程序应能对两个整型变量的值进行交换。以下正确的说法是main(){inta=10,b=20;printf("(1)a=%d,b二%d\n”,a,b);swap(&a,&b);printfC(2)a=%d,b=%d\n*,a,b);}swap(intp,intq){intt;t=p;p=q;q=t;}A)该程序完全正确B)该程序有错,只要将语句swap(&a,&b);中的参数改为a,b即可C)该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针(执行语句不变)即可D)以上说法都不对考生答案:正确答案:D8.25以下程序的输出结果是intf(){staticinti=0;ints=l;s+=i;i++;returns;)main(){inti,a=0;for(i=0;i<5;i++)a+=f();printf("%d\n",a);}20242515考生答案:正确答案:D8.26阅读下面程序段,则执行后输出的结果是#include"stdio.h"main(){charfun(char,int);chara='A';intb=13;a=fun(a,b);putchar(a);}charfun(chara,intb){chark;k=a+b;returnk;A)AB)MC)ND)L考生答案:正确答案:C27编写求两个双精度数之和的函数,选项中正确的是doubleadd(doublea,doubleb){doubles;s=a+b;returns;)doubleadd(doublea,b){doubles;s=a+b;return(s);}doubleadd(doubleadoubleb){doubles;s=a+b;returns;)doubleadd(a,b){doublea,b,s;s=a+b;return(s);考生答案:正确答案:A28现有如下程序ttinclude"stdio.h"intfun(intx){printfCx=%d\n\++x);}main(){fun(12+5);)则程序的输出结果是12131718考生答案:正确答案:D29现有如下程序段#include"stdio.h"intaa(intx,inty);main(){inta=24,b=16,c;c=aa(a,b);printf("%d\n〃,c)intaa(intx,inty){intw;while(y)(w=x%y;x=y;y=w;}returnx;}则程序段的输出结果是8765考生答案:正确答案:A8.30下列程序的输出结果是#include"stdio.h"ttdefineN3#defineM3voidfun(inta[M][N]){printf("%d\n",*(a[1]+2));}main(){inta[M][N];inti,j;for(i=0;ifor(j=0;ja[i][j]=i+j-(i-j);fun(a);}3456考生答案:正确答案:B8.31阅读下面程序,则执行后的结果为ttinclude"stdio.h"main(){fun3(funl(),fun2());}funl(){intk=20;returnk;}fun2(){inta=15;returna;}fun3(inta,intb){intk;k=(a-b)*(a+b);printf("%d\n",k);}0184175D)编译不通过考生答案:正确答案:C8.32阅读下面程序,则程序执行后的结果为^include"stdio.h"main(){inta=4,b=6,c=7;doubled,fun(int,int,int);d=fun(a,b,c);printf("%lf\n”,d);)doublefun(inta,intb,intc){doubles;s=a%b*c;returns;)2727.000000C)28D)28.000000考生答案:正确答案:D8.33现有如下程序,则程序的输出结果为ttinclude"stdio.h"intf(inta,intb){intc;if(a>0&&a<10)c=(a+b)/2;elsec=a*b/2;returnc;}main(){inta=8,b=20,c;c=f(a,b);printf(,z%d\nz,,c);}A)随机数B)80C)28D)14考生答案:正确答案:D8.34阅读如下程序段,则程序段的执行后的输出结果为#include"stdio.h"main(){charc;inti;charcount();intp(char);for(i=0;i<30;i++)c=count();charcount(){charstr=,A';str+=l;return(str);)p(charc){putchar(c);putchar('\n');)ABab考生答案:正确答案:B35阅读程序,则执行后的结果为ttinclude*stdio.h"main(){inti,m,n;for(i=0;i<3;i++){m=testl();n=test2()printf("%d,%d\n”,m,n);}testl(){intx=0;x++;returnx;)test2(){staticintx=0;x++;returnx;}1,11,33,13,3考生答案:正确答案:B二、填空题(请将每一个空的正确答案写在答题卡相应序号后。)8.36当调用函数时,实参是一个数组名,则向函数传递的是【1】。A考生答案:正确答案:数组的首地址8.37函数fun的功能是:根据以下公式求p的值,结果由函数值返回。m与n为两个正数且要求m>n=例如:m=12,n=8时,运行结果应该是495.000000。请在题目的空白处填写适当的程序语句,将该程序补充完整。ftincludettincludefloatfun(intm,intn){inti;doublep=l.0;for(i=l;i<=m;i++) [2];for(i=l;i<=n;i++) [3];for(i=l;i<=m-n;i++)p=p/i;returnp;)main(){clrscr();printf("p=%f\n”,fun(12,8));}A考生答案:正确答案:p=p*i正确答案:p=p/i8.38以下程序的输出结果是[4】ovoidfun()staticinta=0;a+=2;printf(级d”,a);}main()intcc;for(cc=l;cc<4;cc++)fun();A考生答案:正确答案:2468.39以下程序运行结果

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论