C语言进行实验:通过程序实现线算图取值【支持VC++ 6.0编辑器环境运行】

背景:

一、实验目的和要求

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;
    }
相关推荐
醉颜凉几秒前
【NOIP提高组】潜伏者
java·c语言·开发语言·c++·算法
_小柏_3 分钟前
C/C++基础知识复习(20)
开发语言
程序员小明z12 分钟前
基于Java的药店管理系统
java·开发语言·spring boot·毕业设计·毕设
我是哈哈hh1 小时前
HTML5和CSS3的进阶_HTML5和CSS3的新增特性
开发语言·前端·css·html·css3·html5·web
Dontla1 小时前
Rust泛型系统类型推导原理(Rust类型推导、泛型类型推导、泛型推导)为什么在某些情况必须手动添加泛型特征约束?(泛型trait约束)
开发语言·算法·rust
Neophyte06082 小时前
C++算法练习-day40——617.合并二叉树
开发语言·c++·算法
慕容复之巅2 小时前
基于MATLAB的条形码的识别图像处理报告
开发语言·图像处理·matlab
zqzgng2 小时前
Python 数据可视化pilot
开发语言·python·信息可视化
写bug的小屁孩2 小时前
websocket初始化
服务器·开发语言·网络·c++·websocket·网络协议·qt creator
Dr_eamboat2 小时前
【Java】枚举类映射
java·开发语言·python