计算机程序设计基础
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
安徽大学大学计算机教学部 16
计 算 机 程 序 设 计 基 础
条件分支嵌套示例
• 求方程 ax2 + bx + c = 0 的根
#include <stdio.h> #include <math.h> // 由于用到平方根函数,要用此头文件 int main() { float a, b, c, x1, x2, p, q, m; // 定义实型变量 printf(“Enter 3 coefficients: “) ; scanf(“%f,%f,%f“, &a, &b, &c); // 从键盘读入方程的三个系数 if( a == 0.0 && b == 0 && c == 0 ) // 分支1:三个系数全为0 printf(“any value\n“); else if( a == 0 && b != 0 ) // 分支2:系数a为0,解一元一次方程 printf(“x1 = x2 = %f\n", – c / b); else // 分支3:解一元二次方程的两个根 { m = b * b – 4.0 * a * c; <
#include <stdio.h> A int main() 真 { 入口 出口 条件 int abs; 假 printf(“Enter integer: ”); 单分支结构 scanf(“%d”, &abs); if(abs < 0) abs = –abs; printf(“Original integer: %d, absolute value: %d\n”, n, abs); return 0; }
安徽大学大学计算机教学部 4
计 算 机 程 序 设 计 基 础
3.2 顺序结构
• 顺序结构的含义
– 由一组顺序执行的处理块组成,每个处理块可能包含一 条或一组语句,完成一项任务 – 顺序程序结构的语句执行的步骤是一步一步顺序往下执 行,程序中没有任何转移。 – 简单的顺序结构程序是由一组顺序执行的语句组成,而 复杂的顺序结构可以由一组顺序执行的语句块组成。 – 顺序结构是最基本的算法结构
安徽大学大学计算机教学部
10
计 算 机 程• 输入三个整数,分别存放到变量x、y、z中,要求对三 序 个变量的值按从大到小的顺序排序存放,然后输出。 设 #include <stdio.h> 计 void main() 基 { int x,y,z,t; 础 printf("输入三个整数:"); scanf("%d%d%d",&x,&y,&z); if (x<y) {t=x; x=y; y=t;} /*交换x,y的值*/ if(x<z) {t=z; z=x; x=t;} /*交换x,z的值*/ if(y<z) {t=y; y=z; z=t;} /*交换z,y的值*/ printf("从大到小排序为:%d %d %d\n",x,y,z); }
• 语法规定:else与离它最近的if配对,因此为避免二义性,嵌套语句要 用{ }括起来 • 嵌套的条件语句可以实现复杂的逻辑判断 • 多重嵌套要缩格书写,这种书写风格还有利于凸显程序的结构,增加 可读性,但不会改变程序的结构。
15
安徽大学大学计算机教学部
计 算 机 程 序 设 计 基 础
if-else if-else 示例
安徽大学大学计算机教学部 12
计 算 机 程 序 设 计 基 础
if-else if-else 语句
• 语句格式
– if(表达式1) 语句1 else if(表达式2) 语句2 < else 语句n
入口 假 表达式 2 真 语句 1 语句 2 假 复杂分支结构
表达式 1 真
...
假
语句 n 出口
安徽大学大学计算机教学部
计 算 机 程 序 设 计 基 础
Email: huy@ahu.edu.cn Tel: 5107254
计算机程序设计基础
安徽大学大学计算机教学部 1
计 算 机 程 序 设 计 基 础
第三章 程序控制结构
• 学习目标
– 了解结构化程序设计的一般概念 – 熟悉顺序结构、分支结构与循环结构等三种程序 流程控制结构
真 条件 假 分支结构
A 出口 B
• 是对某一个处理块反复执行的控 制结构,此处的处理块称为循环 体。循环体执行多少次是由一次 控制循环体的条件所决定。
安徽大学大学计算机教学部
A 入口 循环结构Hale Waihona Puke Baidu
真 条件 出口 假
3
计 算 机 程 序 设 计 基 础
3.1 C 语言结构化程序设计基础
• 程序的结构化
安徽大学大学计算机教学部 2
计 算 机 程 序 设 计 基 础
基本的控制结构
• 由一组顺序执行的处理块组成, 入口 每个处理块包含一条或一组语句, 完成一项任务。任何一个算法都 离不开顺序结构。
A 顺序结构 B 出口
• 根据对某一条件判断的结果,选 择程序的走向。基本的分支结构 是二分支结构。
入口
• 如果仅仅用于确定某条语句是否执行,else分支可以省略
• 如果测试某表达式是否为0,if(exp !=0)可以简写为if(exp), 而if(exp ==0)可以简写为if(!exp)。
安徽大学大学计算机教学部
9
计 算 机 程 序 设 计 基 础
if-else 语句示例一
• 输入一个整数,输出其绝对值
– 结构化基本思想:自顶向下、逐步求精的设计方法和单 入口、单出口的结构控制。 – 三种基本结构构造的算法称为结构化算法。(顺序、分支、 循环) – 控制结构可以嵌套,以构成更复杂的控制结构 – 每个控制结构都只有一个入口和一个出口,不使用goto语 句。它是一种封装机制。 – 结构化程序设计过程:首先对任务进行功能分解,然后 使用结构化程序设计思想逐一解决各个子问题,最后构 造原始问题的解 – 结构化程序设计是编程人员必须掌握的科学的、规范化 的编程方法。 – 好处:逻辑性强,可读性好,维护方便
安徽大学大学计算机教学部 6
计 算 机 程 序 设 计 基 础
顺序结构程序示例
• 分别输入两个复数的实部与虚部,计算两个复数的 和、差、积、商并输出结果
#include <stdio.h> int main() 实际需要输入4个实数 { float a, b, c, d, real, imaginary; printf(“Input reals and imaginaries of two complexes\n”); scanf(“%f,%f,%f,%f”, &a, &b, &c, &d); printf(“Sum: %f + %fi\n”, a + c, b + d); printf(“Difference: %f + %fi\n”, a – c, b – d); real = a * c – b * d; imaginary = a * d + b * c; printf(“Product: %f + %fi\n”, real, imaginary); real = (a*c + b*d) / (c*c + d*d); imaginary = (b*c – a*d) / (c*c + d*d); printf(“Quotient: %f + %fi\n”, real, imaginary); return 0; }
入口 A 顺序结构
安徽大学大学计算机教学部 5
B
出口
计 算 机 程 序 设 计 基 础
顺序结构程序示例
• 求圆的面积、周长和圆柱的面积。
#include <stdio.h> #define PI 3.1415926 //定义符号常量PI int main() { double r, h, l, s, v; 实际需要输入4个实数 printf("请输入圆半径 r = ") ; scanf("%f", &r ); //输入圆半径 printf("请输入圆柱高 h = ") ; scanf("%f", &h ); //输入圆柱高 l = 2* PI * r ; s = PI * r * r ; v = PI * r * r * h ; printf("圆周长 l = %6.2f\n", l ); printf("圆面积 s = %6.2f\n", s ); printf("圆柱体积 v = %6.2f\n", v ); }
– 掌握 C 语言实现分支结构的 if 语句与 switch 语 句,能熟练应用 if 语句与 switch 语句编写程序
– 掌握 C 语言实现循环结构的 while 语句、for 语 句与 do-while 语句,能熟练应用这三种循环控制 结构编写程序 – 了解三种循环结构的关系,掌握在循环结构中控 制程序流程转移的方法
• 根据百分制成绩给出优秀、通过或不通过成绩
#include <stdio.h> main() { float score; printf(“Input score: “); scanf(“%f“, &score); if(score >100 && score <0) printf(“Error score.\n “); else { if(score >= 85) printf(“Excellent.\n “); else { if(score >= 60) printf(“Pass.\n “); else printf(“No pass.\n“); } } }
13
计 算 机 程 序 设 计 基 础
if-else if-else 示例
• 根据百分制成绩给出优秀、通过或不通过成绩
#include <stdio.h> main() { float score; printf(“Input score: “); scanf(“%f“, &score); if(score >100.0 && score <0.0) printf(“Error score.\n“); else if(score >= 85&& score <= 100) printf(“Excellent.\n“); else if(score >= 60 && score < 85) printf(“Pass.\n“); else printf(“No pass.\ n“); }
安徽大学大学计算机教学部 14
计 算 机 程 序 设 计 基 础
条件分支的嵌套
• 条件语句的嵌套格式
– 当年龄大于50岁时,若工资小于500,则长200, 否则长300 if(age > 50) – 若年龄大于50岁且工 资小于500,长200; 若年龄不大于50岁, 则长300
{ if(age > 50) if(sal < 500) if(sal < 500) sal += 200; sal += 200; } else else else sal += 300; sal += 300;
安徽大学大学计算机教学部 7
计 算 机 程 序 设 计 基 础
3.3 分支结构
• 分支结构(选择结构)的含义
– 根据某一条件的判断结果,确定程序的流程,即选择哪 一个程序分支中的处理块去执行 – 最基本的分支结构是二路分支结构
真 条件 假 分支结构 B A 出口
入口
– 以条件判断为起点,如果判断结果为真,则执行A处理块 的操作,否则执行B处理块的操作
安徽大学大学计算机教学部 8
计 算 机 程 序 设 计 基 础
if-else 语句
• 语句格式:if(表达式) 语句块1 else 语句块2
• 表达式必须位于括号内,一般为关系或逻辑表达式 • 先计算表达式值,若为真则执行语句1,否则执行语句2 • 语句1与语句2可以为复合语句 • 语句1与语句2只能有一个被执行,那么就变成if语句
安徽大学大学计算机教学部
if-else 语句示例二
11
计 算 机 程 序 设 计 基 础
if-else 语句示例三
• 输入一个字符,判断它是否为0~9之间的数字
#include <stdio.h> int main() 因:字符以ASCII码值存储 { 且数字的ASCII码值48~57 char c; 故:比较ASCII码值 printf(“Input a character: ”); c = getchar(); if(c >= 48 && c <= 57) printf(“It is a number.\n”); else printf(“No, it is not a number.\n”); return 0; }
计 算 机 程 序 设 计 基 础
条件分支嵌套示例
• 求方程 ax2 + bx + c = 0 的根
#include <stdio.h> #include <math.h> // 由于用到平方根函数,要用此头文件 int main() { float a, b, c, x1, x2, p, q, m; // 定义实型变量 printf(“Enter 3 coefficients: “) ; scanf(“%f,%f,%f“, &a, &b, &c); // 从键盘读入方程的三个系数 if( a == 0.0 && b == 0 && c == 0 ) // 分支1:三个系数全为0 printf(“any value\n“); else if( a == 0 && b != 0 ) // 分支2:系数a为0,解一元一次方程 printf(“x1 = x2 = %f\n", – c / b); else // 分支3:解一元二次方程的两个根 { m = b * b – 4.0 * a * c; <
#include <stdio.h> A int main() 真 { 入口 出口 条件 int abs; 假 printf(“Enter integer: ”); 单分支结构 scanf(“%d”, &abs); if(abs < 0) abs = –abs; printf(“Original integer: %d, absolute value: %d\n”, n, abs); return 0; }
安徽大学大学计算机教学部 4
计 算 机 程 序 设 计 基 础
3.2 顺序结构
• 顺序结构的含义
– 由一组顺序执行的处理块组成,每个处理块可能包含一 条或一组语句,完成一项任务 – 顺序程序结构的语句执行的步骤是一步一步顺序往下执 行,程序中没有任何转移。 – 简单的顺序结构程序是由一组顺序执行的语句组成,而 复杂的顺序结构可以由一组顺序执行的语句块组成。 – 顺序结构是最基本的算法结构
安徽大学大学计算机教学部
10
计 算 机 程• 输入三个整数,分别存放到变量x、y、z中,要求对三 序 个变量的值按从大到小的顺序排序存放,然后输出。 设 #include <stdio.h> 计 void main() 基 { int x,y,z,t; 础 printf("输入三个整数:"); scanf("%d%d%d",&x,&y,&z); if (x<y) {t=x; x=y; y=t;} /*交换x,y的值*/ if(x<z) {t=z; z=x; x=t;} /*交换x,z的值*/ if(y<z) {t=y; y=z; z=t;} /*交换z,y的值*/ printf("从大到小排序为:%d %d %d\n",x,y,z); }
• 语法规定:else与离它最近的if配对,因此为避免二义性,嵌套语句要 用{ }括起来 • 嵌套的条件语句可以实现复杂的逻辑判断 • 多重嵌套要缩格书写,这种书写风格还有利于凸显程序的结构,增加 可读性,但不会改变程序的结构。
15
安徽大学大学计算机教学部
计 算 机 程 序 设 计 基 础
if-else if-else 示例
安徽大学大学计算机教学部 12
计 算 机 程 序 设 计 基 础
if-else if-else 语句
• 语句格式
– if(表达式1) 语句1 else if(表达式2) 语句2 < else 语句n
入口 假 表达式 2 真 语句 1 语句 2 假 复杂分支结构
表达式 1 真
...
假
语句 n 出口
安徽大学大学计算机教学部
计 算 机 程 序 设 计 基 础
Email: huy@ahu.edu.cn Tel: 5107254
计算机程序设计基础
安徽大学大学计算机教学部 1
计 算 机 程 序 设 计 基 础
第三章 程序控制结构
• 学习目标
– 了解结构化程序设计的一般概念 – 熟悉顺序结构、分支结构与循环结构等三种程序 流程控制结构
真 条件 假 分支结构
A 出口 B
• 是对某一个处理块反复执行的控 制结构,此处的处理块称为循环 体。循环体执行多少次是由一次 控制循环体的条件所决定。
安徽大学大学计算机教学部
A 入口 循环结构Hale Waihona Puke Baidu
真 条件 出口 假
3
计 算 机 程 序 设 计 基 础
3.1 C 语言结构化程序设计基础
• 程序的结构化
安徽大学大学计算机教学部 2
计 算 机 程 序 设 计 基 础
基本的控制结构
• 由一组顺序执行的处理块组成, 入口 每个处理块包含一条或一组语句, 完成一项任务。任何一个算法都 离不开顺序结构。
A 顺序结构 B 出口
• 根据对某一条件判断的结果,选 择程序的走向。基本的分支结构 是二分支结构。
入口
• 如果仅仅用于确定某条语句是否执行,else分支可以省略
• 如果测试某表达式是否为0,if(exp !=0)可以简写为if(exp), 而if(exp ==0)可以简写为if(!exp)。
安徽大学大学计算机教学部
9
计 算 机 程 序 设 计 基 础
if-else 语句示例一
• 输入一个整数,输出其绝对值
– 结构化基本思想:自顶向下、逐步求精的设计方法和单 入口、单出口的结构控制。 – 三种基本结构构造的算法称为结构化算法。(顺序、分支、 循环) – 控制结构可以嵌套,以构成更复杂的控制结构 – 每个控制结构都只有一个入口和一个出口,不使用goto语 句。它是一种封装机制。 – 结构化程序设计过程:首先对任务进行功能分解,然后 使用结构化程序设计思想逐一解决各个子问题,最后构 造原始问题的解 – 结构化程序设计是编程人员必须掌握的科学的、规范化 的编程方法。 – 好处:逻辑性强,可读性好,维护方便
安徽大学大学计算机教学部 6
计 算 机 程 序 设 计 基 础
顺序结构程序示例
• 分别输入两个复数的实部与虚部,计算两个复数的 和、差、积、商并输出结果
#include <stdio.h> int main() 实际需要输入4个实数 { float a, b, c, d, real, imaginary; printf(“Input reals and imaginaries of two complexes\n”); scanf(“%f,%f,%f,%f”, &a, &b, &c, &d); printf(“Sum: %f + %fi\n”, a + c, b + d); printf(“Difference: %f + %fi\n”, a – c, b – d); real = a * c – b * d; imaginary = a * d + b * c; printf(“Product: %f + %fi\n”, real, imaginary); real = (a*c + b*d) / (c*c + d*d); imaginary = (b*c – a*d) / (c*c + d*d); printf(“Quotient: %f + %fi\n”, real, imaginary); return 0; }
入口 A 顺序结构
安徽大学大学计算机教学部 5
B
出口
计 算 机 程 序 设 计 基 础
顺序结构程序示例
• 求圆的面积、周长和圆柱的面积。
#include <stdio.h> #define PI 3.1415926 //定义符号常量PI int main() { double r, h, l, s, v; 实际需要输入4个实数 printf("请输入圆半径 r = ") ; scanf("%f", &r ); //输入圆半径 printf("请输入圆柱高 h = ") ; scanf("%f", &h ); //输入圆柱高 l = 2* PI * r ; s = PI * r * r ; v = PI * r * r * h ; printf("圆周长 l = %6.2f\n", l ); printf("圆面积 s = %6.2f\n", s ); printf("圆柱体积 v = %6.2f\n", v ); }
– 掌握 C 语言实现分支结构的 if 语句与 switch 语 句,能熟练应用 if 语句与 switch 语句编写程序
– 掌握 C 语言实现循环结构的 while 语句、for 语 句与 do-while 语句,能熟练应用这三种循环控制 结构编写程序 – 了解三种循环结构的关系,掌握在循环结构中控 制程序流程转移的方法
• 根据百分制成绩给出优秀、通过或不通过成绩
#include <stdio.h> main() { float score; printf(“Input score: “); scanf(“%f“, &score); if(score >100 && score <0) printf(“Error score.\n “); else { if(score >= 85) printf(“Excellent.\n “); else { if(score >= 60) printf(“Pass.\n “); else printf(“No pass.\n“); } } }
13
计 算 机 程 序 设 计 基 础
if-else if-else 示例
• 根据百分制成绩给出优秀、通过或不通过成绩
#include <stdio.h> main() { float score; printf(“Input score: “); scanf(“%f“, &score); if(score >100.0 && score <0.0) printf(“Error score.\n“); else if(score >= 85&& score <= 100) printf(“Excellent.\n“); else if(score >= 60 && score < 85) printf(“Pass.\n“); else printf(“No pass.\ n“); }
安徽大学大学计算机教学部 14
计 算 机 程 序 设 计 基 础
条件分支的嵌套
• 条件语句的嵌套格式
– 当年龄大于50岁时,若工资小于500,则长200, 否则长300 if(age > 50) – 若年龄大于50岁且工 资小于500,长200; 若年龄不大于50岁, 则长300
{ if(age > 50) if(sal < 500) if(sal < 500) sal += 200; sal += 200; } else else else sal += 300; sal += 300;
安徽大学大学计算机教学部 7
计 算 机 程 序 设 计 基 础
3.3 分支结构
• 分支结构(选择结构)的含义
– 根据某一条件的判断结果,确定程序的流程,即选择哪 一个程序分支中的处理块去执行 – 最基本的分支结构是二路分支结构
真 条件 假 分支结构 B A 出口
入口
– 以条件判断为起点,如果判断结果为真,则执行A处理块 的操作,否则执行B处理块的操作
安徽大学大学计算机教学部 8
计 算 机 程 序 设 计 基 础
if-else 语句
• 语句格式:if(表达式) 语句块1 else 语句块2
• 表达式必须位于括号内,一般为关系或逻辑表达式 • 先计算表达式值,若为真则执行语句1,否则执行语句2 • 语句1与语句2可以为复合语句 • 语句1与语句2只能有一个被执行,那么就变成if语句
安徽大学大学计算机教学部
if-else 语句示例二
11
计 算 机 程 序 设 计 基 础
if-else 语句示例三
• 输入一个字符,判断它是否为0~9之间的数字
#include <stdio.h> int main() 因:字符以ASCII码值存储 { 且数字的ASCII码值48~57 char c; 故:比较ASCII码值 printf(“Input a character: ”); c = getchar(); if(c >= 48 && c <= 57) printf(“It is a number.\n”); else printf(“No, it is not a number.\n”); return 0; }