版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
..C语言程序设计目录第一章C语言程序设计概述1一、主要内容1二、练习题部分1三、参考答案3第三章数据类型、运算符和表达式4一、主要内容4二、练习题5〔一练习题之数据类型5〔二练习题之运算符和表达式8三、参考答案13〔一练习题之数据类型参考答案13〔二练习题之运算符和表达式参考答案14第四章顺序程序设计15一、主要内容15二、练习题15三、参考答案16第五章选择结构程序设计17一、主要内容17二、练习题17三、参考答案22第六章循环结构25一、主要内容25二、练习题25三、参考答案34第七章数组39一、主要内容39二、练习题39三、参考答案49第八章函数54一、主要内容54二、练习题55三、参考答案62第九章预处理命令67一、主要内容67二、练习题67第十章指针69一、主要内容69二、练习题69三、参考答案74第十一章结构体和共用体76一、主要内容76二、练习题76三、参考答案78第十二章位运算82一、主要内容82二、练习题82第十三章文件83一、主要内容83二、练习题83三、参考答案85..第一章C语言程序设计概述一、主要内容c程序基本结构特点函数与主函数程序由一个或多个函数组成,函数由函数头和函数体构成。必须有且只能有一个主函数main<>程序执行从main开始,在main中结束,其它函数通过嵌套调用得以执行。程序语句C程序由语句组成,用";"作为语句终止符/**/部分为注释,不能嵌套,不产生编译代码编译预处理不是C语言的一部分C程序的运行步骤运行一个C程序,从输入源程序开始,要经过编辑源程序文件〔•C、编译生成目标文件〔•obj、连接生成可执行文件〔•exe和执行四个步骤二、练习题部分一、选择题:1、C语言程序编译过程中产生的文件有:〔A.索引文件和文本文件两种B.目标文件和可执行文件C.二进制文件一种D.ASCII码文件和二进制文件两种2、以下说法中正确的是:<>A.C语言程序总是从第一个定义的函数开始执行B.在C语言程序中,要调用的函数必须在main函数中定义C.C语言程序总是从main函数开始执行D.C语言程序中,main函数必须放在程序的开始部分3、C语言源程序的基本单位是:〔A.函数B.标识符C.表达式D.语句4、以下叙述正确的是:〔A>C语言比其他语言高级B>C语言可以不用编译就能被计算机识别执行C>C语言以接近英语国家的自然语言和数学语言作为语言的表达形式D>C语言出现的最晚、具有其他语言的一切优点5、在一个C语言程序中:〔A>main函数必须出现在所有函数之前B>main函数可以在任何地方出现C>main函数必须出现在所有函数之后D>main函数必须出现在固定位置6、C++语言中工程文件的扩展名是:。〔A..cppB..prjC..cD..obj〔说明:BC++环境中工程文件扩展名.prj,VC中为.dsp7、C文件的扩展名是:〔〔A.cpp〔B.prj〔C.c〔D.txt8、一个C程序的执行是从: <>A>本程序的main函数开始,到main函数结束B>本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C>本程序的main函数开始,到本程序文件的最后一个函数结束D>本程序文件的第一个函数开始,到本程序main函数结束9、以下叙述正确的是:<>A>在C程序中,main函数必须位于程序的最前面B>C程序的每行中只能写一条语句C>C语言本身没有输入输出语句D>在对一个C程序进行编译的过程中,可发现注释中的拼写错误10、以下叙述不正确的是:<>A>一个C源程序可由一个或多个函数组成B>一个C源程序必须包含一个main函数C>C程序的基本组成单位是函数D>在C程序中,注释说明只能位于一条语句的后面11、C语言规定:在一个源程序中,main函数的位置:<>A>必须在最开始B>必须在系统调用的库函数的后面C>可以任意D>必须在最后12、一个C语言程序是由 :<>A>一个主程序和若干子程序组成B>函数组成C>若干过程组成D>若干子程序组成13、以下叙述中正确的是:〔AC语言的源程序不必通过编译就可以直接运行BC语言中的每条可执行语句最终都将被转换成二进制的机器指令CC源程序经编译形成的二进制代码可以直接运行DC语言中的函数不可以单独进行编译14、以下对C语言函数的描述中,正确的是:〔AC程序必须由一个或一个以上的函数组成BC函数既可以嵌套定义又可以递归调用C函数必须有返回值,否则不能使用函数DC程序中有调用关系的所有函数必须放在同一个程序文件中15、C语言的注释定界符是:<>A.{}B.[]C.**D./**/二、填空题:1、C程序的运行需要经过_和__两步进行。2、C语言的编译单位是____。3、C语言程序由___组成。4、结构化设计中的三种基本结构是__、__和___。5、C语言中,一个函数一般由两个部分组成,它们是___和___。6、一个C语言程序总是从__函数开始执行程序。7、一个C程序中至少应包括一个___。8、C语言函数是由函数头和函数体两部分组成。其中,函数头包括___,____和___。9、C程序中用/*……*/括起来的内容是程序的。10、C源程序的基本单位是。三、判断题:1、C语言程序的三种基本结构是递归、选择、循环。〔2、函数若无返回值,则它的返回值是整数值0。〔3、函数若无返回值,则它一定无形参。〔三、参考答案一、选择题:1~5:BCACB6~10:BCACD11~15:CBBAD二、填空题:1、编译连接2、文件3、函数4、顺序结构选择结构循环结构5、函数首部函数体6、主函数〔或main函数7、函数8、函数类型函数名函数参数9、注释10、函数三、判断题:1、×2、×3、×第三章数据类型、运算符和表达式〔温馨提示:本章内容非常繁琐,细节较多,请将所记笔记中的说明部分和例题好好看看,一般考选择题和填空题一、主要内容标识符命名原则:合法的要求是由字母,数字,下划线组成,并且第一个必须为字母或则是下划线。关键字不可以作为用户标识符号。maindefinescanfprintf及其他库函数的函数名都不是关键字可以用作标识符。If与if不同,If是可以做为用户标识符,因为C区分大小写。基本数据类型:基本数据类型有哪些?所占空间大小及说明符。整型、实型、字符型常量的合法表示形式,字符串的表示形式。a实型数据的合法形式:小数形式和指数形式尤其要注意指数形式的格式e前必有数,e后必为整数。2.333e-1就是合法的b>字符数据的合法形式:以单引号括起来的一个字符,注意转义字符P48表3-3。如‘\x6d’是合法的字符,ASCII码为十六进制的6d,‘\141’也合法,ASCII码为八进制141,‘\108’不合法。c>字符常量和字符串的区别:'a'是字符占一个字节,"a"是字符串占两个字节<含有一个结束符号>。常量和变量符号常量的定义格式:eg#definePI3.14159<注意宏定义后无分号结尾>变量的定义格式:变量赋初值的方式。inta=b=c=3;不合法数据混合计算时数据类型的转换:P54图3-10。强制类型转换:一定是〔inta不是int〔a,注意类型上一定有括号的。注意〔int〔a+b和〔inta+b的区别。前是把a+b转型,后是把a转型再加b。运算符1.运算符的优先级别和结合方向:单目运算>双目运算算术>关系运算>逻辑运算>条件运算>赋值运算>逗号运算2.算术运算符:%要求左右两边都是整型数,运算结果为余数。/运算若左右两边都是整型数,结果为整数。自增自减运算符,前置先自增减,再运算;后置先运算,再自增减。自增自减运算符只能作用于变量,不能作用于常量和表达式。如:#defineA3A++;是错误写法。3.关系运算符:a注意赋值=与关系==的区别。b>c语言中没有逻辑类型,逻辑"真"用非0表示,逻辑"假"用0表示,c>x在[a,b]间的关系表达式为x>=a&&x<=b,不能写为a>=x>=b。但该表达式语法成立,有运算结果。如3>=1>=5运算时从左向右依次运算,即3>=1为真,值为1,此时,表达式为1>=5,运算结果为假,值为0。所以整个1>=3>=5的值为0.4.逻辑运算符:a>!优先级别比较高,!>&&>||。b&&和||运算时注意短路原则。〔常考!5.赋值运算符:a复合赋值运算符的使用。如a=12,则a+=a-=a*=a;运算后a的值6.条件运算符:a结合方向从右向左。7.逗号运算符:优先级别最低;也叫顺序执行运算符,表达式的数值逗号最右边的那个表达式的数值。〔2,3,4的表达式的数值就是4表达式1.能将数学表达式写成c表达式2.计算表达式的值,注意优先级别和结合方向。二、练习题〔一练习题之数据类型一、选择题:1、以下标识符中,不能作为合法的C用户定义标识符的是〔AputcharBdoubleC_123DINT2、下列字符序列中,不可用作C语言标识符的是〔A.b70B.#abC.symbolD.a_13.以下不能定义为用户标识符的是:〔A.MAINB._HJC.208ongD.LINE124.以下是正确的字符常量是:〔。A."c"B.'\\'C.'W1'D."\32a"5.以下各项是错误的整型常量的是:〔A.-0xcdfB.018C.0xeD.0116、下列四组选项中,均不是C语言关键字的选项是 :<>A>defineB>getcC>includeD>whileIFcharscanfgotypeprintfcasepow7、下面四个选项中,均是正确的八进制数或十六进制数的选项是:<>A>-10 B>0abc C>0010 D>0al20x8f -017 -0x11 -0xl23-011 0xc 0xf1 -0x88、下面四个选项中,均是正确的数值常量或字符常量的选项是: <>A>0.0 B>"a" C>'3' D>+0010f3.9E-2.50110xabcd8.9elel0xFFOO2e2'&''\'''0a50.9、下面不正确的字符串常量是:< >。A>'abc'B>"12'12"C>"0"D>""10.设int类型的数据长度为2字节,则该类型数据的取值范围是:〔A.0至65536B.0至65535C.-32767至32768D.-32768至3276711、在C语言中<以16位PC机为例>,5种基本数据类型的存储空间长度的排列顺序为<>A>char<int<1ongint<=float<doubleB>char=int<1ongint<=float<doubleC>char<int<1ongint=float=doubleD>char=int=1ongint<=float<double12.若有以下程序段〔n所赋的是八进制数intm=32767,n=0327;printf<"%d,%o\n",m,n>;执行后输出结果是:〔A>32767,327B>32767,0327C>32767,777D>32767,077713.设变量a是整形,f是实型,i是双精度型,则表达式10+′a′+i*f值的数据类型为:〔A.intB.floatC.doubleD.不确定14.在C语言中,char型数据在内存中的存储形式是:〔A.补码B.反码C.源码D.ASCII码15.字符串"a"在内存中占据的字节个数为:〔A.0B.1C.2D.316.下列为字符常量的是:〔A."a"B.‘ab’C.‘\n’D.‘\084’17.在C语言中,下面字符串能用作变量名的是:〔A.a+bB.autoC.2-andD.a218.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3';后c2中的值为< >A>D B>68 C>不确定的值 D>C19、在C语言中合法的字符型常量是。〔A、"A"B、‘\t’C、65D、A20、以下选项中,C中正确的整型常量形式是。〔A、0x16B、-202.18C、1,000D、0458二、填空题:1. 在C语言中的实型变量分为两种类型,它们是___和______。2.将下列字符串表示成C语言的字符串常量〔1C:\TC\LIB_____________〔2Hesaid:"I’mastudent."________________〔385%studentpassed.____________________________3.在C语言中,标识符中英文字母的大小写________〔是/不是等价的。换句话说,sum、Sum、SUM是3个_______〔相同/不同的标识符。4.已知charw;intx;floaty;doublez;则表达式:w*x+z-y所求得的数据类型为。5.变量名由字母、数字和下划线组成,并且必须是______打头。7.已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch='a'+'8'-'3'的值为。三、看程序写结果1.如果对以下程序进行编译和运行,其结果为________。main<>{intx,y;x=555;y=x+2;y=x+2;printf<"x=%d",x,y>;}2.执行以下程序,写出程序运行结果________。main<>{intc1,c2;c1=97;c2=98;printf<"%c%c\n",c1,c2>;printf<"%d%d\n",c1,c2>;}3.执行以下程序,写出程序运行结果________。main<>{charc1,c2;c1='A';c2='a';c1=c1+2;c2=c2+2;printf<"%d%c",c1,c2>;}〔二练习题之运算符和表达式一、选择题:1、以下运算符中,优先级最高的运算符是〔A.=B.!=C.*<乘号>D.<>2、若有以下定义,则能使值为3的表达式是〔intk=7,x=12;A.x%=<k%=5>B.x%=<k-k%5>C.x%=k-k%5D.<x%=k>-<k%=5>3、设在tc2.0中有整型变量x,y,z均为3,表达式<x++>+<y++>+<z++>的值是<>A.6B.7C.8D.94、有以下程序运行后的输出结果是:〔main<>{chara='A',b;print<"%c,",++a>;printf<"%c\n",b=a++>;}A.B,BB.B,CC.A,BD.A,C5、有以下程序运行后的输出结果是:〔main<>{chara='a';printf<"%c,",++a>;printf<"%c\n",a++>;}A>b,bB>b,cC>a,bD>a,c6、设a=6,b=4,则表达式b*=a+3的值为:〔A3B18C27D367、有如下程序段,其输出结果是:<>inta=3;floatb=15.6,f=1.5;printf<"%d",a+<int>b/2+<int>f%3>;A>10B>11C>12D>138、以下程序的输出结果是:〔main<>{inta=3;printf<"%d%d\n",a,a++>;}A.43B.44C.53D.549、以下程序的输出结果是〔。main<>{inta=10;printf<"%d%d\n",a,a++>;}〔A1110〔B1111〔C1220〔D121110、若有定义:inta=8,b=5,c;执行语句c=a/b+0.4;后c的值为〔。〔A1.4〔B1〔C2.0〔D211、若x,i,j和k都是int型变量, 则执行下面表达式x=<i=4,j=16,k=32>后x的值为< >A>4B>16C>32D>5212、若有代数式3ae/bc,则不正确的C语言表达式是: < >A>a/b/c*e*3B>3*a*e/b/cC>3*a*e/b*cD>a*e/c/b*313、以下不正确的叙述是:< >A>在C程序中,逗号运算符的优先级最低B>在C程序中,APH和aph是两个不同的变量C>若a和b类型相同,在执行了赋值表达式a=b后b中的值将放人a中,而b中的值不变。D>当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值。14、已知各变量的类型说明如下: < >inti=8,k,a,b;unsignedlongw=5;doublex=1.42,y=5.2;则以下符合C语言语法的表达式是:A>a+=a-=<b=4>*<a=3> B>a=a*3=2C>x%<-3> D>y=f1oat<i>15、若有定义:inta=7;floatx=2.5,y=4.7; 则表达式x+a%3*<int><x+y>%2/4的值是:< >A>2.500000 B>2.7500OO C>3.500000 D>0.000000。16、表达式b*=〔b=3+<a=10>的值为:〔〔A3〔B19〔C27〔D3917、假设所有变量均为整型,则表达式<a=2,b=5,b++,a+b>的值是:< >A>7B>8C>6D>218、若有以下程序:
main<>
{intk=2,i=2,m;
m=<k+=i*=k>;printf<"%d,%d\n",m,i>;
}
执行后的输出结果是: 〔〔A>8,6〔B>8,3〔C>6,4〔D>7,419.在C语言中运算对象必须是整型的运算符是:〔A.%B./C.==D.<=20.若有以下定义:intx=10,y=3,z;则语句:printf<"%d\n",z=<x%y,x/y>>;的输出结果为<>A.1B.0C.2D.321.下列哪一个表达式的值是整数类型<>。 A.15/2B.15/2+2.0C.25/5.0D.0.5*1022.若doublex=2,y;则执行y=x+3/2;后,y的值是〔。A.3.500000B.3.000000C.2.000000D.323、以下运算符中优先级最低的是〔A&&B&C||D|24、设以下变量均为int类型,则值不等于7的表达式是〔A><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>25.设有以下定义inta=0;doubleb=1.25;charc=’A’;#defined2则下面语句中错误的是: <><A>a++; <B>b++ <C>c++; <D>d++;26、若有intx=12,n=5;则x%=<n%=2>;后x的值是。〔A、1B、0C、-1D、227、设有定义intk=0;则以下四个表达式中与其它三个的值不同的是。〔A、k++B、k+=1C、++kD、k+1二、填空题:1、若有以下定义intm=5,y=2;则计算表达式y+=y-=m*=y后的y值是。2、若a为int型变量,则下面表达式的值为。<a=4*5,a*2>,a+63、若a是int型变量,则执行表达式"a=25/3%3"后,a的值为。4、s=3,s++,s;这个语句执行完后,s的值为。5、C语言中的标识符只能由三种字符组成,他们是字母、数字和。6、已知i=5;写出语句a=--i,执行后整型变量a的值是。7、设x的值为15,n的值为2,则表达式x*=n+3运算后x的值是。8、intx=2;x*=y=z=4;则x的值为。9、表达式i++相当于表达式i=。10、若s是unsignedint型变量,则下面表达式的值是________。s%2+<s+1>%211、程序段执行后c3的值是_______。intc1=1,c2=2;floatc3;c3=1/c2*c1;12、已知’a’的ASCII码为97,printf<"%5c\n",’e’>的输出是______;printf<"%5d\n",’e’>的输出是___________。13、表达式:5%2=__________,2/3=__________。14、在C语言中,单目运算符的结合方向<运算方向>是_____________;唯一的一个三目运算符是_____________。15、设a,b,t为整型变量,初值为a=7,b=9,执行完语句t=<a>b>?a:b后,t的值是。16、算术表达式a=b+3中,a、b称为_________,3称为________,=、+称为_________。17、若有定义:intb=7;floata=2.5,c=4.7;则表达式a+<int><b/3*<int><a+c>/2>%4的值为。18.C语言中为了简化程序,提高程序的编译效率,在赋值运算符前面加上其他运算符号构成复合运算符。例如:x=x+5用复合运算符可以写成。19、表达式1/4+2.75的值是。20、若a是int型变量,且a的初值为6,则计算表达式"a+=a-=a*a"后a的值为21、若s是int型变量,且s=6,则表达式"s%2+<s+1>%2"的值为。22、若x是int型变量,则执行表达式"x=<a=4,6*2>"后,x的值为。23、若x和n均是int型变量,且x的初值为12,n的初值为5,则执行表达式"x%=<n%=2>"后,x的值为。24、设intx=1/4;则x的值为。25、若charw,intx,floaty,doublez;则表达式w*x+z-y的结果为类型。26、设x的值为15,n的值为2,则表达式x*=n+3运算后x的值是。27、假设有条件intx=1,y=2,z=3;则表达式z+=x>y?++x:++y的值是。28、inta=2,b=3;表达式a>b?a++:++b的值为。29、执行语句"a=5+<c=6>;"后,变量a、c的值依次为、。30、表达式a=3,a++,--a的值为。31、设a、b、c为整型数,且a=3,b=5,c=2,则执行完以下语句:a*=16+<b++>-<++c>;后a的值是。以下程序运行后的输出结果是main<>{inta=1,b=4,c=2;a=<a+b>/c;printf<"%d\n",--a>;}运行结果;设inta=3,b=5;floatx=7.5,y=3.5;则表达式<float>a+b/2+<int>x%<int>y;的值是34、在C语言的表达式中,x=x+5用复合运算符可以写成。35、设a=12,表达式a/=a+a运算后,a的值是。36.若定义:charc=‘\010’;则变量c中包含的字符个数是。37.赋值语句是由加上一个分号构成。38.a=12,n=5,表达式a%=<n%=2>值是。39.设说明为inta=10;执行语句a*=1+2+3;后a的值是____________。40、设intm=1,n=2;则m==--n的结果是。41、设x为int型变量,则执行语句x=10;x+=x-=x-x;后x的值为。42、设所有变量均为整型,则表达式〔a=5,b=3,--a,++b,a-b的值为。三、看程序写结果:1、写出以下程序运行的结果________。main<>{inti,j,m,n;i=8;j=10;m=++i;n=j++;printf<"%d,%d,%d,%d",i,j,m,n>;}2、阅读下列程序,写出运行结果#include<stdio.h>main<>{inta=1,b=4,c=2;a=<a+b>/c;printf<"%d\n",--a>;}运行结果;3、阅读下列程序,写出运行结果main<>{intn=1;printf<"%d%d%d\n",n,n++,n-->;}运行结果;4、main<>{inti=3;printf<"%d,%d\n",i,i++>;}运行结果;5、执行以下程序,写出程序运行结果main<>{inta=-017L;printf<"%d\n",a>;}三、参考答案〔一练习题之数据类型参考答案一、选择题:1、B 2、B 3、C 4、B 5、B 6、A 7、C 8、D 9、A 10、D11、A 12、A 13、C 14、D 15、C 16、C 17、D 18、A19、B20、A二、填空题:1、floatdouble2、〔1"c:\\TC\\LIB"〔2"Hesaid:\"I\’amastudent"〔3"85%%studentpassed"3、不是,不同4、double5、字母、下划线6、正确7、‘f’三、看程序写结果1、x=5552、ab97983、67c〔二练习题之运算符和表达式参考答案一、选择题:1、D 2、D 3、D 4、A 5、A 6、D 7、B 8、A 9、A 10、B11、C 12、C 13、D 14、A 15、A 16、D 17、B 18、C19、A20、D21、A22、B23、C24、C25、D26、B27、D二、填空题:1、-162、263、24、45、下划线6、47、758、89、i+110、111、012、□□□□e□□10113、1014、由右向左条件运算符15、916、变量常量运算符17、5.518、x+=519、2.7520、-6021、122、1223、024、025、double26、7527、628、429、11630、331、5432、133、6.034、x+=535、036、137、赋值表达式38、039、6040、141、2042、0三、看程序写结果1、9,11,9,102、13、1014、4,35、-15第四章顺序程序设计一、主要内容输入输出函数printf函数的格式考查:a格式:printf<"格式控制串",输出表>b输出表:要输出的数据〔可以没有,多个时以","分隔格式控制串:包含两种信息格式说明:%[修饰符]格式字符,用于指定输出格式普通字符或转义序列:原样输出c修饰符m、n、l的功能:修饰符功能m输出数据域宽,数据长度<m,左补空格;否则按实际输出.n对实数,指定小数点后位数<四舍五入>对字符串,指定实际输出位数L在d,o,x,u前,指定输出精度为long型在e,f,g前,指定输出精度为double型scanfa格式:scanf<"格式控制串",地址表b格式控制字符串中包含的非格式控制字符要原样输入;如:scanf<"sum=%d",&a>;输入时"sum="也要输入。scanf函数中没有精度控制,如:scanf<"%5.2f",&a>;是非法的。3.getchar<>获取一个字符。a格式:charc;c=getchar〔;4.putchar〔输出一个字符,括号中的参数是一个字符变量或常量a格式:putchar〔‘a’;二、练习题一、选择题:1.设有语句scanf<"%d,%d",&m,&n>;要使m、n的值依次为2,3,正确的输入是<>A.2⊔3↙B.2,3↙C.2;3D.2↙3↙2.______是C语言的标准函数名。〔A.scanfB.caseC.whileD.int3、若有inti=-19,j=i%4;printf<"%d",j>;结果为。〔A、-3B、1C、3D、-14、intx,y;scanf<"%d,%d",&x,&y>;若要使x得11,y得12,则以下输入形式中错误的是。<>A、11,12↙B、11空格12↙C、11,空格↙12↙D、11,↙12↙二、填空题:1、在TC中,printf<>函数输出表列的求值顺序是。2、在scanf函数中,表示变量的地址。3、以下程序的运行结果是。main<>{printf<"%s,%5.3s","computer","computer">;}4、若想通过以下输入语句使a=5.0,b=4,c=3,则输入数据的形式应该是。intb,c;floata;scanf<"%f,%d,c=%d",&a,&b,&c>;5、若变量x、y已定义为int类型且X的值为99,y的值为9,请将输出语句printf<_____,x/y>;补充完整,使其输出的计算结果形式为:x/y=11。6、表达式pow<2.8,sqrt<double<x>>>值的数据类型为。7、输入一个华氏温度,要求输出摄氏温度:voidmain<>{floatc,f;printf<"请输入一个华氏温度:">;;;/*摄氏温度c=〔f-32*/printf<"摄氏温度为%5.2f\n",c>;}8、intx=102,y=012;printf<"%2d,%2d\n",x,y>;则执行结果是。三、参考答案一、选择题:1、B2、A3、A4、B二、填空题:1、由右向左2、&3、computer,□□com4、5,4,c=35、"x/y=%d"6、double7、scanf<"%f",&f>;c=5.0/9*<f-32>;8、102,10第五章选择结构程序设计一、主要内容三种程序结构:顺序结构、选择结构、循环结构if语句〔条件选择语句aif语句的三种形式:bif后面的表达式类型任意的;若执行语句是多条,必须为复合语句,即写在一对花括号内。cif结构可以嵌套,注意缺省{}时,else总是和它上面离它最近的未配对的if配对switch语句a格式中,E1,E2,…En是常量表达式,且值必须互不相同b注意执行时语句中有break和无break时,执行流程的区别。〔本处常考cdefault可以不写。二、练习题一、选择题:1、经过以下语句定义后,表达式z+=x>y?++x:++y的值为:〔intx=1,y=2,z=3;A.2B.3C.6D.52、能正确表示逻辑关系:"a≥10或a≤0"的C语言表达式是:<>A.a>=10ora<=0B.a>=0|a<=10C.a>=10&&a<=0D.a>=10||a<=03.已知inta=5,b=7,c=3;则逻辑表达式a<b||++c运算后,c的值为:<>A.1B.0C.3D.44、下列程序的输出结果是:〔main<>{intx,y,z;x=y=z=1;++x&&++y||++z;printf<"%d%d%d\n",x,y,z>;}A.111B.222C.221D.2115、在C语言中逻辑值"真"是用表示的。〔A.预定义为真值的宏B.非零值C.正数D.非零整数6、设有intx,y;以下语句判断x和y是否相等,正确的说法是该语句:〔if<x=y>printf<"xisequaltoy.">;A.语法错 B.不能判断x和y是否相等C.编译出错 D.能判断x和y是否相等7、以下程序的输出结果是:〔。main<>
{inta=5,b=4,c=6,d;
printf<"%d\n",d=a>b?<a>c?a:c>:<b>>;
}A.5B.4C.6D.不确定8、若希望当A的值为奇数时,表达式的值为"真",A的值为偶数时,表达式的值为"假",则以下不能满足要求的表达式是:〔A.A%2==1B.!<A%2==0>C.!<A%2>D.A%29、若希望当A的值为奇数时,表达式的值为"真",A的值为偶数时,表达式的值为"假",则以下不能满足要求的表达式是:〔A.A%2==1B.!<A%2==0>C.!<A%2>D.A%210、执行以下语句后,a,b的值分别为:〔。inta,b,c;a=b=c=1;++a||++b&&++c;〔A2,2〔B1,1〔C2,1〔D1,211、判断char型变量cl是否为小写字母的正确表达式为:〔A.’a’<=c1<=’z’B.<c1>=a>&&<c1<=z>C.<‘a’>=c1><‘z’<=c1>D.<c1>=’a’>&&<c1<=’z’>12、已知intx=10,y=20,z=30;以下语句执行后x,y,z的值分别是:〔。if<x>y>z=x;x=y;y=z;〔Ax=10,y=20,z=30〔Bx=20,y=30,z=10〔Cx=20,y=30,z=30〔Dx=20,y=30,z=2013、以下选项中非法的表达式是: 〔<A>0<=x<100<B>i=j==0 <C><char><65+3> <D>x+1=x+114、阅读以下程序:
main<>
{intx;
scanf<"%d",&x>;
if<x--<5>printf<"%d"'x>;
elseprintf<"%d"'x++>;
}
程序运行后,如果从键盘上输人5,则输出结果是:〔<A>3 <B>4 <C>5<D>615.C语言对于嵌套if语句规定else总是与〔匹配。A>与最外层的ifB.>与之前最近的ifC>与之前最近的不带else的ifD>与最近的{}之前的if16.以下有关switch语句的正确说法是________。< >Abreak语句是语句中必须的一部分B在switch语句中可以根据需要使用或不使用break语句Cbreak语句在switch语句中不可以使用D在switch语句中的每一个case都要用break语句17.设有:inta=2,b=3,c=7,d=8,m=3,n=3;执行<m=a>b>&&<n=c>d>后的n值为_________。A>0B>1C>2D>3 < >18.可判断非0变量a为正,b为负的正确表达式是_________。 < >A>a*b<0B><a>0||b>0>&&a*b<0C><a<0||b<0>&&a*b<0D>a>0&&a*b<019.假定inta=3,b=2,c=1,表达式:<c==a>c>+<a/b>的值是_________。< >A>1.75B>2C>1.5D>2.520.设a、b和c都是int型变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是__________。〔A>a&&bB>a<=bC>a||b+c&&b-cD>!<<a<b>&&!c‖1>21、如果a=4,b=3,c=2,d=1,则条件表达式a<b?a:c<d?c:d的值是。〔A、1B、2C、3D、422、设有定义inta=1,b=2,c=3,d=4,m=2,n=2;则执行表达式<m=a<b>&&<n=c>d>后,n的值为。〔A、1B、2C、3D、0二、填空题:1、设x=3,y=-4,z=5,则表达式!<x>y>+<y!=z>||<x+y>&&<y=z>的值是。2、 当a=5,b=4,c=2时,表达式a>b!=c的值是_______。3、为表示关系x≥y≥z,正确的C语言逻辑、关系表达式为。4、有inta=3,b=4,c=5,x,y;,则以下表达式的值为!<x=a>&&<y=b>&&c5、在C语言中,表示逻辑"真"值用.6、当a=3,b=2,c=1时,表达式f=a>b>c的值是.7、与if〔x==0等价的表达式写法写法是。8、若定义:inta=5,b=2,c=1;则表达式a-b>c||b==c的值是;表达式a-b>c&&b==c的值是。":?"条件运算符是C语言中唯一的三目运算符。由其连接的表达式为条件表达式,其格式为:<表达式1>?<表达式2>:<表达式3>。执行过程:首先计算表达式1的值,如果表达式1的值是"真"〔非0,则整个表达式的值为的值;如果表达式1的值是"假"〔0,则整个表达式的值为的值。10.C语言提供的三种逻辑运算符是______、______和_______。11.若已知a=10,b=20,则表达式!a<b的值是___________12.若a,b变量的值任意,表达式<a==b>&&<a>b>的值是_________。13.设x,y,z均为int型变量,请写出:〔1x、y中至少有一个小于z的表达式_____________;〔2x、y都大于z的表达式____________;14、能正确表示a>=10或a<=0的关系表达式为。15、以下程序的功能是:输出a、b、c三个变量中的最小值,请填空。#include<stido.h>main<>{inta,b,c,min;scanf<"%d%d%d",&a,&b,&c>;if<>min=a;elsemin=b;if<>min=c;printf<"%d\n",min>;}三、看程序写结果:1、main<>{intx,y,z;x=y=z=1;z=++x&&++y||++z;运行结果:printf<"%d%d%d\n",x,y,z>;}2、main<>{intm=5;if<m++>5>printf<"%d\n",m>;运行结果:elseprintf<"%d\n",m-->;}3、若从键盘输入58,则以下程序输出的结果是。main<>
{inta;
scanf<"%d",&a>;
if<a>50>printf<"%d",a>;
if<a>40>printf<"%d",a>;
if<a>30>printf<"%d",a>;
}4、以下程序运行后的输出结果是。main<>
{intp,a=5;
if<p=a!=0>
printf<"%d\n",p>;
else
printf<"%d\n",p+2>;
}
5、源程序如下:#include<stdio.h>main<>{inta=2,b=7,c=5;switch<a>0>{case1:switch<b<0>{case1:printf<"">;break;case2:printf<"!">;break;}case0:switch<c==5>{case0:printf<"*">;break;case1:printf<"#">;break;case2:printf<"$">;break;}default:printf<"&">;}printf<"">;}运行结果:6、main<>{intx=1,y=2;switch<x>{case0:case1:switch<y>运行结果:{case1:case2:y+=2;}case2:x++;}printf<"%d,%d\n",x,y>;}7.以下程序的输出结果是。main<>{intx=1,y=1,a=0,b=0;switch<x>{case1:switch<y>{case0:a++;case1:b++;case2:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf<"a=%d,b=%d\n",a,b>;}8.以下程序段的运行结果是_________。inta,b,c;a=50;b=100;c=30;if<a>b>{a=b;b=c;c=a;}printf<"a=%d,b=%d,c=%d"a,b,c>;9.下面程序的输出结果是〔voidmain〔{inti=10;switch〔i{case9:i+=1;case10:i+=1;case11:i+=1;case12:i+=1;}printf〔"i=%d\n",i;}四、编程题:1、从键盘输入3个整数,按照从大到小的顺序输出。2、设有一个函数如下。编程,输入x,求y值。y=QUOTE3、求一元二次方程ax2+bx+c=0的根,要求考虑所有根的情况。4、设有一个函数如下。编程,输入x,求y值。y=QUOTE5.输入一个字符,判断其是否是大写字母,如果是,则转换成为小写字母,然后输出字符,如果不是小写字母,则直接输出字符。6、有分段函数x,x<1y=2x-1,1<=x<103x–11,x>=10编写一程序,输入x,输出相应的y值。7、分别用两种判断方法,写出判断一个年份为闰年的程序。三、参考答案一、选择题:1~5:CDCCB6~10:BCCCC11~15:DCDBC16~20:BDDBD21、A22、B二、填空题:1、1 2、1 3、〔x>=y&&<y>=z> 4、0 5、非零值6、0 7、if〔!x 8、109、表达式2,表达式310、!,&&,||11、112、013、〔1x<z||y<z<2>x>z&&y>z14、a>=10||a<=015、〔1a<b<2>c<min三、看程序写结果:1、2212、63、5858584、15、#&6、2,47、a=1,b=38、a=100,b=30,c=1009、i=13四、编程题:1、从键盘输入3个整数,按照从大到小的顺序输出。main<>
{
intx,y,z,t;
scanf<"%d%d%d",&x,&y,&z>;
if<x>y>
{t=x;x=y;y=t;}/*交换x,y的值*/
if<x>z>
{t=z;z=x;x=t;}/*交换x,z的值*/
if<y>z>
{t=y;y=z;z=t;}/*交换z,y的值*/
printf<"smalltobig:%d%d%d\n",x,y,z>;
}2、设有一个函数如下。编程,输入x,求y值。y=QUOTE#include<math.h>main<>
{doublex,y;
scanf<"%f",&x,>;if<x>0>
y=sqrt<x>;elseif<x<0>
y=<x+1>/<x*x+2>;elsey=0;
printf<"y=%f\n",y>;}3、求一元二次方程ax2+bx+c=0的根,要求考虑所有根的情况。教材P108例5.64、设有一个函数如下。编程,输入x,求y值。y=QUOTE#include<math.h>main<>
{doublex,y;
scanf<"%f",&x,>;if<x>=0>
y=sqrt<x+1>;elsey=sin<x>;printf<"y=%f\n",y>;}5.输入一个字符,判断其是否是大写字母,如果是,则转换成为小写字母,然后输出字符,如果不是小写字母,则直接输出字符。main<>
{charch;
scanf<"%c",&ch,>;if<ch>=’A’&&ch<=’Z’>
ch=ch+32;printf<"ch=%c\n",ch>;}6、有分段函数x,x<1y=2x-1,1<=x<103x–11,x>=10编写一程序,输入x,输出相应的y值。#include<math.h>main<>
{doublex,y;
scanf<"%f",&x,>;if<x>10>
y=3*x-11;elseif<x>1>
y=2*x-1;elsey=x;
printf<"y=%f\n",y>;}7、分别用两种判断方法,写出判断一个年份为闰年的程序。见教材P106页例5.5第六章循环结构一、主要内容三种循环结构:1.while语句a当型结构,条件成立执行循环体。b先判断表达式,后执行循环体。循环体有可能一次都不执行2.do~while语句a先执行后判断,至少执行一次循环体bdo~while语句表达式后面必须加分号3.for语句afor语句中expr1,expr2,expr3类型任意,都可省略,但分号;不可省循环嵌套:执行时先内存循环,后外层循环。〔看程序写结果题外层循环可包含两个以上内循环,但不能相互交叉break和continue<注意程序中两者的区别>1.break语句在循环语句和switch语句中,终止并跳出循环体或开关体2.break只能终止并跳出最近一层的结构3.continue语句,结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断4.continue仅用于循环语句中二、练习题一、选择题:1.执行语句:for<i=1;i<9;i++>后;变量i的值是〔。〔A10〔B9〔C不定〔D112.若t为int类型,进人下面的循环之前,t的值为0,while<t=l>{……}则以下叙述中正确的是〔。<A>循环控制表达式的值为0
<B>循环控制表达式的值为1<C>循环控制表达式不合法
<D>以上说法都不对3.对do...while语句错误的描述是:〔A.可构成多重循环结构 B.循环次数不可能为0C.循环次数可能为0 D.先执行后判断。4.下面程序段的运行结果是〔。intn=0;while<n++<=2>;printf<"%d",n>;〔A4〔B3〔C2〔D有语法错误5.以下描述正确的是〔。A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。B.do-while循环由do开始,用while结束,在while〔表达式后面不能写分号。C.在do-while循环体中,一定要有能使while后面表达式的值变成零〔"假"的操作。D.do-while循环中,根据情况可以省略while。6.关于do-while语句的正确叙述是〔A. do-while语句构成的循环不能用其它语句构成的循环来代替B. do-while语句构成的循环只能用continue语句退出C. 用do-while语句构成的循环,在while后的表达式为非零时结束循环D. 用do-while语句构成的循环,在while后的表达式为零时结束循环7.C语言中,while和do…while循环的主要区别是〔。A.while的循环控制条件比do…while的循环控制条件严格B.do…while的循环体至少无条件执行一次C.do…while允许从外部转到循环体内D.do…while的循环体不能是复合语句8.以下程序的输出结果是〔。main<>{intx=10,y=10,i;for<i=0;x>8;y=++i>printf<"%d,%d",x--,y>;}A.10192B.9876C.10990D.1010919.现已定义整型变量inti=1;执行循环语句while<i++<5>;后,i的值为〔A>1B>5C>6D>以上三个答案均不正确10.有以下程序main<>{inti;for<i=0;i<=3;i++>switch<i>{case1:printf<"%d",i>;case2:printf<"%d",i>;break;default:printf<"%d",i>;}}执行后输出的结果是:〔A.01123B.012C.012020D.12011、执行语句:for<i=1;i<=9;i++>;后变量i的值是:〔A.10B.9C.不定D.1112.设执行变量y值为3,执行下列循环语句后,变量y的值是〔。doy++;while<y++<4>;〔A>3 〔B>4〔C>5〔D>613.若k为整型变量,则下面while循环执行的次数是〔。k=10;while<k==0>k=k-1;<A>0次 <B>1次<C>10次<D>无限次14.以下程序段_________。x=-1;do{x=x*x;}while<!x>;A>是死循环B>循环执行2次C>循环执行1次D>有语法错误15.对表达式for<表达式1;;表达式3>可理解为〔A.>for<表达式1;0;表达式3>B>for<表达式1;1;表达式3>C>for<表达式1;表达式1;表达式3>D>for<表达式1;表达式3;表达式3>二、填空题:在循环语句中,continue和break语句的区别是:语句提前结束本次循环,进行下一次循环的判断;而语句跳出循环结构,结束循环。2、执行下面的程序段后,k值是。k=1;n=263;do{k*=n%10;n/=10;}while<n>;3.用_________________语句可以实现提前结束循环。4.执行完语句for<i=0;i<3;i++>;后,变量i的值为_________________。5、在C语言中,实现循环的语句有:if__goto语句、while语句、语句和for语句。三、看程序写结果:1.下列程序段的输出结果是。voidmain<>{inti,j;for<i=4;i>=1;i-->{for<j=1;j<=i;j++>printf<"*">;printf<"\n">;}}2.以下程序运行后的输出结果是。#include<stdio.h>main<>{intk=1,s=0;do{if<<k%2>!
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度个人房产买卖合同(含物业费结算)4篇
- 二零二五年度城市绿化工程项目融资担保借款合同4篇
- 2025年行政行为法律文书电子签名服务合同2篇
- 2025年销售人员劳动合同示范文本2篇
- 郑州升达经贸管理学院《数字地形分析》2023-2024学年第一学期期末试卷
- 郑州商学院《产品设计色彩计划》2023-2024学年第一学期期末试卷
- 郑州汽车工程职业学院《写作(一)》2023-2024学年第一学期期末试卷
- 郑州商学院《岁婴幼儿特殊教育》2023-2024学年第一学期期末试卷
- 2025年鲜蛋品牌孵化与市场推广合作协议3篇
- 郑州理工职业学院《商业空间展示》2023-2024学年第一学期期末试卷
- 检验员绩效考核
- 农药合成研发项目流程
- 机电安装工程安全管理
- 2024年上海市第二十七届初中物理竞赛初赛试题及答案
- 信息技术部年终述职报告总结
- 理光投影机pj k360功能介绍
- 六年级数学上册100道口算题(全册完整版)
- 八年级数学下册《第十九章 一次函数》单元检测卷带答案-人教版
- 帕萨特B5维修手册及帕萨特B5全车电路图
- 小学五年级解方程应用题6
- 年月江西省南昌市某综合楼工程造价指标及
评论
0/150
提交评论