第4章选择结构程序设计通过本章实验作业应达目标1.练习并熟练掌握if、switch语句使用,实现二路与多路选择结构;本章必须上交作业程序4_2.c、4_3.c、4_4.c、4_5.c上传至实验一大小写转换【实验目的】熟悉关系与逻辑运算,了解if-else的顺序与嵌套层次关系。【实验内容】下面程序希望完成大小写字母转换功能。若输入一个大写字母,则转化为小写输出;若输入小写字母则转化为大写输出;对其他字母则原样不变输出。程序以4_1.c命名,运行程序,分别输入一次大写、一次小写字母、一次‘#’进行验证。如果程序有错,请改正。#includestdio.hvoidmain(){charch;ch=getchar();if('a'=ch='z')ch-=32;if('A'=ch='Z')ch+=32;putchar(ch);putchar('\n');}实验二算术运算【实验目的】学习if~else、switch语句的使用。【实验内容】键盘输入一个算术的运算式子,输出运算结果。这里我们规定可以接收五个算术运算的符号:+、-、*、/、^(乘方)。输入这五个符号以外的运算符号则提醒出错。程序以4_2.c命名并上交。下图是输入输出的示意图:输入一个加法的算术式:输入一个除法的算术式:输入一个乘方的算术式:求3的平方根:【实验提示】本程序需要从键盘接收一个表达式,根据表达式中的运算符号实现相应的运算并将结果保存下来并输出。C语言本身是没有乘方运算符的,可以调用数学函数pow(x,y)求x的y次方。注意一定要包含math.h。【思考】输入的表达式实质是按多个不同类型的数据来获取数据的。程序中需要定义多个变量来接收表达式中包含的数据与运算符,并设计相应的输入/输出函数实现。实验三金额计算【实验目的】学习分析与解决实际问题的能力,综合嵌套使用if~else或switch语句。【实验内容】某服装店经营套服。以50套为限,若购买数量不少于50套,每套80元;不足50套时每套90元;只买上衣每件60元;只买裤子每条45元。编写程序实现:读入所买上衣c和裤子t的数量,计算应付款总量。程序以4_3.c命名并上交。实验四成绩转换【实验目的】使用if~else、switch语句的嵌套完成程序。【实验内容】按下表规则,将输入的五分制成绩转换成百分制输出。程序以4_4.c命名本程序并上交。输入五分制字符5+55-4+44-321输出百分制数值1009085807570606060要有输入错误提示。【实验提示】本程序需要从键盘接收两个字符,先判断第一个字符,再判断第二个字符以确定其对应的百分制数。例如:输入4+,第一个字符等于'4',则应再判断第二个字符,如果是'+'则输出80,如果是回车符则输出75,如果是'-'则输出70。【思考】对于5+、4-这类输入的数据,程序中应采用什么数据类型与数据结构接收保存?实验五判断天数【实验目的】熟练使用switch语句,并设计精巧程序。【实验内容】按yyyy-mm-dd格式输入一个日期,如2004-10-31,判断这是这一年的第几天。要有输入的判断,一旦输入错误日期则通知输入出错,重新输入。程序以4_5.c命名并上交。【实验提示】以2004-10-31为例,先把前九个月的天数加起来,然后再加上31天。需要考虑的是,当年是闰年,2月为29天,否则2月为28天。也可以2月固定按28天计算,当年是闰年且月份大于2时,多加一天。问题与思考1.若执行下面的程序时从键盘上输入5,则输出结果是______main(){intx;scanf(%d,&x);if(x++5)printf(%d\n,x);elseprintf(%d\n,x--);}A)7B)6C)5D)42.已知a,b,m,n,c,d变量的定义如下,则执行完下列表达式后m,n的值为______inta=3,b=4,m=0,n=0,c=3,d=4;(m=ab)||(n=cd);A)m=1n=1B)m=1n=0C)m=0n=0D)m=0n=13.表达式(!75+10+45)的值是______A)3B)2C)1D)04.假设在程序中,x,y,z均被定义成整型,且已赋大于1的值,则下列能正确表示1/(xyz)的表达式是______A)1/x*y*zB)1/(x*y*z)C)1/x/y/(float)zD)1.0/x/y/z5.已知字母a的ASCII十进制代码为97,则执行以下语句后的输出为______chara='a';a--;printf(%d,%c\n,a+'2'-'0',a+'3'-'0');A)b,cB)a--运算不合法,故有语法错C)98,cD)格式描述和输出项不匹配,输出无定值6.为了避免嵌套的条件语句if-else的二义性,C语言规定:else与_____配对。A)缩排位置相同的ifB)其之前最近的ifC)其之后最近的ifD)同一行上的if7.若给定条件表达式(M)?(a++):(a--),则其中表达式M______A)和(M==0)等价B)和(M==1)等价C)和(M!=0)等价D)和(M!=1)等价8.若有说明语句chars='\092';则该语句______A)使s的值包含1个字符B)说明不合法,s的值不确定C)使s的值包含4个字符D)使s的值包含3个字符9.设a=1,b=2,c=3,d=4,则表达式:ab?a:cd?a:d的结果为______A)4B)3C)2D)110.有如下的变量定义:inti=8,k,a,b;unsignedlongw=5;doublex=1.42,y=5.2;则以下符合C语言语法的表达式是______A)a+=a-=(b=4)*(a=3)B)x%(-3)C)a=a*3=2D)y=float(i)11.有以下变量定义:intk=7,x=12;则下列值为3的表达式是______A)x%=(k%=5)B)x%=(k-k%5)C)x%=k-k%5D)(x%=k)-(k%=5)12.设inta=3;则表达式a1&&--a1的运算结果和a的值分别是______A)0和2B)0和3C)1和2D)1和313.假定所有变量均已正确定义,下列程序段运行后x的值是______ok1=1;ok2=2;ok3=3;x=15;if(!ok1)x--;elseif(ok2)if(ok3)x=3;elsex=4;A)14B)4C)15D)314.下面程序的输出结果是______voidmain(){intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++;b++;}printf(“a=%d,b=%d\n”,a,b);}A)a=2,b=1B)a=1,b=1C)a=1,b=0D)a=2,b=215.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果分别是_____voidmain(){intx;scanf(%d,&x);if(x++5)printf(%d,x);elseprintf(%d\n,x--);}A)7和5B)6和3C)7和4D)6和416.有定义:inta=1,b=3,c=5,d=4,x;则执行完下面一段程序后x的值是______。if(ab)if(cd)x=1;elseif(ac)if(bd)x=2;elsex=3;elsex=6;elsex=7;A)1B)2C)3D)617.能正确表示a和b同时为正或同时为负的表达式是________。A)(a=0||b=0)&&(a0||b0)B)(a=0&&b=0)&&(a0&&b0)C)(a+b0)&&(a+b=0)D)a*b018.当a=3,b=2,c=1时,表达式f=abc的值是______。19.当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是________。A)c=b=aB)(a=c)||(b=c)C)(a=c)&&(b=c)D)a=c=b20.下面程序程序后输出结果是_____。voidmain(){inta=3,b=2,c=1,t;if(abc)t=1;elseif(abc)t=0;elset=-1;printf(%d\n,t);}A)1B)0C)-1D)不确定的数21.以下程序运行后的输出结果是________。voidmain(){inta=3,b=4,c=5,t=99;if(abc)t=a;a=c;c=t;if(ac,cb)t=b;b=a;a=t;printf(%d%d%d\n,a,b,c);}22.以下程序运行后的输出结果是__________。voidmain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;}printf(%d%d\n,a,b);}23.有以下程序voidmain(){inti=1,j=1,k=2;if((j++||k++)&&i++)printf(%d,%d,%d\n,i,j,k);}执行后输出结果是_____。A)1,1,2B)2,2,1C)2,2,2D)2,2,324.以下程序执行后输出结果是_____。voidmain(){inta=3,b=4,c=5,d=2;if(ab)if(bc)printf(%d,d+++1);elseprintf(%d,++d+1);printf(%d\n,d);}A)2B)3C)43D)4425.以下程序执行后输的结果是________。main(){intn=0,m=1,x=2;if(!n)x-=1;if(m)x-=2;if(x)x-=3;printf(%d\n,x);}