用C语言编写程序课件

上传人:我*** 文档编号:139796581 上传时间:2020-07-24 格式:PPT 页数:34 大小:168KB
返回 下载 相关 举报
用C语言编写程序课件_第1页
第1页 / 共34页
用C语言编写程序课件_第2页
第2页 / 共34页
用C语言编写程序课件_第3页
第3页 / 共34页
用C语言编写程序课件_第4页
第4页 / 共34页
用C语言编写程序课件_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《用C语言编写程序课件》由会员分享,可在线阅读,更多相关《用C语言编写程序课件(34页珍藏版)》请在金锄头文库上搜索。

1、Chap 2 用C语言编写程序,2,简单程序的一般形式,指令 int main(void) /函数 语句 ,3,指令,在编译C程序之前,预处理器先行对其编辑 预处理器执行的命令称为指令 Example: #include /Cs standard I/O library. 指令以#为开头,默认只有一行,结尾无;,4,函数,数学:函数是根据一个或多个给定参数进行数值计算的规则 C:函数是一系列组合在一起并且整体命名的语句集合 程序员自行编写的函数 编译器提供的库函数 通常需要返回值 return x + 1;,5,main 函数,main 函数是必须的. main函数是特别的,在程序执行时自动被

2、调用 main函数 要求返回一个状态码,用0表示正常退出,6,语句,语句是程序运行时执行的命令. C语言规定每条语句都要以分号结尾,复合语句除外,7,注释,单行用/ C99 / This is a comment 多行用/* */ /* This is a comment */ /* Name: pun.c Purpose: Prints a bad pun. Author: K. N. King */,8,变量与赋值,变量:在程序执行过程中临时存储数据的单元 类型:用来说明变量存储的数据种类 声明:变量使用之前为编译器所做的描述 int height; int height, length,

3、 width, volume; 赋值:变量通过赋值方式获得值 初始化:在声明时赋值,未初始化的变量不可控,变量的声明与使用,变量必须先声明,后使用。 #include int main(void) int celsius, fahr; fahr = 100; celsius = 5 * (fahr - 32) / 9; printf(fahr = %d, celsius = %dn, fahr, celsius); return 0; ,一个变量名只能声明一次 变量一般都定义在程序的头上 不能定义在程序的中间或后面,应该先赋值,后引用,10,常量,常量:在程序运行过程中,其值不能被改变 字面值

4、 : 89 A const 类型 常量名=值; 宏定义:#define INCHES_PER_POUND 166 /名称默认全大写(规范不强制),11,标识符,标识符:变量、常量、函数、宏定义、结构名等实体的命名. 标识符可以含有字母、数字、下划线,但必须以字母或下划线开头 C语言区分大小写 一般要求变量用小写,多个单词时: current_page currentPage 理论上标识符长度没有限制,12,关键字,如下不能用于标识符: auto enum restrict* unsigned break extern return void case float short volatile

5、char for signed while const goto sizeof _Bool* continue if static _Complex* default inline* struct _Imaginary* do int switch double long typedef else register union *C99 only 标准库函数名称也要回避,13,代码书写规范,单个语句可以分开放在多行里. 关键字、标识符、运算符、逗号等后面最好加一下空格 通过缩进来帮助识别程序嵌套结构 通过空行来划分程序逻辑单元 乱加空格和分行会导致错误 字符串太长怎么办? printf(“To

6、 C, or not to C: that is the question.n);,14,printf 函数,printf 函数用来显示格式串 printf(格式串, 表达式1,表达式2, ); 格式串包含普通字符和转换说明(以 % 字符开头). 普通字符直接显示,转换说明被变量替代,Example: int i, j; float x, y; i = 10; j = 20; x = 43.2892f; y = 5527.0f; printf(i = %d, j = %d, x = %f, y = %fn, i, j, x, y); Output: i = 10, j = 20, x = 43

7、.289200, y = 5527.000000,15,printf 函数,编译器不检查转换说明和字符串是否匹配. 太多转换说明: printf(%d %dn, i); /* WRONG */ 太少转换说明: printf(%dn, i, j); /* WRONG */ 顺序不一致: printf(%f %dn, i, x); /* WRONG */,转换说明格式,转换说明标准格式 %m.pX m (数字,可选,最小字段宽度,当数值所需字符少于m时,m为正右对齐,m为负左对齐) p (数字, 可选,精度,取决于具体说明符) X (说明符,必须). %10.2f, m is 10, p is 2

8、, and X is f. 数值常用说明符 d 十进制 e 科学计数法,p指明小数点后的数字个数 f 浮点数,p指明小数点后的数字个数 g 可以自动转换,可以显示为十进制、浮点数或科学计数法,不能用于整数,17,tprintf.c /* Prints int and float values in various formats */ #include int main(void) int i; float x; i = 40; x = 839.21f; printf(|%d|%5d|%-5d|%5.3d|n, i, i, i, i); printf(|%10.3f|%10.3e|%-10g|

9、n, x, x, x); return 0; Output: |40| 40|40 | 040| | 839.210| 8.392e+02|839.21 |,18,转义序列,非打印的(控制)字符 响铃符a 回退符b 换行符n 水平制表符t 显示 Example printf(ItemtUnittPurchasentPricetDaten); Item Unit Purchase Price Date,19,scanf 函数,scanf 根据特定格式读取输入. scanf(格式串, 格式串包含普通字符(通常没有)和转换说明(以 % 字符开头). 转换说明被变量替代 转换说明、转义序列与print

10、f用法相同 编译器不检查转换说明和字符串是否匹配,20,scanf 的匹配过程,scanf 函数调用: scanf(%d%d%f%f, r = read) 最后一个换行符被忽略.,21,格式串中的普通字符,空白字符(空格、制表符、换行符等)可以与输入中任意数量的空白字符匹配,包括0个 其他字符 匹配时, scanf 放弃输入字符继续处理 不匹配时,异常退出,22,addfrac.c /* Adds two fractions */ #include int main(void) int num1, denom1, num2, denom2, result_num, result_denom;

11、printf(Enter first fraction: ); scanf(%d/%d, ,程序解析,分段计算水费 要解决的问题: 输入 计算分段函数 输出,并保留2位小数 求ex,程序解析求分段函数,#include int main(void) double x, y; printf(Enter x (x=0):n); /* 输入提示 */ scanf(%lf, ,Enter x (x=0): 9.5 f(9.500000)=12.67,Enter x (x=0): 15 f(15.000000)=20.00,Enter x (x=0): 21.3 f(21.300000)=42.75,软

12、件测试的基本思想,软件测试 精心设计一批测试用例 输入数据,预期输出结果 ,然后分别用这些测试用例运行程序,看程序的实际运行结果与预期输出结果是否一致。,input x: 2.5 f(2.50)=0.4,input x: 0 f(0.00)=0.0,if(x != 0) y = 1/x; else y = 0;,if(x = 15) y = 4 * x / 3; else y = 2.5 * x - 10.5;,Enter x (x=0): 9.5 f(9.500000)=12.67,Enter x (x=0): 15 f(15.000000)=20.00,Enter x (x=0): 21.

13、3 f(21.300000)=42.75,常用数学库函数,库函数 C语言处理系统提供事先编好的函数,供用户在编程时调用。scanf(), printf(), exp() 在相应的系统文件(头文件)中定义一些必需的信息。 #include命令 用户调用库函数时,将相应的头文件包含到源程序中。 例如 调用scanf, printf,需要 #include 调用sqrt,需要 #include ,常用数学库函数,平方根函数 sqrt(x) 绝对值函数 fabs(x) fabs(-3.56) 的值为3.56 幂函数 pow(x, n) :xn pow(1.1, 2) 的值为1.21(即1.12) 指数

14、函数 exp(x):ex exp(2.3) 的值为e2.3 以e为底的对数函数 log(x):ln x log(123.45) 的值为4.815836 以10为底的对数函数 log10(x):log10 x log10(123.45) 的值为2.091491。,计算存款的本息,输入存款金额 money、存期 year 和年利率 rate,根据公式计算存款到期时的本息合计sum(税前),输出时保留2位小数。 sum = money ( 1 + rate)year,sum = money * pow(1 + rate), year),# include # include int main(voi

15、d) int money, year; double rate, sum; printf(“Enter money:); scanf(%d, ,Enter money: 1000 Enter year: 3 Enter rate: 0.025 sum = 1076.89,scanf(%d%d%lf, ,结构化程序设计思想,结构化程序设计(Structured Programming) 程序设计技术 C语言是结构化程序设计语言 强调程序设计的风格和程序结构的规范化,提倡清晰的结构,其基本思路是将一个复杂问题的求解过程划分为若干阶段,每个阶段要处理的问题都容易被理解和处理。 按自顶向下的方法对问题

16、进行分析、模块化设计和结构化编码等3个步骤。,自顶向下的分析方法,把大的复杂的问题分解成小问题后再解决。 面对一个复杂的问题,首先进行上层(整体)的分析,按组织或功能将问题分解成子问题,如果子问题仍然十分复杂,再做进一步分解,直到处理对象相对简单,容易处理为止。 当所有的子问题都得到了解决,整个问题也就解决了。 每一次分解都是对上一层的问题进行细化和逐步求精,最终形成一种类似树形的层次结构,来描述分析的结果。,学生成绩统计程序的层次结构图,模块化设计,将模块组织成良好的层次系统,顶层模块调用其下层模块以实现程序的完整功能,每个下层模块再调用更下层的模块,从而完成程序的一个子功能,最下层的模块完成最具体的功能。 遵循模块独立性的原则,即模块之间的联系应尽量简单。 一个模块只完成一个指定的功能。 模块之间只通过参数进行调用。 一个模块只有一个入口和一个出口。 模块内慎用全局变量。,结构化编码,选用顺序、选择和循环三种控制

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号