实验二选择结构程序设计实验报告0001.docx
《实验二选择结构程序设计实验报告0001.docx》由会员分享,可在线阅读,更多相关《实验二选择结构程序设计实验报告0001.docx(21页珍藏版)》请在冰豆网上搜索。
实验二选择结构程序设计实验报告0001
实验二选择结构程序设计
一、实验目的和要求
1.掌握关系表达式和逻辑表达式的使用。
2.熟悉选择结构程序设计。
3.熟练使用if语句进行程序设计。
4.
使用switch语句实现多分支选择结构
PC机VisualC++6.0
三、实验内容
(一)实验准备
1.从程序流程的角度来看,程序可以分为三种基本结构,即顺序结构、分支(选择)结构、循环结构。
2.lf-else语句:
一般形式为:
if(表达式)
语句1;
else
语句2;
该语句用于实现分支结构,根据表达式的值选择语句1或语句2中的一条执行。
首先求解表达式,如果表达式的值为“真”,则执行语句1;如果表达式的值为“假”,则执行语句2.
2.switch语句
switch语句可以处理多分支选择问题,根据其中break语句的使用方法,
return0;
判断一个整数是否可以被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");
seanf("%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(yy=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("此方程组的解为%dft%d\n",x1,x2);
}
return0;
}
7.某产品生产成本c=c1+mc2其中c1为固定成本,c2为单位产品可变成本。
当生产数量m<10000时,c1=20000元,c2=10元;当生产数量m>10000时,c仁40000元,c2=5元;编写一个程序,其功能为:
分别计算出生产数量为6000以及25000时,总生产成本及单位生产成本。
#include
intmain(void)
{
intc,c1,c2,m;
printf("请输入生产数量m:
\n");
scanf("%d",&m);
if(m<10000)
{
c仁20000;
c2=10;
}
else
{
c1=40000;
c2=5;
}
c=c1+m*c2;
printf("生产成本为%d\n",c);
return0;
}
8.编写一个程序,计算下列函数:
r
y=xx<1
3x-11X>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)
{x仁((-b)/(2*a));
printf("此方程有两个相等实根:
x仁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("此方程有两个实根:
x仁%lfx2=%lf\n",x1,x2);
}
}
}
}
return0;
}
11.编写程序,输入三角形三边a、b、c,判断ab、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~200
x*0.5
元
201~400
100+
(x-200)
*0.65元
401~600
230+
(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~200
5%7.5%
201~300
7.5%10.0%
大于300
10.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;
输入购买类别数据有误!
");
elseprintf("}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编程在屏幕上显示一张如下所示的时间表:
Imorning
2afternoon
3night
Pleaseenteryourchoice:
根据用户输入的时间序号显示相应的问候信息,选择1时显示“Goodmorning”,选择2时显示“Goodafternoon”,选择3时显示“Goodnight”,对于其他选择显示“Selectionerror!
”。
#includeintmain(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语句
#includeintmain(void)
{
floatscore;
intp;
printf("请输入成绩:
");
scanf("%f",&score);
p=(int)(score/10);
if(score>=0&&score<=100)switch(p)
{
return0;
}
四、实验小结
通过本次实验我进一步熟悉了C语言操作环境,学习了两种条件语句,弄清了语句格式和使用方法。
学会了分别使用使用if嵌套语句和switch语句实现功能,其中在使用if嵌套时要注意分清层次,明白else所对应的应当是离得最近的if语句,防止发生逻辑错误。
条件判断语句可以结合逻辑运算符更好得实现。