C++大学基础教程 第3章 C++控制语句 北京科技大学 信息基础科学系.

Slides:



Advertisements
Similar presentations
1 第 3 章 C++ 中的条件与循环 第 3 次见面! acm.nefu.edu.cn/C++_03.ppt.
Advertisements

CSIM, PU C Language Introduction to the C Programming Language 重覆敘述 (for,while,break,continue) 適合重複性的計算或判斷.
C++语言程序设计教程 第5章 构造数据类型 第6章 C++程序的结构.
第4章 條件判斷與迴圈 Java 2 程式設計入門與應用.
C#程序设计案例教程 第3章 程 序 结 构.
第一章 C语言概述 计算机公共教学部.
第4章 数组 数组是由一定数目的同类元素顺序排列而成的结构类型数据 一个数组在内存占有一片连续的存储区域 数组名是存储空间的首地址
第三章 控制结构.
复习与总结.
循环结构又称为重复结构:用来处理需要重复处理的问题,它是程序中一种很重要的结构。
Class 2 流程控制-選擇敘述與迴圈.
資料大樓 --談指標與陣列 綠園.
函數(一) 自訂函數、遞迴函數 綠園.
C++Primer 3rd edition 中文版 Chap 5
C++程序设计 第二讲 清华大学软件学院.
第4章 函数与预处理 4.1 概述 4.2 定义函数的一般形式 4.3 函数参数和函数的值 4.4 函数的调用 *4.5 内置函数
第3章 C 語言的基本知識.
C程序设计.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第四章 数组及自定义数据类型 C++语言程序设计.
第一章 程序的基本结构. 第一章 程序的基本结构 教材及授课结构 本章目标 基本内容 扩展阅读 上机指导 应用举例 习题.
C++语言程序设计 C++语言程序设计 第四章 数组及自定义数据类型 C++语言程序设计.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
Object-Oriented Programming in C++ 第一章 C++的初步知识
2 C++ 的基本語法和使用環境 親自撰寫和執行程式是學好程式語言的不二法門。本章藉由兩個簡單的程式,介紹C++ 程式的基本結構和開發環境,讓初學者能逐漸建立使用C++ 的信心。
Introduction to the C Programming Language
第二章 C++对C 在非面向对象方面的改进 更简洁,更安全.
第3章 程序设计初步 第4章 函数与预处理 第5章 数组 第6章 指针 第7章 自定义数据类型
第3讲 C++程序控制结构 3.1 顺序结构 3.2 分支结构 3.3 循环结构 3.4 转向控制 3.5 综合案例分析.
C++语言程序设计 第二章 C++简单程序设计.
程序的三种基本结构 if条件分支语句 switch多路开关语句 循环语句 循环嵌套 break,continue和goto语句
C++语言程序设计 第十一章 流类库与输入/输出.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
切換Dev c++顯示語言 工具->環境選項(V)->介面->language (Chinese TW)
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
第2章 C++流程控制语句 if 语句 switch语句 for语句 while语句 do - while语句 break语句
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
第4讲 C++程序控制结构(二) 4.1 循环结构 4.2 转向控制 4.3 综合案例分析.
第二章Java基本程序设计.
第二章 基本数据类型及运算 C数据类型概述 基本数据类型 运算符和表达式 混合运算与类型转换 数据的输入输出 顺序程序设计举例.
第1讲 C语言基础 要求: (1) C程序的组成 (2) C语言的标识符是如何定义的。 (3) C语言有哪些基本数据类型?各种基本数
C++语言程序设计 C++语言程序设计 第五章 函数 第十一组 C++语言程序设计.
程式結構&語法.
4 條件選擇 4.1 程式基本結構 循序式結構 選擇式結構 重複式結構 4-3
第三章 C++的语句和简单的程序设计 主要内容:
C++语言程序设计 C++语言程序设计 第三章 控制语句 第十一组 C++语言程序设计.
C 语言程序设计 程序的循环结构 电大崇信县工作站 梁海亮.
第2章 算法与C语言程序 程序 (1)数据的描述:数据的类型和组织形式(数据结构) (2)操作的描述:操作步骤(算法) 沃思指出:
物件導向程式設計 CH2.
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
C++语言程序设计教程 第2章 数据类型与表达式 第2章 数据类型与表达式 制作人:杨进才 沈显君.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
C++程式設計入門 變數與運算子 作者:黃建庭.
第三章 程序的控制结构 第一节 概述 第二节 if选择结构 第三节 switch语句.
第二章 Java语法基础.
C/C++基礎程式設計班 C++: 物件的使用、參考、重載函式 講師:林業峻 CSIE, NTU 3/28, 2015.
目标 流程控制 字符串处理 C# 的类和对象 C# 访问修饰符 C# 构造函数和析构函数.
程序设计基础.
#include <iostream.h>
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
第五章 逻辑运算和判断选取控制 §5.1 关系运算符和关系表达式
第六章 贪心算法.
C++语言程序设计 第十章 C++标准模板库 成都信息工程学院计算机系.
C++语言程序设计 C++语言程序设计 第十章 多态 第十一组 C++语言程序设计.
迴圈(重複性結構) for while do while.
C++语言程序设计 C++语言程序设计 第十一章 异常处理 C++语言程序设计.
變數與資料型態  綠園.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
第二章 Java基础语法 北京传智播客教育
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
Presentation transcript:

C++大学基础教程 第3章 C++控制语句 北京科技大学 信息基础科学系

用计算机解决实际问题,首先要分析问题,设计合适的算法,然后编程实现算法。

已知三角形的周长为20,求出所有满足条件的三角形(求边长)。 #include <iostream> using namespace std; void main() { for(int i=1;i<20;i++) for(int j=1;j<20;j++) for(int k=1;k<20;k++) if(i+j+k==20&&i+j>k&&i+k>j&&j+k>i) cout<<"i="<<i<<"j="<<j<<"k="<<k<<endl; }

开始 i=1~20 j=1~20 k=1~20 i+j+k=20 i+j>k i+k>j j+k>i 输出:i j k 结束 i>=20 j>=20 k>=20 不满足 满足

第3章 C++控制语句 3.1 算法的基本控制结构 3.2 if选择语句 3.3 switch选择语句 3.4 循环语句 3.5 循环嵌套 3.6 应用举例

3.1 算法的基本控制结构

3.1 算法的基本控制结构 算法 1、计算机执行的操作 2、这些操作的顺序 伪码 采用类似计算机语言的分句格式,以自然语言描述算法。

3.1 算法的基本控制结构 流程图 开始/结束 执行 判断 联系

3.1 算法的基本控制结构 程序的三种基本控制结构 (1)顺序结构 (2)选择结构 (3)循环结构 开始 执行1 执行2 条件 结束 开始 是 否 开始 执行1 执行2 执行3 结束 开始 条件 执行2 执行1 结束 是 否

3.1 算法的基本控制结构 流程控制语句 选择语句:if..else、switch 循环语句:while、for 、do..while 转向语句:break、continue

3.2 if选择语句

3.2 if选择语句 if_else 1、没有else分支 2、双分支 3、多分支 4、if 语句的嵌套

3.2 if选择语句 1、没有else分支 if (表达式) 语句; 例如:比较x和y的大小,如果x大则输出x的值 cout<<x<<endl;

3.2 if选择语句 2、双分支 if (表达式) 语句1; else 语句2; if ( x>y ) cout<<x<<endl; else cout<<y<<endl;

例子 任意输入一个4位整数的年份,判断该年是否是润年? 是指年份能被4整除,并且不能被100整除或能被400整除的那些年

#include <iostream> using namespace std; void main() { int year; cin>>year; if((year % 4==0) && (year %100 != 0) ||(year % 400==0)) cout<<"润年"<<endl; else cout<<"不是润年"<<endl; }

3.2 if选择语句 3、多分支 if (表达式1) 语句1; else if (表达式2) 语句2; else if (表达式3) 语句3; … else 语句n;

例子:输出学生的成绩 #include <iostream> using namespace std; void main() { int x; cin>>x; if(x>=90) cout<<“优秀”<<endl; else if(x>=80) cout<<“良好”<<endl; else if(x>=60) cout<<“合格”<<endl; else cout<<“不及格”<<endl; } X>=80 && x<90

3.2 if选择语句 if (表达式1) if (表达式2) 语句1 4、if 语句的嵌套 else 语句2 if (表达式3) 语句3 语句4 4、if 语句的嵌套

例子:输出a,b,c中较大的数 cout<< (a>b?(a>c?a:c):(b>c?b:c ) ); #include <iostream> using namespace std; void main() { int a,b,c; cin>>a>>b>>c; if (a>b) if (a>c) cout<<a<<endl; else cout<<c<<endl; } else if (b>c) cout<<b<<endl; cout<< (a>b?(a>c?a:c):(b>c?b:c ) ); a>b a>c b>c out a out c out b a>b a>c b>c

if和else的对应关系,else总是与离它最近的if匹配。 if (x>0) if (x<50) cout<<“x is <50”<<endl; else cout<<“x is <=0”<<endl; 3.2 if选择语句 注意:二义性 int x; cin>>x; if (x>0) if (x<50) cout<<“x is <50”<<endl; else cout<<“x is <=0”<<endl; { } if和else的对应关系,else总是与离它最近的if匹配。

3.3 switch选择语句

3.3 switch选择语句 跳出switch语句 switch (表达式) { case 常量表达式1: 语句1 break; 语句2 ┇ case 常量表达式n: 语句n default:语句n+1 } 跳出switch语句 整型、 字符型 或枚举类型

例子:输出学生的成绩 switch(x/10) { case 10: int x; cin>>x; switch(x/10) { case 10: case 9:cout<<“优秀”<<endl; break; case 8: cout<<“良好”<<endl; case 7: case 6: cout<<“合格”<<endl; default: cout<<“不及格”<<endl; }

3.4 循环语句

3.4 循环语句 三种基本语法 1、 while 语句 2、 do…while 语句 3、 for 语句

* ** *** **** ***** ****** ******* #include <iostream> #include <iomanip> using namespace std; void main(){ cout<<setfill('*') <<setw(2)<<'\n' <<setw(3)<<'\n' <<setw(4)<<'\n' <<setw(5)<<'\n' <<setw(6)<<'\n' <<setw(7)<<'\n' <<setw(8)<<'\n'; } * ** *** **** ***** ****** *******

* ** *** **** ***** ****** ******* #include <iostream> #include <iomanip> using namespace std; void main(){ int i=2; cout<<setfill('*'); while(i<=8) { cout<<setw(i)<<'\n'; i++; } * ** *** **** ***** ****** ******* 循环控制条件 循环体 循环变量

3.4 循环语句 主要包括3个部分: 1、循环控制条件: 判断循环操作是否进行的条件; 2、循环体: 重复进行的操作; 3、循环控制变量: 记录循环体执行的次数,或控制循环的结束条件。

3.4 循环语句 while循环语句 while(表达式) 循环体语句;

例1:编程循环输出1-9这9个数字? 运行结果: 1 2 3 using namespace std; 4 void main() 5 { 6 7 8 9 循环结束 #include <iostream> using namespace std; void main() { int i=1; while (i<=9) cout<<i<<endl; i++; } cout<<“循环结束”<<endl;

例2:编程计算1+2+3+….+10的值 55 using namespace std; void main() { #include <iostream> using namespace std; void main() { int sum=0,i=1; while(i<=10) sum+=i; i++; } cout<<sum<<endl; 55

例3:打印可视字符 #include<iostream> using namespace std; void main() { unsigned char ch=32; while(ch<127) cout<<(int)ch<<'\t'<<ch<<'\t'; ch++; }

例4:编程计算 的值!!!!!!! #include <iostream> using namespace std; 例4:编程计算 的值!!!!!!! #include <iostream> using namespace std; void main() { int k=1,sum=0,n; cout<<"input n(n>0):"; cin>>n; while(k<=n) { sum=sum+k*k; k++; } if(n>0) cout<<sum/n<<endl; else cout<<"n不能<=0"<<endl;

3.4 循环语句 do..while循环语句 do { 循环体语句; } while(表达式);

* ** *** **** ***** ****** ******* #include <iostream> #include <iomanip> using namespace std; void main() { int i=2; cout<<setfill('*'); while(i<=8) cout<<setw(i)<<'\n'; i++; } * ** *** **** ***** ****** ******* do { cout<<setw(i)<<'\n'; i++; } while(i<=8);

例子:编程计算 的值 #include <iostream> using namespace std; void main() 例子:编程计算 的值 #include <iostream> using namespace std; void main() { int k=1,sum=0,n; cout<<"input n(n>0):"; cin>>n; while(k<=n) sum=sum+k*k; k++; } if(n>0) cout<<sum/n<<endl; else cout<<"n不能<=0"<<endl; do { sum=sum+k*k; k++; }while(k<=n);

3.4 循环语句 for循环语句 for (表达式1; 表达式2; 表达式3) 循环结构 循环体; 1、表达式1  循环变量初始化; 2、表达式2  循环控制条件; 3、表达式3  循环变量的变化; for (表达式1; 表达式2; 表达式3) 循环体;

例1:编程循环输出1-9这9个数字? using namespace std; void main() { 运行结果: 1 2 3 4 5 6 7 8 9 循环结束 #include <iostream> using namespace std; void main() { for (int i=1;i<10;i++) cout<<i<<endl; cout<<“循环结束”<<endl; }

例2:编程计算1+2+3+….+10的值 运行结果:55 using namespce std; void main() { #include <iostream.> using namespce std; void main() { int sum=0; for (int i=1;i<=10;i++) sum+=i; cout<<sum<<endl; } 运行结果:55

例3 * ** *** **** ***** ****** ******* for(int i=2;i<=8;i++) #include <iostream> #include <iomanip> using namespace std; void main(){ cout<<setfill('*'); } for(int i=2;i<=8;i++) cout<<setw(i)<<'\n';

3.4 循环语句——for语句 1、<表达式1>可以省略 for(int i=1 ; i<=9 ; i++) 循环体; int i=1; for( ; i<=9 ; i++)

3.4 循环语句——for语句 2、<表达式2>可以省略 for(int i=1; i<=9; i++) 循环体; { if (i<=9) else break; //跳转语句,用来跳出循环 }

3.4 循环语句——for语句 3、<表达式3>可以省略 for(int i=1; i<=9; i++) 循环体; { }

3.4 循环语句——for语句 3、<表达式1> <表达式3>同时省略 循环体; for(; i<=9; ) for(int i=1; i<=9; i++) 循环体; int i=1; for(; i<=9; ) { i++; }

3.4 循环语句——for语句 5、极端情况,可实现无限循环 for( ; ; ) { 循环体; }

例4:判断输出结果? #include <iostream> using namespace std; void main(){ 分析: i j k 0 10 0 1 9 9 2 8 25 3 7 46 4 6 70 5 5 跳出 #include <iostream> using namespace std; void main(){ for(int i=0,j=10,k=0; i<j; i++,j--) k+=i*j; cout<<k<<endl; }

3.4 循环语句 1、for: 最适合循环次数固定,循环规律非常明显程序。 2、while: 使用最多最频繁的循环结构,具有普适性。 3、do_while: 最适合至少循环一次的循环结构。

3.4.4 转向语句 1、break语句 2、continue语句

3.4.4 转向语句——break 用途: 常用在while、do-while、for和switch语句中,用来跳出循环或switch语句。

例1:判断输出结果? #include <iostream> using namespace std; void main(){ int sum=0; for (int i=1;i<10;i++) { if (i % 3==0) break; sum+=i; } cout<<sum<<endl; 分析 i sum 1 1 2 3 跳出

3.4.4 转向语句——continue 用途 用于循环语句中,结束本次循环,进行下一次循环;即跳过循环体中尚未执行的部分。

例1:判断输出结果? #include <iostream> using namespace std; void main(){ 分析 i sum 1 1 2 3 3 3 7 12 19 27 跳出 #include <iostream> using namespace std; void main(){ int sum=0; for (int i=1;i<10;i++) { if (i % 3==0) continue; sum+=i; } cout<<sum<<endl;

3.5 循环嵌套

3.5 循环嵌套 编程输出国际象棋棋盘 #include <iostream> using namespace std; void main() { for (int i=0;i<8;i++) for (int j=0;j<8;j++) if ((i+j)%2==0) cout<<"■"; else cout<<" "; } cout<<"\n"; ■ ■ ■ ■ for (int j=0;j<4;j++) { if (i%2==0) cout<<"■ "; else cout<<“ ■"; } if (i%2==0) cout<<"■ ■ ■ ■ "; else cout<<“ ■ ■ ■ ■";

思考 题目: 使用For循环输出如下图形: * ** *** **** ***** ****** ******* 也是循环嵌套的问题: 循环7次,输出7行 每行也要循环:先输出几个空格 再输出几个“*”

* ** *** **** ***** ****** ******* #include <iostream> using namespace std; void main() { for (int i=1;i<=7;i++) for (int j=7; j>i; j--) cout<<' '; for (j=1; j<=i; j++) cout<<'*'; cout<<endl; } * ** *** **** ***** ****** *******

3.6 应用举例

3.6 应用举例1 任意输入一个整数,判断是否是素数? 问题:什么是素数?

#include <iostream> using namespace std; void main(){ int n,i; cin>>n; for (i=2;i<n;i++) if (n%i==0) break; if (i<n) cout<<n<<"不是素数!\n"; else cout<<n<<"是素数\n"; }

改进:输出2-100之间的素数 #include <iostream> #include <cmath> using namespace std; void main() { for(int k=2;k<100;k++) int n=sqrt(k); for (int i=2;i<=n;i++) if (k%i==0) break; if (i>n) cout<<k<<'\t'; }

3.6 应用举例2 题目 任意输入一个整数,按位翻转输出。例如输入124,输出421。

#include <iostream> using namespace std; void main(){ int i, n, result=0; cout<<"请输入任意一个整数:"; cin>>n; cout<<"按位翻转的结果为:"; while (n!=0){ i =n % 10; result=result*10+i; n /= 10; } cout<<result<<endl; 分析: n i result 124 4 4 12 2 42 1 1 421 0 跳出

3.6 应用举例3 题目 一球从100米高度落下,每次落地后反弹回原高度的一半,再落下。编程求解它在第n次落地时,共经过多少米?

#include <iostream> using namespace std; void main() { double height=100; double sum=height; for (int i=1;i<10;i++) { sum+=height; cout<<height<<'\t'<<sum<<'\t' << i<<endl; height/=2; } cout<<sum<<endl;

3.6 应用举例4 题目 若一头小母牛,从出生起第四个年头开始每年开始生一头小母牛,按此规律,第n年时有多少头母牛? f(1)=1; 分析: n=1 1 n=2 1 n=3 1+1 n=4 1+1+1 …… f(1)=1; f(2)=1; f(3)=1; f(n)=f(n-1)+f(n-3);

#include <iostream> using namespace std; void main() { int n; long a=1, b=1, c=1, temp; cout <<"please input a value:\n"; cin >>n; for(int i=4; i<=n; i++) temp=a+c; a=b; b=c; c=temp; } cout << c <<endl;

总结 三种基本结构:顺序、选择和循环 流程图和伪码,帮助我们设计算法、完善算法,增强算法的可读性

本章教学要求: 1.掌握算法实现的基本结构 顺序结构 选择分支(if, switch)及选择分支的嵌套 循环结构(while, do…while, for)及循环结构的嵌套 break ,continue语句 2.掌握简单的数学算法的C++实现 交换两个变量的数据 判断某个数是否是质数、闰年 简单排序 求连续的N个数的连加和,连乘积等

9. 编程求1!+2!+3!+4!+…+15! #include <iostream> using namespace std; void main() { unsigned long factorial(1); double sum=0; for(int i=1; i<=15; i++) factorial=1; for(int j=1; j<=i; j++) factorial= factorial* j; cout<<j-1<<"!="<<factorial<<endl; sum=sum+factorial; } cout <<"1!+2!+3!+4!+…+15!="<<sum<<endl;

10. 编程求解问题。若一只小母羊,从出生起第三个年头开始每年生一只小母羊,按此规律,第n年时有多少只母羊? f(1)=1; f(2)=1; f(n)=f(n-1)+f(n-2);

#include <iostream> using namespace std; void main() { int n; long a=1, b=1, temp; cout <<"please input a value:\n"; cin >>n; for(int i=3; i<=n; i++) temp=a+b; a=b; b=temp; } cout << b <<endl;