第二章 用c语言编写程序 - zhejiang university...

55
第二章 C语言编写程序

Upload: others

Post on 19-Sep-2020

19 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

第二章用C语言编写程序

Page 2: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

上机编程的几个问题

• 格式错误、编译错误、答案错误

• 函数名与括号之间添加空格:main() main ()

• 主函数main()返回值:int main() … { return 0;}

• 上机题的格式化输出:Copy & Paste

• 函数定义语句添加“;”: int main(void);

2

Page 3: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

第1章要点

• 什么是程序?程序设计语言包含哪些功能?

• 程序设计语言在语法上包含哪些内容?

• 结构化程序设计有哪些基本的控制结构?

• C语言有哪些特点?

• C语言程序的基本框架如何?

• 形成一个可运行的C语言程序主要步骤?

• 如何用流程图描述简单的算法?

3

Page 4: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

内容

• 在屏幕上显示 Hello World!

• 求华氏温度 100°F 对应的摄氏温度

• 计算分段函数

• 指定次数的循环

• 生成阶乘表

4

Page 5: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

内容

• 在屏幕上显示 Hello World!

• 求华氏温度 100°F 对应的摄氏温度

• 计算分段函数

• 指定次数的循环

• 生成阶乘表

5

Page 6: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

在屏幕上显示Hello World!

例2-1 在屏幕上显示一个短句:

Hello World!

6

Page 7: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

在屏幕上显示Hello World!

/* 显示 Hello World! */

# include <stdio.h>

int main(void)

{

printf(“Hello World! \n”);

return 0;

}

7

注释文本

编译预处理命令

主函数

; 语句结束符

输出函数换行符

函数体

Page 8: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

在屏幕上显示Hello World!

/* 显示 Hello World! */

# include <stdio.h>

int main(void)

{

printf(“Hello World! \n”);

return 0;

}

• 任何程序都有且只有一个主函数main()

• 程序由若干语句组成• 程序书写风格

• 语句由;结束• 英文;

• 中文;编译不通过

8

Page 9: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

问:下面语句的输出有何不同?

printf(“Hello world\n”);

printf(“Hello\n world\n”);

• 不可见字符:

• 换行符 \n

• 制表符(Tab) \t

• 清屏并换页 \f

• 空格符

9

转义字符

意义ASCII码值(十进制)

ASCII码值(十六进制)

\a 响铃(BEL) 007 0x07

\b退格(BS) ,将当前位置移到前一列

008 0x08

\f换页(FF),将当前位置移到下页开头

012 0x0C

\n换行(LF) ,将当前位置移到下一行开头

010 0x0A

\r回车(CR) ,将当前位置移到本行开头

013 0x0D

\t水平制表(HT) (跳到下一个TAB位置)

009 0x09

\v 垂直制表(VT) 011 0x0B

\\ 代表一个反斜线字符''\' 092 0x5C

\' 代表一个单引号(撇号)字符 039 0x27

\" 代表一个双引号字符 034 0x22

\? 代表一个问号 0630x3F

\0 空字符(NULL) 000 0x00

\ddd1到3位八进制数所代表的任意字符

三位八进制

\xhh1到2位十六进制所代表的任意字符

二位十六进制

Page 10: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

小结:在屏幕上显示Hello World!程序中涉及的知识点

• 注释:提高程序的可读性

• 主函数:int main(void)

• 返回整数值:常用0表示程序正常退出;

• void:表示不含参数;也可以有参数;

• 函数体:{ }

• 语句结束用“;”,不能用中文分号“;”

• 输出函数

• printf( 格式控制字符串, 参数表);

10

Page 11: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

练习2-3:输出一个倒三角图案

* * * *

* * *

* *

*

11

printf( “* * * *\n” );

printf( “ * * *\n” );

printf( “ * *\n” );

printf( “ *\n” );

pintia.cn上进行格式输出练习/考试时,采用“copy-paste”方式,以保证格式正确

Page 12: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

内容

• 在屏幕上显示 Hello World!

• 求华氏温度 100°F 对应的摄氏温度

• 计算分段函数

• 指定次数的循环

• 生成阶乘表

12

Page 13: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

求华氏100°F对应的摄氏温度

5 x ( fahr – 32 )摄氏温度 celsius =

9

13

Page 14: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

程序解析:celsius=5(fahr-32)/9

#include <stdio.h>

int main(void)

{

int celsius, fahr;

fahr = 100;

celsius = 5 * (fahr - 32) / 9;

printf("fahr = %d, celsius = %d\n", fahr, celsius);

return 0;

}14

常量:在程序运行过程中

其值不能改变

变量:在程序运行过程中

其值可以改变

Page 15: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

变量的定义

• 变量定义的一般形式:类型名 变量名表;

例如:int celsius, fahr; 定义整型变量

float x; 定义单精度浮点型变量

double area, length; 定义双精度浮点型变量

• 变量名代表内存中一个存储单元:存储变量的值

• 存储单元的内存大小由类型决定

• int (4 bytes) float(4 bytes) double(8 bytes)

• double比float字节多,精度高,取值范围大

15

基本数据类型见附录p.335

Page 16: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

变量命名规则(1)

• 简洁、顾名思义

• 单词,通用缩写:year,abs(absolute缩写)

• 整数:i, j, k, n 等(小范围内的局部变量)

• 浮点数:x, y, z 等

• min-length && max-information原则

• 避免依赖大小写区分的相似标识符

• 例如:float x, X; /* 不可取 */

16

Page 17: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

变量命名规则(2)

• 变量名一般使用“名词”或“形容词+名词”

• 例如:float value, oldValue, newValue;

• 函数名一般使用“动词”或“动词+名词”(动宾词组)

• Sorting

• 风格保持一致

• ……

17

Page 18: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

变量的定义和使用

#include <stdio.h>

int main(void)

{

int celsius, fahr;

fahr = 100;

celsius = 5 * (fahr - 32) / 9;

printf("fahr = %d, celsius = %d\n", fahr, celsius);

return 0;

}18

• 先定义后使用

• 先赋值后引用

• 函数中变量只能定义一次

• 变量表:一个变量;结束,多个变量,间隔

• 区分大小写

编写程序、运行结果

Page 19: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

算术运算和赋值运算

• 算术运算:celsius = 5*(fahr-32)/9;

• +、-、*、/、%(取模、余数)

• 算术表达式:用算术运算符,将运算对象连接起来的式子。(按照C语言语法规则)

• 数学公式:s(s-a)(s-b)(s-c)

C表达式: s*(s-a)*(s-b)*(s-c)

• 数学公式: 5(fahr-32)/9

C表达式: 5*(fahr-32)/9

19

Page 20: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

算术运算

• 双目运算符两侧操作数的类型要相同

• 不同时,进行强制转换(见6.3节)

• 整数除整数,结果为整数

• 例如:1/2 = 0,9/4 = 2 (无四舍五入)

• 5 * (fahr - 32) / 9 和 5 / 9 * (fahr - 32) 等价吗?

• 运算 % 仅仅适用于整型数据

• 例如: 5%6=5,9%4=1,100%4=0

20

Page 21: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

赋值运算

• 赋值表达式:用 = 将一个变量和一个表达式连接起来的式子

变量=表达式

例如:以下两句都是赋值表达式

fahr = 100;

celsius = 5 * (fahr - 32) / 9;

• 计算赋值运算符右侧表达式的值

• 将结果值赋给左侧变量

21

左边必须是一个变量

Page 22: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

格式化输出函数printf

printf(格式控制字符串, 输出参数1, … ,输出参数n);

例:printf(“Hello World! \n”);

printf(“fahr = %d, celsius = %d\n”, fahr, celsius);

• 用逗号,隔开控制字符串和输出参数

• 控制字符串用双引号“ ”

• 注意不要用中文的全角符号

22

Page 23: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

printf-格式控制字符串

• 普通字符:原样输出printf(“Hello World!\n”); 输出:Hello World!

• 格式控制字符:• %d: 输出参数为int

• %f: 输出参数为float或double

printf("fahr = %d, celsius = %d\n", fahr, celsius);

输出:fahr = 41, celsius = 5

• 更多的…(一边用,一边学)

• 参考:http://c.biancheng.net/cpp/html/33.html

23

Page 24: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

小结:求华氏100°F对应的摄氏温度程序中涉及的知识点• 数据类型

• int, float, double

• 变量的定义和使用

• 输出函数• printf( 格式控制字符串, 参数表);

• 格式

• %d – int

• %f – float

• %lf – double

• \n – 换行符

• ……24

Page 25: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

内容

• 在屏幕上显示 Hello World!

• 求华氏温度 100°F 对应的摄氏温度

• 计算分段函数

• 指定次数的循环

• 生成阶乘表

25

Page 26: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

计算分段函数

问题:分段计算水费

• 输入 x

• 计算函数f(x)

• 设置一个变量y,保存f(x)的值

• 输出函数y的值,并保留2位小数

• 格式控制 %.2f

26

𝑦 = 𝑓 𝑥 =

4

3𝑥 𝑥 ≤ 15

2.5𝑥 − 17.5 𝑥 > 15

Page 27: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

程序解析-求分段函数#include <stdio.h>int main(void){

double x, y;

printf("Enter x (x>=0):\n"); /* 输入提示 */scanf("%lf", &x); /* 输入数据 */if( x <= 15 )

y = 4 * x / 3; else

y = 2.5 * x - 17.5; printf("y = f(%f) = %.2f\n", x, y); return 0;

} 27

演示

f(9.500000)=12.67

f(15.000000)=20.00

f(21.300000)=35.75

测试程序1)输入测试数据,验证结果

2)覆盖每一个分支(情况)

3)执行到每一种情况

4)分块测试(复杂多模块程序)

Page 28: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

关于(分段函数的)测试和调试

• 测试用例:[ 输入数据、相应的预期输出 ]

• 测试用例尽可能多,覆盖各种可能情形

• 各个判断分支

• “边界”情形、“极限”情形的测试

• “==”的判断

• 分母是非常小的数字的情形

• ……

28

Page 29: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

知识要点

• 关系运算:比较大小

• 分支语句: if – else

• 输入函数:scanf

29

Page 30: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

关系运算

x <= 15

比较 x 和 15 的大小关系,结果为真(1)或假(0)

当x值为9.5时, x <= 15的结果是:真(1)

当x值为21时,x <= 15的结果是:假(0)

30

Page 31: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

关系运算

关系运算有:

> 例如 a > b

< 例如 a < b

>= 例如 a >= b

<= 例如 a <= b

== 例如 a == b 注意区分 = 和 ==

!= 例如 a != b

31

Page 32: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

运用关系表达式

• 判断 x 是否为负数

x < 0

• 判断 x 是否为零

x == 0 浮点数为零的判断?

• 判断 x 是否不为零

x != 0

32

Page 33: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

if-else语句

if ( 表达式 )

语句1

else

语句2

if (x <= 15)

y = 4 * x / 3;

else

y = 2.5 * x - 17.5;

33

表达式

语句1 语句2

真 假

Page 34: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

计算二分段函数

34

if (表达式)

语句1

else

语句2

if( x != 0 )

y = 1/x;

else

y = 0;

𝑦 = 𝑓 𝑥 =

1

𝑥𝑥 ≠ 0

0 𝑥 = 0

Page 35: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

格式化输入函数scanf

35

scanf(格式字符串, 输入参数1, … , 输入参数n);

总体上和输出函数printf类似:

printf(格式字符串, 输出参数1, … ,输出参数n);

用双引号括起来表示输入的格式 变量地址

……

变量

……

Page 36: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

scanf-格式控制字符

• int型: %d

• float型: %f

• double型:%lf lf 表示 long float,doublescanf("%lf", &x);

输入的时候,输入x的值即可。例如输入:9.5

注意:运算符 & 作用是取变量地址

• 普通字符:原样输入scanf("x=%lf", &x);

输入的时候,需要输入:x=9.5

注意:尽量不要出现普通字符,用printf输出提示符

36

Page 37: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

常用数学库函数

•库函数

• C语言处理系统提供事先编好的函数,供用户在编程时调用。scanf(), printf(), exp()

• 在相应的系统文件(头文件)中定义一些必需的信息

• #include命令

• 用户调用库函数时,将相应的头文件包含到源程序中。

例如:调用scanf, printf,需要 #include <stdio.h>

调用sqrt,需要 #include <math.h> (附录p.345)

37

Page 38: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

常用数学库函数

• 平方根函数 sqrt(x)

• 绝对值函数 fabs(x)fabs(-3.56) 的值为3.56

• 幂函数 pow(x, n) :xn

pow(1.1, 2) 的值为1.21(即1.12)

• 指数函数 exp(x):ex

exp(2.3) 的值为e2.3

• 以e为底的对数函数log(x):ln x

log(123.45) 的值为4.815836

• 以10为底的对数函数log10(x):log10x

log10(123.45) 的值为2.091491。

38

除了“整数的绝对值” abs()之外,其余函数的参数和返回值均为double

Page 39: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

计算存款的本息

• 输入存款金额 money、存期 year 和年利率 rate,根据公式计算存款到期时的本息合计sum。输出时保留2位小数。

数学公式:sum = money ( 1 + rate)year

C语言公式:sum = money * pow((1 + rate), year)

39

Page 40: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

# include <stdio.h> # include <math.h> int main(void){

int money, year;double rate, sum;

printf("Enter money:"); scanf("%d", &money); printf("Enter year: "); scanf("%d", &year); printf("Enter rate:"); scanf("%lf", &rate);

sum = money * pow((1 + rate), year); printf("sum = %.2f", sum);

return 0;}

40

Page 41: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

调用scanf函数输入多个数据

• scanf("%d%d%lf", &money, &year, &rate);

用户只需输入:1000 3 0.025

输入数据之间用“空格”隔开

• 输入参数的类型、个数和位置要与格式控制说明一一对应• 否则,程序很可能意外崩溃

41

Page 42: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

小结:计算分段函数程序中涉及的知识点• 程序/代码风格:缩入、对齐;

• 关系运算符/关系表达式:< <= > >= == !=

• 结果为逻辑值:1 (TRUE) 0(FALSE);

• “=”赋值运算符、“==”逻辑运算符;

• 浮点数是否为零的判断;

• If-else 分支语句• 程序测试:每一个分支、“边界”情形

• 格式化输入函数: scanf(格式控制, 参数1, … ,参数n)

• 参数:取地址 &n;

• 格式控制字符串中不要有多余的普通字符

• 数学函数:include <math.h> 42

Page 43: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

内容

• 在屏幕上显示 Hello World!

• 求华氏温度 100°F 对应的摄氏温度

• 计算分段函数

• 指定次数的循环

• 生成阶乘表

43

Page 44: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

循环控制结构(for 循环)

for(表达式1;表达式2;表达式3)

循环体语句

44

表达式1只执行一次表达式 2

表达式 1

循环体语句

表达式3

表达式1、2、3之间;

for()语句结尾没有;

循环体语句单一语句复合语句{}缩进

Page 45: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

指定次数的循环程序设计(1)

求 1 + 2 + … + n的值

变量定义int i, n, sum;

变量初值i=1; sum=0;输入 n: scanf("%d",&n)

工作sum = sum + ii ++; 或者 i = i+1;

工作条件i<=n

# include <stdio.h>

int main (void)

{

int i, n, sum;

sum = 0;

printf("input n\n");

scanf("%d", &n);

for ( i = 1; i <= n; i++ )

sum = sum + i;

printf ("sum = %d\n", sum);

return 0;

} 45

Page 46: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

for(表达式1;表达式2;表达式3)循环体语句

表达式1:给循环控制变量赋初值,指定循环的起点。

i = 1 初始化,执行一次

表达式2:给出循环的条件,决定循环的继续或结束。

i <= n 条件判断

表达式3:设置循环的步长,改变循环控制变量的值,从而可改变表达式2的真假性。

i ++ 更新循环控制变量

循环体语句:被反复执行的语句。

sum = sum + i; 主要任务

46

Page 47: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

指定次数的循环程序设计(2)

求 1 - 1/3 + 1/5 - 1/7 + … 的前n项和

变量定义

int i, n, flag;

double sum, item

变量输入和初值输入 n: scanf("%d",&n)

sum=0; i=1; flag=1;

工作

item = flag*1.0/(2*i-1)

sum = sum + item

i ++; 或者 i = i+1;

flag = - flag

工作条件

i<=n 47

sum = 0;flag = 1;for( i=1; i<=n; i++ ) {

item = flag*1.0/(2*i-1);sum = sum + item;flag = - flag;

}

思考:顺序求和?逆序求和?

Page 48: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

指定次数的循环程序设计(3)

48

求 n! = 1*2*3**n

变量定义int n ,i;

double product

变量输入与初值输入 n: scanf("%d",&n)

i=1; product=1;

工作product = product * i;

i ++; 或者 i = i+1;

工作条件i<=n

product = 1;for( i=1; i<=n; i++ )

product = product*i;

思考:如果product为整型变量?

Page 49: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

小结:指定次数的循环程序中涉及的知识点

• 循环控制结构:• for(表达式1;表达式2;表达式3) 后面不要加“;”

• 表达式1:只执行一次

• 循环体语句:复合语句{ }、缩入

• 顺序 v.s. 逆序循环

• 循环变量:register int i; 比 int i; 效率高

49

Page 50: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

内容

• 在屏幕上显示 Hello World!

• 求华氏温度 100°F 对应的摄氏温度

• 计算分段函数

• 指定次数的循环

• 生成阶乘表

50

Page 51: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

生成阶乘表

51

输入一个正整数n,输出0! 到 n! 的值

变量定义int n ,i;

变量输入和初值输入 n: scanf("%d",&n);

i=0;

工作计算i的阶乘;

输出i!值;

i ++;

工作条件i<=n

定义函数:double fact(int i)计算i的阶乘

Page 52: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

生成阶乘表

#include <stdio.h>

double fact(int n);

int main(void)

{

int i, n;

printf(“Enter n:”);

scanf(“%d”,&n);

for( i=0; i<=n; i++ )

printf(“%d!=%.0f\n”, i, fact(i));

return 0;

}

52

double fact(int n){

int i; double product = 1; for ( i = 1; i <= n; i++ )

product = product * i;return product;

}

Page 53: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

结构化程序设计思想

• 结构化程序设计(Structured Programming)

• 程序设计技术

• C语言是结构化程序设计语言

• 强调程序设计的风格和程序结构的规范化,提倡清晰的结构

• 基本思路: 自顶向下,复杂问题划分若干更为简单的阶段

• 分而治之(divide-and-conquer)

53

Page 54: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

内容

• 在屏幕上显示 Hello World!

• 求华氏温度 100°F 对应的摄氏温度

• 计算分段函数

• 指定次数的循环

• 生成阶乘表

54

Page 55: 第二章 用C语言编写程序 - Zhejiang University UsingC.pdf•什么是程序?程序设计语言包含哪些功能? •程序设计语言在语法上包含哪些内容?

本章要点

• 输入输出函数printf, scanf

• 变量定义、赋值和使用

• 算术运算、关系运算

• 数学函数:#include <math.h>

• 分支结构:if-else

• 循环结构:for 语句:

• 结构化程序设计、程序的测试和调试

55