C语言第06章 循环结构程序设计.ppt_第1页
C语言第06章 循环结构程序设计.ppt_第2页
C语言第06章 循环结构程序设计.ppt_第3页
C语言第06章 循环结构程序设计.ppt_第4页
C语言第06章 循环结构程序设计.ppt_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、复习:if语句和switch语句 常见的错误: If语句: #includestdio.h main() char c; c=getchar(); if(a=c=g) printf(yes); else printf(no); ,if(c=g),main() int x; printf(please input a number:); scanf(“%d”,x); /*给x赋值*/ if(x0); printf(“x is a positive number.n“x); else printf(“x is a nagative number.n“,x); if(x%2=0) printf(“x

2、 is a even number.n“,x); else printf(“x is a odd number.n“,x);,四处错误:,main() int score,n; printf(please enter the score:); scanf(%d, ,编程实现如下功能:输入一个数,判断它是奇数还是偶数,如果是奇数则进一步判断它是否为5的倍数。,if语句的简单应用,程序:,main( ) int x; scanf (%d, ,switch语句的简单应用,编写程序实现如下功能:已知x=100,y=15,要求从键盘输入一个算术运算符(+、-、* 或 / ),并根据输入的运算符对x和y进

3、行指定的算术运算。,思路: 设x和y为float型变量并赋初值; 输入的运算符op为char型变量; 根据op的值(为+、-、*、/)进行x和y的相加、相减、相乘、相除运算(选择分支); 还要考虑到输入字符不是+、-、* 或 / 时的情况,#include stdio.h main( ) float x=100,y=15,z; char op; op=getchar( ); switch (op) case +: z=x+y; break; case -: z=x-y; break; case *: z=x*y; break; case /: z=x/y; break; default: z=

4、0; if(int)z!=0) printf(“%7.2f%c%7.2f=%fn,x,op,y,z); else printf (%c is not an operatorn,op); ,实型数通常不使用z=0或z!=0的比较 可用if(int)z) 代替,第六章 循环控制,在C语言中常用以下语句来实现循环结构: 1. while 语句实现当型循环结构。 2. dowhile语句实现直到型结构。 3. for语句也是实现当型循环结构。4. goto和if语句构成循环不 提 倡 (自学),问题:写程序求s=1+2+3+4+5+6的和,并将结果输出到屏幕。,main() int a,b,c,d,e

5、; a=1;b=2; c=3;d=4;e=5;f=6; printf(%d,a+b+c+d+e+f); ,【例1】编写程序,求100个自然数的和 即: s=1+2+3+ +100,思路:寻找加数与求和的规律,加数i从1变到100,每循环一次,使i增1,直到i的值超过100。i的初值设为1。 求和设变量 sum 存放和,循环求sum=sum+i,直至i超过100。,6.2 while语句,一般形式如下: while (表达式) 语句,1+2+3+4+5+6的和 main() int i=1,sum=0; while(i=6) sum=sum+i; i=i+1; /*i+;*/ printf(%d

6、,sum); ,6-1.c,注意:1.内嵌语句可以是复合语句。 2.在循环体中要使循环变量变化的语句。,求1+2+n的和,输入,循环体,输出,表达式(条件),求1+2+3+ +n的和,main() int i=1,sum=0,n; scanf(“%d”, ,i=n,main() int i,n; long s=1; i=1; scanf(“%d”,例4.2 求整数n的阶乘。 n!=1*2*3*n,6-2.c,s 为什么不赋0?,求m=1!+2!+n!,main() int i,n; long s=1; i=1; scanf(“%d”,main() int i,n; long s=1,m=0;

7、i=1; scanf(“%d”,试编程计算:1,1+2,1+2+3,1+2+3+10各项的乘积,main() int i, j,x=1,sum=0; for(j=1;j=10;j+) for(i=1;i=j;i+) sum=sum+i; x=x*sum; sum=0; printf(%d,x); ,求s=1-1/3+1/5-前10项之和.,:,例4.3,分析: 1)分母特点,奇数i 2)分数项1/i 3)正负项 s=-s 4)加数项m=s*1/i 5)求和:sum=sum+m 6)循环条件n=10,#include “stdio.h main() int i=1,s=1,n=1; float

8、sum=0,m=1; while(n=10) m=1.0/i*s ; sum=sum+m; i=i+2; s=-s;n+; printf(n%f, sum);,求s=1-1/3+1/5-前10项之和.,求s=1-1/3+1/5-前q项之和,#include “stdio.h main() int i=1,s=1,n,q; float sum=0,m=1; scanf(“%d”,4.2 死循环,main() while(1) printf(nHELLO); /*跳出“死循环”的方法:Ctrl+Break组合键。*/,思考:如下程序是否“死循环”? main() while(a) printf(n

9、HELLO); ,6.3 do while语句,一般形式: do 语句 while (表达式); 执行过程:先执行内嵌语句,然后判断表达式的值,值为真,重新执行循环体的内嵌语句,直到表达式的值为假,就结束循环。,6.3 do while语句,例如:求1+2+3+100的和。 (6-4.c) 算法设计:,main() int i,sum=0; i=1; printf(“n%d”,sum);,main() int i,sum=0; i=1; while(i=100) sum=sum+i; i+; printf(“n%d”,sum);,do sum=sum+i; i+; while(i=100);,

10、6.4 for语句,一般形式: for (表达式1;表达式2;表达式3) 语 句,表达式1,表达式2,语句,表达式3,真,假,for语句可改写为while结构: 表达式1; while (表达式2) 语句 表达式3;,6.4 for语句例如:求1+2+3+100的和。 (6_5.c),main() int i,sum; sum=0; for (i=1;i=100;i+) sum=sum+i; printf(nsum=%d,sum); ,for语句最常用的形式: for (循环变量赋初值;循环条件;循环变量增值) 语 句,main() int i,sum=0; i=1; while(i=100)

11、 sum=sum+i; i+; printf(“n%d”,sum);,例4.2 求整数n的阶乘。 main() int i,n; long s=1; i=1; scanf(“%d”,main() int i,n; long s=1; scanf(“%d”,6.4 for语句,说明: 1)表达式1可以省略,for之前对循环变量赋初值. i=1; for( ; i=100; i+) sum=sum+i; 2)若表达式2省略,则不判断循环条件,为死循环 for(i=1; ; i+) 相当于: i=1; sum=sum+i; while(1) sum=sum+i;i=i+1 3)若省略表达式1和表达式

12、3,只有表达式2,则相当于while语句. i=1; for( ;i=100; ) sum=sum+i; i=i+1;,6.6 循环的嵌套,一个循环体内又包含一个或多个循环体,称为循环的嵌套。 三种循环可以互相嵌套。 例如: 输出如图所示的图形,* * * * *,分析:输出一行 for(j=1;j=5;j+) printf(“*”),#includestdio.h main() int i,j; for(i=1;i=5;i+) for(j=1;j=i;j+) printf(*); printf(n); ,* * * * *,6.7 break和continue语句,例如:将100200之间的

13、不能被3整除的数输出。 (6_7) main( ) int n; for(n=100;n=200;n+) if(n%3=0) continue; printf(%d ,n); printf(n); /*continue 跳过循环体中下面尚未执行的语句,直接进行下一轮的“循环条件”的判断*/,for(n=100;n=200;n+) if(n%3!=0) printf(“%d”,n);,6.7 break和continue语句,例题4.8 求85的最小因数。 main() int i=1; for(i=2;i85;i+) if(85%i=0) break; printf(%d,i); /* bre

14、ak 使程序流程跳出循环结构,而执行循环结构后面的语句*/,main() int i,a; long t,s=0; scanf(“%d”,main() int i,a;long t,s=0; scanf(“%d”,求a+aa+aaa+aaaaaaa的值,题目要求:对于任意给定的正整数m,求这个数的各位数字之和,并存入变量sum中,并输出之。例如:如果m为123,则sum为6。 (若程序已经定义的变量不够用,考生可以补充定义其它变量). 题目已给出的框架如下: #include stdio.h main( ) int m,sum; ,分析:m=123 123%10=3 12%10=2 1%10=

15、1 sum=1+2+3,m=m/10 sum+=m%10,循环条件:?,#include stdio.h main( ) int m,sum=0; printf(%d,sum); ,题目要求:对于任意给定的正整数m,求这个数的各位数字之和,并存入变量sum中,并输出之。例如:如果m为123,则sum为6。,scanf(%d,#include math.h” main() int m,i,k,flag=1; printf(请输入一个数: nn); scanf(%d,从键盘输入一个数判断它是否是素数(6_7),求100200之间的素数,k=sqrt(m); for(i=2;i=k;i+),#inc

16、lude math.h main() int m,i,k,flag=1; for(m=100;m=200;m+) k=sqrt(m); for(i=2;i=k;i+) if(m%i=0) flag=0; break; if(flag) printf(t%d ,m); ,如下程序的输出结果是_。 #include main() float x=2.0,y; if(x0.0) y=0.0; else if(x10.0) y=1.0/x; else y=1.0; printf(%fn,y); ,A)0.000000 B)0.250000 C)0.500000 D)1.000000,以下程序的输出结果

17、是_。 #include main() int a=4,b=5,c=0,d; d=!a A)1 B)0 C)非0的数 D)-1,有以下程序的输出结果是_。 #include main() int a=15,b=21,m=0; switch(a%3) case 0:m+;break; case 1:m+; switch(b%2) default:m+; case 0:m+;break; printf(%dn,m); ,A)1 B)2 C)3 D)4,以下程序中,while循环的循环次数是_。 main() int i=0; while(i10) if(i1) continue; if(i=5)

18、break; i+; ,A)1 B)10 C)6 D)死循环,不能确定次数,输入rig#ht#,则下面程序段的执行结果是_。 #include main() char c; while (c=getchar ()!=#) putchar(c); (A)right (C)rig#ht (B)rig (D)rig#ht#,以下程序的运行结果是 。 main() int x=1,a=0,b=0; switch(a) case 0: case 1: +x; b+; case 2: b+; printf(x=%d,b=%d,x,b); ,自学:p117 例6.4 p124 6.9节中的程序举例 作业:p129: 6.1 6.3

温馨提示

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

最新文档

评论

0/150

提交评论