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;
    }
相关推荐
码界奇点8 小时前
基于Python与GitHub Actions的正方教务成绩自动推送系统设计与实现
开发语言·python·车载系统·自动化·毕业设计·github·源代码管理
kaikaile19958 小时前
MATLAB计算卫星星下点轨迹
开发语言·算法·matlab
誰能久伴不乏8 小时前
深入理解 `poll` 函数:详细解析与实际应用
linux·服务器·c语言·c++·unix
二狗哈8 小时前
Cesium快速入门15:图元Primitive创建图像物体
开发语言·javascript·3d·webgl·cesium·地图可视化
lljss20209 小时前
C# 定时器类实现1s定时器更新UI
开发语言·c#
白杨攻城狮9 小时前
C# 关于 barierr 心得
开发语言·c#
zhglhy9 小时前
Jaccard相似度算法原理及Java实现
java·开发语言·算法
catchadmin9 小时前
PHP 8.5 容器化实战指南
开发语言·php
nono牛9 小时前
完整bash语法教程:从零到专家
开发语言·chrome·bash
啥都不懂的小小白9 小时前
Java日志篇3:Logback 配置全解析与生产环境最佳实践
java·开发语言·logback