




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include”stdio.h” Int main() float x,y; scanf(“%f”, ,#include “stdio.h” Int main() int a,b,c,min,max; scanf(“%d%d%d”,#include”stdio.h” int main() int a,b,c; scanf(“%d%d%d”, ,#include void main() int i,sum; sum=0; for (i=1;i=100;i+) sum=sum+i; printf(“sum=%5dn“,sum); ,举例,求1100的累加和。,#include void main() int i,sum; for (sum=0,i=1;i=100;i+) sum=sum+i; printf(“sum=%5dn“,sum); ,#include void main() int i,sum; for (sum=0,i=1;i=100; sum=sum+i,i+); printf(“sum=%5dn“,sum); ,第 5 章,循环结构程序设计,求1+2!+3!.+20!,#include “stdio.h“ main() float n,s=0,t=1; for(n=1;n=20;n+) t = t* n; s = s+ t; printf(“1+2!+3!.+20!=%en“,s); 练习:1(12)(123)。(123。10) +2/3+3/5+,#include“stdio.h“ void main() int a,n,i,sum,jiashu; scanf(“%d,%d“, ,求a+aa+aaa+aaaa+aaa.aa(有n个a),主要内容,5.1 while语句 5.2 do-while语句 5.3 for语句 5.4 流程转向语句break和continue 5.5 循环嵌套 5.6 循环结构程序设计举例,思考,求1100的累加和。,分析,换一种思路:,首先设置一个累计器sum,其初值为0,利用sum += n来计算(n依次取1、2、100),只要解决以下3个问题即可: (1)将n的初值置为1; (2)每执行1次“sum += n;”后,n增1; (3)当n增到101时,停止计算。此时,sum的值就是1100的累计和。,sum=1+2+100;.,sum=sum+n;,循环的引入,格式,while (循环条件表达式) 循环体语句,P79,说明,1、循环体如果包含一个以上的语句,必须使用复合语句形式。 2、在循环体中,必须有使循环条件趋向于不满足(假)的语句。 3、先判断表达式,后执行语句。,功能,当表达式成立(表达式的值为非0值)时,执行while语句中的循 环体语句。,执行过程,5.1 while语句,?,sum=凵5050,举例,例5.1 求1100的累加和。 P71,#include void main() int i,sum; i=1; sum=0; while (i=100) sum=sum+i; i+; printf(“sum=%5dn“,sum); ,思考,1、如果去掉循环体中的大括号,执行过程将会怎样变化? 2、在循环体中,使循环条件趋向于不满足(假)的语句是哪条?,?,1 求150的累加和. 2 求1100的奇数和. 3 求1100的偶数和.,举例,例5.2 设s=123n,求s不大于400000时最大的n。 P72,#include int main( ) int n=1; long int s=1; while(s=400000) n=n+1; s=s*n; printf(“不大于400000时的最大n为:%dns值为:%ldn“,n-1,s); return 0; ,不大于400000时的最大n为:9 s值为:3628800,前n项的乘积,运行结果:,举例,例5.3 现有某班20名学生的C语言成绩,求该班学生的C语言的平均成绩。 P72,请输入学生成绩:23凵89凵67凵78凵94凵56凵34凵83凵90 凵67凵48凵72凵81凵65凵74凵87凵73凵67凵90凵98 20名学生的C语言平均成绩为:71.8,#include int main( ) float total=0,score,average; int i=1; printf(“请输入学生成绩:“); while(i=20) scanf(“%f“, ,total : 前i名学生的成绩的和 score : 每一名学生的成绩 average : 平均成绩,运行结果:,举例,例5.4 从键盘输入一个非负整数m,判断m是否是素数。 P73,素数(质数): 只能被1和它本身整除的数。,判别方法: 57:若256之间的每一个数都不能整除56,则57为素数,否则57不是素数。 m, k=m-1,i=2k : 若每一个 i 的值都不能整除m,则m为素数,否则m不是素数。,flag=0; k=m-1; i=2; while (i=k ,k=m-1; i=2; while (i=k+1) printf(“yes!”); else printf(“no!”);,#include “math.h“ #include “stdio.h“ int main() int m,flag=0,i=2; printf(“请输入一个非负整数:n“); scanf(“%d“, ,求两个非负整数m和n的最大公约数和最小公倍数。,#include int main( ) int m,n,t; printf(“请输入两个非负整数:“); scanf(“%d%d“, ,找m、n中较小数,找m、n中较大数,例5.5 (P74),格式,do 循环体语句 while (循环条件表达式);,P85,说明,1、循环体如果包含一个以上的语句,必须使用复合语句形式。 2、在循环体中,必须有使循环条件趋向于不满足(假)的语句。 3、先执行循环体语句,后判断表达式的值。,含义,执行do-while语句中的循环体语句,直到表达式的值为假(0)才跳出 循环。,执行过程,至少执行一次,5.2 do-while语句,举例,例5.6 求1100之间的奇数和。P76,#include void main() int i,sum; i=1; sum=0; do sum=sum+i; i+;i+; while (i=100); printf(“sum=%5dn“,sum); ,思考,1、如果去掉循环体中的大括号会怎样? 2、在循环体中,使循环条件趋向于不满足(假)的语句是哪条?,凵2500,运行结果:,举例,while和do-while循环的比较。,#include void main() int i,sum=0; scanf(“%d“, ,#include void main() int i,sum=0; scanf(“%d“, ,输入:1,输入:11,sum=55,sum=11,此程序的功能?,什么情况下两者结果相同?,格式,for (表达式1;表达式2;表达式3) 语句,P87,for (循环变量赋初值;循环条件;循环变量增值) 语句,执行过程,(1)先求解表达式1; (2)求解表达式2,若其值为真,则 执行循环体语句,然后执行第(3)步;若为假,则结束循环,转到第(5)步; (3)求解表达式3; (4)转向步骤(2); (5)循环结束,执行for语句下面的一个语句。,5.3 for语句,sum= 5050,举例,求1100的累加和。,#include void main() int i,sum; sum=0; for (i=1;i=100;i+) sum=sum+i; printf(“sum=%5dn“,sum); ,?,1 求155的累加和. 2 求1100的奇数和. 3 求1100的偶数和.,for (表达式1;表达式2;表达式3) 语句,说明,三个表达式都可以省略。,?,结果?,说明,1,i=1; for(; i=10;i+) sum=sum+i;,2,for (i=1; ;i+) sum=sum+i;,?,3,for (i=1;i=10 ;) sum=sum+i; i+; ,for(i=1; i=10;i+) sum=sum+i;,表达式1可以省略,但其后的分号不可以省略。,没有循环结束条件,构成了死循环,for(i=1; i=10;i+) sum=sum+i;,说明,4,5,for( ; ; ) sum=sum+i;,6,表达式1和表达式3可以是与循环变量无关的表达式。,for( ;i=10 ; ) sum=sum+i; i+; ,7,表达式2一般是关系表达式,也可以是数值或字符表达式。,while(i=10) sum=sum+i; i+ ; ,while (1) sum=sum+i;,表达式1和表达式3可以同时省略,此时等同于while语句。,for(sum=0,i=1;i=100,i+) sum=sum+i;,建议:for语句中只放与 循环控制有关的语句。,#include “stdio.h” void main() int i,j,k,n; printf(“water flowernumber is:“); for(n=100;n1000;n+) i=n/100;/*分解出百位*/ j=n/10%10;/*分解出十位*/ k=n%10;/*分解出个位*/ if(i*100+j*10+k=i*i*i+j*j*j+k*k*k) printf(“%5d“,n); printf(“n“); ,15313+53+33,称为水仙花数,判断所有三位数中水仙花数的个数。,举例,#include int main( ) float sum=0.0; int n; for(n=1;n=30;n+) sum=sum+(float)n/(float)(n+1); printf(“sum=%5.2fn“,sum); return 0; ,格式,表达式1,表达式2,表达式n,P79,说明,并不是在所有出现逗号的地方都组成逗号表达式如 int a,b,c; scanf(“%d%d%d“,含义,从左到右,依次计算各表达式的值,最后一个表达式的值即为 整个逗号表达式的值。,逗号运算符和逗号表达式,举例,例5.10 若a=5,求下列表达式及经过运算后a的值:P90,a=(3+2,7+8) a=2*5,a*3 (a=3*5,a*4),a+5,a+=10,结果:15,结果:10,结果:25,格式,while (表达式1) if (表达式2) break; ,举例, . sum=0; for (i=1;i5) break; sum=sum+i; printf(“sum=%5dn”,sum); .,while (表达式1) if (表达式2) conitue; ,结束整个循环,结束本次循环, . sum=0; for (i=1;i=10;i+) if (i=5) continue; sum=sum+i; printf(“sum=%5dn”,sum); .,5.4 break和continue语句,举例,例5.11 分析下面程序的运行结果。P90,结束整个循环,#include int main( ) int i=0,a=0; while(i20) if(i%10=0) break; else i+; i+=11;a+=i; printf(“%dn“,a); return 0; ,i i%10 第1次执行循环 0 0 条件表达式i%10=0成立,执行break语句,跳出循环,11,运行结果:,举例,例5.12 输出100以内能被7整除的最大数。 P91,n n%7 第1次执行循环 100 2 第2次执行循环 99 1 第3次执行循环 98 0 第4次执行循环时条件表达式n%7=0成立,执行break语句,跳出循环,100以内能被7整除的最大数为:98,运行结果:,举例,例5.13 分析下面程序的运行结果。 P92,结束本次循环,#include “stdio.h“ int main( ) int i=0,s=0; do if(i%2) /n为奇数 i+; continue; i+; s+=i; while(i7); printf(“%dn“,s); return 0; ,i i%2 i+ s continue 是否执行 第1次执行循环 0 0 1 1 否 第2次执行循环 1 1 2 1 是 第3次执行循环 2 0 3 4 否 第4次执行循环 3 1 4 4 是 第5次执行循环 4 0 5 9 否 第6次执行循环 5 1 6 9 是 第7次执行循环 6 0 7 16 否 此时条件表达式17不成立,结束循环,16,运行结果:,#include void main() int i; for(i=1;i3) break; if(i%2) printf(“*“); else continue; printf(“#“); printf(“$n“); ,写出以下程序的输出结果:,*#*#$,抢答题,举例,例5.14 把100200之间的能被13整除的数输出。 P93,#include “stdio.h“ int main( ) int n; for(n=100;n=200;n+) if(n%13!=0) continue; else printf(“ %d “,n); printf(“n“); return 0; ,104 117 130 143 156 169 182 195,说明:当n不能被13整除时,执行continue语句,结束本次循环(即跳过printf函数语句),只有n能被13整除时才执行printf函数。,结束本次循环,运行结果:,举例,例5.16 打印乘法口诀表。 P94,#include “stdio.h“ int main( ) int i,j,result; for(i=1;i=9;i+) for(j=1;j=9;j+) result=i*j; /计算i行j列上的元素值 printf(“%d*%d=%-3dt“,i,j,result); printf(“n“); return 0; ,result i=1, j=1 1*1 j=2 1*2 j=3 1*3 j=9 1*9 i=2, j=1 2*1 j=2 2*2 j=9 2*9 i=9, j=1 9*1 j=2 9*2 j=9 9*9,1*1=1 1*2=2 1*9=9 2*1=2 2*2=4 2*9=18 9*1=9 9*2=18 9*9=81,5.5 循环嵌套,1 2 4 3 6 9 4 8 12 16,#include void main() int i,j; for (i=1;i=4;i+) for (j=1;j=i;j+) printf(“%4d”,i*j); printf(“n”); ,思考1,#include void main() int i,j; for (i=1;i=4;i+) for (j=1;j=5-i;j+) printf(“%4d”,i*j); printf(“n”); ,思考2,1 2 3 4 2 4 6 3 6 4,#include void main() int i,j; for (i=1;i=4;i+) for (j=1;j=4-i;j+) printf(“%4c”, ); for (j=5-i;j=4;j+) printf(“%4d”,i*j); printf(“n”); ,思考3,4 6 8 6 9 12 4 8 12 16,#include void main() int i,j; for (i=1;i=4;i+) for (j=1;j=i-1;j+) printf(“%4d”, ); for (j=i;j=4;j+) printf(“%4d”,i*j); printf(“n”); ,思考4,1 2 3 4 4 6 8 9 12 16,举例,例5.17 求Fibonacci数列的前40个数。 按每行4个进行输出。,#include “stdio.h“ int main( ) int n; long int f1,f2; f1=1; f2=1; printf(“%10d%10d“,f1,f2); for(n=1;n=19;n+) if(n%2=0) printf(“n“); f1=f1+f2; f2=f2+f1; printf(“%10d%10d“,f1,f2); printf(“n“); return 0; ,特点:第1、2个数为1、1。从第三个数开始,该数是其前面两个数之和。 f1=1 (n=1) f2=1 (n=2) fn=fn-1+fn-2 (n=3),P96,1 1 2 3 5 8 13 21 34 55 89 144 ,5.8 程序举例,i:第i项 n:第i项的分母 t:第i项的值 sum:和,举例,利用公式:sum=1+1/3+1/5+1/7+1/9 求前10项的和。,#include #include void main() int s,i,n; float t,sum; i=0;n=1,sum=0,t=1.0; while(i10) sum=sum+t; n=n+2; t=1.0/n; i+; printf(“sum=%.2fn“,sum); ,运行结果:,sum=2.13,举例,利用公式:sum=1-3+5-7+9-11求前10项的和。,#include #include void main() int s,i,sum,t,n; i=0;n=1,sum=0,t=1,s=1; while(i10) sum=sum+t; n=n+2; s=-s; t=s*n; i+; printf(“sum=%dn“,sum); ,s:变化的符号 i:第i项 n:第i项的绝对值 t:第i项的值 sum:和,运行结果:,sum=-10,举例,利用公式:/4=1-1/3+1/5-1/7+ 求 的近似值,直到某一项的绝对值小于10-6为止。,#include #include void main() int s; float n,t,pi; t=1;pi=0;n=1.0;s=1; while(fabs(t)1e-6) pi=pi+t; n=n+2; s=-s; t=s/n; pi=pi*4; printf(“pi=%10.6fn“,pi); ,思考:使用那一种循环控制语句?,pi=1-1/3+ 输出4* pi s=1(-1) n=1,3,5,7 t=s/n,运行结果:,sum=3.141594,举例,输出 101200之间的全部素数。每行输出10个。,#include #include void main() int m,k,i,n=0; for(m=101;m=k+1) printf(“%d “,m); n=n+1; if(n%10=0) printf(“n“); printf(“n“); ,正常结束循环,m不是素数,例5.18 用双重for循环打印出下列图形。P97 * *
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业废水处理实验设计与效果评估
- 工业机器人技术在教学与培训中的应用
- 工业控制系统数据安全防护
- 工业污染控制与绿色生产模式
- 工业机器人产品技术介绍与市场前景
- 工业污染防治的科技创新方案
- 工业节能与绿色制造技术探讨
- 工业设计中的创新技术与设计理念研究
- 工业设计与智能产品开发策略探讨
- 工业遗存建筑的再生利用研究
- 消化道穿孔患者的护理课件
- 作物栽培学智慧树知到期末考试答案章节答案2024年中国农业大学
- 汽车修理厂应急预案汽修厂安全生产事故应急救援综合预案2019-2020新标准完整版实施文件
- 建筑智能化系统工程挂靠协议
- 司法鉴定的奥秘智慧树知到期末考试答案2024年
- 2024春期国开电大专本科《教育学》在线形考 (形考论坛4)试题及答案
- MOOC 高速铁路运营与维护-西南交通大学 中国大学慕课答案
- 11-轮藻植物门课件
- (2024年)健康评估教学教案心电图检查教案
- 方法模型:展开图、还原立体图形
- 2023年广东省中考生物试卷(含答案)
评论
0/150
提交评论