当前课程知识点:C语言程序设计(上) > 数据计算实现与顺序结构程序设计(二) > 2.7 顺序结构程序实例 > 2.7.1 第一个程序:三角形
这一部分的内容
我们基本上讨论了C里边涉及到的
绝大多数的计算问题
包括了算术的 关系的 逻辑的
以及位运算
还有一些比较特殊的
比如说条件运算 逗号运算这些
这些运算我们目前涉及到的
基本上都是在顺序结构的程序里边
怎么去实施这个计算
很少的涉及到了一些简单的判断
我们最后用两个简单的例子
来把咱们这个关于计算
在程序设计里边
尤其是在C程序设计里边
这么多种的计算
是如何的在一个顺序结构的程序里边
去实现的
通过两例子 一个是
关于求三角形面积的一个例子
输入三角形三条边的长度
然后这是人机交互需要输入的
然后程序完成什么
完成给出三角形的面积
由这个输入的三条边
构成的三角形的面积是多大
这里边必然要涉及到了计算的问题
都计算什么东西呢
这个问题因为很简单
它的数学模型是已经有了
如果你给三角形的三个边
根据三角形的计算公式
这边我们就说这个问题
就是数学模型的建立
就没有那么复杂
我们不需要对这个问题进行
分解 抽象 建立数学模型的一个过程
模型是现成的
也就说你给了三条边
这个三角形的面积的公式
就已经有了
其中s是什么
是三角形三个边加起来周长的一半
也就是周长的一半
所有问题都非常明确
我们可以直接计算了
把这个式子
就是上边求三角形面积的式子
如果我们写成C语言的表达式的话
它还有一些变化
因为我们看到了这里边
是整个对后边的计算做了一个开平方
开平方怎么做
我们前面其实已经遇到过了
有数学函数可以专门解决
开平方的问题
这里边还涉及到了几个变量
一个是三角形的三条边a b c
还有一个是我们刚才说
周长折半
我们用s表示
在我们这个写C语言的表达式里边
首先就要考虑到
你用哪几个变量
这里边涉及到了四个a b c和s
还有圆面积放在一个变量里
这样我们考虑
C语言的表达式就可以写成
下面的这样一个形式
在这里边我们做了什么工作
做了s和括弧之间的关系
是什么关系 乘的关系
所以这一块
这个乘号必须是加进来的
还有这一块我们说
s减a和后边这个括弧之间
也是乘的关系
所以这个乘号下边一个乘号
都是要加进来的
所以在这个式子里边
这是一个数学表达式
我们大家一看都知道它是乘的关系
我们现在在这一部分要强调的是说
把一个自然语言里边的也就说
用数学语言表达的一个计算公式
你要描述的
让计算机的程序能认识的话
那你用的C语言
就用C语言的规则去描述它
C语言的规则也就是非常明确的
告诉它确定的这两个量
计算量之间是什么样的一个计算
比如说这个乘号
它表达的是它是双目运算
这两个量是做的是乘的操作
这就是比较确定
然后调用了一个函数这里边
我们调用的开平方的函数
函数用括弧括起来
最外边的这个括弧
是表达的
是对里边这个表达式的运算结果
去开平方
这一块有一个数学函数调用
大家是不是还记得我们前面讨论的时候
一旦你用了一个数学的函数调用
你在你的程序里边是不是就应该包含
我们前面已经见到过的这样的程序
所以在这里边我们还要考虑一个问题
你输入的这三个边
是整型的还是实型的
我们在这个问题里边是说
通常可以是整型可以是实型的
所以我们把这几个量
a b c area和s
我们都把它定义为double型
这个问题的一个流程的描述
是不是就成了这样
开始
然后用人机交互的方式
为计算机提供数据
a b c这是你的输入的数据
给了abc
计算机就可以开始计算它的s
也就说周长折半
可以计算它的面积
然后完了
我们最终要的就是这个面积
把面积输出来
这个流程就结束
我们对这样的一个流程
把它的C语言的程序
给出来的话
前边的开始
这应该对应的是开始的这一部分
开始这一部分通常是
指示大家做什么
一些准备的工作
通常我们在程序里边把它叫初始化
就是初始化的时候
你都需要做哪些准备
你需要包含一些什么东西
你需要说明一些什么东西
都应该在main之前
来做这个工作
所以在这个程序里边
我们需要做两件事
第一件事情是
我们要输出
那应该include是标准的
输入输出的头文件
第二件事情
我们要用到开平方根的这个函数
我们要把数学的math.h
包含进来
在咱们这里边的初始化的时候
准备工作应该做
这两个包含
下来就进入到我们的主题main
在main这一块有了一个int
咱以前有时候是有void
有时候是什么都没有
有时候是int
这样的程序大家可能是在
很多地方都会看到不同的
不同是什么
我们加void的时候是说
这个main函数不要返回值了
我该要的东西我在这里边
print什么的该看见我都看见了
int是什么意思
int表达的是说
main的返回值是一个整型
返回的这个整型有人用吗
没有人调用
只是一个就是说我给这个main
函数返回它一定是有一个参数的
只是说这个参数到底是什么
你明确的说明的话
这个参数返回的是int型
是通常我们对main的返回值
并没有使用
所以这一块并不关注
main返回的是什么
所以写int写void
或者不写
在这一块对这个程序来说都是一样的
接下来下边是定义
定义什么
定义我们要用到的所有的参数
是double型的
然后就开始做我们输入
流程里边的这个输入
a b c就做scanf
这是人机交互的一个过程
给了三个a b c
我们提供的
下边的s area
都是我们这个程序计算出来的
做下边两个计算
s和area的面积的计算
把这两个C语言表达式写在这
然后赋值给s赋值给area
这两个计算做完了就开始输出
printf我们输出的是说
咱要的结果是a是什么b是什么
c是什么然后s是什么
最后的结果是什么
最后返回
这是这个程序
我们运行一下这个程序
打开这个环境
找到我这个程序是编好了
编好了的情况下
大家就可以说直接双击这个程序
原程序
系统自动给你打开了语言处理系统
然后把这个程序打开
这跟刚才我们看到的程序是一样的
如果是1f
我们以前说过scanf里边
不给它域的一个选择
如果是1f就不对了
所以这块是l
因为它两个长得有点像
l为什么是l
因为我们是double型
所以这一块给一个l的格式
你可以输入的数据
精度比较高
那我们现在来看一下
运算就是通过这两步完成的
然后后边这两步是输出
输入的abc和s在一行上
输出的三角形的面积在另外一个行上
应该是这样子
我们来编译链接运行一下
我们给几个数
然后a给1.2
b我想是一个整数
这是可以的
然后下一个c也是整数 回车
我们得到了这是三个输入
我们看刚才b给的是整数
整型数5
现在看见的是5.00
实际上大家会考虑说
这个5到底在计算机里存的是
一个整型的5
还是一个实型的5
是取决于你的b定义的是什么
b我们是double
它一定是按实型的
double型的去存的
到底它存的是5.0000六个0
还是两个0
我们为什么看见的是两个0
是因为你要的f给的格式是
点2 你要的两位
所以就说输出到底保留几位小数
是在于你printf里边带的格式
而你在内存里到底占几个字节
在于你定义的这个变量
到底是什么类型的
所以我们看到的这个完全是
printf里边给的点2的格式
这个后边一样1.81
是这个三角形的面积
我们再运行一次
再给三个2.3 4.5
然后给一个大的数
给一个很奇怪的三角形40.5
这里边现在出现了一个
有问题的一个结果
这是为什么
我们把这个问题
现在目前运行的这个结果
输入的数据是
现在这个能不能构成一个
三角形的面积
构成一个合适的三角形
为什么这个结果会是这样子
到底是它的
是变量类型定义的有问题
还是它输出的存储有问题
还是你输出的格式有问题
这个问题我们留给大家讨论
下一次我们在讨论里边
再来给大家这个答案
-1.1 计算机的问题求解方法
--讨论题:数学模型
-1.1 计算机的问题求解方法--作业
-1.2 C语言与C程序
--讨论题:运算符
-1.3 C语言处理系统与程序调试运行
--例程
-1.4 程序中的人机交互
--例程
--作业讨论区
-2.1 算术运算的C程序实现
--算术混合运算.c
-2.1 算术运算的C程序实现--作业
-2.2 关系运算的C程序实现
--bukao.c
--字符比较.c
--讨论题:比较大小
-2.2 关系运算的C程序实现--作业
-第二周作业--作业
-2.3 逻辑运算的C程序实现
--计算结合性
--闰年.c
--自动购票问题.c
-2.3 逻辑运算的C程序实现--作业
-2.4 位运算的C程序实现
--讨论题:位运算
-2.5 几种很个别的运算
--讨论题
--讨论题
-2.5 几种很个别的运算--作业
-2.6 混合运算及数据类型转换
--讨论题:数据类型
-2.7 顺序结构程序实例
--Video
--三角形面积.c
--讨论题:工业产值
-2.7 顺序结构程序实例--作业
-3.1 程序中的路径选择实现
--打印学生成绩.c
--一元二次方程.c
-3.1 程序中的路径选择实现--作业
-3.2 路径中的再选择——嵌套判断
--例程
--讨论题:程序改错
-3.2 路径中的再选择——嵌套判断--作业
-3.3 复杂判断问题的C程序设计
--3.3 多级选择
--银行存款.c
--讨论题:多级选择
-3.4 多分支问题的C程序设计
--加减乘除运算.c
-3.4 多分支问题的C程序设计--作业
-3.5 GOTO的适当使用
-3.6 选择结构的程序实例
--3.6 程序展示
--计算第几天.c
--讨论题:输出奇数
--讨论题:计算税金
-3.6 选择结构的程序实例--作业
-第四周作业--作业
-4.1 需要重复执行的程序
--求和.c
--打印学生成绩.c
--统计录入速度.c
--求平均数.c
-4.1 需要重复执行的程序--作业
-4.2 至少要执行一次的循环
--n的阶乘.c
--字符分类统计.c
-4.2 至少要执行一次的循环--作业
-4.3 已知循环次数用for语句
--求和问题.c
--数列求和.c
--讨论题:循环语句
-4.3 已知循环次数用for语句--作业
-4.4 循环控制——简单循环应用
--水仙花数.c
--讨论题:死循环
--讨论题:猜数字
-循环结构的程序设计(一)--4.4 循环控制——简单循环应用
-4.5 循环的嵌套
--讨论题:程序运行
-4.5 循环的嵌套--作业
-4.6 break与continue
--最大素数.c
-4.6 break与continue--作业
-4.7 循环的综合应用
--数的排列组合.c
--鸡兔同笼.c
--打印空心字符.c
--讨论题:打印图形
--讨论题:计算闰年
-第六周作业
-第六周作业--作业
-5.1 同类有序数据处理问题
-5.2 一维数组的定义和引用
--数组定义.c
--数组初始化.c
--反向输出.c
--讨论题:对称数
-5.2 一维数组的定义和引用--作业
-5.3 一维字符串数组
--讨论题:编程
-5.4 字符串处理函数
--字符串反向.c
--字符串函数
-5.5 二维数组的定义与使用
-5.6 二维数组的输入输出
-5.6 二维数组的输入输出--作业
-5.7 二维数组的应用
--转置矩阵.c
--讨论题:修改程序
-5.8 二维字符数组
--5.8 单词排序
--单词排序.c
-5.8 二维字符数组--作业
-5.9 数组综合应用
--统计成绩.c
--统计字符次数.c
--讨论题:洗牌
-本期课程结束语
--end
-第八周编程作业
-《C语言程序设计(上)》期末复习参考
--html
-《C语言程序设计(上)》期末复习参考答案
--html