Chap 2 用C语言编写程序 2.1 在屏幕上显示 Hello World! 2.2 求华氏温度 100°F 对应的摄氏温度

Slides:



Advertisements
Similar presentations
第二章 基本数据类型及运算 数据类型 常量与变量 不同类型数据间的转换 运算符和表达式.
Advertisements

補充: Input from a text file
C语言实验 第一课 标题:学号+姓名.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
第三章 C语言基础 学习目标: 熟练掌握:C语言的基本数据类型、运算符及表达式 掌握:常见的输入、输出函数使用方法;
第 四 章 循环结构 while语句 do {} while 语句 break和continue语句
EBNF 请用扩展的 BNF 描述 C语言里语句的结构; 请用扩展的 BNF 描述 C++语言里类声明的结构;
Chap 10 函数与程序结构 10.1 函数的组织 10.2 递归函数 10.3 宏定义 10.4 编译预处理.
第3章 最简单的C程序设计 3.1 顺序程序设计举例 3.2 数据的表现形式及其运算 3.3 C语句 3.4 数据的输入输出.
If … else 選擇結構 P27.
Chap 2 用C语言编写程序 2.1 在屏幕上显示 Hello World! 2.2 求华氏温度 100°F 对应的摄氏温度
第3章 C语言的基本语句 和程序结构设计.
Chap 8 指针 8.1 寻找保险箱密码 8.2 角色互换 8.3 冒泡排序 8.4 电码加密 8.5 任意个整数求和*
走进编程 程序的顺序结构(二).
Introduction to the C Programming Language
作弊是否很有诱惑性? 上堂课已经讲了 作业不一定在两个小时里都能完成 答疑没有一个人? 作弊是有记录的 心理系很多同学集体作弊,让人震惊
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
Chap 5 函数 5.1 计算圆柱体积 5.2 使用函数编写程序 5.3 变量与函数.
Chap 3 分支结构 3.1 简单的猜数游戏 3.2 四则运算 3.3 查询自动售货机中商品的价格.
1. 說明一個一維整數陣列passwd,下標範圍0至49 2. 在屏幕顯示 "Enter password"
C语言 程序设计基础与试验 刘新国、2012年秋.
Chap 3 分支结构 3.1 统计输入的一批字符中各类字符的数量 3.2 查询自动售货机中商品的价格 3.3 分支结构程序设计.
第三单元 数据的输入、赋值处理与输出 从现在开始,将详细讲述C语言的方方面面。第一章中的所有疑惑,都将一一消灭。
1.2 MATLAB变量表达式与数据格式 MATLAB变量与表达式 MATLAB的数据显示格式
C语言程序设计基础 刘新国.
第五章 循环结构的C程序设计 5.1 while循环语句 5.2 do-while循环语句 5.3 for循环语句 5.4 多重循环
第二章 Java语言基础.
程序设计基础 谭浩强 著 清华大学出版社.
C语言大学实用教程 第三章 简单的C程序设计 西南财经大学经济信息工程学院 刘家芬
第七章 函数及变量存贮类型 7.1 函数基础与C程序结构 7.2 函数的定义和声明 7.3 函数的调用 7.4 函数的嵌套与递归
第4章 顺序程序设计.
第0章作业: 教材P12-练习与实践 1.写出用符号’*’输出描绘汉字”大”的流程图。
第一章 函数与极限.
第4章 PHP流程控制语句.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
1.3 C语言的语句和关键字 一、C语言的语句 与其它高级语言一样,C语言也是利用函数体中的可执行 语句,向计算机系统发出操作命令。按照语句功能或构成的不 同,可将C语言的语句分为五类。 goto, return.
C语言程序设计 主讲教师:陆幼利.
Introduction to the C Programming Language
姚金宇 MIT SCHEME 使用说明 姚金宇
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
Chap 5 函数 5.1 计算圆柱体积 5.2 使用函数编写程序 5.3 变量与函数.
Chap 5 函数 5.1 计算圆柱体积 5.2 数字金字塔 5.3 复数运算.
本节内容 字符与字符串 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
信号量(Semaphore).
第4章 Excel电子表格制作软件 4.4 函数(一).
第九节 赋值运算符和赋值表达式.
3.16 枚举算法及其程序实现 ——数组的作用.
第二章 类型、对象、运算符和表达式.
Introduction to the C Programming Language
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
College of Computer Science & Technology
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
ASP.NET实用教程 清华大学出版社 第4章 C#编程语言 教学目标 教学重点 教学过程 2019年5月5日.
C程序设计 实验二 数据类型、运算符和表达式 第6讲
第二章 Java基本语法 讲师:复凡.
Introduction to the C Programming Language
程序设计基础A(C语言) 第一章 C语言概述 主讲教师: 许 康
Chap 6 数据类型和表达式 6.1 数据的存储和基本数据类型 6.2 常量和变量 6.3 数据的输入和输出 6.4 类型转换
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
Chap 7 数 组 7.1 排序问题 7.2 找出矩阵中最大值所在的位置 7.3 进制转换.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
基本知识 数据类型、变量、常量、运算符.
C/C++基礎程式設計班 C語言入門、變數、基本處理與輸入輸出 講師:林業峻 CSIE, NTU 3/7, 2015.
鸡兔同笼(续) ——选择结构.
Chap 10 函数与程序结构 10.1 圆形体积计算器 10.2 汉诺塔问题 10.3 长度单位转换 10.4 大程序构成.
顺序结构程序设计 ——关于“字符串”和数值.
C语言基础学习 从外行到入门.
Presentation transcript:

Chap 2 用C语言编写程序 2.1 在屏幕上显示 Hello World! 2.2 求华氏温度 100°F 对应的摄氏温度 2.3 计算分段函数 2.4 输出华氏—摄氏温度转换表 2.5 生成乘方表与阶乘表

本章要点 怎样编写程序,在屏幕上显示一些信息? 怎样编写程序,实现简单的数据处理,例如将华氏温度转换为摄氏温度? 怎样使用 if 语句计算分段函数? 怎样用 for 语句求 1+2+……+100? 如何定义和调用函数生成一张乘方表?

2.1 在屏幕上显示Hello World! 例2-1 在屏幕上显示一个短句: Hello World!

2.1 在屏幕上显示Hello World! /* 显示“Hello World!” */ 注释文本 # include <stdio.h> int main(void) 主函数 { printf(“Hello World! \n”); 语句结束 return 0; } 输出函数 换行符 1.任何程序都有主函数 2.程序由若干语句组成 3.语句由;结束

2.1 在屏幕上显示一些信息 例2-2 在屏幕上显示: Programming is fun! 2.1 在屏幕上显示一些信息 例2-2 在屏幕上显示: Programming is fun! And Programming in C is even more fun! # include <stdio.h> 编译预处理命令 int main(void) { printf("Programming is fun! \n"); printf("And Programming in C is even more fun! \n"); return 0; }

2.2 求华氏温度 100°F 对应的摄氏温度 摄氏温度 C=(5/9)(F-32) 2.2.1 程序解析 2.2.2 常量、变量和数据类型 2.2.1 程序解析 2.2.2 常量、变量和数据类型 2.2.3 算术运算和赋值运算 2.2.4 格式化输出函数printf

2.2.1 程序解析 输出:fahr =100, celsius = 37 例2-3 求华氏温度 100°F 对应的摄氏温度。 2.2.1 程序解析 例2-3 求华氏温度 100°F 对应的摄氏温度。 摄氏温度 C=5*(F-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; } 输出:fahr =100, celsius = 37

2.2.2 常量、变量和数据类型 int celsius, fahr; celsius = 5 * (fahr - 32) / 9; 数据 2.2.2 常量、变量和数据类型 int celsius, fahr; celsius = 5 * (fahr - 32) / 9; 数据 常量:在程序运行过程中,其值不能被改变 变量:在程序运行过程中,其值可以被改变 数据类型 常量:5 和 9是整型常量(整数) 变量:在定义时指定

变量的定义 变量定义的一般形式: 例如: 变量名:小写字母;见名知义 类型名 变量名表; int celsius, fahr; 定义整型变量 类型名 变量名表; 例如: int celsius, fahr; 定义整型变量 float x; 定义单精度浮点型变量 double area, length; 定义双精度浮点型变量 double型数据比float精度高,取值范围大

变量的定义 定义变量时要指定变量名和数据类型 变量名代表内存中的一个存储单元 该存储单元的大小由变量的数据类型决定 类型名 变量名表; int celsius, fahr; float x; double area, length; 变量名代表内存中的一个存储单元 存放该变量的值 该存储单元的大小由变量的数据类型决定 C语言中的变量代表保存数据的存储单元 数学中的变量代表未知数 x = x+1

变量的定义与使用 变量必须先定义,后使用。 #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; } 应该先赋值,后引用 一个变量名只能定义一次, 变量一般都定义在程序的开头, 不能定义在程序的中间或后面

2.2.3 算术运算和赋值运算 1、算术运算 fahr = 100; celsius = 5 * (fahr - 32) / 9; 2.2.3 算术运算和赋值运算 fahr = 100; celsius = 5 * (fahr - 32) / 9; 1、算术运算 双目算术运算符:+ - * / % 算术表达式:用算术运算符将运算对象连接起来的符合C语言语法规则的式子 数学式:5*(F-32) /9 C表达式:5 * (fahr - 32) / 9 或者: 数学式:s(s-a)(s-b)(s-c) C表达式:

算术运算 注意 / 整数除整数,得整数 % 针对整型数据 双目运算符两侧操作数的类型要相同 双目算术运算符:+ - * / % 双目算术运算符:+ - * / % 算术表达式:用算术运算符将运算对象连接起来的符合C语言语法规则的式子 注意 / 整数除整数,得整数 如:1/2 = 0,9/4 = 2 ?5 * (fahr - 32) / 9 和 5 / 9 * (fahr - 32) 等价吗 % 针对整型数据 如: 5%6=5,9%4=1,100%4=0 双目运算符两侧操作数的类型要相同

赋值运算 赋值运算符 = 赋值表达式:用 = 将一个变量和一个表达式连接起来的式子 例如: 变量 = 表达式 fahr = 100; 赋值运算符 = 赋值表达式:用 = 将一个变量和一个表达式连接起来的式子 变量 = 表达式 例如: fahr = 100; celsius = 5 * (fahr - 32) / 9; 计算赋值运算符右侧表达式的值 将赋值运算符右侧表达式的值赋给左侧的变量 =的左边必须是一个变量

2.2.4 格式化输出函数printf 要输出的数据 用双引号括起来,表示输出的格式 数据输出:格式化输出函数 printf #include <stdio.h> printf("Hello World! \n"); printf("fahr = %d, celsius = %d\n", fahr, celsius); printf(格式控制字符串, 输出参数1, … , 输出参数n); 要输出的数据 用双引号括起来,表示输出的格式

printf-格式控制字符串 格式控制字符串: printf("Hello World! \n"); printf("fahr = %d, celsius = %d\n", fahr, celsius); printf("Hi\n", fahr); 格式控制字符串: 普通字符:原样输出 格式控制说明:按指定的格式输出数据,%… 与数据类型有关 int型 :%d float double型:%f 输出:fahr =100, celsius = 37

2.3 计算分段函数 2.3.1 程序解析 2.3.2 关系运算 2.3.3 if-else语句 2.3.4 格式化输入函数scanf 2.3.1 程序解析 2.3.2 关系运算 2.3.3 if-else语句 2.3.4 格式化输入函数scanf 2.3.5 常用数学库函数

2.3.1 程序解析 例2-4 分段计算水费 输入用户的月用水量x(吨),计算并输出该用户应支付的水费y(元)(保留2位小数) 2.3.1 程序解析 例2-4 分段计算水费 输入用户的月用水量x(吨),计算并输出该用户应支付的水费y(元)(保留2位小数) 要解决的问题: 输入 计算分段函数 输出,并保留2位小数

2.3.1 程序解析-求分段函数 #include <stdio.h> int main(void) { 2.3.1 程序解析-求分段函数 #include <stdio.h> int main(void) { double x, y; printf("Enter x (x>=0):\n"); /* 输入提示 */ scanf("%lf", &x); /* 调用scanf函数输入数据 */ if(x <= 15) /* if – else语句 */ y = 4 * x / 3; else y = 2.5 * x - 10.5; printf("f(%f) = %.2f\n", x, y); return 0; } 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

2.3.2 关系运算 比较 x 和 15 的大小 比较的结果:真 假 关系运算 — 比较运算,比较两个操作数 关系运算符 2.3.2 关系运算 x <= 15 比较 x 和 15 的大小 比较的结果:真 假 当 x 取值9.5时, x <= 15的结果是:? 当 x 取值21.3时, x <= 15的结果是:? 关系运算 — 比较运算,比较两个操作数 关系运算符 x < y x <= y x == y x > y x >= y x != y 关系表达式:用关系运算符将2个表达式连接起来的式子。 如:x <= 1 区分= 和==

运用关系表达式 表示比较的数学式 C关系表达式 用关系表达式描述条件 x≤10 x <= 10 x≥10 x >= 10

2.3.3 if - else语句 if(x <= 15) if (表达式) y = 4 * x / 3; 语句1 else else 语句2 语句1 表达式 语句2 真 假

计算二分段函数 if(x != 0) y = 1/x; else y = 0; if (表达式) 语句1 else 语句2

源程序 #include <stdio.h> int main(void) { double x, y; printf("Enter x:\n"); scanf("%lf", &x); if(x != 0) y = 1/x; else y = 0; printf("f(%.2f) = %.1f\n", x, y); return 0; } #include <stdio.h> /*例2-4 */ 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 - 10.5; printf("f(%f) = %.2f\n", x, y); return 0; }

运行结果 #include <stdio.h> int main(void) input x: { 2.5 double x, y; printf("Enter x:\n"); scanf("%lf", &x); if(x != 0) y = 1/x; else y = 0; printf("f(%.2f) = %.1f\n", x, y); return 0; } input x: 2.5 f(2.50)=0.4 input x: f(0.00)=0.0

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

2.3.4 格式化输入函数scanf 变量地址 用双引号括起来,表示输入的格式 数据输入:格式化输入函数 scanf #include <stdio.h> scanf("%lf", &x); scanf(格式控制字符串, 输入参数1, … , 输入参数n); 变量地址 用双引号括起来,表示输入的格式

scanf-格式控制字符串 格式控制字符串: 格式控制说明: 按指定的格式输入数据, %… 普通字符:原样输入 例如: 与数据类型有关 int型 :%d float型:%f double型:%lf 普通字符:原样输入 例如: scanf("%lf", &x); 尽量不要出现普通字符 scanf("x=%lf", &x); 输入: 9.5 输入: x=9.5

改进例2-3的程序 例2-3 求华氏温度 100°F 对应的摄氏温度。 printf(“Enter fahr: \n"); 摄氏温度 C=5*(F-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; } Enter fahr: 100 fahr =100, celsius = 37 printf(“Enter fahr: \n"); scanf("%d", &fahr);

2.3.5 常用数学库函数 库函数 #include命令 例如 2.3.5 常用数学库函数 库函数 C语言处理系统提供事先编好的函数,供用户在编程时调用。scanf(), printf(), exp() 在相应的系统文件(头文件)中定义一些必需的信息。 #include命令 用户调用库函数时,将相应的头文件包含到源程序中。 例如 调用scanf, printf,需要 #include <stdio.h> 调用sqrt,需要 #include <math.h>

常用数学库函数 平方根函数 sqrt(x) 绝对值函数 fabs(x) 幂函数 pow(x, n) :xn 指数函数 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。

例2-5 计算存款的本息 输入存款金额 money、存期 year 和年利率 rate,根据公式计算存款到期时的本息合计sum(税前),输出时保留2位小数。 sum = money ( 1 + rate)year sum = money * pow((1 + rate), year)

例2-5 程序 # 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; } 例2-5 程序 Enter money: 1000 Enter year: 3 Enter rate: 0.025 sum = 1076.89 scanf("%d%d%lf", &money, &year, &rate);

调用scanf函数输入多个数据 scanf需要多个输入参数和多个格式控制说明 程序运行时,输入的多个数据之间必须有间隔。 scanf("%d%d%lf", &money, &year, &rate); 输入:1000 3 0.025 scanf需要多个输入参数和多个格式控制说明 输入参数的类型、个数和位置要与格式控制说明一一对应 ? scanf("%d%lf%d ", &money, &year, &rate); 程序运行时,输入的多个数据之间必须有间隔。 输入参数、格式控制说明、输入数据 scanf("%d%lf%d ", &money, &rate , &year); 如何输入?

2.4 输出华氏-摄氏温度转换表 2.4.1 程序解析 2.4.2 for语句 2.4.3 指定次数的循环程序设计

2.4.1 程序解析 例2-6输入2个整数lower和 upper,输出一张华氏-摄氏温度转换表,华氏温度的取值范围是[lower, upper],每次增加1°F。 fahr celsius 30 -1.1 31 -0.6 32 0.0 33 0.6 34 1.1 35 1.7

2.4.1 程序解析-温度转换表 fahr = fahr+1 #include <stdio.h> int main(void) { int fahr, lower, upper; double celsius; printf("Enter lower:"); scanf("%d", &lower); printf("Enter upper:"); scanf("%d", &upper); printf("fahr celsius\n"); // 温度重复转换:华氏温度从lower开始,到upper结束,每次增加1°F for (fahr = lower; fahr <= upper; fahr ++) { celsius = (5.0 / 9.0) * (fahr - 32); printf("%d %6.1f\n", fahr, celsius); } return 0; Enter lower: 30 Enter upper: 35 fahr celsius 30 -1.1 31 -0.6 32 0.0 33 0.6 34 1.1 35 1.7 fahr = fahr+1

例2-6中for语句的流程 for (fahr = lower; fahr <= upper; fahr ++) { celsius = (5.0 / 9.0) * (fahr - 32); printf("%d %6.1f\n", fahr, celsius); } fahr = fahr+2 输出? Enter lower: 30 Enter upper: 35 fahr celsius 30 -1.1 31 -0.6 32 0.0 33 0.6 34 1.1 35 1.7

2.4.2 for语句-循环语句 for(表达式1;表达式2;表达式3) 循环体语句 实现C语句的重复执行 3个表达式、循环体语句 !书写顺序和执行顺序不同 !表达式1只执行一次

for语句中的循环变量 循环(控制)变量:for语句中,通过改变或判断某个变量的值来控制循环的执行 for (fahr = lower; fahr <= upper; fahr ++) { celsius = (5.0 / 9.0) * (fahr - 32.0); printf("%d %6.1f\n", fahr, celsius); } 赋初值 判断其值 改变其值

for语句的说明 for (fahr = lower; fahr <= upper; fahr ++) { } celsius = (5.0 / 9.0) * (fahr - 32.0); printf("%d %6.1f\n", fahr, celsius); } 表达式1:给循环变量赋初值,指定循环的起点。 fahr = lower 表达式2:给出循环的条件,判断循环是否达到终点? fahr <= upper 表达式3:设置循环的步长,改变循环变量的值,从而可改变表达式2的真假性。 fahr++ 循环体语句:被反复执行的语句,一条语句。

复合语句{ }和空语句 ; for (fahr = lower; fahr <= upper; fahr ++) { } 复合语句{ }和空语句 ; for (fahr = lower; fahr <= upper; fahr ++) { celsius = (5.0 / 9.0) * (fahr - 32.0); printf("%d %6.1f\n", fahr, celsius); } for (fahr = lower ; fahr <= upper; fahr = fahr + 1) celsius = (5.0 / 9.0) * (fahr - 32.0); printf("%d %6.1f\n", fahr, celsius); for (fahr = lower ; fahr <= upper; fahr = fahr + 1); celsius = (5.0 / 9.0) * (fahr - 32.0); printf("%d %6.1f\n", fahr, celsius); !不要在for语句中随意加分号

2.4.3 指定次数的循环程序设计 求 1+2+……+100 抽取具有共性的算式:sum = sum + i for(i=1; i<=100; i++) sum =sum+i;

源程序 求 1+2+……+100 sum=5050 /* 计算1 + 2 + 3 + …… + 100 */ /* 计算1 + 2 + 3 + …… + 100 */ #include <stdio.h> int main(void) { int i, sum; sum = 0; /* 置累加和sum的初值为0 */ for ( i = 1; i <= 100; i++ ) /* 循环重复100次 */ sum = sum + i; /* 反复累加 */ printf( “sum = %d\n”, sum); /* 输出累加和 */ return 0; } for(i=1; i<=100; i++){ sum=0; sum=sum+i; }

求 1+1/2+1/3+……+ 1/100 #include <stdio.h> int main(void) { int i, sum; sum = 0; for ( i = 1; i <= 100; i++ ) sum = sum + i; printf( “sum = %d\n”, sum); return 0; } int i; double sum; for(i=1; i<=100; i++) sum=sum+1.0/i; printf( “sum = %f\n”, sum);

指定次数的循环程序设计 一般包含四个部分: 初始化:指定循环起点 条件控制: 工作:指重复执行的语句(循环体)。 给循环变量赋初值,如i = 1; 进入循环之前,设置相关变量的初值,如sum = 0。 条件控制: 只要i <= 100,循环就继续 工作:指重复执行的语句(循环体)。 一条语句,可以是复合语句或空语句。如sum = sum + i。 改变循环变量:在每次循环中改变循环变量的值 如 i++,以改变循环条件的真假。一旦i > 100,循环结束。

例2-7 求 1+2+3+……+n 输入一个正整数n,求前n项和,即循环n次 #include <stdio.h> int main(void) { int i, sum; sum = 0; for ( i = 1; i <= 100; i++ ) sum = sum + i; printf( “sum = %d\n”, sum); return 0; } printf(“Enter n:"); scanf("%d", &n); for(i=1; i<=n; i++) sum=sum+i; Enter n: 100 Sum = 5050

求1+1/2+1/3+……+ 1/n #include <stdio.h> int main(void) { int i, sum; printf(“Enter n: "); scanf("%d", &n); sum = 0; for ( i = 1; i <= n; i++ ) sum = sum + i; printf( “sum = %d\n”, sum); return 0; } #include <stdio.h> int main(void) { int i; double sum; printf(“Enter n: "); scanf("%d", &n); sum = 0; for ( i = 1; i <= n; i++ ) sum = sum + 1.0/i; printf( “sum = %f\n”, sum); return 0; }

求 1+1/3+1/5+… 的前n项和 求前n项和,即循环n次,每次累加1项。 for (i = 1; i <= n ; i++) sum = sum + item (第i项) item = 1.0 / (2 * i - 1)

源程序 求 1+1/3+1/5+… #include <stdio.h> int main(void) { int i, n; double item, sum; printf(“Enter n: "); scanf ("%d", &n); sum = 0 ; for ( i = 1; i <= n; i++ ) { item = 1.0 / (2 * i - 1); /* 计算第i项的值 */ sum = sum + item ; /* 累加第i项的值 */ } printf ( "sum = %f\n", sum); return 0;

例2-8 求 1-1/3+1/5-… 的前n项和 求前n项和,即循环n次,每次累加1项。 for (i = 1; i <= n ; i++) sum = sum + item (第i项) item = flag * 1.0 / denominator denominator = denominator + 2 flag = -flag item = flag*1.0/(2 * i - 1)

例2-8 源程序 #include <stdio.h> int main(void) { int denominator, flag, i, n; double item, sum; printf(“Enter n: "); scanf ("%d", &n); flag=1; denominator =1; sum = 0 ; for ( i = 1; i <= n; i++ ) { item = flag * 1.0/ denominator; /* 计算第i项的值 */ sum = sum + item ; /* 累加第i项的值 */ flag = -flag; /* 准备下一次循环 */ denominator = denominator +2; } printf ( "sum = %f\n", sum); return 0; 例2-8 源程序

例2-9 求n! n! = 1*2*…*n for (i = 1; i <= n ; i++) product = ? product = product * item (第i项) item=i product = ?

例2-9 源程序 #include <stdio.h> int main(void) { int i, n; double product; printf("input n: \n"); scanf ("%d", &n) ; product=1; /* 置阶乘product的初值为1 */ for ( i = 1; i <= n; i++ ) /* 循环重复n次,计算n! */ product = product * i ; printf ( "product = %.0f\n", product ); return 0; }

求 xn 输入实数x和正整数n, 计算xn = x * x * … * x for (i = 1; i <= n ; i++) power = power * item (第i项) item=?

源程序 求 xn #include <stdio.h> int main(void) { int i, n; double x, power ; printf(“Enter x, n: \n"); scanf ("%lf%d", &x, &n) ; power = 1; /* 置power的初值为1 */ for ( i = 1; i <= n; i++ ) /* 循环重复n次,计算x的n次幂 */ power = power * x; printf( "%0.f\n", power); }

2.5 生成乘方表和阶乘表

例2-10 生成乘方表 输入一个正整数n,生成一张2的乘方表,输出20到2n的值,可以调用幂函数计算2的乘方。 for (i = 0; i <= n ; i++){ power = pow(2, i); /*调用幂函数pow(2,i)计算2的i次方*/ 输出power的值; }

源程序:生成乘方表 Enter n: 4 #include <stdio.h> pow(2,0)= 1 #include <math.h> int main(void) { int i, n; double power; printf("Enter n:"); scanf("%d", &n); for (i = 0; i <= n ; i++){ power = pow(2, i); /* 调用幂函数pow(2,i)计算2的i次方 */ printf("pow(2,%d)= %.0f\n", i, power); } return 0;

例2-11 生成阶乘表 输入一个正整数n,生成一张阶乘表,输出0!到n!的值。要求定义和调用函数fact(n)计算n!,函数类型是double。 for (i = 0; i <= n ; i++){ product = fact(i); /* 调用自定义函数fact(i)计算i! */ 输出product的值; } for (i = 0; i <= n ; i++){ power = pow(2, i); /*调用幂函数pow(2,i)计算2的i次方*/ 输出power的值; }

源程序:生成阶乘表 #include <stdio.h> double fact(int n); /* 自定义函数的声明 */ Enter n: 3 0!=1 1!=1 2!=2 3!=6 源程序:生成阶乘表 #include <stdio.h> double fact(int n); /* 自定义函数的声明 */ int main(void) { int i, n; double result; printf("Enter n:"); scanf("%d", &n); for (i = 0; i <= n ; i++){ result = fact(i); /* 调用自定义函数fact(i)计算i! */ printf("%d!=%.0f\n", i, result); } return 0; double fact(int n) /* 函数首部 */ { int i; double product; product = 1; for (i = 1; i <= n; i++) product = product * i; return product; /* 将结果回送主函数 */ }

函数的概念 C语言中有两种类型函数 函数可以做到一次定义、多次调用 使用自定义函数的程序框架 标准库函数 自定义函数 double fact(int n); /* 声明自定义函数,以分号结束 */ int main(void) { …… result = fact(i); /* 调用自定义函数fact(i)计算i! */ …… } /* 定义求 n! 的函数 */