实验二选择结构程序设计实验报告.docx
- 文档编号:12898481
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:22
- 大小:19.01KB
实验二选择结构程序设计实验报告.docx
《实验二选择结构程序设计实验报告.docx》由会员分享,可在线阅读,更多相关《实验二选择结构程序设计实验报告.docx(22页珍藏版)》请在冰豆网上搜索。
实验二选择结构程序设计实验报告
实验二选择结构程序设计
1、实验目的和要求
1.掌握关系表达式和逻辑表达式的使用。
2.熟悉选择结构程序设计。
3.熟练使用if语句进行程序设计。
4.使用switch语句实现多分支选择结构。
二、实验设备
PC机VisualC++
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*元 201~400100+(x-200)*元 401~600230+(x-400)*元 601以上390+(x-600)*元 编写程序,对于一个输入的用电数量,计算用户的缴费额。 #include<> intmain(void) { doublex,y; printf("pieaseinputx: \n"); scanf("%lf",&x); if(x<0) {printf("输入的数据有误! \n");} else { if(x>=0&&x<=200) {y=x*; } else { if(x>=201&&x<=400) {y=100+(x-200)*; } else { if(x>=401&&x<=600) {y=230+(x-400)*; } else {y=390+(x-600)*; } } printf("y=%lf\n",y);} } return0; } 13某个服装展示厅对所卖商品打折规定如下: ------------------------------------------------------------ 购买总额折扣 ------------------------------------------- 机加工产品手工产品 0~100-5% 101~2005%% 201~%% 大于%% -------------------------------------------------------------- 编写程序输入购买总额,计算并输顾客实际应付的货款。 #include"" 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*; else printf("输入购买类别数据有误! "); } elseif(x>=101&&x<=200) { if(lb==0) y=x*; elseif(lb==1) y=x*; else printf("输入购买类别数据有误! "); } elseif(x>=201&&x<=300) { if(lb==0) y=x*; elseif(lb==1) y=x*; else printf("输入购买类别数据有误! "); } else { if(lb==0) y=x*; elseif(lb==1) y=x*; 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文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 选择 结构 程序设计 报告