实验4 分支结构程序设计
实验4 程序设计(4学时)

实验4 程序设计(4学时)目的与要求1.掌握VFP程序设计特点,程序文件的建立、修改和运行方法;2.掌握环境设置语句的含义和基本输入输出命令的使用;3.掌握VFP的顺序、选择和循环结构的设计方法;4.掌握程序设计过程中参数传值和传引用的传递规则;5.掌握子程序、过程和自定义函数的建立,以及调用与返回规则;6.掌握内存变量的作用域属性及对参数传递的影响。
实验内容一、实验准备1.参照“附录一”,熟悉VFP 6.0 程序文件的建立、修改和运行方法;2.将ftp上实验指导书文件夹中“实验项目5、6用表”文件夹下的学生表(student.dbf)、成绩表(score.dbf)、课程表(course.dbf)以及备注文件“student.fpt”四个文件,拷贝到C:\Program Files\Microsoft VisualStudio\Vfp98目录下,然后完成实验。
示例与程序中用到的三个表结构如下,各位同学可以参照这些结构还原这三个数据表之间的相互关联。
二、顺序结构程序设计1.VFP的顺序程序设计方法。
2.完成如下程序设计:(1)物体长度可以用公制或者英制单位表示,已知公制长度单位为毫米(mm),英制单位长度为英寸(inch),其转换公式为1 inch = 25.4 mm,编写程序将输入的英制长度转换为公制后输出。
(2)从键盘输入圆锥体的半径(r)和高度(h),计算其体积并输出,体积计算公式为v = π * r * r * h / 3。
(3)求方程ax2 + bx + c = 0的根,a, b, c的值从键盘输入(假设输入的a, b,c值满足b2– 4ac ≥ 0,不考虑虚根的情况)。
(4)由键盘输入学生名,将“student表”中该学生的奖学金增加100元,并显示该学生修改后的奖学金。
(5)分析下面程序的输出结果。
USE studentINDEX ON 姓名TAG nameidxACCEPT "请输入要查找的学生姓名" TO 姓名SEEK M -> 姓名DISPLAY三、选择结构程序设计1.VFP的选择程序设计方法。
分支程序结构设计遇到的问题和解决方案

分支程序结构设计遇到的问题和解决方案在分支程序结构设计中,可能会遇到以下一些问题以及相应的解决方案:1. 如何处理多个条件判断的情况?问题:当有多个条件需要判断时,使用嵌套的if语句会导致代码混乱难以维护。
解决方案:可以使用switch语句来简化对多个条件的判断。
将各个条件作为不同的case,根据条件的值执行相应的操作。
2. 如何处理条件嵌套的情况?问题:当条件之间存在嵌套关系时,使用多个if语句会导致代码嵌套太深。
解决方案:可以使用逻辑运算符(如&&和||)结合条件表达式来简化嵌套。
将条件进行拆分,并使用逻辑运算符将它们组合在一起,以创建更简洁的条件。
3. 如何处理条件过多的情况?问题:当条件过多时,使用if语句或者switch语句来处理会导致代码冗长而且难以维护。
解决方案:可以使用策略设计模式来处理多个条件的情况。
将每个条件封装为一个策略类,并通过一个统一的接口来执行相应的操作。
这样可以将每个条件的处理逻辑分离出来,使得代码更加清晰和可维护。
4. 如何处理条件的扩展和修改?问题:当条件需要扩展或修改时,使用if语句或者switch语句来处理可能会导致代码的改动范围较大。
解决方案:可以使用工厂模式来处理条件的扩展和修改。
将每个条件封装为一个具体的产品类,并使用工厂类来创建相应的产品对象。
当条件需要扩展或修改时,只需要修改工厂类和新增相应的产品类,而不需要修改程序的其他部分。
总的来说,分支程序结构设计中的问题可以通过使用适当的语句、运算符、设计模式等手段来解决,使得代码更加简洁、可读性更高,同时也方便后续的维护和扩展。
湖南省C语言(上)教案:第四章分支结构程序设计(高教版).doc

第四章分支结构程序设计分支程序设计章节练习题四、选择题1.若x=0,y=3,z=3,以下表达式值为0的是A. !xB.x<y? 1:0C. x%2&&y==zD. y=x||z/32.以下运算符中优先级最低的运算符为 ,优先级最高的为。
A. &&B. !C. !=D. ||E. ?:F. ==3.若w=1,x=2,y=3,z=4,则条件表达式w<x?w:y<z?y:z的结果为。
A. 4B. 3C. 2D. 14.若w,x,z均为int型变量,则执行以下语句后的输出为。
w=3;z=7;x=10;printf("%d\n",x>10?x+100:x-10);printf("%d\n",w++||z++);printf("%d\n",!w>z);printf("%d\n",w&&z);A. 0B. 1C. 0D. 01 1 1 11 1 0 01 1 1 05.分析以下程序, 下列说法正确的是。
main(){ int x=5,a=0,b=3;if(x=a+b) printf("* * * *\n");else printf("# # # #\n");}A. 有语法错,不能通过编译B. 通过编译,但不能连接C. 输出* * * *D. 输出# # # #6.分析以下程序, 下列说法正确的是。
main(){ int x=0,a=0,b=0;if(x=a+b) printf("* * * *\n");else printf("# # # #\n");}A. 有语法错,不能通过编译B. 通过编译,但不能连接C. 输出* * * *D. 输出# # # #7.分析以下程序, 下列说法正确的是。
分支结构应用实验报告

一、实验目的1. 理解分支结构在程序设计中的重要作用。
2. 掌握C语言中的分支结构语句,如if-else、switch-case等。
3. 通过实际编程,熟练运用分支结构解决实际问题。
二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 编程语言:C语言三、实验内容1. 实验一:判断两个整数的大小(1)功能描述:输入两个整数,输出较大的数。
(2)程序代码:```c#include <stdio.h>int main() {int a, b;printf("请输入两个整数:\n");scanf("%d %d", &a, &b);if (a > b) {printf("较大的数是:%d\n", a);} else {printf("较大的数是:%d\n", b);}return 0;}```2. 实验二:计算分段函数的值(1)功能描述:输入一个实数x,计算分段函数y的值。
(2)程序代码:```c#include <stdio.h>int main() {double x, y;printf("请输入一个实数x:\n");scanf("%lf", &x);if (x < 2) {y = x x;} else {y = 2 x - 1;}printf("分段函数y的值是:%lf\n", y);return 0;}```3. 实验三:判断字符类型(1)功能描述:输入一个字符,判断其是字母、数字还是其他字符。
(2)程序代码:```c#include <stdio.h>#include <ctype.h>int main() {char c;printf("请输入一个字符:\n");scanf("%c", &c);if (isalpha(c)) {printf("该字符是字母。
实验4 选择结构程序设计

实验四 选择结构程序设计(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 的前面少了&。
分支结构程序设计

分支结构程序设计分支结构程序设计分支结构是计算机程序设计中的一种重要的流程控制结构,它能够根据不同的条件选择不同的执行路径。
在分支结构中,程序会根据条件判断的结果,选择性地执行不同的代码块。
1. if条件语句if条件语句是最基本的分支结构之一。
它的语法如下:```markdownif (条件) {// 条件满足时执行的代码块}```如果条件满足,即为真(True),则执行大括号内的代码块;否则,跳过此代码块,继续向下执行。
如果需要在条件不满足时执行一段代码,我们可以使用`else`关键字。
`else`后面的代码块会在条件不满足时执行。
```markdownif (条件) {// 条件满足时执行的代码块} else {// 条件不满足时执行的代码块}```有时候,我们需要多个条件进行判断。
此时,可以使用`else if`来添加额外的条件判断。
```markdownif (条件1) {// 条件1满足时执行的代码块} else if (条件2) {// 条件2满足时执行的代码块} else {// 以上条件都不满足时执行的代码块}```在`if`条件语句中,条件可以是任何能够返回`True`或`False`的表达式,比如比较操作符(`==`、`!=`、`>`、`<`、`>=`、`<=`)、逻辑操作符(`&&`、`--------`)等。
2. switch语句`switch`语句是另一种常用的分支结构。
它用于根据不同的条件选择性地执行不同的代码块。
`switch`语句的语法如下:```markdownswitch (表达式) {case 值1:// 第一个值时执行的代码块break;case 值2:// 第二个值时执行的代码块break;// 其他case语句default:// 所有值都不匹配时执行的代码块break;}````switch`语句首先根据表达式的值进行匹配,如果匹配成功,则执行相应值的代码块。
实验4分支结构(精)

实验四分支结构程序设计实验一、实验目的1.掌握分支结构程序设计的基本设计方法;2.掌握条件转移指令和无条件转移指令的使用方法; 3.掌握指令对标志寄存器中各标志位的影响情况;4.掌握多分支结构程序设计的三种方法:树型结构法、地址常数表法和指令常数表法。
二、实验要求1.学会使用DEBUG 的T 命令,跟踪检查指令对标志位的影响情况; 2.学会使用DEBUG 中的P 命令,对INT 指令的跟踪方法; 3.学会利用设置断点调试程序的方法;4.了解大写、小写字母及数字在计算机内的表示方法及转换方法。
三、实验内容1.编写程序,已知在DATA 开始的内存单元中,连续存放着三个一位十六进制数,找出其中最大数及最小数,存放在指定的内存单元中。
2.编写程序,从键盘输入若干个任意字符,如果是小写字母a ~z 之间的字符,请将它们转换成相应的大写字母,若为其它字符,则保持不变,将转换后的新字符保存在指定的存储单元中。
四、解题思路1.先对DATA 内存单元连续存放三个一位十六进制数。
先对DATA 内存单元里的前两个数据比较,较大的数据再和第三个数据比较,从而得到最大数据存到MAX 内存单元里。
把两次比较得到的两个较小的数据进行比较,从而得到最小数据存到MIN 内存单元里。
两个无符号数据比较后,用JA/JNBE、JAE/JNB/JNC/、JB/JNAE/JC和JBE/JNA来判别两数的大小关系,这些条件转移指令是把进位标志CF 和零标志位ZF 结合起来判别的。
2.先开辟20个字节的内存单元DATA 用来存储输进来字符串和修改后的字符串。
对字符串的输入是以‘#’为结束字符的,当字符的个数少于20时,只要输入的字符串是以‘#’结尾,就代表字符串输入结束(其中结束字符‘#’也是字符串中的一个字符存储到内存单元里)。
每次输入一个字符,就对其进行判别。
若输入的字符在字符‘a ’到‘z ’之间,那么就对其进行转换成对应的大写字母(方法把小写字母的值减去32即可),然后再存到指定的内存单元中;否则,直接把输入的字符存到指定的内存单元中去。
实验4分支结构程序设计

实验4分支结构程序设计分支结构是程序设计中常用的一种控制结构,通过判断条件的真假来选择不同的执行路径。
在实验4中,我们将学习如何使用分支结构来设计程序。
一、分支结构的基本语法在分支结构中,根据条件的真假执行不同的代码,主要有以下几种语法结构:1. if语句: if语句是最基本的分支结构,用于根据条件执行不同的代码块。
语法如下:if (条件)//条件为真时执行的代码} else//条件为假时执行的代码其中,条件是一个表达式,如果表达式的值为真,则执行if语句块中的代码;否则执行else语句块中的代码。
2. if-else if-else语句:用于根据多个条件选择执行不同的代码。
语法如下:if (条件1)//条件1为真时执行的代码} else if (条件2)//条件1为假,条件2为真时执行的代码} else//条件1和条件2都为假时执行的代码在这种结构中,多个条件会按照顺序依次被检查,一旦一些条件为真,相应的代码块即被执行,后续的条件判断将被略过。
3. switch语句:用于根据不同的表达式值选择执行不同的代码块。
语法如下:switch (表达式)case 值1://表达式的值与值1相等时执行的代码break;case 值2://表达式的值与值2相等时执行的代码break;...default://表达式的值与之前的值都不相等时执行的代码break;在switch语句中,表达式的值将与每个case后的值进行比较,如果相等,相应的代码块将被执行,使用break语句可以使程序跳出switch 语句。
二、分支结构的应用在实验4中,我们可以结合具体问题来设计分支结构程序。
以下是一个示例:问题:根据学生的成绩判断其等级并输出。
解决方法:1.输入学生的成绩。
2. 使用if-else if-else语句判断成绩所属的等级,并输出。
具体实现如下:#include <iostream>int mai//输入学生的成绩int score;std::cout << "请输入学生的成绩:";std::cin >> score;//判断成绩所属等级并输出if (score >= 90)std::cout << "成绩等级为A" << std::endl;} else if (score >= 80)std::cout << "成绩等级为B" << std::endl;} else if (score >= 70)std::cout << "成绩等级为C" << std::endl;} else if (score >= 60)std::cout << "成绩等级为D" << std::endl;} elsestd::cout << "成绩等级为E" << std::endl;}return 0;在上述代码中,我们通过if-else if-else语句根据学生的成绩判断其等级,并输出相应的结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.练习题一
编写程序,计算练习一分段函数的值。
(1)用scanf函数输入x的值。
(2)运行程序时,分别按x的值小于0、x的值在0-15之间、x的值大于15三种情况输入数据,检查输出的y值是否正确。
判断x的值在0-15之间可否使用表达式“0<=x<15”?为什么?正确的表示方法是什么?
不可。
因为一个条件判断表达式中最多只能有一个运算符。
正确的表示方法是x>=0&&x<15.
2.练习题二
输入3个数字,判断他们是否能构成三角形,如果不能,输出提示信息;否则判断它是直角、等边、等腰# include <stdio.h>
int k=1;void test();
void main()
{
while(k==1)
{
int a,b,c,d;
printf("Input a,b,c:");
scanf("%d,%d,%d",&a,&b,&c);
while ((d=getchar())!='\n'&&c!=EOF);//清空输入缓存区
if(!(a>0&&b>0&&c>0&&a+b>c&&a+c>b&&b+c>a))
printf("三条边无法构成三角形。
\n");
else
if (a*a+b*b==c*c||a*a==b*b+c*c||b*b==a*a+c*c)
printf("这是一个直角三角形\n");
else if (a==b&&b==c)
printf("这是一个等边三角形\n");
else if (a==b||b==c||a==c)
printf("这是一个等腰三角形\n");
else
printf("这是一个普通三角形\n");
test();
}
}
void test()
{ char c;
printf("Test again?y/n:");
if ((c=getchar())=='n'||c=='N')//只有当输入N或n时才终止程序
k=0;
}
判断三角形的类型时需要用到各种判断条件,入等边三角形的判断条件是3条边相等,该判断条件可否描述为“a=b=c”?为什么?
答案:
1. 练习题三
编写一个程序,输出给定的某年某月的天数。
要求:
采用switch语句实现。
}
思考题及问题:
①本程序所给代码中的switch语句没有default语句可以吗?default语句应该在switch语句可以。
Default语句可以在{}之间的任意位置。
②本程序所给代码中的最后一个case语句中,没有break正确吗?请解释。
正确。
在switch语句中,当找到符合条件的case时,执行该case语句及之后的其他情况的语句,故C语言会在case语句和default语句后加break;防止执行下面的语句。
而最后一个case 语句后无其他语句,故没有break语句也正确。
1. 自测练习一
编写程序,计算逻辑表达式的值。
假设int a=0,b=1,c=1,d=3;
(1)表达式a*b&&c-d、c-d&&a*b是多少?为什么?
程序代码:
# include <stdio.h>
void main()
{
int a=0,b=1,c=1,d=3;
printf("%d,%d",a*b&&c-d,c-d&&a*b);
}
运行结果截图及原因:
a*b=0,逻辑假,由于与运算的短路性,&&右边的表达式不进行,直接为0;
c-d=-2,逻辑真,为1,故第二个运算式为1&&0=0.
(2)表达式—a||++b&&--c的值是多少?变量a、b、c的值分别是多少?为什么?
程序代码:
# include <stdio.h>
void main()
{
int a=0,b=1,c=1,d=3;
printf("%d\n",-a||++b&&--c);
printf("a=%d,b=%d,c=%d",a,b,c);
}
++b即b的值为2,是真值1,--c值即c的值为0,假值0。
-a即a的值为0,假值0. 故结果为0||1&&0=1&&0=0,
程序代码:
# include <stdio.h>
void main()
{
int a=0,b=1,c=1,d=3;
printf("++b&&--c||--a=%d\n",++b&&--c||--a);
printf("a=%d,b=%d,c=%d",a,b,c);
}
++b即b的值为2,是真值1,--c值即c的值为0,假值0。
--a即a的值为-1,真值1.
故结果为1&&0||1=1,
2. 自测练习二
设整型变量a、b、c分别存放从键盘输入的3个整数。
编写C程序,按从大到小排列这3个数,使a成为最大值,c成为最小值,并且按序输出这3个数。
# include <stdio.h>
void main()
{
int a[3]={0},t,j,i,k;
for (i=0;i<=2;i++)
{
printf("Input %c:",i+97);
scanf("%d",&a[i]);
}
for (j=0;j<=2;j++)//冒泡法
{
for (i=0;i<=2-j;i++)
if (a[i]<a[i+1])
t=a[i],a[i]=a[i+1],a[i+1]=t;
}
printf("a=%d,b=%d,c=%d\n",a[0],a[1],a[2]);
}
运行结果截图:
3. 自测练习三
从键盘输入一个小于六位的正整数,判断它是几位数,并按照相反的顺序输出各位上的数字,例如输入1234,输出为4321。
# include <stdio.h>
# include <math.h>
void main()
{
int i=4,a[6]={0},k=0;
printf(“请输入一个小于六位的正整数:");
scanf("%d",&a[5]);
while (a[5]<(int)pow(10,i))//判断输入数据的位数
i--;
k=i+1;
printf("它是%d位数",k);
a[i+1]=a[5];
for (;i>=1;i--)
{
a[i]=a[i+1]%(int)pow(10,i);
a[i+1]=a[i+1]/(int)pow(10,i);
}
for (i=1;i<=k;i++)//倒序输出
printf("%d",a[i]);
printf("\n");
}
运行结果截图:
4. 自测练习四
假设今天是星期日,编写一个程序,求n(n由键盘输入)天后是星期几。
源程序代码:
# include <stdio.h>
void main()
{
int n,t;
printf("假设今天是星期日,求n天后是星期几\n输入n=");
scanf("%d",&n);
t=n%7;
switch(t)
{
case 0:printf("n天后还是星期日\n");break;
case 1:printf("n天后是星期一\n");break;
case 2:printf("n天后是星期二\n");break;
case 3:printf("n天后是星期三\n");break;
case 4:printf("n天后是星期四\n");break;
case 5:printf("n天后是星期五\n");break;
case 6:printf("n天后是星期六\n");
}
}
5. 自测练习五
假定向香港邮寄包裹的收费规则如下:首先,包裹重量向上取整到最近的15g的倍数,然后按书上表格收费,编写一个程序根据用户输入的包裹的重量和里程计算邮费。
包裹邮费计算表
实验四分支结构程序设计。