项目5 第四讲 for循环语句_第1页
项目5 第四讲 for循环语句_第2页
项目5 第四讲 for循环语句_第3页
项目5 第四讲 for循环语句_第4页
项目5 第四讲 for循环语句_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目五循环结构程序设计第四讲for循环语句C语言程序设计任务驱动式教程循环结构控制语句循环的概述while循环语句do-while循环语句for循环语句目录循环应用问题导入国外某男子殴打了自己的女朋友,并导致女友受伤,法官除判处他监禁和提供金钱补偿外,还处罚他抄写5000遍道歉词:

“Boydonothitgirls.”for(i=0;i<5000;i++)

{

printf(“Boysdonothitgirls.”)

}for循环语句任务四【一般格式】

【流程图】for(表达式1;表达式2;表达式3){

循环体;}表达式之间用;分隔表达式2?循环体真(非0)表达式1表达式3假(0)for循环语句任务四循环变量赋初值循环条件表达式循环变量变化语句for(表达式1;表达式2;表达式3)

说明for循环语句-示例任务四

应用利用for语句计算大赛选手总分。(有10位评委)#include<stdio.h>voidmain(){

double

score,sum=0;

inti;

for(i=1;i<=10;i++)

{printf("请第%d位评委亮分:",i);scanf("%lf",&score);sum=sum+score;}printf(“该选手的总分为:%.2lf.\n",sum);}#include<stdio.h>voidmain(){

double

score,sum=0.0;

inti=1;

do{printf("请第%d位评委亮分:",i);scanf("%lf",&score);sum=sum+score;i++;

}while(i<=10)printf(“该选手的总分为:%.2lf.\n",sum);}for循环语句-示例任务四

应用1、求1-100以内的奇数之和;2、求100-200以内的奇数之和.#include<stdio.h>intmain(){inti;intsum=0;for(i=1;i<100;i+=2)//i+=2;等价于i=i+2;{sum=sum+i;}printf("sum=%d\n",sum);return0;}#include<stdio.h>intmain(){inti;intsum=0;for(i=101;i<=200;i+=2)//i+=2;等价于i=i+2;{sum=sum+i;}printf("sum=%d\n",sum);return0;}for循环语句-示例任务四相传古代印度国王舍罕要褒奖他的聪明能干的宰相达依尔(国际象棋的发明者),问他需要什么,达依尔回答说:“国王只要在国际象棋的棋盘上的第一个格子上放一粒米,第二个格子上放上2粒,第三个格子上放上4粒,依次类推,每格是前一格的2倍,一直放到64格,我就感恩不尽了”。国王答应了,结果全印度的粮食用完还是不够。国王纳闷,怎么也算不清这笔账。请用C语言编程来算一下。(1m3小麦大约1.42×108粒)如何实现循环结构呢?for语句for循环语句-示例任务四【算法分析】第一个格子上放1粒米,第二个格子上放上2粒,第三个格子上放上4粒,依次类推,每格是前一格的2倍,一直放到64格,共有多少粒米?用变量sum来存储一共所需的粒米第1格用得粒米是1

第2格是前一个的2倍则是21

第3格是第2格的2倍则是22

依次递推,第64格的粒米数是264

所以sum=1+2+22+23+24+…+264。可以看出每个数列项都是前一个的2倍,因此,可以设置当前格子的粒米数量用t表示,则下一格小麦数量t等于前一格小麦数量t的2倍,即t=t*2。for循环语句-示例任务四

应用使用for语句,编程计算:sum=1+2+22+23+24+…+264?【说明】“doublesum=0,t=1;”语句中定义了三个双精度的变量。sum用来存放所需米的总颗粒数,初值定义为0t用来表示当前这一格所需的米数量,初值是1for语句中含有三部分:“n=1”是循环控制变量,表示第几个格子,初值是第一格格子“n<=64”是循环条件,指循环到第64格时结束循环“n++”是循环控制变量,指每次执行完循环体后就将控制变量n加1。for循环语句-示例任务四

应用使用for语句,编程计算:sum=1+2+22+23+24+…+264?【说明】循环体还有两条语句:语句“sum+=t;”即“sum=sum+t”表示将当前格子的米数累加至sum。“t*=2;”即“t=t*2”,计算下一个格子的小麦数量。流程图for循环语句-示例任务四#include"stdio.h"main(){int____;doublesum=_____,t=_____;for(______;_______;______){

sum=______;

_______;}printf("米的总颗粒数sum=%e\n",sum);

}源程序使用for语句,编程计算:sum=1+2+22+23+24+…+264?for循环语句-示例任务四#include"stdio.h"main(){intn;doublesum=0,t=1;for(n=1;n<=64;n++){

sum=sum+t;

t=t*2;}printf("米的总颗粒数sum=%e\n",sum);

}源程序使用for语句,编程计算:sum=1+2+22+23+24+…+264?for循环语句-示例任务四#include"stdio.h"main(){intn;doublesum=0,t=1;for(n=1;n<=64;n++){sum+=t;t*=2;}printf("米的总颗粒数sum=%e\n",sum);

}源程序1使用for语句,编程计算:sum=1+2+22+23+24+…+264?for循环语句-示例任务四#include"stdio.h"main(){inti,n;doublesum=0,t=1;printf("第几格的米:");

scanf("%d",&n);

for(i=1;i<=n;i++)

{sum+=t;t*=2;

}printf("米的总颗粒数sum=%e\n",sum);

}源程序2使用for语句,编程计算:sum=1+2+22+23+24+…+264?for循环语句-示例任务四多数情况下,for循环结构可以用等价的while循环表示。for语句的一般形式为:for(表达式1;表达式2;表达式3) 语句;等价于:表达式1;while(表达式2){ 语句; 表达式3;}

说明源程序与for语句等价的while语句形式for循环语句-说明任务四

说明在for语句中省略表达式for循环中的“表达式1”“表达式2”和“表达式3”都是可选项,即可以缺省,但表达式之间的分号“;”绝对不能缺省。(1)省略“表达式1”,即不设置初值,语句格式为:for(;表达式2;表达式3)应该注意的是,由于省略了“表达式1”,没有对循环变量赋初值,因此,为了能正常执行循环,应在for语句之前给循环变量赋以初值。即“表达式1”可以写在for语句结构的外面。for循环语句-说明任务四源程序省略“表达式1”:例如:n=1;for(;n<100;n++) 语句;它等价于for(n=1;n<100;n++) 语句;一般使用这种格式的原因是:循环控制变量的初值不是已知常量,而是需要通过前面语句的执行计算得到。for循环语句-说明任务四for(表达式1;;表达式3)等价于:while(1)例如:for(i=1;;i+=2) s=s+i;循环无终止地进行,i的值不断加大,s的值也不断累加。源程序(2)省略“表达式2”,表示不用判断循环条件是否成立,循环条件总是满足的,则如果不做其他处理,便成了死循环。语句格式为:for循环语句-说明任务四源程序(3)省略“表达式3”,则不对循环控制变量进行操作,这时可在语句体中加入修改循环控制变量的语句。语句格式为:for(表达式1;表达式2;)C语言允许在循环体内改变循环控制变量的值,这在某些程序设计中很有用。一般当循环控制变量呈非规则变化,并且在循环体中有更新循环控制变量的语句时使用。例如:for(n=1;n<=100;){ … n=4*n-1; …}循环控制变量的变化为:1,3,11,43,…for循环语句-说明任务四源程序(4)省略3个表达式,语句格式为:for(;;)这是一个无限循环语句,与while(1)的功能相同,一般处理方法是:在循环体内的适当位置,利用条件表达式与break语句的配合中断循环,即当满足条件时,用break语句跳出for循环。例如:for(;;){ … if(x==0)break; …}表示当x等于0时,使用break语句退出循环。for循环语句-说明任务四

说明源程序在for语句中省略语句for语句的循环体可以是空语句,表示当循环条件满足时进行空操作。一般用于延时处理。语句格式为:for(表达式1;表达式2;表达式3);例如:for(i=1;i<=20000;i++);表示循环变量空循环了20000次,占用了一定的时间,起到了延长时间的效果。for循环语句-说明任务四

说明源程序在for语句中逗号表达式的应用在for语句中,表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式,语句格式为:for(逗号表达式1;表达式2;逗号表达式3)例如:for(n=1,m=100;n<m;n++,m--) s=n+m;//表达式1同时为n和m赋初值,表达式3同时改变n和m的值。表示循环可以有多个控制变量,但是,逗号表达式可以与循环变量有关,也可以与循环变量无关。例如:for(s=0,i=1;i<=100;i++) s=s+i;s的赋初值可以写在for语句之前,也可以写在表达式1中。for循环语句-示例任务四

应用请分别计算100-200以内的奇数之和与偶数之和。#include<stdio.h>intmain(){inti;

intsum1=0,sum2=0;

for(i=100;i<200;){

if(i%2==0){sum2=sum2+i;

i++;

}else

{sum1=sum1+i;i++;}}printf("sum1=%d,sum2=%d\n",sum1,sum2);

return0;}for循环语句-示例任务四

应用利用for语句计算1+1/2+1/3+…+1/n。【提示】⑴n的值在程序执行时通过键盘输入⑵各变量的数据类型如何设计?⑶若“intn=2;”,“1/n”的值是多少?“1.0/n”又是多少?for循环语句-示例任务四#include<stdio.h>voidmain(){int

____;

double

______;printf("请输入n的值:",i);scanf("%d",&n);

for(____;______;____) {sum=_______________;}printf("sum:%.2lf.\n",sum);}源程序利用for语句计算1+1/2+1/3+…+1/n。for循环语句-示例任务四#include<stdio.h>voidmain(){inti,n;

doublesum=0;printf("请输入n的值:",i);scanf("%d",&n);

for(i=1;i<=n+1;i++) {sum=sum+1/i;}printf("sum:%.2lf.\n",sum);}源程序利用for语句计算1+1/2+1/3+…+1/n。技能实训编写程序,输出1~1000之间所有的完全平方数。练一练技能实训任务四例如:2*2=4,3*3=9,4*4=16,其中4、9、16就是完全平方数。平方跟:sqrt()技能实训编写程序,输出1~1000之间所有的完全平方数。练一练技能实训任务四#include<stdio.h>#include__________//要用sqrt()intmain(){doublei;

//循环变量

doublex;

//存储每个数的二次方根

for(i=1;i<_____;____){x________;if(_______)printf("%f\t",__________);

//\t是跳到下一个Tab位置

}printf("\n");return0;}技能实训编写程序,输出1~1000之间所有的完全平方数。练一练技能实训任务四#include<stdio.h>#include<math.h>//要用sqrt()intmain(){inti;//循环变量

intx;//存储每个数的二次方根

for(i=1;i<1000;++i){x=sqrt(i);

if(x*x==i)printf("%d\t",i);//\t是跳到下一个Tab位置

}printf("\n");return0;}技能实训编写程序,输出1~1000之间所有的完全平方数。练一练技能实训任务四#include<stdio.h>#include<math.h>//要用sqrt

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论