《C语言基础练习题集.pdf》由会员分享,可在线阅读,更多相关《C语言基础练习题集.pdf(62页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C C 语言程序设计习题篇语言程序设计习题篇第一章第一章 C C 语言基础知识语言基础知识1 11 1 选择题选择题1.以下不是 C 语言的特点的是()。A、语言简洁紧凑B、能够编制出功能复杂的程序C、C 语言可以直接对硬件操作D、C 语言移植性好2.下列字符序列中,不可用作C 语言标识符的是()。Aabc123Bno.1C_123_D_ok3.正确的 C 语言标识符是()。A_buy_2B2_buyC?_buyDbuy?4.请选出可用作 C 语言用户标识符的一组标识符()。AvoidBa3_b3CForD2adefine_123-abcDOWORDIFCasesizeof5.下列符号中,不属
2、于转义字符的是()。AB0 xAACtD06.不属于 C 语言关键字的是()。AintBbreakCwhileDcharacter7.是 C 语言提供的合法关键字的是()。AFloatBsignedCintegerDChar8.以下不能定义为用户标示符的是()。AscanfBVoidC_3com_Dint9.一个 C 程序是由()。A一个主程序和若干子程序组成B一个或多个函数组成C若干过程组成D若干子程序组成10.C 语言程序的基本单位是()。A程序行B语句C函数D字符11.下列说法中,错误的是()。A每个语句必须独占一行,语句的最后可以是一个分号,也可以是一个回车换行符号B每个函数都有一个函
3、数头和一个函数体,主函数也不例外C主函数只能调用用户函数或系统函数,用户函数可以相互调用D程序是由若干个函数组成的,但是必须有、而且只能有一个主函数12.以下说法中正确的是()。AC 语言程序总是从第一个定义的函数开始执行B在 C 语言程序中,要调用的函数必须在main()函数中定义CC 语言程序总是从 main()函数开始执行DC 语言程序中的 main()函数必须放在程序的开始部分13.C 编译程序是()。AC 程序的机器语言版本B一组机器语言指令C将 C 源程序编译成目标程序D由制造厂家提供的一套应用软件14以下选项中,合法的用户标识符是()。AlongB_2abcC3dmaxDA.da
4、t15以下选项中,合法的实型常数是()。A5E2.0BE-3C2E0D1.3E16已知大写字母 A 的 ASCII 码值是 65,小写字母 a 的 ASCII 码是 97,则用八进制表示的字符常量101是()。A字符 AB字符 aC字符 cD非法的常量17以下选项中,合法转义字符的选项是()。AB018CxabDabc18以下选项中,正确的字符常量是()。A”F”BCWD19以下选项中可作为C 语言合法整数的是A10110BB0386C0XffaDx2a220下列变量定义中合法的是Ashort _a=1-.le-1;Bdouble b=1+5e2.5;Clong do=0 xfdaL;Dflo
5、at 2_and=1-e-3;9xn21与数学式子对应的 C 语言表达式是()。2x1A9*xn/(2*x-1)B9*x*n/(2*x-1)C9*pow(x,n)*(1/(2*x-1)D9*pow(n,x)/(2*x-1)22若有代数式3ab,则不正确的 C 语言表达式是()。cdAa/c/d*b*3B3*a*b/c/dC3*a*b/c*dDa*b/d/c*323已知各变量的类型说明如下:int m=8,n,a,b;unsigned long w=10;double x=3.14,y=0.12;则以下符合 C 语言语法的表达式是()。Aa+=a-=(b=2)*(a=8)B n=n*3=18Cx
6、%3Dy=float(m)24以下符合 C 语言语法的赋值表达式是()。Aa=9+b+c=d+9Ba=(9+b,c=d+9)Ca=9+b,b+,c+9Da=9+b+=c+925已知字母 A 的 ASCII 码为十进制数 65,且 S 为字符型,则执行语句 S=A+6-3;后,S 中的值为()。ADB68C不确定的值DC26在 C 语言中,要求运算数必须是整型的运算符是()。A/B+C*=D%27若有说明语句:char s=72;则变量 s()。A包含一个字符B包含两个字符C包含三个字符D说明不合法,s 的值不确定28 若有定义:int m=7;float x=2.5,y=4.7;则表达式 x+
7、m%3*(int)(x+y)%2/4的值是()。A2.500000B2.750000C3.500000D0.00000029在 C 语言中,char 型数据在内存中的存储形式是()。A补码B反码C原码DASCII 码30设变量 x 为 float 类型,m 为 int 类型,则以下能实现将x 中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是()。Ax=(x*100+0.5)/100.0Bm=x*100+0.5,x=m/100.0Cx=x*100+0.5/100.0Dx=(x/100+0.5)*100.031表达式 13/3*sqrt(16.0)/8 的数据类型是()。AintBflo
8、atCdoubleD不确定32设以下变量均为 int 类型,则值不等于 7 的表达式是()。A(m=n=6,m+n,m+1)B(m=n=6,m+n,n+1)C(m=6,m+1,n=6,m+n)D(m=6,m+1,n=m,n+1)33假设所有变量均为整型,则表达式(x=2,y=5,y+,x+y)的值是()。A7B8C6D234已知 s 是字符型变量,下面不正确的赋值语句是()。As=012;Bs=u+v;Cs=1+2;Ds=1+2;35已知 s 是字符型变量,下面正确的赋值语句是()。As=abc;Bs=08;Cs=xde;Ds=”;36若有以下定义,则正确的赋值语句是()。int x,y;fl
9、oat z;Ax=1,y=2,Bx=y=100Cx+;Dx=int(z);37设 x、y 均为 float 型变量,则不正确的赋值语句是()。A+x;Bx*=y-2;Cy=(x%3)/10;Dx=y=0;38下列语句中符合 C 语言的赋值语句是()。Aa=7+b+c=a+7;Ba=7+b+=a+7;Ca=7+b,b+,a+7Da=7+b,c=a+7;39putchar 函数可以向终端输出一个()。A整型变量表达式值。B字符串C实型变量值。D字符或字符型变量值。40以下程序段的输出结果是()。int a=12345;printf(”%2dn”,a);A12B34C12345D提示出错、无结果41
10、若x 和 y 均定义为 int 型,z 定义为 double 型,以下不合法的scanf()函数调用语句为()。Ascanf(”%d%lx,%le”,&x,&y,&z);Bscanf(”%2d*%d%lf”,&x,&y,&z);Cscanf(”%x%*d%o”,&x,&y);D。scanf(”%x%o%6.2f”,&x,&y,&z);42有如下程序段:intx1,x2;chary1,y2;scanf(”%d%c%d%c”,&x1,&y1,&x2,&y2);若要求 x1、x2、y1、y2 的值分别为 10、20、A、B,正确的数据输入是()。(注:代表空格)A10A20BB10A20BC10A2
11、0 BD10A20B43若变量已正确说明为float 类型,要通过语句 scanf(”%f%f%f”,&a,&b,&c);给 a 赋予 10.0,b 赋予 22.0,c 赋予 33.0,不正确的输入形式为()。A10B10.0,22.0,33.02233C10.0D102222.033.03344有如下程序,若要求 x1、x2、y1、y2 的值分别为 10、20、A、B,正确的数据输入是()。(注:代表空格)intx1,x2;chary1,y2;scanf(”%d%d”,&x1,&x2);scanf(”%c%c”,&y1,&y2);A1020ABB1020ABCC1020D1020ABAB45
12、已有定义 int a=-2;和输出语句:printf(”%8lx”,a);以下正确的叙述是()。A整型变量的输出格式符只有%d 一种B%x 是格式符的一种,它可以适用于任何一种类型的数据C%x 是格式符D%8lx 不是错误的格式符,其中数字8 规定了输出字段的宽度46有如下程序段,对应正确的数据输入是()。float x,y;scanf(”%f%f”,&x,&y);printf(”a=%f,b=%f”,x,y);A2.04B2.04,5.675.67CA=2.04,B=5.67D2.055.6747有如下程序段,从键盘输入数据的正确形式应是()。(注:代表空格)floatx,y,z;scanf
13、(“x=%d,y=%d,z=%d”,&a,&y,&z);A123Bx=1,y=2,z=3C1,2,3Dx=1 y=2 z=348以下说法正确的是()。A输入项可以为一个实型常量,如scanf(”%f”,3.5);B只有格式控制,没有输入项,也能进行正确输入,如scanf(”a=%d,b=5d”);C 当输入一个实型数据时,格式控制部分应规定小数点后的位数,如 scanf(”%4.2f”,&f);D当输入数据时,必须指明变量的地址,如scanf(”%f”,&f);49根据定义和数据的输入方式,输入语句的正确形式为:()。(注:代表空格)已有定义:float x,y;数据的输入方式:1.234.5
14、Ascan(”%f,%f”,&x,&y);Bscanf(”%f%f”,&x,&y);Cscanf(”%3.2f%2.1f”,&x,&y);Dscanf(”%3.2f%2.1f”,&x,&y);50根据下面的程序及数据的输入和输出形式,程序中输入语句的正确形式应该为()。#include”stdio.h”main()char s1,s2,s3;输入语句;printf(”%c%c%c”,s1,s2,s3);输入形式:ABC(注:代表空格)输出形式:ABAscanf(”%c%c%c”,&s1,&s2,&s3);Bscanf(”%c%c%c”,&s1,&s2,&s3);Cscanf(”%c,%c,%c
15、”,&s1,&s2,&s3);Dscanf(”%c%c”,&s1,&s2,&s3);51以下程序的执行结果是:()。#include”stdio.h”main()int x=2,y=3;printf(”x=%d,y=%dn”,x,y);A.x=%2,y=%3B.x=%d,y=%dC.x=2,y=3D.x=%d,y=%d52以下程序的输出结果是()。(注:代表空格)#include”stdio.h”main()printf(”nstring1=%15s*”,”programming”);printf(”nstring2=%-5s*”,”boy”);printf(”string3=%2s*”,”g
16、irl”);Astring1=programming*Bstring1=programming*string2=boy*string2=boy*string3=gi*string3=gi*Cstring1=programming*Dstring1=programming*string2=boy*string3=girl*string2=boy*string3=girl*53根据题目中已给出的数据的输入和输出形式,程序中输入输出语句的正确内容是()。#include”stdio.h”main()int a;float b;输入语句输出语句输入形式:12.3(注:代表空格)输出形式:a+b=3.3
17、00Ascanf(”%d%f”,&a,&b);Bscanf(”%d%3.1f”,&a,&b);printf(”na+b=%5.3f”,a+b);printf(”na+b=%f”,a+b);Cscanf(”%d,%f”,&a,&b);Dscanf(”%d%f”,&a,&b);printf(”na+b=%5.3f”,a+b)printf(”na+b=%f”,a+b);54阅读以下程序,当输入数据的形式为:12,34,正确的输出结果为()。#include”stdio.h”main()int a,b;scanf(”%d%d”,&a,&b);printf(”a+b=%dn”,a+b);Aa+b=46B
18、有语法错误Ca+b=12D不确定值55若有定义:int x,y;char s1,s2,s3;并有以下输出数据:(注:代表空格)12UVW则能给 x 赋给整数 1,给 y 赋给整数 2,给 s1 赋给字符 U,给 s2 赋给字符 V,给 s3 赋给字符 W 的正确程序段是()。Ascanf(”x=%dy=%d”,&x,&y);s1=getchar();s2=getchar();s3=getchar();Bscanf(”%d%d”,&x,&y);s1=getchar();s2=getchar();s3=getchar();Cscanf(”%d%d%c%c%c”,&x,&y,&s1,&s2,&s3)
19、;Dscanf(”%d%d%c%c%c%c%c%c”,&x,&y,&s1,&s1,&s2,&s2,&s3,&s3);1 12 2 填空题填空题1 C 语言的符号集包括_、_、_。2 结构化设计中的三种基本结构是_、_、_。3 C 语言源程序文件的后缀是_,经过编译后生成文件的后缀是_,经过链接后生成文件的后缀是_。4 C 语言的关键字都用_大写或小写。5 一个函数由两部分组成,它们是_、_。6 函数体一般包括_、_。7 C 语言是通过_来进行输入和输出的。8 以下程序的执行结果_。#include”stdio.h”main()short i=-1,j=1;printf(”dec:%d,oct:
20、%o,hex:%x,unsigned:%un”,i,i,i,i);printf(”dec:%d,oct:%o,hex:%x,unsigned:%un”,j,j,j,j);9 以下程序的执行结果是_。#include”stdio.h”main()char s=b;printf(”dec:%d,oct:%o,hex:%x,ASCII:%cn”,s,s,s,s);10以下程序的执行结果是_。(注:代表空格)#include”stdio.h”main()float pi=3.1415927;printf(”%f,%.4f,%4.3f,%10.3f”,pi,pi,pi,pi);printf(”n%e,%
21、.4e,%4.3e,%10.3e”,pi,pi,pi,pi);11以下程序的执行结果是:_。#include”stdio.h”main()char c=c+5;printf(”c=%cn”,c);12以下程序输入 123 后的执行结果是_。(注:代表空格)#include”stdio.h”main()int i,j;char k;scanf(”%d%c%d”,&i,&k,&j);printf(”i=%d,k=%c,j=%dn”,i,k,j);13 有以下程序,若输入 9876543210 后的执行结果是_;若输入为:9876543210后的执行结果是_;若输入为:9876543210 后的执行
22、结果为:_。(注:代表空格)#include”stdio.h”main()int x1,x2;char y1,y2;scanf(”%2d%3d%3c%c”,&x1,&x2,&y1,&y2);printf(”x1=%d,x2=%d,y1=%c,y2=%cn”,x,y);14若 x 和 y 均为 int 型变量,则以下语句的功能是_。x+=y;y=x-y;x-=y;15有一输入函数 scanf(”%d”,k);则不能使 float 类型变量 k 得到正确数值的原因是:_。16有如下程序段,输入数据:12345ffl678 后,u 的值是【1】,v 的值是【2】。intu;floatv;scanf(
23、“%3d%f”,&u,&v);1 13 3 答案及部分解析答案及部分解析一选择题答案1B7B13C2B8D3A9B4B5B11A17A6D10C16A12C14B15C18C19C25A31C37C43B49B55D20A26D32C38D44D50A21C27A33B39D45D51D22C28A34B40C46A52D23A29D35C41D47B53A24B30B36C42A48D54D14解析:C 语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。而且不能与 C 语言规定的关键字同名。关键字如:auto,break,case,char,const,co
24、ntinue,default,do,double,else,entry,extern,for,float,goto,if,int,int,long,register,return,short,signed,sizeof,static,struct,unsigned,while,switch,typedef,void,volatile,unior。这些关键字先不必硬背下来,随着后续的学习,你将发现它们都是一些数据的类型、语句等,自然会随着学习的深入,而记下来。15解析:用指数形式表示一个实型常数时,E 或 e 之前必须有数字,且 E 后面指数必须为整数。16解析:101为转义字符,相对应一个AS
25、CII 码字符。(101)8=(65)10=A.17解析:转义字符的特征是以“”开头,其后跟一些字符,如n,t,”,b,f等代表一些特殊的含义,而后如跟数字,可以为八进制或者十六进制,将其转换为对应的 ASCII 码值,就可以得出对应的字符。“”后跟八进制的写法:0nn,或者nn,表示“0”或者“”后只能跟1 或 3 位 07 之间的数字;“”后跟十六进制的写法:xnn,或者nn,表示“x”或者“”后只能跟1 或 2 位 09及 af(AF)之间的字符。选项 B 的错误在于 8 不是八进制;而选项 C 的错误在于没有“”;选项 D 的错误在于超长(多了一位)。21解析:B 的错误在于赋值语句的
26、左侧只能为一个简单变量,如:n=3*(n=18);C 的错误在于%运算符只能适用于整型数据,D 的错误在于作类型转换时,应将类型加上括号,即为:y=(float)m31解析:逗号表达式的最终结果为最右端的表达式(即x+y)的值,其运算顺序是从左自右的。第三个表达式 y+,其隐含有两步操作:先取 y 的原值,再执行 y=y+1运算;而本题中,虽然没有将y 赋给某个变量(取其原值),但还是一定会执行加运算的。因而,经过第三个表达式,y 已经自加为 6,故x+y 的值为 8,相对应得表达式最终结果为 8。若本题改为:(x=2,y=5,z=y+,x+z),则其结果应为 7。二填空题答案1 答案:英文字
27、母、数字、一些有特定含义的标点符号2 答案:顺序结构、选择结构、循环结构3 答案:C,OBJ,EXE4 答案:小写5 答案:函数说明部分和函数体6 答案:变量定义部分和执行部分7 答案:输入和输出函数8 答案:dec:-1,oct:177777,hex:ffff,unsigned:65535dec:1,oct:1,hex:1,unsigned:19 答案:dec:98,oct:142,hex:62,ASCII:b10答案:3.141593,3.1416,3.142,3.1423.141593e+00,3.1416e+00,3.142e+00,3.142e+00(注:由于 c 编译系统不同,我们
28、上机使用的机器,其第二个 printf 语句实际结果为:3.14159e+00,3.142e+00,3.14e+00,3.14e+00,即:小数点后取 5 位。)11答案:c=h12答案:i=1,k=,j=213答案:第一种情况的执行结果:x1=98,x2=765,y1=4,y2=1第二种情况的执行结果:x1=98,x2=76,y1=,y2=3第三种情况的执行结果:x1=98,x2=765,y1=4,y2=214答案:交换 x 和 y 的值15答案:(1)格式符应为:%f;(2)变量前边未加取地址符&,即应为 scanf(”%f”,&k);16答案:【1】123【2】45.000000第二章第
29、二章 选择结构选择结构2 21 1 选择题选择题1 已有定义:int x=3,y=4,z=5;则表达式!(x+y)+z-1&y+z/2 的值是()。A6B0C2D12 设 a=5,b=6,c=7,d=8,m=2,n=2,则执行(m=ab)&(n=cd)后 n 的值为()。A1B2C3D43 设 x、y 和 z 都是 int 类型变量,且x=3,y=4,z=5,则下面的表达式中,值为0 的表达式为()。Ax&yBx=yCx|y+z&y-zD!(xy)&!z|1)4为了避免嵌套的 if-else语句的二义性,C 语言规定 else 总是与()组成配对关系。A缩排位置相同的 ifB在其之前未配对的
30、ifC在其之前未配对的最近的ifD同一行上的 if5 逻辑运算符两侧运算对象的数据类型()。A只能是 0 或 1B只能是 0 或非 0 正数C只能是整型或字符型数据D可以是任何类型的数据6 以下关于运算符优先顺序的描述中正确的是()。A关系运算符算术运算符赋值运算符逻辑与运算符B逻辑与运算符关系运算符算术运算符赋值运算符C赋值运算符逻辑与运算符关系运算符算术运算符D算术运算符关系运算符赋值运算符逻辑与运算符7 下列运算符中优先级最高的是()。AB&C+D!=8 选择出合法的 if 语句(设 int x,a,b,c;)()。Aif(a=b)c+;Bif(a=b)c+;Cif(ab)c+;Dif(
31、a=b)c+;9 能正确表示“当x 的取值在-58,-40和40,58范围内为真,否则为假”的表达式是()。A(x=-58)&(x=40)&(x=-58)|(x=40)|(x=-58)&(x=40)&(x=-58)|(x=40)|(x=58)10判断 char 型变量 s 是否为小写字母的正确表达式是()。Aa=s=a)&(s=a)&(s=z)D(a=s)11若希望当x 的值为奇数时,表达式的值为“真”,x 的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是()。Ax%2=1B!(x%2=0)C!(x%2)Dx%212已知 x=45,y=a,z=0;则表达式(x=z&yz|!y)的
32、值是()。A0B语法错C1D“假”13指出下列程序段所表示的逻辑关系是()。if(a0)y=1;x 0 x 0,以下程序段中不能根据 x 值正确计算出 y 值的是x 0elseif(x=0)y=0;else y=-1;By=0;if(x0)y=1;elseif(x=0)if(x0)y=1;else y=-1;Dif(x=0)if(x0)y=1;else y=0;else y=-1;15执行以下语句后,y 的值为()。int x,y,z;x=y=z=0;+x|+y&+z;A0B1C2D不确定值16已知 int a=1,b=2,c=3;以下语句执行后 a,b,c 的值是()。if(ab)c=a;a
33、=b;b=c;Aa=1,b=2,c=3Ba=2,b=3,c=3Ca=2,b=3,c=1Da=2,b=3,c=217请阅读以下程序:该程序()。#include”stdioh”main()int x=-10,y=5,z=0;if(x=y+z)printf(”*n”);elseprintf(”$n”);A有语法错不能通过编译B可以通过编译但不能通过连接C输出*D输出$18以下程序的运行结果是()。#include”stdio.h”main()int a=1;if(a+1)printf(”%dn”,a);elseprintf(”%dn”,a-);A0B1C2D319当 a=1,b=2,c=4,d=3
34、 时,执行完下面一段程序后x 的值是()。if(ab)if(cd)x=1;elseif(ac)if(bd)x=2;else x=3;else x=4;else x=5;A1B2C3D420执行以下程序段后,变量x,y,z的值分别为()。int a=1,b=0,x,y,z;x=(-a=b+)?-a:+b;y=a+;z=b;Ax=0,y=0,z=0Bx=-1,y=-1,z=1Cx=0,y=1,z=0Dx=-1,y=2,z=121若 a、b、c、d、w 均为 int 类型变量,则执行下面语句后的w 值是()。a=1;b=2;c=3;d=4;w=(ab)?a:b;w=(wc)?w:c;w=(wb?ac
35、?a:c:b);A5B4C6D不确定23若 a、b、c1、c2、x、y 均为整型变量,正确的switch 语句是()。Aswitch(a+b);Bswitch a case 1:y=a+b;break;case c1:y=a-b;break;case 0:y=a-b;case c2:x=a*d;break;break;default:x=a+b;Cswitch(a*a+b*b)Dswitch(a-b)case 3:default:y=a*b;break;case 1:y=a+b;break;case 3:x=a+b;break;case 3:y=b-a;break;case 10:case 1
36、1:y=a-b;break;24执行下列程序,输入为3 的数出结果是()。#include”stdio.h”main()int k;scanf(”%d”,&k);switch(k)case 1:printf(”%dn”,k+);case 2:printf(”%dn”,k+);case 3:printf(”%dn”,k+);case 4:printf(”%dn”,k+);break;default:printf(”Full!n”);A3B4C3D45425假定等级和分数有以下对应关系:等级:A分数:85100等级:B分数:6084等级:C分数:60 以下对于等级 grade 输出相应的分数区间,
37、能够完成该功能的程序段是()。Aswitch(grade)case A:printf(”85100n”);case B:printf(”6084n”);case C:printf(”60n”);default:printf(”grade is error!n”);Bswitch(grade)case A:printf(”85100n”);break;case B:printf(”6084n”);case C:printf(”60n”);default:printf(”grade is error!n”);Cswitch(grade)case A:printf(”85100n”);break;c
38、ase B:printf(”6084n”);break;case C:printf(”60n”);default:printf(”grade is error!n”);Dswitch(grade)case C:printf(”60n”);break;case B:printf(”6084n”);break;default:printf(”grade is error!n”);break;case A:printf(”85100n”);26有如下程序,写出该执行结果()。#include”stdio.h”main()float x=2.0,y;if(x0.0)y=0.0;else if(x10.
39、0)y=1.0/x;else y=1.0;printf(”%fn”,y);A0.000000B0.250000C0.50000027以下程序的运行结果是()。#include”stdio.h”main()int a=2,b=-1,c=2;if(ab)if(b50)printf(”%d”,a);if(a40)printf(”%d”,a);if(a30)printf(”%d”,a);2 设 int x=9,y=8;表达式 x=y+1 的结果是_。3 定义 int x,y;执行 y=(x=1,+x,x+2);后,y 的值是_。4 定义 int x=10,y,z;执行 y=z=x;x=y=z;后,x
40、的结果是_。5 设 int a=1,b=2,c,d,e;执行c=(-a+)+(+b);d=(b-)+(+a)-a;e=(a/(+b)-(a/(-a);请问 a,b,c,d,e 的结果是:_。6 设 int a=2,b=3,c,d,e,f;执行c=(a+=-b);d=(a=+b);e=(a-!=b);4Df=(+ab-);请问 a,b,c,d,e,f 的结果是:_。7 以下程序的运行结果是_。#include”stdio.h”main()int a,b,c,s,w,t;s=w=t=0;a=-1;b=3;c=3;if(c0)s=a+b;if(a0)if(c0)w=a-b;else t=c;prin
41、tf(”%d%d%d”,s,w,t);8 以下程序的运行结果是_。#include”stdio.h”main()int a,b,c,d,e;a=c=1;b=20;d=100;if(!a)d=d+;else if(!b)if(d)d=-d;elsed=d-;printf(”%dnn”,d);9 以下程序的运行结果是_。#include”stdio.h”main()int a,b=250,c;if(c=b)0)a=4;else if(b=0)a=5;else a=6;printf(”t%dt%dn”,a,c);if(c=(b=0)a=5;printf(”t%dt%dn”,a,c);if(a=c=b
42、)a=4;printf(”t%dt%dn”,a,c);10下面程序根据以下函数关系,对输入的每个x 值,计算出 y 值。请在【】内填空。x2x=10-1x=2x=-1#include”stdio.h”main()int x,y;scanf(”%d”,&x);if(【1】)y=x*(x+2);else if(【2】)y=1/x;else if(x=a&chc)【2】;printf(”min=%dn”,min);16以下程序实现这样的功能:商店卖西瓜,10 斤以上的每斤 0.15 元,8 斤以上的每斤 0.3元,6 斤以上的每斤 0.4 元,4 斤以上的每斤 0.6 元,4 斤以下的每斤 0.8
43、元,从键盘输入西瓜的重量和顾客所付钱数,则输出应付款和应找钱数。请在【】内填入正确内容。#include”stdio.h”main()float weight,money,rate;printf(”the paid money of the client is:”);scanf(”%f”,&money);printf(”the weight of the watermelon is:”);scanf(”%f”,&weight);if(【1】)rate=0.15;else if(weight8)rate=0.3;else if(weight6)【2】;else if(weight4)rate=0
44、.6;【3】rate=0.8;printf(”the account payable of the watermelon is%fn”,weight*rate);printf(”the change for client is%fn”,money-weight*rate);17以下程序段的运行结果是_。#include”stdio.h”main()charch1=a,ch2=A;switch(ch1)case a:switch(ch2)case A:printf(”good!n”);break;case B:printf(”bad!n”);break;case b:printf(”joken”
45、);18根据以下函数关系,对输入的每个x 值,计算出相应的y 值。请在【】内填入正确内容。xx00=x1010=x2020=xb 的值为假时,便已经确定整个表达式的值为假,所以不必再继续判断第二个表达式的逻辑值。由于没有执行第二个表达式n=cd,所以 n 的值仍为 2。17解析:if 的条件表达式 x=y+z 为赋值语句,x=5 为非零值,即为if(1)printf(”*n”);23解析:A的错误在于 switch(a+b);其后有一个“;”,B 的错误在于 switch a 的条件表达式 a 没有括号,应该为 switch(a),C 的错误在于有两个 case 具有相同的入口值。28解析:当
46、输入 c 时,switch 语句执行情况为:switch(ch)case a:从此处向下执行case h:default:v1+;case 0:v2+;因为没有 break 语句当继续输入 h 时,switch 语句的执行情况为:switch(ch)从此处向下执行case a:case h:因为没有 break 语句default:v1+;case 0:v2+;v1 v2 v2 1 2v1 1 2重复上述过程,输入 5 个有效字符,则 v1 和 v2 执行 5 次自加操作,所以:v1=5,v2=5二填空题答案1答案:585858解析:虽然三个 if 语句按照嵌套方式书写,但是程序仍然是依顺序运
47、行的,会分别对每一个 if 的条件表达式进行判断,若其条件表达式为真,就执行其后的语句,否则,不执行。2答案:1解析:注意该表达式是关系表达式的双等号,所以其结果只能为1 或 0。3答案:44答案:15答案:在 Turbo C编译系统下,结果为 a=2,b=3,c=2,d=3,e=-1;若在 Visual C+下,结果为 a=2,b=3,c=2,d=3,e=-0。解析:在 Turbo C编译系统下,解题过程如下:第一个赋值语句“c=(-a+)+(+b);”可分解为如下的几个语句:b b 1 c a b b 21 3,c 13 2,a 11 2a a 1此时 a=2,b=3,c=2。第二个赋值语
48、句“d=(b-)+(+a)-a;”可分解为如下的几个语句:a a 1 d b a a a 21 3,d 333 3,b 31 2b b 1此时 a=3,b=2,c=2,d=3。第三个赋值语句“e=(a/(+b)-(a/(-a);”中由于自加、自减运算符的优先级高于其它运算符,故先运算+和-,令a=2,b=3,然后该等式中a 的值都取 2 参与运算,故该等式等价与:“e=2/3-2/2;”,因此 e 的值等于 0。此时 a=2,b=3,c=2,d=3,e=0在 Visual C+编译系统下,解题过程如下:前两条赋值语句“c=(-a+)+(+b);”、“d=(b-)+(+a)-a;”的运算过程和在
49、Turbo C编译系统一样,第三个赋值语句“e=(a/(+b)-(a/(-a);”可按步骤分解为如下的几个语句e a/b a/(a 1)b 21 3,e 3/33/2 0,a 2a a 1因此,其结果为 a=2,b=3,c=2,d=3,e=-06答案:a=3,b=2,c=1,d=1,e=0,f=0解析:第一个赋值语句 c=(a+=-b);可以分解为如下的语句:b b 1b b 1 c (a b)b 31 2,c (2 2)1,a 21 3a a 1第二个赋值语句 d=(a=+b);可以分解为如下的语句:b b1 b 21 3,d (3 3)1d (a b)第三个赋值语句 e=(a-!=b);可
50、以分解为如下的语句:e (a!b)e (3!3)0,a 31 2a a 1第四个赋值语句 f=(+ab-);可以分解为如下的语句:a a 1 f (a b)a a 1 3,f (3 3)0,b 31 2b b 1由以上各步,可以得到:a=3,b=2,c=1,d=1,e=0,f=07答案:200解析:参看如下的注释语句。if(c0)s=a+b;/*c=30 为真,所以执行 s=a+b 语句;即:s=2*/if(a=0)/*由于 a=-1,故 a0)/*由于 b=3,故 b0 为真,可以继续下面的语句*/if(c=0)w=a-b;/*由于 c=3,c0)w=a-b;/*这一对 if-else因 a