收藏 分销(赏)

C语言-实验二、选择结构程序设计.doc

上传人:仙人****88 文档编号:9412468 上传时间:2025-03-25 格式:DOC 页数:18 大小:281.54KB
下载 相关 举报
C语言-实验二、选择结构程序设计.doc_第1页
第1页 / 共18页
C语言-实验二、选择结构程序设计.doc_第2页
第2页 / 共18页
点击查看更多>>
资源描述
实验二 选择结构程序设计 一、实验目的 1. 掌握关系表达式和逻辑表达式的使用。 2. 熟悉选择结构程序设计。 3. 熟练使用if语句进行程序设计。 4. 使用switch语句实现多分支选择结构。 二、实验内容 1 计算a+|b| 源代码如下 #include<stdio.h> int main (void) { float a,b; printf("请输入a,b值\n"); scanf("%f%f",&a,&b); if (b>=0) { printf("%f\n",a+b); } else { printf("%f\n",a-b); } return 0; } 2 判断一个整数是否可以被3和5整除) #include<stdio.h> int main (void) { int a; printf("请输入a值\n"); scanf("%d",&a); if (a==0) { printf("这个数是0\n"); } else { if (a%3==0) { printf("这个数能被3整除\n"); } else { if (a%5==0) { printf("这个数能被5整除\n"); } else { printf("这个数不能被5,3整除\n"); } } } return 0; } 1.[目的]掌握判断一个字符型数据是否数字字符的方法,以及数字字符转换为相应整数的方法。 [题目内容]从键盘输入一个字符型数据,若输入一个数字字符('0'-'9'),则将其转换成相应的整数显示出来;若输入其它字符,则显示出错信息。 [输入]一个字符型数据 [输出]整数或出错信息 [提示] 根据字符型数据的ASCII码值是否在‘0’字符与‘9’字符之间进行判断。使用if…else…语句和复合语句。#include<stdio.h> int main (void) { char c=' '; printf("请输入字符型数据\n"); scanf("%c",&c); if(c>='0'&&c<='9') { printf("这个是数字"); } else { if(c>='a'&&c<='z') { printf("这个是小写字母"); } else { if(c>='A'&&c<='Z') { printf("这个是大写字母"); } } } return 0; } 2.[目的]掌握条件表达式的使用 [题目内容] 编写一个程序,其功能为:从键盘输入三个数x、y、z,判断x+y=z是否成立,若成立输出“x+y=z”的信息,否则输出“x+y!=z”的信息。 [输入] 三个数x、y、z [输出] “x+y=z”或“x+y!=z” [提示] 条件判断表达式x+y==z #include<stdio.h> int main (void) { float x=0.0; float y=0.0; float z=0.0; scanf("%f,%f,%f",&x,&y,&z); if (x+y==z) { printf("x+y=z\n"); } else { printf("x+y!=z\n"); } return 0; } 3.[目的]掌握求最大值最小值的方法。 [题目内容] 编写一个程序,其功能为:输入三个整数,输出最大数和最小数。 [输入] 三个整数 [输出] 最大值和最小值 [提示] 设置最大值变量max和最小值变量min;首先比较a,b的大小,并把大数存入max, 小数存入min;然后最大值变量max和最小值变量min再与c比较,若c大于max,则max取值c,否则保持不变;如果c小于min,则min取值c,否则保持不变。最后输出max和min的值。使用if…else…语句、if语句以及复合语句。 #include<stdio.h> int main (void) { float x=0.0; float y=0.0; float z=0.0; float max=0.0; float min=0.0; printf("请输入三个数\n"); scanf("%f%f%f",&x,&y,&z); if (x>y) { max=x; min=y; } else { max=y; min=x; } if (z>max) { max=z; } if (z<min) { min=z; } printf("max=%f,min=%f",max,min); return 0; } 4.[目的]运用已学知识解决实际问题。 [题目内容]如下两个线性方程组的两个未知数为x1和x2: ax1+bx2=m cx1+dx2=n 该方程的唯一解为(ad-cb不等于零时): 请编写一个程序,读取a、b、c、d的值,计算x1和x2的值。如果ad-cd等于零,应给出适当的提示信息。 [输入]方程的系数 a、b、c、d的值 [输出] 当ad-cb不等于零时,输出方程的解x1、x2的值;当ad-cb等于零时,输出提示信息。 [提示] 用if…else…语句和复合语句实现。 #include <stdio.h> int main (void) { float a=0.0; float b=0.0; float c=0.0; float d=0.0; float x1=0.0; float x2=0.0; float m=0.0; float n=0.0; printf ("如下两个线性方程组x1和x2\n ax1+bx2=m\n cx1+dx2=n\n"); printf ("请输入a,b,c,d,m,n的值:\n"); scanf ("%f%f%f%f%f%f",&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("方程的一个根x1=%f\n",x1); printf("方程的另一根x2=%f\n",x2); return 0; } 三、课后作业(写在实验报告中) 1.[目的]运用已学知识解决实际问题。 [题目内容]某产品生产成本c=c1+mc2,其中c1为固定成本,c2为单位产品可变成本。当生产数量m<10000时,c1=20000元,c2=10元;当生产数量m≥10000时,c1=40000元,c2=5元;编写一个程序,其功能为:分别计算出生产数量为6000以及25000时,总生产成本及单位生产成本。 [输入] 生产数量 [输出] 生产数量、总生产成本、单位可变成本 #include <stdio.h> int main (void) { long int m=0,c1=0,c2=0,c=0; printf("生产数量为\n"); scanf("%d",&m); if (m>=10000) { c1=40000,c2=5; } else { c1=20000,c2=10; } c=c1+m*c2; printf("生产成本为%d\n",c); return 0; } 2.[目的]掌握分段函数的计算。 [题目内容] 编写一个程序,计算下列函数: y= x x<1 2x-1 1≤x<10 3x-11 X≥10 [输入] x值 [输出] y值 [提示]根据输入的x值的取值,计算y的值并输出。使用if…else if语句以及复合语句。 #include <stdio.h> int main (void) { int x=0,y=0; printf("请输入x值\n"); scanf("%d",&x); if (x<1) { y=x; } if (x>=10) { y=3*x-11; } else { y=2*x-1; } printf ("y值为%d\n",y); return 0; } 3.[目的]掌握字符型变量的定义与使用,掌握大小写字母转换的算法。 [题目内容] 编写一个程序,其功能为:从键盘输入一个字符,判别该字符的类别,并输出向相应信息。 [输入]一个字符 [输出] 显示“控制字符”、“数字字符”、“大写字母”、“小写字母”、“其它字符”信息。 [提示] 根据输入字符的ASCII码来判别类型。由ASCII码表可知ASCII值小于32的为控制字符。 在'0'和'9'之间的为数字,在'A'和'Z'之间为大写字母, 在'a'和'z'之间为小写字母,其余则为其它字符。使用if…else if…语句。 #include <stdio.h> int main (void) { char c=0; printf("请输入字符\n"); scanf("%c",&c); if (c<32) { printf("您输入的是控制字符\n"); } else { if (c>='0'&&c<='9') { printf("您输入的是数字字符\n"); } else { if (c>='a'&&c<='z') { printf("您输入的是小写字母\n"); } else { if (c>='A'&&c<='Z') { printf("您输入的是大写字母\n"); } else { printf("您输入的是其他字符\n"); } return 0; } } } } 4.[目的]掌握标准数学函数使用。 [题目内容]编写一个程序,其功能为:从键盘输入一元二次方程ax2+bx+c=0的各项系数a、b、c的值,判断方程实数解的不同情况,分别求解方程,并输出(结果保留两位小数,如无实根给出相应的信息)。 应用如下规则: (1) 若a、b的值为零,则没有解; (2) 若a为零,只有一个实数解; (3) 若b2-4ac为负数,则没有实数解;若b2-4ac为正数,有两个实数解;若b2-4ac为零,有两个相等的实数解。 [输入]一元二次方程ax2+bx+c=0的各项系数a、b、c [输出] 方程的实数解情况 [提示]包含标准数学函数头文件,使用标准数学函数sqrt(x)实现开平方计算,判别式b2-4ac,如果小于0,则输出“方程无实数根”,等于0 ,输出一个实根,结果使用双精度浮点数表示,%lf格式,大于0,输出两个不同的实数根,结果使用双精度浮点数表示,%lf格式。 #include <stdio.h> #include<math.h> int main (void) { float a,b,c; double x1,x2; printf ("如下一元二次方程ax2+bx+c=0\n"); printf ("请输入a,b,c的值:\n"); scanf ("%f%f%f",&a,&b,&c); if(a==0&&b==0) { printf ("此方程组无解\n"); } else if(a==0&&b!=0) { x1=(-1*b/c); printf("方程的一个根1x1=%lf\n",x1); } else if((b*b-4*a*c)>0) { x1=(-b-sqrt(b*b-4*a*c))/(2*a); x2=(-b+sqrt(b*b-4*a*c))/(2*a); printf("方程的一个根x1=%lf\n",x1); printf("方程的另一根x2=%lf\n",x2); } if((b*b-4*a*c)<0) { printf("方程无解"); } if(a!=0&&(b*b-4*a*c)==0) { x1=(-b/(2*a)); printf("方程的一个根2x1=%lf\n",x1); } return 0; } 5.[目的]运用已学知识解决实际问题。 [题目内容] 编写程序,输入三角形三边 a、b、c,判断a、b、c能否构成三角形,若不能则输出相应的信息,若能则判断组成的是等腰、等边、直角还是一般三角形。 [输入] 三角形三边 a、b、c [输出] 不能构成三角形或能构成等腰、等边、直角、一般三角形的信息。 [提示]利用三角形两边之和大于第三边判断是否能够构成三角形,能够成三角形时再以等腰、等边、直角三角形的条件进行判断。 #include <stdio.h> int main (void) { float a,b,c; printf ("请输入三角形三边a,b,c的值:\n"); scanf ("%f%f%f",&a,&b,&c); if(a+b>c&&b+c>a&&a+c>b) { printf ("能构成三角形\n"); if(a==b&&b==c) { printf("是等边三角形"); } else if(a==b||b==c||c==a) {printf ("是等腰三角形\n"); } } else { printf ("不能构成三角形"); } return 0; } 6.[目的]运用已学知识解决实际问题。 [题目内容]某个电力公司对其用户的收费规定如下: 用电数量 收费标准 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元 编写程序,对于一个输入的用电数量,计算用户的缴费额。 [输入] 用电数量 [输出] 缴费额 [提示] 用if…else if语句实现。注意输入负数时的处理。 #include <stdio.h> int main (void) { int a=0,b=0; printf ("请输入用电量a的值,单位千瓦时:\n"); scanf ("%d",&a); if(a>0) { if(a>0&&a<=200) { b=0.5*a; } if(a>=201&&a<=400) { b=100+(a-200)*0.65; } if(a>=201&&a<=400) { b=230+(a-400)*0.8 ; } if(a>=601) { b=390+(a-600)*1.0; } printf ("应该缴纳的费用是%d元\n",b); } else { printf ("输入数值有误\n"); } return 0; } 7.[目的]运用已学知识解决实际问题。 [题目内容]某个服装展示厅对所卖商品打折规定如下: ------------------------------------------------------------ 购买总额 折扣 ------------------------------------------- 机加工产品 手工产品 0~100 - 5% 101~200 5% 7.5% 201~300 7.5% 10.0% 大于300 10.0% 15.0% -------------------------------------------------------------- 编写程序输入购买总额,计算并输顾客实际应付的货款。 [输入]顾客的购买总额 [输出] 顾客实际应付的货款 [提示]机加工产品与手工产品可以使用类别变量表示,例如,设计类别变量为lb,假设lb=0表示机加工产品,lb=1表示手工产品。 #include <stdio.h> int main (void) { float a=0.0,b=0.0,c1=0.0,c2=0.0,c=0.0; printf ("请输入用机加工产品价格和手工产品价格:\n"); scanf ("%f%f",&a,&b); if(a>0&&a<=100) { c1=a; } if(a>100&&a<=200) { c1=0.95*a; } if(a>200&&a<=300) { c1=0.925*a; } if(a>300) { c1=0.9*a; } printf ("应该缴纳的费用1是%f元\n",c1); if(b>0&&b<=100) { c2=b*0.95; } if(b>100&&b<=200) { c2=0.920*a; } if(b>200&&b<=300) { c2=0.9*a; } if(b>300) { c2=0.85*b; } c=c1+c2; printf ("应该缴纳的费用2是%f元\n",c2); printf ("应该缴纳的费用是%f元\n",c); return 0; } 8.[目的]switch语句的练习 [题目内容]编程在屏幕上显示一张如下所示的时间表: *******Time******* 1 morning 2 afternoon 3 night Please enter your choice: 根据用户输入的时间序号显示相应的问候信息,选择1时显示“Good morning”, 选择2时显示“Good afternoon”, 选择3时显示“Good night”,对于其他选择显示“Selection error!”。 [输入] 序号 [输出] 问候语或其他信息 [提示] 用switch语句实现 #include <stdio.h> int main (void) { int a=0,b=0; printf ("请输入时间序号:\n"); scanf ("%d",&a); switch (a) { case 1:printf ("morning\n");break; case 2:printf ("afternoon\n");break; case 3:printf ("night\n");break; default:printf("selection error\n"); } return 0; } 9.[目的]运用已学知识解决实际问题。 [题目内容]编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式: 操作数1 运算符op 操作数2 计算表达式的值,指定的运算符为加(+)、减(-)、乘(*)、除(/) [输入] Please enter the expression:22.12+12.10 键盘输入 屏幕提示 [输出] 22.12+12.10=34.22 程序输出 [提示] 分别用if或switch语句实现 #include <stdio.h> int main( ) { double a, b; char op; printf("Please enter the expression\n"); scanf("%lf%c%lf",&a,&op,&b); switch (op) { case '+': printf("%.2lf + %.2lf = %.2lf\n", a, b, a + b); break; case '-': printf("%.2lf - %.2lf = %.2lf\n", a, b, a - b); break; case '*': printf("%.2lf * %.2lf = %.2lf\n", a, b, a * b); break; case '/': if (b!=0) printf("%.2lf / %.2lf = %.2lf\n", a, b, a / b); else printf("³ýÊý²»ÄÜÊÇ0! \n"); break; } } 10.输入某学生的成绩,经处理后给出学生的等级,等级分类如下: 90分以上(包括90): A 80至90分(包括80):B 70至80分(包括70):C 60至70分(包括60):D 60分以下: E 方法一:(用if语句的嵌套) #include <stdio.h> int main (void) { int a=0,b=0; printf ("请输入成绩\n"); scanf ("%d",&a); if(a>0&&a<60) { printf ("学生等级为E\n",a); } else { if(a>=60&&a<70) { printf ("学生等级为D\n",a); } else if(a>=70&&a<80) { printf ("学生等级为C\n",a); } else if(a>=80&&a<90) { printf ("学生等级为B\n",a); } else if(a>=90) { printf ("学生等级为A\n",a); } return 0; } } 方法二:用switch语句
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服