安全设置(若密码为456,则进入系统)#includestdio.hvoidmain(void){intmima;printf(请输入密码(三个数字):);scanf(%d,&mima);if()printf(“欢迎进入职工信息管理系统!\n);elseprintf(密码错误,请重新输入!\n);}mima==456引例项目分析:安全设置:进入系统需要密码,只允许输入三次密码。算法分析:如果前两次输入错误,可以继续输入密码。错误输入三次后,显示“密码错误,退出系统!”循环结构引例第六章循环结构程序设计(1)公共计算机教学部张乐本讲内容循环的概念与机制实现循环的语句while语句do-while语句for语句【例】求∑n(n为1~10),并将结果打印出来.#includestdio.hvoidmain(){intsum=0;sum=1+2+3+4+5+6+7+8+9+10;printf(其和是%d\n,sum);}如果1加到100呢?一、循环概念及机制循环:就是在某种条件成立时反复执行某一程序段。被反复执行的程序段称为循环体,控制循环操作的条件叫循环条件。inti=1,s=0i=100s+=i;i++;NS图输出s思考:哪些因素决定了循环的次数?在C语言中可以用以下语句来实现循环:1.用while语句;2.用do--while语句;3.用for语句;循环语句的三要素:循环控制变量的初值循环控制条件循环变量的修改一、while语句;二、do--while语句;三、for语句;二、实现循环的语句控制变量初值控制条件循环体NS图控制变量初值循环体NS图控制条件当型循环直到型循环语句的形式:语句的执行过程:while(表达式)循环体“当型”循环语句#includestdio.hvoidmain(){inti=1;while(i=3){printf(“幸福!”);i++;}}1.while语句真(非零)表达式循环体假(零)控制变量初值控制条件控制变量修改1.while语句#includestdio.hvoidmain(){inti=1;while(i=3){printf(幸福!);i++;}}说明:1.先判断表达式,后执行语句。若一开始表达式值为假,则循环体一次也不执行。2.循环体多于一句时,用一对{}括起。1.while语句说明:3.在循环之前应有初始条件;循环体中应有使循环趋向于结束的语句,以防“死循环”(即使表达式值为假的操作)。#includestdio.hvoidmain(){inti;while(i=3){printf(幸福!);i++;}}#includestdio.hvoidmain(){inti=1;while(i=3){printf(幸福!);}}4.循环结构的循环体可以为空。1.while语句#includestdio.hvoidmain(){inti=1;while(i=3){}}5.循环变量有时候只是控制循环次数,不参与到循环体的运算中。#includestdio.hvoidmain(){inti=1;while(i=3){printf(幸福!);i++;}}#includestdio.hvoidmain(){inti=1,s=0;while(i=3){s=s+i;i++;}printf(“%d\n”,s);}1.while语句1.while语句【例】求∑n(n为1~100),并将结果打印出来.1﹢2﹢3﹢…﹢100分析:1.定义变量2.循环体:累加s=s+i;i变化100次3.循环语句的三要素:循环控制变量的初值循环控制条件循环变量的修改i=1;i=100;i++;循环变量i参与到循环体的运算中#includestdio.hmain(){inti=1,s=0;while(i=100){s=s+i;i++;}printf(%d\n,s);}i=1,s=0;1.while语句#includestdio.hmain(){inti=1,s=0;while(i=100){s=s+i;i++;}printf(“%d”,s);}is10(初值)①11②21+2③31+2+3④41+2+3+4⑤51+2+3+4+5⑥61+2+3+4+5+6……⑩1001+2+……+100属于“累加器”类型问题。循环次数固定的循环语句计数式循环1.while语句1、求1~100中所有奇数的和。2、求1~100中所有偶数的和。3、求10!(累乘)思考:1、求1~100中所有奇数的和。循环语句三要素:循环控制变量的初值循环控制条件循环变量的修改i=1,s=0i=100i=i+2#includestdio.hmain(){inti=1,s=0;while(i=100){s=s+i;i=i+2;}printf(%d\n,s);}循环语句三要素:循环控制变量的初值循环控制条件循环变量的修改2、求1~100中所有偶数的和。i=2,s=0i=100i=i+2#includestdio.hmain(){inti=2,s=0;while(i=100){s=s+i;i=i+2;}printf(%d\n,s);}循环语句三要素:循环控制变量的初值循环控制条件循环变量的修改3、求10!(累乘)i=1,s=1i=10i++#includestdio.hmain(){inti=1,s=1;while(i=100){s=s*i;i++;}printf(%d\n,s);}1.计数式循环事先已知循环总次数的循环。常用一个计数变量控制循环。设计计数式循环,关键是设计计数变量的初值、终值和计数变量变化步长值。2.不定数式循环事先难以确定次数的循环,称“不定数式循环”。不定数式循环常借用某“标记值”或“标记变量”控制循环的结束。1.while语句1.while语句【例】统计从键盘输入的一行字符的个数(以回车键作为输入结束标记)。分析:1.循环体:输入一个字符num++;2.循环语句的三要素:循环控制变量的初值循环控制条件循环变量的修改ch=getchar();while(ch!='\n')ch=getchar();#includestdio.hvoidmain(){charch;intnum=0;ch=getchar();while(ch!='\n'){num++;ch=getchar();}printf(num=%d\n,num);}while((ch=getchar())!='\n')num++;项目项目分析:求某班所有学生某门课程成绩的平均值。分析:1.定义变量平均成绩ave总成绩sum成绩个数n成绩score2.循环体:sum=sum+score;3.循环语句的三要素:循环控制变量的初值循环控制条件循环变量的修改已知总人数(计数式)未知总人数(不定数式)计数式循环—已知人数(60人)项目分析:求某班所有学生某门课程成绩的平均值。分析:1.定义变量平均成绩ave总成绩sum成绩score2.循环体:输入scoresum=sum+score;3.循环语句的三要素:循环控制变量的初值循环控制条件循环变量的修改已知总人数(计数式)i=1;while(i=60)i++;#includestdio.hvoidmain(void){floatscore,sum=0,ave;inti=1;while(i=60){printf(请输入第%d个学生成绩:\n,i);scanf(%f,&score);sum+=score;i++;}ave=sum/60;printf(成绩平均值%.1f,ave);}项目分析:求某班所有学生某门课程成绩的平均值。分析:1.定义变量平均成绩ave总成绩sum学生人数n成绩score2.循环体:输入scoresum=sum+score;3.循环语句的三要素:循环控制变量的初值循环控制条件循环变量的修改已知总人数(计数式)i=1;while(i=n)i++;计数式循环—已知人数(n)#includestdio.hvoidmain(void){floatscore,sum=0,ave;intn,i=1;printf(请输入学生人数\n);scanf(%d,&n);while(i=n){printf(请输入第%d个学生成绩:\n,i);scanf(%f,&score);sum+=score;i++;}ave=sum/n;printf(成绩平均值%.1f,ave);}项目分析:求某班所有学生某门课程成绩的平均值。分析:1.定义变量平均成绩ave总成绩sum成绩个数n成绩score2.循环体:sum=sum+score;n++;3.循环语句的三要素:循环控制变量的初值循环控制条件循环变量的修改4.ave=sum/n;(n!=0)未知总人数(不定数式)scanf(%f,&score);while(score=0&&score=100)scanf(%f,&score);不定数式循环—未知人数#includestdio.hvoidmain(void){floatscore,sum=0,ave;intn=0;printf(请输入第1个学生成绩:\n);scanf(%f,&score);while(score=0&&score=100){sum+=score;n++;printf(请输入第%d个学生成绩\n,n+1);scanf(%f,&score);}if(n==0)printf(无学生成绩输入);else{ave=sum/n;printf(成绩平均值为:%f,ave);}}语句的形式:do{循环体}while(表达式);“直到型”循环语句#includestdio.hvoidmain(){inti=1;while(i=3){printf(“幸福!”);i++;}}2.do-while语句真(非零)表达式循环体假(零)#includestdio.hvoidmain(){inti=1;do{printf(“幸福!”);i++;}while(i=3);}语句的执行过程:2.do-while语句说明:先执行语句,后判断表达式。i=2;do{printf(“幸福!”);i++;}while(i1);第一次条件为真时,while,do-while等价;第一次条件为假时,二者不同。若一开始表达式值为假,循环体至少执行一次。i=2;while(i1){printf(“幸福!”);i++;}2.do-while语句【例】求∑n(n为1~100),并将结果打印出来.#includestdio.hmain(){inti=1,s=0;while(i100){s=s+i;i++;}printf(“%d”,s);}do{s=s+i;i++;}while(i100);2.do-while语句思考:用do-while语句实现1、求1~100中所有奇数的和。2、求1~100中所有偶数的和。3、求10!(累乘)2.do-while语句【例】统计从键盘输入的一行字符的个数。(以回车键作为输入结束标记)#includestdio.hvoidmain(){charch;intnum=0;ch=getchar();while(ch!='\n'){num++;ch=getchar();}printf(num=%d\n,num);}#includestdio.hvoidmain(){charch;intnum=0;ch=getchar();do{num++;ch=getchar();}while(ch!='\n');printf(num=%d\n,num);}do{ch=getchar();num++;}while(ch!='\n');do-while语句项目—计数式项目分析:求某班所有学生某门课程成绩的平均值。分析:1.定义变量平均成绩ave总成绩sum成绩个数n成绩score2.循环