c语言当型循环结构例题,C语言第06章 循环结构程序设计.ppt

《C语言第06章 循环结构程序设计.ppt》由会员分享,可在线阅读,更多相关《C语言第06章 循环结构程序设计.ppt(45页珍藏版)》请在人人文库网上搜索。

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) contin。

18、ue; if(i=5) 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 。

19、6.9节中的程序举例 作业:p129: 6.1 6.3 6.5 试验三: 1-3,11(必做) 其它题选做 (下次课交),下次课考试!,思考题1:阅读下面两个程序,分别输入1和11两个数据,写出程序的运行结果。,求a+aa+aaa+aaaaaaa的值,i=1 时 t=a; i=2 t=aa=t*10+a i=3 t=aaa=t*10+a,main() int i , a; long t,s=0; scanf(“%d”,6-3.c,思考题3:求1!+2!+3!+n!,main() int i; long s=1; scanf(“%d”,main() int i; long s=1,sum=0; scanf(“%d。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值