背景:
一、实验目的和要求
1、能描述数据基本类型及其常量的表示方法;
2、会对变量进行定义及初始化;
3、能使用运算符与表达式对变量赋值;
4、会描述C语句的概念及种类、C语言常用的输入/出方式;
5、会设计顺序结构程序;
6、能分析if … else …的三种语法的区别,会描述switch与break语句的作用;
7、能使用while循环、do-while循环和for循环的结构设计程序,能使用常见的循环嵌套,会描述break语句和continue语句的作用;
8、会定义、使用数组。
二、实验内容
1将工程中线算图人工查图方式改为程序取值。
对下图所示线算图设计算法,编写代码,实现通过输入横坐标参数获取纵坐标参数功能。
三、实验仪器、设备
计算机(装有VC++ 6.0或visual studio 2010);
四、实验原理
1、在工程中,线算图中的曲线,可近似为由n段线段构成,n的取值取决于曲线斜率变化的剧烈程度;
2、用数组存储线段的特征参数;
3、用选择语句判断输入参数是否越界;
4、用循环语句判断输入参数所处区间,选择合适的线段;
5、用表达式,根据输入参数,在选中的线段上取值,获得输出参数。
五、实验步骤
1、已知线段起点坐标(x0,y0)和终点坐标(x1,y1),要求根据横坐标参数x求其对应线段上的纵坐标参数y。x∈(x0,x1)。
2、已知线段起点坐标(x0,y0)和终点坐标(x1,y1),要求根据横坐标参数x求其对应线段上的纵坐标参数y。(要求使用条件语句判断是否越界)
3、已知两个线段坐标。其中一个线段起点坐标为(x0,y0),终点坐标为(x1,y1);另一个线段起点坐标为(x1,y1),终点坐标为(x2,y2)。要求根据横坐标参数x求其对应线段上的纵坐标参数y。(要求综合利用数组、循环和条件知识)
4、对图1所示曲线,绘制程序流程图,编写代码,撰写实验报告。
七、实验注意事项
1、当需要用比较复杂的逻辑表达式时,要避免发生优先级上的错误,可以使用最高优先级的运算符()将其括起来,这样既增加可读性,又不会出现不必要的错误。
2、输入和输出函数的使用过程中在格式控制的地方可能会出现错误。要严格按照格式控制的形式输入和输出数据。
3、if-else语句书写时应采用分层缩进的格式。
4、while语句的句法格式及用法。
5、for语句的正确使用方法。注意它的初始值、终止条件及步长的确定。
6、当循环不能停止(出现死循环),应该用Ctrl+break中断程序的运行。
7、在C语言中,定义数组时,其长度必须指定且必须用常量表示。
程序效果展示:
要求一(英文版,中文版此处不演示):
用户输入两个坐标,函数关系为y=nx,计算,这里不校验x取值范围
要求二(中文版加英文版演示)
用户输入两个坐标,函数关系为y=nx,计算,这里校验x取值范围
要求三(中文版加英文版演示)
用户输入三个坐标,函数关系为y=n1x,y=n2x,输入x,判断y处于哪个线段!!
VC++6.0编辑器运行效果:
主要代码:
这里一共写了三个程序,来完成对应的需求
//联系请加V:zew1040994588
//要求一代码
// 输入起点和终点的坐标
printf("Please enter the horizontal coordinate of the starting point:");
scanf("%f", &x0);
printf("Please enter the ordinate of the starting point:");
scanf("%f", &y0);
printf("Please enter the horizontal coordinate of the end point:");
scanf("%f", &x1);
printf("Please enter the ordinate of the end point:");
scanf("%f", &y1);
//联系请加V:zew1040994588
//要求三代码
// 输入第二个线段的终点坐标以及已知的x1和y1
printf("请输入第二个线段的终点坐标(x2, y2):");
scanf("%d %d", &x2, &y2);
// 计算第二个线段的斜率
if (x2 - x1 != 0) {
//n2 = (float)(y2 - y1) / (float)(x2 - x1);
n2 = (y2 - y1) / (x2 - x1);
//printf("x1值为%d\n",x1);
//printf("y1值为%d\n",x1);
//printf("x2值为%d\n",x2);
//printf("y2值为%d\n",y2);
//printf("x2 - x1 值为%d\n",x2 - x1);
//printf("y2 - y1 值为%d\n",y2 - y1);
//printf("计算n2值为%d\n",y2 - y1 / x2 - x1);
//printf("n2值为%d\n",n2);
} else {
printf("Error: 第二个线段的斜率不存在");
return 0;
}