实验二选择结构程序设计一、实验目的和要求1.掌握关系表达式和逻辑表达式的使用。2.熟悉选择结构程序设计。3.熟练使用if语句进行程序设计。4.使用switch语句实现多分支选择结构。二、实验设备PC机VisualC++6.0三、实验内容(一)实验准备1.从程序流程的角度来看,程序可以分为三种基本结构,即顺序结构、分支(选择)结构、循环结构。2.If-else语句:一般形式为:if(表达式)语句1;else语句2;该语句用于实现分支结构,根据表达式的值选择语句1或语句2中的一条执行。首先求解表达式,如果表达式的值为“真”,则执行语句1;如果表达式的值为“假”,则执行语句2.2.switch语句switch语句可以处理多分支选择问题,根据其中break语句的使用方法,一般分为三种情况。(二)实验项目1.计算a+|b|#includestdio.hintmain(void){inta,b,z;printf(Pleaseentera,b:\n);scanf(%d,%d,&a,&b);if(b=0){b=b;}else{b=-b;}z=a+b;printf(%d+%d=%d\n,a,b,z);return0;}2判断一个整数是否可以被3和5整除#includestdio.hintmain(void){inta;printf(Pleaseentera:\n);scanf(%d,&a);if(a%3==0){printf(a可以被3整除:\n);}else{if(a%5==0){printf(a可以被5整除:\n);}else{printf(a不可以被5整除,也不可以被3整除:\n);}}3.从键盘输入一个字符型数据,若输入一个数字字符('0'-'9'),则将其转换成相应的整数显示出来;若输入其它字符,则显示出错信息。#includestdio.hintmain(void){inta;printf(pleaseenterachar:\n);scanf(%d,&a);if((0=a)&&(a=9)){printf(Thischaris%d:\n,a);}else{printf(这个字符不是个整数:\n);}return0;}4.编写一个程序,其功能为:从键盘输入三个数x、y、z,判断x+y=z是否成立,若成立输出“x+y=z”的信息,否则输出“x+y!=z”的信息。#includestdio.hintmain(void){intx,y,z;printf(请输入x,y,z:\n);scanf(%d,%d,%d,&x,&y,&z);if(x+y==z){printf(x+y=z\n);}else{printf(x+y!=z\n);}return0;}5.编写一个程序,其功能为:输入三个整数,输出最大数和最小数。#includestdio.hintmain(void){inta,b,c,x,y;printf(请输入三个数字:\n);scanf(%d,%d,%d,&a,&b,&c);x=0;if(ab){x=a;if(xc){x=x;}else{x=c;}}else{x=b;if(xc){x=x;}else{x=c;}}y=0;if(ab){y=a;if(yc){y=y;}else{y=c;}}else{y=a;if(yc){y=c;}else{y=y;}}printf(最大数是%d,最小值是%d\n,x,y);return0;}6.如下两个线性方程组的两个未知数为x1和x2:ax1+bx2=mcx1+dx2=n该方程的唯一解为(ad-cb不等于零时):请编写一个程序,读取a、b、c、d的值,计算x1和x2的值。如果ad-cd等于零,应给出适当的提示信息。#includestdio.hintmain(void){inta,b,c,d,m,n,x1,x2;printf(请输入方程组a,b,c,d,m,n\n);scanf(%d,%d,%d,%d,%d,%d,&a,&b,&c,&d,&m,&n);if(a*d-c*b==0){printf(此方程组无解\n);}else{x1=(m*d-b*n)/(a*d-c*b);x2=(n*a-m*c)/(a*d-b*c);printf(此方程组的解为%d和%d\n,x1,x2);}return0;}7.某产品生产成本c=c1+mc2,其中c1为固定成本,c2为单位产品可变成本。当生产数量m10000时,c1=20000元,c2=10元;当生产数量m≥10000时,c1=40000元,c2=5元;编写一个程序,其功能为:分别计算出生产数量为6000以及25000时,总生产成本及单位生产成本。#includestdio.hintmain(void){intc,c1,c2,m;printf(请输入生产数量m:\n);scanf(%d,&m);if(m10000){c1=20000;c2=10;}else{c1=40000;c2=5;}c=c1+m*c2;printf(生产成本为%d\n,c);return0;}8.编写一个程序,计算下列函数:y=xx12x-11≤x103x-11X≥10#includestdio.hintmain(void){intx,y;printf(Plesseinputax:\n);scanf(%d,&x);if(x1){y=x;}else{if(x=10){y=3*x-11;}else{y=2*x-1;}}printf(y=%d\n,y);return0;}9.编写一个程序,其功能为:从键盘输入一个字符,判别该字符的类别,并输出向相应信息。#includestdio.hintmain(void){chari;scanf(%c,&i);if(i32){printf(此字符为控制字符\n);}else{if((i='0')&&(i='9')){printf(此字符为数字字符\n);}else{if((i='A')&&(i='Z')){printf(此字符为大写字母\n);}else{if((i='a')&&(i='z')){printf(此字符为小写字母\n);}else{printf(此字符为其他字符\n);}}}}return0;}10.编写一个程序,其功能为:从键盘输入一元二次方程ax2+bx+c=0的各项系数a、b、c的值,判断方程实数解的不同情况,分别求解方程,并输出(结果保留两位小数,如无实根给出相应的信息)。应用如下规则:(1)若a、b的值为零,则没有解;(2)若a为零,只有一个实数解;(3)若b2-4ac为负数,则没有实数解;若b2-4ac为正数,有两个实数解;若b2-4ac为零,有两个相等的实数解。#includestdio.h#includemath.hintmain(void){floata,b,c;doublex1,x2;printf(Pleaseinputa,b,c\n);scanf(%f%f%f,&a,&b,&c);if((a==0)&&(b==0)){printf(此方程没有解\n);}else{if(a==0){printf(此方程有一个实根\n);}else{if((b*b-4*a*c)0){printf(此方程无实根\n);}else{if((b*b-4*a*c)==0){x1=((-b)/(2*a));printf(此方程有两个相等实根:x1=x2=%lf\n,x1);}else{x1=(-b+(sqrt(b*b-4*a*c)))/(2*a);x2=(-b-(sqrt(b*b-4*a*c)))/(2*a);printf(此方程有两个实根:x1=%lfx2=%lf\n,x1,x2);}}}}return0;}11.编写程序,输入三角形三边a、b、c,判断a、b、c能否构成三角形,若不能则输出相应的信息,若能则判断组成的是等腰、等边、直角还是一般三角形。#includestdio.hintmain(void){inta,b,c;printf(pieaseinputa,b,c:\n);scanf(%d,%d,%d,&a,&b,&c);if((a+bc)&&(a+cb)&&(b+ca)){if(a==b&&b==c&&a==c){printf(能构成等边三角形\n);}else{if(a==b||b==c||a==c){printf(能构成等腰三角形\n);}else{if(a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b){printf(能构成直角三角形\n);}else{printf(能构成一般三角形\n);}}}}else{printf(不能构成三角形\n);}return0;}12.某个电力公司对其用户的收费规定如下:用电数量收费标准0~200x*0.5元201~400100+(x-200)*0.65元401~600230+(x-400)*0.8元601以上390+(x-600)*1.0元编写程序,对于一个输入的用电数量,计算用户的缴费额。#includestdio.hintmain(void){doublex,y;printf(pieaseinputx:\n);scanf(%lf,&x);if(x0){printf(输入的数据有误!\n);}else{if(x=0&&x=200){y=x*0.5;}else{if(x=201&&x=400){y=100+(x-200)*0.65;}else{if(x=401&&x=600){y=230+(x-400)*0.8;}else{y=390+(x-600)*1.0;}}printf(y=%lf\n,y);}}return0;}13某个服装展示厅对所卖商品打折规定如下:------------------------------------------------------------购买总额折扣-------------------------------------------机加工产品手工产品0~100-5%101~2005%7.5%201~3007.5%10.0%大于30010.0%15.0%--------------------------------------------------------------编写程序输入购买总额,计算并输顾客实际应付的货款。#includestdio.hintmain(void){doublex,y;intlb;printf(请输入顾客购买总额x:\n);scanf(%lf,&x);printf(请输入顾客购买类别lb:\n);scanf(%d,&lb);if(x0)printf(输入购买总额数据有误!);else{if(x=0&&x=100){if(lb==0)y=x;elseif(lb==1)y=x*0.05;elseprintf(输入购买类别数据有误!);}elseif(x=101&&x=200){if(lb==0)y=x*0.5;elseif(lb==1)y=x*0.075;elseprintf(输入购买类别数据有误!);}elseif(x=201&&x=300){if(lb==0)y=x*0.075;elseif(lb==1)y=x*0.1;elseprintf(输入购买类别数据有误!);}else{if(lb==0)y=x*0.1;elseif(lb==1)y=x*0.15;elseprintf(输入购买类别数据有误!);}printf(x=%lfy=%lf\n,x,y);}return0;}14编程在屏幕上显示一张如下所示的时间表:*******Time*******1morning2afternoon3nightPleaseenteryourchoice:根据用户输入的时间序号显示相应的问候信息,选择1时显示“Goodmorning”,选择2时显示“Goodafternoon”