公务员-计算机类 C语言习题.doc_第1页
公务员-计算机类 C语言习题.doc_第2页
公务员-计算机类 C语言习题.doc_第3页
公务员-计算机类 C语言习题.doc_第4页
公务员-计算机类 C语言习题.doc_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

C语言第1章C语言的历史、特点11978年美电话电报公司(AT&T)的贝尔实验室正式发表了C语言。2C语言把括号、赋值、强制类型转换等作为运算符处理。3C语言的数据类型有整型、实型、字符型、数组型、指针型、结构体类型、共用体类型等。(树、栈、链表等为数据构)4C语言允许直接访问物理地址,能进行位(bit)操作。第2章 C语言程序的基本结构【例1】(2002年4月)编制一个好的程序,首先要保证它的正确性和可靠性,还应强调良好的编程风格,在书写功能性注释时应考虑()。A. 仅为整个程序作注释B. 仅为每个模块作注释C. 为程序段作注释D. 为每个语句作注释【答案】C【例2】(2002年4月)以下叙述正确的是()。A.可以把define和if定义为用户标识符。B.可以把define定义为用户标识符,但不能把if定义为用户标识符。C.可以把if定义为用户标识符,但不能把define定义为用户标识符。D.define和if都不能定义用户标识符。【答案】B (define不是关键字,if是关键字,所以define可以定义为用户的标识符。)【例3】(2002年9月)源程序中应包含一些内部文档,以帮助阅读和理解程序,源程序的内部文档通常包括选择合适的标识符注释和()。A.程序的视觉组织B.尽量不用或少用GOTO语句C.检查输入数据的有效性D.设计良好的输出报表【答案】A (源程序文档中主要包括标识符命名,注释和视觉组织。)【例4】(2002年9月)以下叙述中正确的是()。A.构成C语言程序的基本单位是函数。B.可以在一个函数中定义另一个函数。C.main( )函数必须放在其他函数之前。D.所有被调用的函数一定要在调用之前进行定义。【答案】A (C语言是由函数构成的,所以C语言的基本单位是函数,在C语言中不能嵌套定义,就是说不能在函数中定义函数,main()函数可以放在程序的任意位置,但是程序的执行都是从main()函数开始的,所有被调用的函数一定要在调用之前进行声明。)【例5】(2002年9月)以下选项中合法的用户标识符是()。A.longB._2TestC.3DmaxD.A.dat【答案】B【例6】(2003年9月)以下叙述中正确的是()。A.C程序中注释部分可以出现在程序的任意合适地方。B.花括号“”和“”只能作为函数体的定界符。C.构成C程序的基本单位是函数,所有函数名都可以由用户命名。D.分号是C语言之间的分隔符,不是语句的一部分。【答案】A【例7】(2003年9月)若已定义的函数有返回值,则以下关于该函数调用叙述错误的是()。A.函数调用可以作为独立的语句存在。B.函数调用可以作为一个函数的实参。C.函数调用可以出现在表达中。D.函数调用可以作为一个函数的形参。【答案】D在C语言中,当函数有返回值时可以作为表达式或表达式的一部分,而函数调用只能作为实参,不能作为形参。第3章 数据类型、运算符、表达式与基本语句31数据类型【例1】(2000年4月)下列变量定义中合法的是()。A. short _a=1-.le-1B.double b=1+5e2.5C. long do=0xfdaLD.float 2_and=1-e-3【答案】A【例2】(2001年4月) 以下只有在使用时才为该类型变量分配内存的存储类说明是()。A.auto和 staticB.auto和 registerC.register和 staticD.extern和 register【答案】B根据C 语言的规定,auto和register在C语言程序中当它们被用到时才会分配内存,在它们声明时并不占用内存空间的。【例3】(2002年4月)以下选项中不属于C语言类型的是()。A.signed short intB.unsigned long intC.unsigned intD.long short【答案】D【例4】(2002年9月)以下选项中合法的实型常数是()。A.5E2.0B.E3C.2E0 D.1.3E【答案】C【例5】(2002年9月)已知大写字母A的ASCII码的值是65,小写字母a的ASCII码是97,则用八进制表示字符常量101是()。A.字符AB.字符aC.字符eD.非法的常量【答案】A本题中101的八进制在十进制表示则是65,也就是A的ASCII码值。【例6】(2002年9月)C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是()。A.void B.intC.floatD.double【答案】B【例7】(2003年9月)以下选项中可作为C语言合法整数的是()。A.10110BB.0386C.0XffaD.x2a2【答案】C【例8】(2003年9月)已定义c为字符变量,则下列语句中正确的是()。A.c=97B.c=“97”C.c=97D.c=“a”【答案】C【例9】(2004年4月)以下符合C语言语法的实型常量是()。A.1.2E0.5B.3.14159EC.5E-3D.E15【答案】C【例10】(2002年4月) 设有以下变量定义,并已赋确定的值char w; int x; float y; double z;则表达式:w*x+z-y所求得的数据类型为。【答案】double【考点解析】当不同数据类型一起运算时,如果有精度大的数据类型参加时,结果会上最后会以精度大的,这样能保持数据的精度。32运算符【例1】(2000年4月) 设有 int x=11; 则表达式 (x+*1/3) 的值是()。A.3B.4 C.11 D.12【答案】A 【考点解析】在题目中,有三个运算符,其中“”可以把1/3看成一个整体,也就是一个数,那么根据运算符优先级知道,+的优先级比*高,那么先运行+,再运行*,最后结果是3。【例2】(2000年4月) 设 int x=1,y=1; 表达式(!x|y-)的值是()。A.0B.1C.2D.-1【答案】B【考点解析】在这一题中,我们要注意的是-或+的位置,在这里y-是指先把y与!x进行或运算,后y再减1,那么这个表达式的值是1。如果-y是指y减1后再与!x进行或运算。【例3】(2000年4月) 设int b=2;表达式(b2)/(b1)的值是()。A.0B.2C.4D.8【答案】A【考点解析】移位运算是用于一个整数的二进制数向左或向右移动。先是把b化成二进制,再右移两位,则是0;而右移一位,则是1,所以整个表达式的结果是0。【例4】(2000年9月) C语言中运算对象必须是整型的运算符是()。A.%= B./ C.= D.=【答案】A【考点解析】在C语言程序设计中“%”是表示求余运算,是必须是整形的数据类型,而其它三种运算符的运算对象可以是整形也可以是其它数据类型。【例5】(2000年9月) 若已定义x和y为double类型,则表达式x=1,y=x+3/2 的值是()。A.1 B.2 C.2.0 D.2.5【答案】B【考点解析】在这一题中,我们清楚C语言中的自动数据类型的转换,在这里3/2是整形除以整形,所以结果自动转换成整形,再加上1,所以最后结果是2。【例6】(2001年9月) 整型变量x和y的值相等、且为非0值,则以下选项中,结果为零的表达式是()。A.x | yB.x | yC.x & yD.x y【答案】D【考点解析】|是C语言的逻辑或运算符,表示只要有一个表达式为真,则整个表达式都为真;|是按位或运算符,先是把操作数转化成二进制,再按位进行或运算;&是按位与运算符,先是把操作数转化成二进制,再按位进行与运算;是按位异或运算符,先是把操作数转化成二进制,再按位异或运算,就是相同的为,不同的为1。【例7】(2002年9月) 已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 & y+z/2的值是()。A.6 B.0C.2 D.1【答案】【考点解析】在本题中,优先级最高的是括号,因此先计算x+y,跟着是!的优先级高,即运算!(x+y),接着是/ 的优先级高,即运算z/2,再是+、-的运算符优先级,在本表达式中优先级最低的是&,最后的结果是1。【例8】(2002年9月) 设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是()。A.6.500000B.6C.5.500000 D.6.000000【答案】D【考点解析】在本题表达式中,优先级最高的是int,跟着是/,最后是+。根据优先级分析,先运算(int)5.5,是指对5.5取整,这里也是数据类型的强转换。跟着运算b/b,因为b是double类型,则结果也是double类型,最后运算“+”运算符,则可以计算出最后的结果。【例9】(2003年4月)下列关于单目运算符+、-的叙述中正确的是()。A.它们的运算对象可以是任何变量和常量。B.它们的运算对象可以是char型变量和int型变量,但不能是float型变量。C.它们的运算对象可以是int型变量,但不能是double型变量和float型变量。D.它们的运算对象可以是char型变量、int型变量和float型变量。【答案】D【考点解析】在C语言中,+、-是单目运算符,分别表示进行加1、减1运算,一般是在char、int、float数据类型中运算。【例10】(2004年9月)有以下定义语句double a,b; intw;long c;若各变量已正确赋值,则下列选项中正确的表达式是()。A.a=a+b=b+B.w%(int)a+b)C.(c+w)%(int)aD.w=a=b【答案】C【考点解析】在C语言程序设计中,表达式不允许作为值来直接赋值给表达式;在表达式中运用“%”时应该注意,运算符“%”的使用对象必须是整型;“=”是关系运算符,在这里并不正确,赋值符应该是“=”。【例11】(2004年9月)若x和y代表整型数,以下表达式中不能正确表示数学关系x-y10的是()。A.abs(x-y)-10&x-y10C.!(x-y)10D.(x-y)*(x-y)100【答案】C【例12】(2004年9月)设有定义语句:charc1=92,c2=92; 则以下表达式中值为零的是()。A.c1c2B.c1&c2C.c1c2D.c1|c2【答案】A33表达式【例1】(2000年9月) 若变量已正确定义并赋值,下面符合C语言语法的表达式是()。A.a:=b+1 B.a=b=c+2C.int 18.5%3D.a=a+7=c+b【答案】B【考点解析】表达式是由运算符把字符连接起来所构成的。在上面选项中,A中的字符变量定义错误,C选项不是表达式,D选项中等号左边必须是一个可以确定的值。【例2】(2001年4月) 若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是()。A.-3B.9C.-12D.6 【答案】C【考点解析】这题中,有多个赋值关系。从右到左计算,可以这样理解:首先a*a等于9,再计算a=a-9,得到a=-6,再计算a=a+(-6),所以最后答案是-12。【例3】(2002年4月)变量a已被定义为整型,下列表达式不正确的是( )。A.a=A+20 B.a-=aC.a=c+d D.a=c+d 【答案】C【考点解析】在语言中我们得知字符变量可以参与任何整数的运算,在项中,c和d如果是字符变量应刻有单引号括住,如果是其它变量应提前定义,以避免编绎出错。【例4】(2002年4月)若有定义:int a=8,b=5,c;执行语句c=a/b+0.4后,c的值为()。A.1.4B.1C.2.0D.2【答案】B【考点解析】在本题中,首先计算的是优先级高的/,a/b(8/5=1),再将1+0.4的值赋给c,由于c为整型变量所以要将1.4转换为整型,即是舍弃小数位0.4(c的值变为1)。【例5】(2002年9月) 与数学式子 对应的C语言表达式是()。A.3*xn(2*x-1) B.3*x*n(2*x-1)C.3*pow(x,n)*(1/(2*x-1)D.3*pow(n,x)/(2*x-1)【答案】C【考点解析】在C语言程序设计中,数学运算次方在C语言中运用函数pow()来表达,例如:x的y次方,在C语言中应该这样表达:pow(x,y),所在选项中,选项D表达写反了,则只有选项C才是正确的选项。【例6】(2002年9月) 以下选项中,与k=n+完全等价的表达式是()。A.k=n,n=n+1 B.n=n+1,k=nC.k=+n D.k+=n+1【答案】【考点解析】在本题中,k=n+为后辍运算,根据其运算规则,应先把n的值赋给k,然后n的值再加上1,选项的表达式与本题中的表达式等价。【例7】(2003年9月)以下选项中非法的表达式是()。A.0=x100 B.i=j=0C.(char)(65+3) D.x+1=x+1【答案】D【考点解析】在C语言程序设计中,表达式不允许作为值来直接赋值给表达式。【例8】(2004年4月)设有定义:float a=2,b=4,h=3;以下语言表达式中与代数式1/2*(a+b)h计算结果不相符的是()。A.(a+b)*h/2 B.(1/2)*(a+b)*hC.(a+b)*h*1/2 D.h/2*(a+b)【答案】B【考点解析】本题实质上是要把数学表达式在C语言程序设计中表达出来,在C语言中优先级最高是括号,那么先计算所有的括号,可以看到选项B中的(1/2)结果是0,那么整个表达式的结果就是0,而其它三项的结果并不是0。第4章程序设计三种基本结构一、选择题:【例1】(2002年4月)下面的程序的输出结果是()。#includemain( )int i=010,j=10;printf(%d,%d,+i,j-);A.11,10B.9,10C.010,9D.10,9【答案】B (i的值是以八进制定义的)【例2】(2002年4月)以下的程序的输出结果是()。main( )int a=5,b=4,c=6,d;printf(dn,d=ab?)(ac?a:c):(b);A.5B.4C.6D.不确定【答案】C【例3】(2002年4月)以下程序的输出结果是()。main( )int a=4,b=5,c=0,d;d=!a&!b|!c;printf(%dn,d);A.1 B.0C.非0的数 D.-1【答案】A【例4】(2002年4月)以下程序的输出结果是()。main( )char x=040;printf(%on,x1);A.100B.80C.64 D.32【答案】A【例5】(2002年9月)已知i,j,k为int型变量,若从键盘输入:1,2,3,使i的值为1、j的值为2,k的值为3,以下选项中正确的输入语句是( )。A. scanf(%2d%2d%2d,&I,&j,&k);B. scanf(%d %d %d,&I,&j,&k);C. scanf(%d,%d,%d,&I,&j,&k); D.scanf(i=%d,j=%d,k=%d,&I,&j,&k);【答案】C【例6】(2002年9月)若有以下程序main( )int k=2,i=2,m;m=(k+=i*=k);printf(“%d,%dn”,m,i);执行后的结果是()。A.8,6B.8,3C.6,4D.7,4【答案】C【考点解析】根据C语言中printf函数的用法可知,格式控制参数是d,即是输出是十进制的数,复合运算表达式是右结合性,先从右边开始计算i*=k得i=i*k=2*2=4,k+=i得k=k+i=2+4=6,所以m的值为6。输出结果为m=6,i=4。【例7】(2003年4月)若有以下程序段(n所赋的是八进制数)int m=32767, n=032767;printf(“%d,%on”,m,n);执行后输出结果是()。A.32767,32767B.32767,032767C.32767,77777D.32767,77777【答案】A【例8】(2003年4月)有以下程序段int m=0,n=0,char c=a;scanf(%d%c%d,&m,&c,&n);prinft(%d,%c,%dn,m,c,n);若从键盘上输入:10A10,则输出结果是()。A.10,A,10B.10,a,10C.10,a,0D.10,A,0【答案】A【例9】(2003年4月)有以下程序main( )int i=10,j=1;printf(%d,%dn ,i-,+j);执行输出的结果是()。A. 9,2B.10,2C.9,1D.10,1【答案】B【例10】(2003年9月)有以下程序main()int a ;char c=10;float f=100.0;double x; a=f/=c*=(x=6.5);printf(%d %d %3.1f %3.1fn ,a,c,f,x);程序运行后的输出结果是()。A.1 65 1 6.5 B.1 65 1.5 6.5C.1 65 1.0 6.5D.2 65 1.5 6.5【答案】B【例11】(2003年9月)有以下程序main()int a=1,b=2,m=0,n=0,k;k=(n=ba)|(m=ab);printf(%d,%dn,k,m);程序运行后的输出结果是()。A.0,0B.0,1C.1,0D.1,1【答案】C【例12】(2003年9月)有定义语句:int x,y;若要通过scanf(%d,%d,&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是A.11 12B.11, 12C.11,12D.11, 12【答案】A【例13】(2003年9月)设有以下程序段:int x=2002,y=2003;printf(“%dn”,(x,y);则以下叙述中正确的是A.输出语句中格式说明符的个数少于输出项的个数,不能正确输出。B.运行时产生出错信息。C.输出值为2002。D.输出值为2003。【答案】D【例14】(2003年9月)有以下程序main ( )intx=3,y=2,z=1;printf(%dn,x/y&z);程序运行后的输出结果是()。A.3B.2C.1D.0【答案】D【例15】(2004年4月)有以下程序main()int x=102,y=012;printf(%2d,%2dn,x,y);执行后输出结果是()。A.10,01B.02,12C.102,10D.02,10【答案】C【例16】(2004年4月)有以下程序main() unsigned char a,b;a=4|3;b=4&3;printf(%d%dn,a,b);执行后输出结果是( )。A.70B.07C.11D.430【答案】A【例17】(2004年9月)有以下程序main()char a,b,c,d;scanf(%c,%c,%d,%d ,&a,&b,&c,&d);printf(%c,%c,%c,%cn ,a,b,c,d);若运行时从键盘上输入:6,5,65,66。则输出结果是()。A.6,5,A,BB.6,5,65,66C.6,5,6,5D.6,5,6,6【答案】A【考点解析】在C语言程序设计中,scanf函数的格式控制参数中“d”表示输入整数,“%c”表示输入字符,也就是说,前两个输入的数是以字符形式输入的,后两个输入的数是以整数形式输入的,输出时,全部都以字符形式输出,而刚才的后两个整数应该用ASCII码转化为字符。则输出的是6,5,A,B。【例18】(2004年9月)有以下程序main ( )int m=3,n=4,x;x=-m+;x=x+8/+n;printf(“%dn”,x);程序运行后的输出结果是()。A.3B.5C.-1D.-2【答案】D【考点解析】在本题中,根据C语言中printf函数的用法可知,格式控制参数是d,即是输出是十进制的数,表达式x=-m+可以转换成x=-(m+),可得x的值为-3,而表达式x=x+8/+n可以转换成x=x+8/(+n),代入x的值得x=-3+8/5=-2,所以最后的输出结果是-2。【例19】(2004年9月)有以下程序main ( )char a=a,b;printf(“%c”,+a);printf(“%cn”,b=a+);程序运行后的输出结果是()。A.b,bB.b,cC.a,bD.a,c【答案】A【例20】(2004年9月)有以下程序main ( )int m=0256,n=256;printf(%o %on,m,n);程序运行后的输出结果是()。A.0256 0400B.0256 256C.256 400D.400 400【答案】C【例21】(2004年9月)有以下程序main ( )int a=666,b=888;printf(“%dn”,a,b);程序运行后的输出结果是()。A.错误信息B.666C.888D.666,888【答案】B【例22】(2004年9月)有以下程序main ( )unsigned int a;int b=-1;a=b;printf(“%u”,a);程序运行后的输出结果是()。A.-1B.65535C.32767D.-32768【答案】B【考点解析】在本题中,有一无符号变量和一整型变量,它们的值都是-1,在计算机整型的存储是以二进制存在,即是1000000000000001,输出函数的要求输出无符号a的值,即要把1000000000000001转化为十进制,得65535。二、填空题:【例23】(2002年4月)以下程序的输出结果是_。main()int a=177;printf(%on ,a);【答案】261【考点解析】本题中先定义了一个十进制整数值为177的a,而printf()函数格式控制参数是o,也就是以八进制的整数形式输出,a的十进制数值是177转换为八进制数是261。【例24】(2002年4月)以下程序的输出结果是_。main()int a=0;a+=(a=8);printf(“%dn”,a);【答案】16【考点解析】在程序是用printf函数输出十进制的整数,表达式经过复合运算:a=a+a=8+8=16,则结果是16。【例25】(2002年4月)以下程序的输出结果是_。main()int a=5,b=4,c=3,d;d=(abc);printf(“%dn”,d);【答案】0【考点解析】在C语言中规定了关系运算符”按左结合来运算的,所以在本题中先计算ab,结果是真,即是1,再计算ac,结果是假,所以最后结果是0。【例26】(2003年4月)若有语句int i=-19,j=i%4;printf(“%dn”,j);则输出结果是 。【答案】-3【考点解析】根据C语言中printf函数的用法可知,格式控制参数是d,即是输出是十进制的数,%运算符是取除运算运算符,j=-19%4=-3。即答案是-3。【例27】(2003年9月)以下程序运行后的输出结果是。main()int p=30;printf(%dn,(p/30?p/10:p%3);【答案】3【考点解析】printf函数的格式控制参数是d,即是输出是十进制的数,三目运算符:(条件表达式)?(条件为真时的表达式):(条件为假时的表达式),条件表达式p/30=100为真,按照规则求表达式p/10的值就是输出的值,因此最后的输出表达式的值为3。【例28】(2003年9月)以下程序运行后的输出结果是。main( )char m;m=B+32;printf(%Cn,m);【答案】b【考点解析】printf函数的格式控制参数是C,即输出的是字符,在本题中,表达式m=B+32是表示字符B的ASCII码加上32再赋予m,而字符B的ASCII码是66,因此字符m的ASCII为66+32=98,最后输出的结果是ASCII码为98的字符,通过计算得字符b的ASCII码是98,则最后结果是输出b。【例29】(2004年4月)已知字符A的ASCII码值为65,以下语句的输出结果是_。char ch=B;printf(%c%dn,ch,ch);【答案】B66【考点解析】本题中printf函数的格式控制参数有两个,分别是c d,即是以字符格式和十进制整数格式输出,的ASCII码值为66,即输出的十进制数是66,则最后输出答案为B66。【例30】(2004年9月)以下程序段的输出结果是_。int i=9;printf(“%on”,i);【答案】11【考点解析】本题中有一个十进制整数值为9的变量i,printf函数参数要求输出八进制的数,值为9的变量i的八进制数是11,则最后的结果是11。【例31】(2004年9月)以下程序运行后的输出结果是_。main()int a,b,c;a=25;b=025;c=0x25;printf(%d %d %d na,b,c);【答案】25 21 37【考点解析】本题中有十进制整数值为25的a,八进制整数值为025的b,十六进制整数值为0x25的c,printf函数要求输出结果是十进制整数,且中间要用空格分隔。那么三个变量的十进制整数值分别是25,21,37。即25 21 37也就是答案。42选择结构一、选择题:【例1】(2002年9月)有以下程序main()int a=15,b=21,m=0;switch(a%3) case 0:m+ ;break;case 1:m+;switch(b%2)default:m+;case 0:m+;break; printf(%dn,m);程序运行后的输出结果是()。A.1B.2C.3D.4【答案】A【考点解析】在本题中是运行switch语句,当中有break语句,而break语句的作用是跳出switch语句,即如果没有break语句,程序将继续执行到switch语句的结束。程序中,首先执行表达式a%3=0,则执行case 0,即m=m+1=1;所以最后输出1。【例3】(2003年4月)有以下程序main()int i=1,j=1,k=2;if(j+|k+)&i+)printf(%d,%d,%dn,i,j,k);执行后输出结果是()。A.1,1,2B.2,2,1C.2,2,2D.2,2,3【答案】C【考点解析】在本题中,先计算if语句后面表达式(j+|k+)&i+,当j=j+1=2成立时,程序并不继续运行k+,即k=2,再运行i=i+1=2,最后输出i、j、k的值分别是2,2,2。【例4】(2003年4月)有以下程序main()int a=5,b=4,c=3,d=2;if(abc)printf(%dn,d);elseif(c-1=d)=1)printf(%dn,d+1);elseprintf(%dn,d+2);执行后输出结果是()。A.2 B.3C.4 D.编译时有错,无结果【答案】B【考点解析】在语言中if总是与离它最近的else语句配对。首先执行第一个if语句,判断表达式(abc),”运算符为左结合性,即abc的值为假,所以执行else后面的语句。而else后面语句又是if else语句,判断表达式(c-1=d)=1),整个表达式成立,则执行输出d+1=3。【例6】(2004年4月)以下程序中与语句k=ab? (bc?1:0):0功能等价的是()。A.if(ab)&(bc)k=1;B.if(ab)|(bc) k=1;else k=0;; else k=0;C.if (ab) k=1; else if (b=c) k=1; else if (bb和bc同时为真k=1,否则k=0。明显选项A符合条件。二、填空题:【例10】(2003年4月)若有以下程序main()int a=4,b=3,c=5,t=0;if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;printf(%d %d %dn,a,b,c); 执行输出结果是 。【答案】5 0 3【考点解析】根据C语言选择结构if语句知道,当条件成立时,程序将执行其后的一条语句或一个语句块。当条件不成立时,程序将跳过if语句后的语句或语句块,然后继续执行。在本题中,我们先计算第一个if后面的表达式ab为假,则执行表达式a=b、b=t,所以a的值为3,b的值为0。接着判断第二个if后面的表达式ac,35为真则执行语句t=a,最后执行表达式a=c、c=t,即a的值变为5,c的值变为3,所以最后的输出结果是5 0 3。【例12】(2004年4月)有以下程序main()int n=0,m=1,x=2;if(!n)x-=1;if(m)x-=2;if(x)x-=3;printf(%dn,x);执行后输出结果是。【答案】-4【考点解析】在本题中,是多个if构成的选择结构。!n=!0为真执行x=x-1=2-1=1,m1,而m又为真,执行x=x-2=1-2=-1,再x的值为真,执行x=x-3=-1-3=-4。43循环结构一、选择题:【例1】(2002年4月)以下程序中,while循环的循环次数是()。main()int i=0;while(i10)if(i1) continue;if(i=5)break;i+;A.1 B.10C.6 D.死循环,不能确定次数【答案】D【考点解析】在题目中,首先给整型变量i赋初始值为0,接着进行循环语句while判断,判断为真则进入循环体,在循环体中执行选择结构的if语句,这里有两个if语句,第一个if成立,则执行重新回到while语句重新判断,因为变量i的值没有发生改变,则程序会一直在这两条语句间执行,而造成死循环。【例2】(2002年4月)以下程序的输出结果是()。main()int a=0,ifor(i=1;i5;i+)switch(i)case 0:case 3:a+=2;case 1:case 2:a+=3;default:a+=5;printf(%dn ,a);A.31B.13C.10D.20【答案】A【考点解析】在本题中,首先定义了一个整型变量a值为0,接着执行for循环语句,循环为5次,每一次的循环都执行选择结构的switch语句,而这个switch语句是根据i的值来对变量a进行操作,而这个switch语句并没有结合break语句,所以它是会继续执行当前语句下面的case,分别当i为1时,a=a+3+5=8;当i=2时,a=a+3+5=16;当i=3时,a=a+2+3+5=26;其余的为a=a+5=31,即答案为31。【例3】(2002年4月)以下程序的输出结果是()。#include main()int i=0,a=0;while(i20)for(;)if(i%10)=0) break;else i-;i+=11;a+=i; printf(%dn,a);A.21B.32C.33D.11【答案】B【考点解析】本题目中,首先定义整型变量i值为0和a值为0,接着进行循环while语句的判断,通过判断进入循环体;在这里有一个省略全部表达式的for语句,因为for语句没有表达式,所以它的循环是一定执行的,即如果没有执行break语句,它会进入死循环。在for语句的循环体里有一个选择结构,当变量i是小于10的数,就退出for语句的循环,否则执行i减1。执行完while语句后,调用printf函数输出变量a的值。【例5】(2003年4月)有以下程序main()int i=0,s=0;doif(i%2)i+;continue; i+;s+=i; while(i7);printf(%dn,s);执行后输出结果是A.16B.12C.28D.21【答案】A【考点解析】在本题中,首先定义了整型变量i、s,它们的值都是0,再执行do while语句,在循环体中,运行选择结构if语句,如果i是奇数时,i+,并且回到循环体的开始重新执行;否则i+和s=s+i;而运行循环的条件是i7,即循环次数为。所以整个运行过程就是小于7的奇数相加,即:1+3+5+7=16。【例7】(2003年9月)有以下程序main()int k=4,n=0;for(;nk;)n+;if(n%3!=0)continue;k-;printf(“%d,%dn”,k,n);程序运行后的输出结果是()。A.1,1B.2,2 C.3,3D.4,4【答案】C【考点解析】在本题中,首先定义了整型变量k、n,它们的值分别是4、0;在for循环语句中,有条件n1;n-)s=s+1/n;printf(%6.4fn,s);程序运行后输出结果错误,导致错误结果的程序行是()。A.s=1.0;B.for(n=10;n1;n-)C.s=s+1/n; D.printf(“%6.4fn”,s);【答案】B【考点解析】根据题目意思是把1/n(1=n0;n-)即可。【例12】(2004年4月)有以下程序main()int i,n=0;for(i=2;i5;i+)doif(i%3) continue;n+;while(!i);n+;printf(n=%dn,n);程序执行后的输出结果是()。A.n=5B.n=2C.n=3D.n=4【答案】D【考点解析】在本题中,首先定义了整型变量i、n,其中n的值为0;接着是循环结构for,在这里循环体的内容比较复杂,因为是循环结构的嵌套,在第一个循环体里又加上循环结构do while;但是在本题中,i的值始终是大于0,因此do while循环体只执行了一次n+,而循环语句for执行的次数为3,每一次for循环体的执行都是n+,则最后的结果是n=4。【例14】(2004年9月)有以下程序main()int i=0,s=0;for(;)if(i=3|i=5) continue;if(i=6) break;i+;s+=i;printf(“%dn”,s);程序运行后的输出结果是()。A.10 B.13C.24 D.程序进入死循环【答案】D【考点解析】在本题中,循环语句for缺省了表达式,即如果在循环体内没有break语句,则循环并不会退出,那么就是进入死循环。在本题中

温馨提示

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

评论

0/150

提交评论