循环结构 NEAU ACM-ICPC TEAM 主讲人:NEAU_ACM_Team.

Slides:



Advertisements
Similar presentations
因数与倍数 2 、 5 的倍数的特征
Advertisements


While 迴圈 - 不知重複執行次數
CSIM, PU C Language Introduction to the C Programming Language 重覆敘述 (for,while,break,continue) 適合重複性的計算或判斷.
2015高考试题分析 及高三第一轮复习心得 ----余江一中物理组
親愛的老師您好 感謝您選用本書作為授課教材,博碩文化準備本書精選簡報檔,特別摘錄重點提供給您授課專用。 說明: 博碩文化:
第4章 條件判斷與迴圈 Java 2 程式設計入門與應用.
迴圈 迴圈基本觀念 while迴圈 do 迴圈 for迴圈 巢狀迴圈 迴圈設計注意事項 其他控制指令 迴圈與選擇的組合.
第六章 循环控制.
回顾与展望:高州经验与广东医改 省卫生计生委、省医改办 黄 飞 2015年7月3日.
第一章 C语言概述 计算机公共教学部.
教師敘薪實務解說 大墩國小人事室 吳莉真
C语言实验 第一课 标题:学号+姓名.
第3章 While循环程序设计.
C语言程序设计 第八章 函数.
C#程序设计基础 $5 流程控制.
循环结构又称为重复结构:用来处理需要重复处理的问题,它是程序中一种很重要的结构。
Class 2 流程控制-選擇敘述與迴圈.
Do.For.While.正三角.倒正三角.倒九九乘法表
第3章 顺序结构程序设计 本章要点: 格式化输出函数──printf() 格式输入函数——scanf() 字符输出函数——putchar()
第 四 章 循环结构 while语句 do {} while 语句 break和continue语句
排序 Sorting.
第3章 C语言的基本语句 和程序结构设计.
Introduction to the C Programming Language
Introduction to the C Programming Language
Introduction to the C Programming Language
走进编程 程序的顺序结构(二).
Introduction to the C Programming Language
第5章 循环结构程序设计 5.1 为什么需要循环控制 5.2 用while语句实现循环 5.3 用do---while语句实现循环
第六章 循环结构程序设计 概述 while 语句 do-while 语句 for 语句 循环的嵌套 几种循环的比较
6.4.1指针与二维数组 1、二维数组结构的分析 设有数组定义为:int a[3][4]; 则有: a表示数组在内存中的首地址。
C语言 程序设计基础与试验 刘新国、2012年秋.
C++语言程序设计 第二章 C++简单程序设计.
函 数 实验八 第24讲 C程序设计 Main() { int x,y; X=10; y=x*x+1;
計數式重複敘述 for 迴圈 P
第五章 习题课 电子信息与计算机科学系 曾庆尚.
第5讲 结构化程序设计(Part II) 周水庚 2018年10月11日.
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
第0章作业: 教材P12-练习与实践 1.写出用符号’*’输出描绘汉字”大”的流程图。
第4讲 C++程序控制结构(二) 4.1 循环结构 4.2 转向控制 4.3 综合案例分析.
C++大学基础教程 第3章 C++控制语句 北京科技大学 信息基础科学系.
第4章 PHP流程控制语句.
C语言概述 第一章.
程式結構&語法.
第三章 C++的语句和简单的程序设计 主要内容:
C++语言程序设计 C++语言程序设计 第三章 控制语句 第十一组 C++语言程序设计.
C语言大学实用教程 第6章 数组 西南财经大学经济信息工程学院 刘家芬
C 语言程序设计 程序的循环结构 电大崇信县工作站 梁海亮.
目录 5.1循环结构程序设计的概述 5.2 用while语句实现循环结构程序设计 5.3 用do-while语句实现循环结构程序设计
第2章 算法与C语言程序 程序 (1)数据的描述:数据的类型和组织形式(数据结构) (2)操作的描述:操作步骤(算法) 沃思指出:
请编写程序在屏幕上打印出一个“*”? printf(”*\n”); 请编写程序在屏幕上打印四行,每行一个“*”?
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
《计算机应用基础》 第9章 程序设计基础(二).
第2章 认识C语言 教学要点 2. 1 项目二C语言程序识读 2 .2 项目三班级成绩排名 2 .3 知识链接 返回.
项目1 C程序设计起步 学习目标: 通过该项目你可以知道: C语言的用途。 C语言的基本符号和关键字。 C语言程序的结构及特点。
习 题 课(作业).
隨機數 (亂數) 10後,取餘數 n = rand(); 利用 Code::Block 驗證一下 n = rand() %10; 998
程序设计基础.
第七章  数 组.
程式設計--linear search 通訊一甲 B 楊穎穆.
第1章 数据结构基础概论 本章主要介绍以下内容 数据结构研究的主要内容 数据结构中涉及的基本概念 算法的概念、描述方法以及评价标准.
第1章程序设计和C语言.
Do While 迴圈 東海大學物理系‧資訊教育 施奇廷.
迴圈(重複性結構) for while do while.
C/C++基礎程式設計班 陣列 講師:林業峻 CSIE, NTU 3/14, 2015.
第一次上機考參考答案 僅供參考,同學可自行再想更好的方法..
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
任课教师:戴开宇 TA:时均帅、谭肖、王安华 程序设计B班 :20-16:50(90分钟)
第二章 Java基本语法 讲师:复凡.
C语言基础学习 从外行到入门.
Presentation transcript:

循环结构 NEAU ACM-ICPC TEAM 主讲人:NEAU_ACM_Team

目录 1 循环结构 2 while循环 3 for循环 4 continue与break 5 双层循环

循环结构 PART 01 为什么要循环?

太过复杂!!! 如果我们想要在屏幕上输出1~10 十个数字,我们应该这么做呢? #include<stdio.h> int main() { return 0; } 太过复杂!!! printf(“1\n”); printf(“2\n”); printf(“3\n”); printf(“4\n”); printf(“5\n”); printf(“6\n”); printf(“7\n”); printf(“8\n”); printf(“9\n”); printf(“10\n”);

如果我们想要在屏幕上输出1~10 十个数字,我们应该这么做呢? #include<stdio.h> int main() { 开始 int i=1 i<=10 printf i i++ 结束 真 假 #include<stdio.h> int main() { int i=1; while(i<=10) printf("%d\n",i); i++; } return 0; 如果我们想要在屏幕上输出1~10 十个数字,我们应该这么做呢?

目录 1 循环结构 2 while循环 3 for循环 4 continue与break 5 双层循环

while循环 PART 02 一直做下去

真 假 ①②①② ··· ··· ①②①②① #include<stdio.h> int main() { while循环 #include<stdio.h> int main() { while(表达式①) 语句②; } …; return 0; 真 假 开始 int i=1 i<=10 printf i i++ 结束 真 假 循环体的概念 表达式为假 循环结束 ①②①② ··· ··· ①②①②①

练习&答疑 Problem 如果我们想要在屏幕上输出1~10 十个数字,我们应该这么做呢?

死循环 时间超限 ①②①②①②①② ··· ··· #include<stdio.h> int main() { while循环 死循环 #include<stdio.h> int main() { while(1+1==2) printf("1+1!=2\n"); return 0; } 时间超限 表达式用不为假 循环永不结束 需要使循环趋向于结束 ①②①②①②①② ··· ···

Problem 练习&答疑 输入一个整数n,使等差数列{1,2,3,4,5…}前m项的和大于n,输出最小的m。 样例输入 10 样例输出 5 提示 1+2+3+4=10 1+2+3+4+5=15

#include<stdio.h> int main() { int t,a,b; scanf("%d",&t); while(t--) scanf("%d%d",&a,&b); printf("%d\n",a+b); } return 0; 循环输入 #include<stdio.h> int main() { int a,b; while(~scanf("%d%d",&a,&b)) printf("%d\n",a+b); return 0; } #include<stdio.h> int main() { int a,b; while(~scanf("%d%d",&a,&b)) printf("%d\n",a+b); return 0; } scanf的值为输入变量的个数 如遇文件结尾,则返回-1 每次循环t减小1,t次循环后, t减小为0,循环结束 #include<stdio.h> int main() { int t,a,b; scanf("%d",&t); while(t--) scanf("%d%d",&a,&b); printf("%d\n",a+b); } return 0;

do-while 真 假 ① ② ①②①② ··· ··· ①②①② 至少执行一次循环体 while循环 #include<stdio.h> int main() { int i=1; while(i<=10) printf("%d\n",i); i++; } return 0; #include<stdio.h> int main() { int i=100; while(i<=10) printf("%d\n",i); i++; } return 0; do-while while循环 #include<stdio.h> int main() { do 语句; } while(表达式); …; return 0; 真 假 ① ② 至少执行一次循环体 #include<stdio.h> int main() { int i=1; do printf("%d\n",i); i++; } while(i<=10); return 0; #include<stdio.h> int main() { int i=100; do printf("%d\n",i); i++; } while(i<=10); return 0; 表达式为假 循环结束 ①②①② ··· ··· ①②①②

目录 1 循环结构 2 while循环 3 for循环 4 continue与break 5 双层循环

for循环 PART 03 一直做下去

真 假 ①②④③②④③②④③…② #include<stdio.h> int main() { for循环 #include<stdio.h> int main() { for(语句① ;语句② ;语句③ ) 语句④; } …; return 0; 真 假 开始 int i=1 i<=10 printf i i++ 结束 真 假 表达式为假 循环结束 ①②④③②④③②④③…②

Problem 练习&答疑 输入一个整数n,输出n! 样例输入 5 样例输出 120 提示 n!=1*2*3…*n,0!=1。

Problem 练习&答疑 输入一个整数n,从大到小输出n的所有因子,每行一个。 样例输入 12 样例输出 6 4 3 2 1

目录 1 循环结构 2 while循环 3 for循环 4 continue与break 5 双层循环

continue与break PART 04 停止循环

continue break 结束当次循环 结束当前循环 continue与break #include<stdio.h> int main() { int i; for(i=1;i<=10;i++) printf("\n"); printf("continue 之前 i=%d\n",i); if(i%3==0) continue; printf("continue 之后 i=%d\n",i); } return 0; #include<stdio.h> int main() { int i; for(i=1;i<=10;i++) printf("\n"); printf("break 之前 i=%d\n",i); if(i%3==0) break; printf("break 之后 i=%d\n",i); } return 0;

Problem 练习&答疑 敲三 一群人围成一圈,从1开始报数,遇见3的倍数和带3的数字不报数而是拍手一次,游戏将会在拍手n次之后结束。请输出游戏过程中报出的数字,每个一行。(游戏结束时数字小于100) 样例输入 5 样例输出 1 2 4 7 8 10 11 提示 1,2,x,4,5,x,7,8,x,10,11,x,x.

目录 1 循环结构 2 while循环 3 for循环 4 continue与break 5 双层循环

双层循环 PART 05 循环嵌套

双层循环的执行顺序 双层循环 #include<stdio.h> int main() { int i,j; for(i=1;i<=3;i++) printf("第%d次外层循环\n",i); for(j=1;j<=4;j++) printf(" 第%d次内层循环\n",j); } printf("\n"); return 0;

Problem 练习&答疑 打印矩形 输入两个数n,m,输出n行m列的实心矩形 样例输入 3 4 样例输出 ****

Problem 练习&答疑 打印九九乘法表 为图形美观,乘积占两格宽度,注意行末没有空格 1*1= 1 1*2= 2 2*2= 4 1*3= 3 2*3= 6 3*3= 9 1*4= 4 2*4= 8 3*4=12 4*4=16 1*5= 5 2*5=10 3*5=15 4*5=20 5*5=25 1*6= 6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7= 7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8= 8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9= 9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

双层循环中使用continue与break 在内层循环里使用仅作用于内层循环

Problem 练习&答疑 打印三角形 输入一个整数n,输出大小为n的三角形 样例输入 3 样例输出

Problem 练习&答疑 输入n,m(0<=n<=200,0<=m<=10000)。 求两个整数a,b使a+b=n且a*b=m,要求0<=a,b<=100,若存在多个满足要求的a,输出最小的a,若a为最小时有多个满足要求的b,输出最小的b。若没有满足要求的a和b,则输出“-1”。 样例输入 2 1 样例输出 1 1

Problem 练习&答疑 素数的个数 输入一个整数n,求不大于n的素数个数 样例输入 10 样例输出 4 提示 2,3,5,7

1S 108 2S 109 时间复杂度 优化算法 降低时间复杂度 O(1) O(n) O(n2) 时间复杂度O(n*m) 执行算法所需要的计算工作量 双层循环 优化算法 降低时间复杂度 for(i=0;i<n;i++) { for(j=0;j<m;j++) ...; } #include<stdio.h> int main() { int n,i,j,flag,ans; scanf("%d",&n); ans=0; for(i=2;i<=n;i++) flag=0; for(j=2;j<i;j++) if(i%j==0) flag=1; break; } if(flag==0) ans++; printf("%d\n",ans); return 0; #include<stdio.h> int main() { int n,i,sum; scanf("%d",&n); sum=0; for(i=1;i<=n;i++) sum+=i; printf("%d\n",sum); return 0; } O(1) 1S 108 2S 109 #include<stdio.h> int main() { int n,sum; scanf("%d",&n); sum=n*(n+1)/2; printf("%d\n",sum); return 0; } O(n) O(n2) 时间复杂度O(n*m)

感谢观看 THANKS NEAU ACM-ICPC TEAM