实验二选择结构程序设计方案实验报告.docx
- 文档编号:24822312
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:23
- 大小:21.43KB
实验二选择结构程序设计方案实验报告.docx
《实验二选择结构程序设计方案实验报告.docx》由会员分享,可在线阅读,更多相关《实验二选择结构程序设计方案实验报告.docx(23页珍藏版)》请在冰豆网上搜索。
实验二选择结构程序设计方案实验报告
实验二选择结构程序设计
1、实验目的和要求
1.掌握关系表达式和逻辑表达式的使用。
2.熟悉选择结构程序设计。
3.熟练使用if语句进行程序设计。
4.使用switch语句实现多分支选择结构。
二、实验设备
PC机VisualC++6.0
3、实验内容
(1)实验准备
1.从程序流程的角度来看,程序可以分为三种基本结构,即顺序结构、分支(选择)结构、循环结构。
2.If-else语句:
一般形式为:
if(表达式)
语句1;
else
语句2;
该语句用于实现分支结构,根据表达式的值选择语句1或语句2中的一条执行。
首先求解表达式,如果表达式的值为“真”,则执行语句1;如果表达式的值为“假”,则执行语句2.
2.switch语句
switch语句可以处理多分支选择问题,根据其中break语句的使用方法,一般分为三种情况。
(2)实验工程
1.计算a+|b|
#include
intmain(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整除
#include
intmain(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'),则将其转换成相应的整数显示出来;若输入其它字符,则显示出错信息。
#include
intmain(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”的信息。
#include
intmain(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.编写一个程序,其功能为:
输入三个整数,输出最大数和最小数。
#include
intmain(void)
{
inta,b,c,x,y。
printf("请输入三个数字:
\n")。
scanf("%d,%d,%d",&a,&b,&c)。
x=0。
if(a>b)
{
x=a。
if(x>c)
{
x=x。
}
else
{
x=c。
}
}
else
{
x=b。
if(x>c)
{
x=x。
}
else
{
x=c。
}
}
y=0。
if(a
{
y=a。
if(y { y=y。 } else { y=c。 } } else { y=a。 if(y>c) { y=c。 } else { y=y。 } } printf("最大数是%d,最小值是%d\n",x,y)。 return0。 } 6.如下两个线性方程组的两个未知数为x1和x2: ax1+bx2=m cx1+dx2=n 该方程的唯一解为(ad-cb不等于零时): 请编写一个程序,读取a、b、c、d的值,计算x1和x2的值。 如果ad-cd等于零,应给出适当的提示信息。 #include intmain(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为单位产品可变成本。 当生产数量m<10000时,c1=20000元,c2=10元;当生产数量m≥10000时,c1=40000元,c2=5元;编写一个程序,其功能为: 分别计算出生产数量为6000以及25000时,总生产成本及单位生产成本。 #include intmain(void) { intc,c1,c2,m。 printf("请输入生产数量m: \n")。 scanf("%d",&m)。 if(m<10000) { c1=20000。 c2=10。 } else { c1=40000。 c2=5。 } c=c1+m*c2。 printf("生产成本为%d\n",c)。 return0。 } 8.编写一个程序,计算下列函数: y= x x<1 2x-1 1≤x<10 3x-11 X≥10 #include intmain(void) { intx,y。 printf("Plesseinputax: \n")。 scanf("%d",&x)。 if(x<1) {y=x。 } else { if(x>=10) {y=3*x-11。 } else {y=2*x-1。 } } printf("y=%d\n",y)。 return0。 } 9.编写一个程序,其功能为: 从键盘输入一个字符,判别该字符的类别,并输出向相应信息。 #include intmain(void) { chari。 scanf("%c",&i)。 if(i<32) {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为零,有两个相等的实数解。 #include #include intmain(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能否构成三角形,若不能则输出相应的信息,若能则判断组成的是等腰、等边、直角还是一般三角形。 #include intmain(void) { inta,b,c。 printf("pieaseinputa,b,c: \n")。 scanf("%d,%d,%d",&a,&b,&c)。 if((a+b>c)&&(a+c>b)&&(b+c>a)) { 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元 编写程序,对于一个输入的用电数量,计算用户的缴费额。 #include intmain(void) { doublex,y。 printf("pieaseinputx: \n")。 scanf("%lf",&x)。 if(x<0) {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% -------------------------------------------------------------- 编写程序输入购买总额,计算并输顾客实际应付的货款。 #include"stdio.h" intmain(void) { doublex,y。 intlb。 printf("请输入顾客购买总额x: \n")。 scanf("%lf",&x)。 printf("请输入顾客购买类别lb: \n")。 scanf("%d",&lb)。 if(x<0) printf("输入购买总额数据有误! ")。 else { if(x>=0&&x<=100) { if(lb==0) y=x。 elseif(lb==1) y=x*0.05。 else printf("输入购买类别数据有误! ")。 } elseif(x>=101&&x<=200) { if(lb==0) y=x*0.5。 elseif(lb==1) y=x*0.075。 else printf("输入购买类别数据有误! ")。 } elseif(x>=201&&x<=300) { if(lb==0) y=x*0.075。 elseif(lb==1) y=x*0.1。 else printf("输入购买类别数据有误! ")。 } else { if(lb==0) y=x*0.1。 elseif(lb==1) y=x*0.15。 else printf("输入购买类别数据有误! ")。 } printf("x=%lfy=%lf\n",x,y)。 } return0。 } 14编程在屏幕上显示一张如下所示的时间表: *******Time******* 1morning 2afternoon 3night Pleaseenteryourchoice: 根据用户输入的时间序号显示相应的问候信息,选择1时显示“Goodmorning”,选择2时显示“Goodafternoon”,选择3时显示“Goodnight”,对于其他选择显示“Selectionerror! ”。 #include intmain(void) { intxh。 printf("\n\n*******Time*******\n")。 printf("1morning\n")。 printf("2afternoon\n")。 printf("3night\n")。 printf("\n\n请输入您的选择(1、2、3): ")。 scanf("%d",&xh)。 switch(xh) { case1: printf("\nGoodmorning\n")。 break。 case2: printf("\nGoodatfernoon\n")。 break。 case3: printf("\nGoodnight\n")。 break。 default: printf("\nSelectionerror! \n")。 break。 } return0。 } 15编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式: 操作数1运算符op操作数2 计算表达式的值,指定的运算符为加(+)、减(-)、乘(*)、除(/) #include intmain(void) { floatx,y,z。 charop。 printf(“请输入表达式: ”)。 scanf(“%f,%c,%f”,&x,&op,&y)。 if(op==‘+’) z=x+y。 if(op==‘-’) z=x-y。 if(op==‘*’) z=x*y。 if(op==‘/’) {if(y! =0)z=x/y。 elseprintf(“除数为0”)。 } printf(“%f%c%f=%f\n”,x,op,y,z)。 } #include voidmain() {floatx,y,z。 charop。 printf(“请输入表达式: ”)。 scanf(“%f,%c,%f”,&x,&op,&y)。 switch(op) { case‘+’: z=x+y。 case‘-’: z=x-y。 case‘*’: z=x*y。 case‘/’: {if(y! =0)z=x/y。 elseprintf(“除数为0”)。 } } printf(“%f%c%f=%f\n”,x,op,y,z)。 return0。 } 16输入某学生的成绩,经处理后给出学生的等级,等级分类如下: 90分以上(包括90): A 80至90分(包括80): B 70至80分(包括70): C 60至70分(包括60): D 60分以下: E 方法一: (用if语句的嵌套) ##include intmain(void) { floatscore。 printf("请输入成绩: ")。 scanf("%f",&score)。 if(score>=0&&score<=100) if(score>=90) printf("%fA",score)。 elseif(score>=80) printf("%fB",score)。 elseif(score>=70) printf("%fC",score)。 elseif(score>=60) printf("%fD",score)。 elseprintf("%fE",score)。 elseprintf("成绩输入有误! ")。 return0。 } 方法二: 用switch语句 #include intmain(void) { floatscore。 intp。 printf("请输入成绩: ")。 scanf("%f",&score)。 p=(int)(score/10)。 if(score>=0&&score<=100) switch(p) { case10: case9: printf("%fA",score)。 break。 case8: printf("%fB",score)。 break。 case7: printf("%fC",score)。 break。 case6: printf("%fD",score)。 break。 default: printf("%fE",score)。 } elseprintf("成绩输入有误! ")。 return0。 } 4、实验小结 通过本次实验我进一步熟悉了C语言操作环境,学习了两种条件语句,弄清了语句格式和使用方法。 学会了分别使用使用if嵌套语句和switch语句实现功能,其中在使用if嵌套时要注意分清层次,明白else所对应的应当是离得最近的if语句,防止发生逻辑错误。 条件判断语句可以结合逻辑运算符更好得实现。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 选择 结构 程序设计 方案 报告