实验4 选择结构程序设计
- 格式:doc
- 大小:70.00 KB
- 文档页数:7
实验4 选择结构程序设计实验4选择结构程序设计实验4结构选择与程序设计一、实验目的1.掌握C语言中逻辑量的表示和使用。
2.掌握if语句和switch语句的使用。
3.熟悉各种表达式作为if语句及switch语句的条件。
4.了解turboc程序的基本调试方法。
二、实验内容1.验证性实验(1)分析程序的运行结果。
① 运行以下程序,输入1-7之间的任意数字,并观察程序#includevoidmain(){intweek的运行结果;printf(\scanf(\switch(week){case1:printf(\case2:printf(\case3:printf(\case4:printf(\case5:printf (\case6:printf(\case7:printf(\default:printf(\}}② 运行以下程序5次,输入数据分别为1、2、3、4和5。
请观察每次的操作结果,并根据结果分析原因。
#includevoidmain(){intn,a=0,b=0,c=0,d=0,k=0;scanf(\switch(n){case1:b++;break;case2:c++;案例3:d++;打破case4:k++;default:a++;}printf(\}(2)输入x的不同值,以下程序将求一给定“y=f(x)”函数的值。
#包括#includevoidmain(){floatx,y;scanf(\if(x<0)y=fabs(x);elseif(x<10)y=x*x;elsey=log10(x);printf(\}2.填写程序的空格(1)以下程序的功能是将用户输入的字母进行大小写转换,即若输入小写字母则将其转换为大写字母,如输入大写字母则将其转为小写字母,若输入非字母字符则输出提示信息。
#includevoidmain(){charc;scanf(\如果('a'<=c&&c>='z')c=c-32;elseif(‘a’<=c&&c>=‘z’)c=c+32;elseprintf(\printf(\}(2)公司将立即增加工资。
实验四选择结构程序设计在程序设计的世界里,选择结构就像是一个智能的决策者,根据不同的条件来决定程序的走向。
这一结构在解决各种实际问题中发挥着至关重要的作用,让程序变得更加灵活和高效。
选择结构,简单来说,就是让程序在运行时能够根据某些条件的判断结果,选择执行不同的代码块。
想象一下,你正在编写一个程序,要根据用户输入的成绩来判断他是否及格。
如果成绩大于等于 60 分,就输出“及格”;否则,输出“不及格”。
这就是一个典型的选择结构应用场景。
在大多数编程语言中,实现选择结构主要有两种方式:if 语句和switch 语句。
先来说说 if 语句。
它的基本形式是“if (条件) {代码块}”。
如果条件为真,就执行花括号里的代码块;如果条件为假,就跳过这个代码块,继续执行后面的代码。
比如说,我们要判断一个数是否为正数,可以这样写:```javaint num = 5;if (num > 0) {Systemoutprintln("这是一个正数");}```除了简单的 if 语句,还有 ifelse 语句。
它的形式是“if (条件) {代码块 1 } else {代码块 2 }”。
如果条件为真,执行代码块 1;如果条件为假,执行代码块 2。
例如,判断一个数是奇数还是偶数:```javaint num = 6;if (num % 2 == 0) {Systemoutprintln("这是一个偶数");} else {Systemoutprintln("这是一个奇数");}```另外,还有 ifelse ifelse 语句,可以处理多个条件的情况。
比如,根据学生的成绩划分等级:```javaint score = 85;if (score >= 90) {Systemoutprintln("优秀");} else if (score >= 80) {Systemoutprintln("良好");} else if (score >= 70) {Systemoutprintln("中等");} else if (score >= 60) {Systemoutprintln("及格");} else {Systemoutprintln("不及格");}```接下来,再讲讲 switch 语句。
实验四选择结构程序设计实验目的与要求:1、学会正确使用逻辑运算符和逻辑表达式的方法。
2、掌握程序的书写风格。
3、熟练掌握if语句的使用。
4、熟练掌握switch语句的使用。
实验内容:1、程序填空。
以下程序功能:有一函数:x (x<1)y= 2x-1 (1≤x≤10)3x-11 (x≥10)用scanf函数输入x的值,求y值。
运行程序,输入x的值(分别为x<1、1≤x<10、x≥10三种情况),检查输出的y值是否正确。
#include "stdio.h"void main(){float x,y;printf("请输入x的值:");scanf("___1___",&x);if(___2___)printf("y的值为:%f\n",y=x);else if(___3___&&___4___)printf("y的值为:%f\n",_____5____);elseprintf("y的值为:%f\n",y=3*x-11);}程序改错。
程序功能:计算器程序。
用户输入两个运算数和四则运算符,输出计算结果。
#include "stdio.h"void main(){double x,y;char ch;printf("请输入两个运算数和四则运算符(例4+5):");/***************found******************/scanf("%d%c%lf",&x,&ch,&y);switch(ch){/***************found******************/case '+':printf("结果为:%f\n",x+y);case '-':printf("结果为:%f\n",x-y);break;case '*':printf("结果为:%f\n",x*y);break;/***************found******************/case '/':printf("结果为:%f\n",x\y);break;}}3、程序设计题。
实验四 选择结构程序设计(4学时)实验前必须做的操作.........——..新建文件夹:......首先在各自对应的计算机ncre(k:)盘上对应座位号文件夹内新建一个文件夹,文件夹的名字为“班级+学号的后两位+姓名”,如座位号为K02,航海1111班、学号后两位是02的、姓名为“张强”的同学,则其对应的文件夹名字是:航海111102张强。
然后在刚才建好的文件夹里面再建立一个文件夹,文件夹为“实验4”。
【实验目的】1、 理解C 语言表示逻辑量的方法(以0代表“假”,以非0代表“真”)。
2、 进一步巩固printf()和scanf()函数的使用方法。
3、 学会正确使用关系运算符和关系表达式、逻辑运算符和逻辑表达式。
4、 掌握if 语句三种形式的用法。
5、 掌握switch 、break 语句的用法。
6、 熟悉选择结构程序段中语句的执行过程。
7、 学会设计分支结构的程序,结合程序掌握一些基本的算法。
8、 巩固利用VC++对C 程序的查错方法,进一步提高修改程序错误的能力。
9、 学习跟踪调试程序,掌握简单的单步调试方法。
【实验内容】[实验任务一]:程序的跟踪调试和变量值的监视练习(可不上交、但必须操作、理解,掌握其方法) 程序跟踪调试实例4-1:程序跟踪调试和变量值的监视示例(请仔细按以下各步骤进行操作):输入x ,计算并输出下列分段函数 f(x) 的值(保留1位小数)。
(需要存盘)⎪⎩⎪⎨⎧=≠=0001)(x x x x f10.0f(10.00) = 0.1【操作步骤】:(1)输入源程序,并以error4_1.c 文件名最终保存在实验4文件夹里,然后执行“编译/Build ”—>“编译/Compile ”,出现第一个编译错误是:双击该出错信息,箭头指向else 所在行,出错信息指出在else 前缺少分号。
在y = 1 / x 后面补上分号后,重新编译,新出现的第一个出错信息(警告信息):双击该错误信息,箭头指向scanf("%f", x);所在行,出错原因是x 的前面少了&。
实验四 选择结构程序设计
(设计型 4学时)
一、实验目的
1.掌握逻辑表达式的正确使用方法。
2.掌握单分支、双分支和多分支条件语句结构的使用方法。
二、实验内容
1 有函数:
⎪⎩⎪⎨⎧≥-<≤-<=)
10(124)101(2
3)1(x x x x x x
y 写一个程序,输入x 值后,则输出相应y 值。
要求
用“If …ElseIf …EndIf ”和用“Select Case ”两种方法完
成该题目。
【提示】
注意区分1≤x<10和1<=x And x<10有什么不同。
2编写一个判断给定坐标在第几象限的程序,界面
如图3-1所示。
3 编写一个简易学生成绩管理系统,要求输入姓名
和成绩,点击“添加”按钮后,在文本框中追加并换行显示“姓名”、“成绩”和“合格”或
“不合格”信息,如图3-2所示。
【提示】
换行追加并且显示时,可用Text1.Text = Text1.Text & vbCrLf & (待追加并显示的字符串),同时应该将Text1的MultiLine 属性设置为True ,ScrollBars 属性设置为Both 。
进一步要求:按照≥90为“优”,≥80为“良”,≥70为“中”,≥60为“及格”,<60为“不及格”来划分并显示上述信息。
图3-1 实验3-2程序运行界面 图3-2 实验3-3程序运行界面。
实验4 编写选择结构程序一、实验目的1.了解C语言表示逻辑值的方法。
2.学会正确使用逻辑运算符和逻辑表达式的方法。
3.熟悉if语句和switch语句。
4.结合程序掌握一些简单的算法。
5.学习调试程序的方法。
二、实验内容本实验要求编程解决以下问题,然后上机调试运行程序。
1.编程实现:输入3个整数,要求按由小到大的顺序输出。
得到正确结果后,修改程序使之按由大到小的顺序输出。
main函数结构如下:int a,b,c,t;输入3个整数:赋给a,b,c;if(a>b) 交换a,bif(a>c) 交换a,cif(b>c) 交换b,c输出a,b,c2.给出一个百分制的成绩,要求输出成绩等级A,B,C,D,E。
90分及以上为A,80-89为B,70-79为C,60-69为D,60分以下为E。
要求从键盘输入成绩,然后输出相应等级,分别用if语句和switch语句实现。
程序提示:(1)使用if语句的main函数结构如下:定义float型变量score,char型变量grade输入百分制成绩赋给scoreif score>=90grade='A'else if score>=80grade='B'else if score>=70grade='C'else if score>=60grade='D'else grade='E'输出百分制成绩和等级。
(2)使用switch语句的main函数结构如下:定义float型变量score,char型变量grade输入百分制成绩赋给scoreswitch(int(score/10)){case 10:case 9: grade='A';break;case 8: grade='B';break;case 7: grade='C';break;case 6: grade='D';break;default: grade='E';break;}输出百分制成绩和等级3.实验总结。
实验四选择结构程序设计一、实验目的1.正确使用关系表达式和逻辑表达式表达条件。
2.学习分支语句if和switch的使用方法。
3.进一步熟悉TC集成环境的使用方法,学习TC环境提供的调试工具。
二、实验内容1.调试下列程序,使之具有如下功能:输入a、b、c三个整数,求最小值。
写出调试过程。
main(){ int a,b,c;scanf("%d%d%d",a,b,c);if((a>b)&&(a>c))if(b<c)printf("min=%d\n",b);elseprintf("min=%d\n",c);if((a<b)&&(a<c))printf("min=%d\n",a);}程序中包含有一些错误,按下述步骤进行调试。
⑴设置观测变量。
按<Alt+B>键,屏幕弹出"Add watch"窗口,在窗口中可输入要观察的变量或表达式,此处输入a,重复以上操作并分别输入b、c,在屏幕下方的"message"窗口显示变量名a、b、c,且变量名的后面有提示,如a的后面是undefined symbol 'a',这是因为程序没有运行,变量没有登记,所以TC环境不知道a是什么。
⑵单步执行程序。
按<F8>键,屏幕上半部"Edit"窗口中的程序第一行程序的文字背景色变为兰色,表示此语句将被执行。
连续按<F8>键,兰色条一句句下移。
⑶通过单步执行发现程序中的错误。
当单步执行到scanf()函数一句时,屏幕自动切换到DOS窗口,等待用户的输入,假定我们输入"1 2 3",变量a、b、c接受后应在屏幕信息窗口显示出来,但是此时我们看到的却不是我们输入的数据。
这时我们就要检查程序。
实验4 选择结构程序设计1.实验目的(1)熟练掌握if语句的三种形式,在实际中能根据具体情况灵活选择某种形式的if语句(2)进一步熟悉关系表达式和逻辑表达式(3)熟练掌握switch语句的功能、格式和执行过程(4)能用switch语句实现简单的选择功能2.实验内容2.1基础知识(1)在横线上填上适当的标点符号。
该程序的功能是输出a、b中的最大值。
#include “stdio.h”void main(){ int a,b,t;scanf("%d %d",&a,&b);if___b>a_______ t=a;a=b;b=t;____ptintf("\nmax=%d",a);}(2)在横线上填上适当的标点符号。
将题(1)改写成if—else的形式:#include “stdio.h”void main(){ int a,b,t;scanf("%d %d",&a,&b);if___a>b_______ptintf("\nmax=%d",a);____ /* 思考:此处的符号是否可以省略?什么情况下不能省略?*/else____ptintf("\nmax=%d",b);____}(3)在横线上填上适当的标点符号。
switch (表达式){ case_____常量表达式1____ 语句1____case_____常量表达式2____ 语句2____……default____ 语句n____ }(4)对于if—else语句,如果分支较多,有时用swtich语句更加合适,swtich语句是多分支选择结构,其执行过程:首先比较___________与___________是否相等,如果相等,则执行case后面的语句,如果都不相等,则执行__________。
2.2阅读程序(1)#include “stdio.h”void main(){ int number;printf(“number=“);scanf(“%d”,&number);if (number%10==0) printf(“%d是10的倍数。
实验四 选择结构程序设计一、实验目的1.掌握关系、逻辑表达式的正确书写形式。
2.学习结构化程序的控制流程。
3.掌握单分支与双分支条件语句的使用。
4.掌握多分支条件语句(If … Then … ElseIf )的使用。
5.掌握Select Case 语句的使用及与多分支条件语句的区别。
6.熟悉选择结构程序设计,灵活使用各种分支语句。
7.学习掌握程序调试方法。
二、实验内容1.将实验三的“计算器3”另存为“计算器4”,按图4.7修改成“计算器4”的界面。
运行时单击“=”按钮,执行所选算术运算符按钮的运算,运算结果显示在文本框中。
编写事件过程及代码实现“计算器4”各运算符的运算功能。
(1)用If ……ElseIf ……End If 结构编写“=”按钮的事件过程及代码。
(2)用Select Case ……End Select 结构编写“=”按钮的事件过程及代码。
图4.7 实验1界面设计 图4.8 实验2界面设计 2.在文本框中输入三角形的三个边a 、b 、c ,计算三角形的面积并保留三位小数。
界面设计如图4.8所示。
三角形面积计算公式如下:P =( a + b + c )/ 2 S = )(*)(*)(*c p b p a p p ---要求:(1)用IsNumeric 函数对文本框输入的内容进行判断,若为非数字字符,显示“输入错误!重新输入”,清空该文本框,该文本框获得焦点。
(2)判断输入的三边是否能构成三角形,能构成三角形,计算三角形的面积。
否则用MsgBox 显示“不能构成三角形”的信息。
提示:对多个文本框输入数据的合法性用(LostFocus )进行判断,应防止文本框出现争夺焦点,可以在(LostFocus )事件过程中使用如下判断语句。
If Not IsNumeric(Text2) And Text2 <> "" Then3.编一模拟袖珍计算器的完整程序,运行界面如图4.9所示。
实验4 选择结构程序设计一、实验目的(1)了解C 语言表示逻辑量的方法(以0代表“假”,以非0代表“真”)。
(2)学会正确使用逻辑运算符和逻辑表达式。
(3)熟练掌握if 语句和switch 语句。
(4)结合程序掌握一些简单的算法。
(5)学习调试程序。
一、实验内容题目1 有3个整数a 、b 、c ,由键盘输入,输出其中最大的数。
方法1:main( ){int a ,b ,c ;printf("input three integer :");scanf("%d ,%d ,%d",&a ,&b ,&c);if (a<b)if (b<c) /*a 小于b 且b 小于c ,则c 最大*/printf("max =%d\n",c);else /*a 小于b 且b 大于c ,则b 最大*/printf("max =%d\n",b);else if(a<c) /*a 大于b 且a 小于c ,则c 最大*/printf("max =%d\n",c);else /*a 大于b 且a 大于c ,则a 最大*/printf("max =%d\n",a);}方法2:main( ){int a ,b ,c ,temp ,max ;printf("input three integer :");scanf("%d ,%d ,%d",&a ,&b ,&c);temp =(a>b)?a :b ; /*temp 为a 、b 中较大值*/max =(temp>c)?temp :c ; /*在temp 和c 中比较出最大值*/printf("max =%d\n",max);}运行结果:input three integer :12,34,9↙max = 34题目2 有一函数:y =⎪⎩⎪⎨⎧≥-<≤-<)10(113)101(12)1(x x x x x x,写一程序,输入x ,输出y 值。
main( ){int x ,y ;printf("input x :");scanf("%d",&x);if(x<1) /*当x <1时,求对应y 值*/{y=x;printf("x=%3d,y=x=%d\n",x,y);}else if(x<10) /*当1≤x<10时,求对应y值*/{y=2*x-1;printf("x=%3d,y=2*x-1=%d\n",x,y);}else /*当x≥10时,求对应y值*/{y=3*x-11;printf("x=%3d,y=3*x-11=%d\n",x,y);}}运行结果:input x:20↙x= 20,y=3*x-11=49题目3 给出一百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。
90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。
main( ){float score;char grade;printf("input student score:");scanf("%f",&score);while (score>100||score<0) /*当输入错误时,提示用户并允许重新输入*/{printf("error\n.");scanf("%f",&score);}switch((int)(score/10)) /*将score/10的值转换成整型以便于判断*/{case 10:case 9: grade=’A’;break;case 8: grade=’B’;break;case 7: grade=’C’;break;case 6: grade=’D’;break;case 5:case 4:case 3:case 2:case 1:case 0: grade=’E’;}printf("score: %5.1f,grade: %c\n",score,grade);}运行结果:input student score:90.5↙score: 90.5,grade:A题目4给一个不多于5位的正整数,要求:①求出它是几位数;②分别打印出每一位数字;③按逆序打印出各位数字,例如原数为321,应输出123。
1main( ){long int num;int indiv,ten,hundred,thousand,ten_thousand,place;printf("input 0-99999:");scanf("%ld",&num);if(num>9999)place=5;else if(num>999)place=4;else if(num>99)place=3;else if(num>9)place=2;else place=1;printf("place=%d\n",place);/*输出位数*/printf("shuzi is:");ten_thousand=num/10000;/*以下五行分别求万位、千位、百位、十位、个位数字 */thousand=(int)(num-ten_thousand*10000)/1000;hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);switch(place) /*根据位数判断应该输出哪几位数字*/{case 5:printf("%d,%d,%d,%d,%d",ten_thousand,thousand,hundred,ten,indiv);/*正序输出*/printf("\ninvert is:");printf("%d%d%d%d%d\n",indiv,ten,hundred,thousand,ten_thousand);/*逆序输出*/break;case 4:printf("%d,%d,%d,%d",thousand,hundred,ten,indiv);printf("\ninvert is:");printf("%d%d%d%d\n",indiv,ten,hundred,thousand);break;case 3:printf("%d,%d,%d",hundred,ten,indiv);printf("\ninvert is:");printf("%d%d%d\n",indiv,ten,hundred);break;case 2:printf("%d,%d",ten,indiv);printf("\ninvert is:");printf("%d%d\n",indiv,ten);break;case 1:printf("%d",indiv);printf("\ninvert is:");printf("%d\n",indiv);break;}}运行结果:input 0-99999:98765↙place=5shuzi is:9,8,7,6,5invert is: 5678923 题目5 试编程判断输入的正整数是否既是5又是7的整数倍。
若是,则输出yes ;否则输出no 。
main( ){int x ;printf("input x :");scanf("%d",&x);if(x%5==0&&x%7==0)printf("yes");elseprintf("no");}运行情况:inupt x :35↙yes思考:if 中的条件表达式可否改成 !x%5&&!x%7 ?题目6 编制程序要求输入正整数a 和b ,若a 2+b 2大于100,则输出a 2+b 2百位以上的数字,否则输出两数之和。
main( ){int a ,b ,x ,y ;printf("input a 、b :");scanf("%d%d",&a ,&b);x =a*a +b*b ;if(x>100) /*若a 2+b 2>100*/{y =x/100; /*y 为a 2+b 2 百位以上的数字*/printf("%d",y);}else printf("%d",a +b);}运行情况:input a 、b : 10 8↙1题目7 已知银行整存整取存款不同期限的月息利率分别为:月息利率=⎪⎪⎪⎩⎪⎪⎪⎨⎧=====年期限年期限年期限年期限年期限8%84.05%75.03%69.02%66.01%63.0输入存款的本金和年限,求到期时能从银行得到的利息与本金的合计。
(利息的计算公式为:利息=本金×月息利率×12 ×存款年限。
#include "stdio.h"main( ){int year ;float money ,rate ,total ; /* money :本金 rate :月利率 total :本利合计 */printf("Enter money and year =?");scanf("%f%d",&money ,&year); /* 输入本金和存款年限 */if (year ==1) rate =0.0063; /* 根据年限确定利率 */else if(year ==2) rate =0.0066;else if(year==3) rate=0.0069;else if(year==5) rate=0.0075;else if(year==8) rate=0.0084;else rate=0.0;total=money+money*rate*12*year; /* 计算到期的本利合计 */printf("Total= %.2f\n",total);}题目8输入年份和月份,求该月有多少天。