c语言循环结构ppt

简介 相关

截图

c语言循环结构ppt

简介

这是c语言循环结构ppt,包括了while语句,do--while语句,goto语句,break语句和continue语句,循环的嵌套,循环中的几种变量,课外练习等内容,欢迎点击下载。

c语言循环结构ppt是由红软PPT免费下载网推荐的一款课件PPT类型的PowerPoint.

循环结构程序设计 C 语言程序设计 Lecture 5 循环结构 循环:就是在给定的条件成立时反复执行某一程序段,被反复执行的程序段称为循环体。 在C语言中可以用以下语句来实现循环: 1、用while语句; 2、用do--while语句; 3、用for语句; 4、用goto语句和if语句构成循环。 5.1 while语句 1、while 语句 常称为“当型”循环语句。 2 、while 语句的形式: while (表达式) 循环体;特点:先判断表达式,后执行语句。说明:循环体有可能一次也不执行循环体可为任意类型语句下列情况,退出while循环条件表达式不成立(为零)循环体内遇break,return,goto 无限循环: while(1) 循环体; 5.2 do--while语句 1、do--while语句 常称为“直到型”循环语句。 2、do--while的形式: do 循环体; while (表达式);特点:先执行,后判断。说明:至少执行一次循环体 do~while可转化成while结构 例(ch5_03.c)用do~while求1+2+3+4+5+···+100。注: 1. 循环体如果包含一个以上的语句,应该用花括号括起来,以复合语句形式出现。 2. 循环体中应有使循环趋于结束的语句。例:分析下列三个程序段 main() { int i,sum=0; i=1; do { sum=sum+i; i++; }while(i<=100); printf(“%d\n”,sum); } 5.3 for语句 可以用于循环次数确定的情况; 可以用于循环次数不确定的情况; 可实现while和do--while语句的所有功能。 2、for的形式: for (表达式1;表达式2;表达式3) 循环体 说明: for语句中expr1, expr2 ,expr3 类型任意,都可省略,但分号;不可省无限循环: for(;;) for语句可以转换成while结构 sum=0; for(i=1;i<=100;i++) sum=sum+i; 它相当于以下语句: i=1; while (i<=100) { sum=sum+i; i++; } 3、for语句中表达式的省略(1)for语句一般形式中的“表达式1”可以省略; 如: sum=0;i=1; for ( ; i<=100;i++) sum=sum+i; (2)表达式2省略,即不判断循环条件,循环无终止地进行下去; 如: for(sum=0,i=1;;i++) { sum=sum+i; } (3)表达式3也可以省略,但此时保证循环能正常结束。 如:for(sum=0,i=1;i<=100;) { sum=sum+i; i++; } (4) 可以省略表达式1和表达式3,只有表达式2。 如:i=1; sum=0; i=1;sum=0; for (;i<=100;) while (i<=100) { sum=sum+i; { sum=sum+i; i++; i++; } } (5)三个表达式都可省略, 如: for ( ; ; ) 循环体; 相当于 while (1) 循环体; 即不设初值,不判断条件,循环变量不增值。无终止地执行循环体。 如: sum=0,i=1; for(;;) { if(i>100) break; sum=sum+i; i++; } (6)循环体为空语句 对for语句,循环体为空语句的一般形式为: for (表达式1;表达式2;表达式3) ; 如:for(sum=0,i=1;i<=100;sum+=i, i++) ; 又如: 要在显示器上复制输入的字符,输入的字符为‘.’时, 结束循环。 while(putchar(getchar( ) )!=’.’ ) ; 循环终止条件的种类: 1.关系表达式: 如前几例 2.逻辑表达式: for (; a>b && x0;j--) /*输出i-1到1*/ printf(“%d”, j); printf(“\n”); } } 5.7 循环程序设计的问题 写循环,先要发现循环。注意计算中的重复性动作,引进循环可能统一描述和处理。 重复动作的常见例子: 累积一批可按规律算出的数据(如累加等); 反复从一个结果算出下一结果(递推等,见教材P71例5.9); 对一批数据做同样的加工处理;等。写循环结构时要考虑和解决的问题:循环涉及哪些变量,引进什么临时性变量? 这些变量在循环正式开始前应给什么初值?循环如何开始? 每次循环中变量的值应如何改变? 什么情况下继续循环(什么情况下终止)? 循环终止后如何得到所需结果?循环中的几种变量 循环中常出现几类变量,了解这些有助于思考和分析。这也是写循环程序的经验总结。 1)循环控制变量(循环变量):循环前设初值,循环递增/递减,达到/超过界限时循环结束。控制循环的进行/结束。 for中常有这类变量。 for(n = 0; n < 10; n++)...... for(n = 2; n < 52; n += 4) ...... 2)累积变量:循环中常用+=或*=等更新。初值常用运算的单位元(加用0;乘用1为初值)。循环结束时变量终值被作为循环计算结果。 3)递推变量:前两类变量的推广形式。复杂循环常用几个协同的变量,每次由一个/几个变量推出一个新值,其余依次更新。 对变量x1、x2、x3,循环体可能有序列: x1 = x0...; x2 = x1...; x3 = ... x1 ... x2 ...; 本章重点三种循环语句while, do---while和for 建立循环通常有以下情况: 1. 给定次数, for比较适用 for(i=1;i<100;i++) 2. 给定条件, while比较适用 while((x+y)‘a’ &&c <‘z’)||(c>‘A’&& c<‘Z’) 本章作业求23+24+…+210之和。输入两个正整数a和b,其中ab) { t=a; a=b; b=t; } for(x=a;x<=b;x+=2) if(x%2) printf("%4d",x+1); else printf("%4d",x); } 3. main() { int a,n,s; s=0,n=0; for(a=1;;a++) { n++; s+=a; if(s>1000) break; } printf("s=%d,n=%d",s,n); } 5. main() { int i,n=0; float score[30],aver=0.0; for(i=0;i<30;i++) { aa: scanf("%f",&score[i]); if(score[i]>100||score[i]<0) { printf("Error! "); goto aa; } aver+=score[i]; } aver=aver/30; for(i=0;i<30;i++) if(score[i]>aver) n++; printf("aver=%f,n=%d\n",aver,n); } 7. main() { int i; long n=1; for(i=1;i<=10;i++) { n=n*5; printf(“%0d\n”,n); } } 5.8 程序举例 main() { float a,b,h,n1,n2,s=0; int i; printf(“请输入积分限a和b:”); scanf(“%f%f”,&a,&b); h=(b-a)/1000; for(i=0;i<1000;i++) { n1=4-(a+i*h)*(a+i*h); n2=4-(a+(i+1)*h)*(a+(i+1)*h); s+=(n1+n2)*h/2; } printf(“s=%10.2f\n”,s); } [例] 猜数游戏的最简化版。 #include #define GOAL 39 main() { int i; printf(“Please input a integer number:\n"); do { scanf("%d",&i); if(i>GOAL) printf("%d is too big,input again.\n",i); else if(i #include main() { int i; int GOAL,num=0; printf("Please input a number from 0 to 99, or -1 to exit:\n"); GOAL=random(100); /*产生0到99的随机数*/ do { scanf("%d",&i); if(i==-1) { printf("\nExit game!"); break; } num++; if(i>GOAL) printf("%d is too big, input again.\n",i); else if(iE, W-->A.非字母字符忽略。思路: 1.建立循环, 循环结束以输入回车符为准 while (c=getchar()!=’\n’) 2. 判断输入是否是字符,否则忽略 if ((c>=’a’ && c<=’z’) || (c>=’A’ && c<=’Z’)) 3.变成其后的第四个字母 c=c+4; 4. 若变换后超出z时,要轮回. If ((c>’Z’ && c<‘a’)||(c>’z’)) c=c-26 [例] 输入若干数字,-1为输入结束标志,计算它们的平均数。 [例] 汽车里程表上的读数是95859,7小时之后里程表的读数是一个对称数(最大是5位数),问汽车的速度(是一个整数)。 解题思路: 检查所有的在95859到99999之间的对称数,如果它与95859的差能被7整除,则商是速度。 /* 第一种算法*/ 5. 9 课堂练习 百钱买百鸡:鸡翁1,钱值5; 鸡母1,钱值3;鸡 雏3,钱值1;何以百钱买百鸡? main() { int x,y,z; for (x=1 to 20) for (y=1 to 33) if ((x*5+y*3+(100-x-y)/3.0)==100) printf(“x=%d,y=%d,z=%d”,x,y,100-x-y); } 打印出100到200之间所有的素数 #include “math.h” main() { int n,m, i, k; for (n=100;n<=200;n++) { k=sqrt(n); for (i=2;i<=k;i++) if ((n % i)==0) break; if (i=k+1) printf(“%d prime number\n”,m); else printf(“%d not a prime\n”,m); } 课外练习一、每个苹果0.8元,第一天买两个苹果。从第二天开始,每天买前一天的2倍,当每天购买苹果的数大于100时,则停止. 求平均每天花多少钱? 二、输入一行字符,回车为结束,分别统计出其中的英文字母,空格,数字和其它字符的个数。oZv红软基地

展开

同类推荐

热门PPT

相关PPT