第五章循环结构

合集下载

VB程序循环结构、列表框和组合框-文档资料

VB程序循环结构、列表框和组合框-文档资料

循环变量 = 初值

循环变量 ≥ 终值 ?



执行循环体

N
循环变量 = 循环变量 + 步长
Y Y
循环变量 ≤ 终值 ?
执行循环体
N
循环变量 = 循环变量 + 步长
步长为负
步长为正
4
注意事项:
(1)“循环变量” 必须为数值型;
(2)“初值”、“终值”为数值表达式,若值不是整
数,系统会自动取整;
(3)“步长”为数值表达式,可为正数,也可为负数,
End Sub
33
Private Sub Form_Click() Dim e As Double Dim i As Integer Dim fact As Double 按Di下m列re公su式lt计A算s :Long e = 0: i = 1: fact = 1: result = 1 eD=o1+1/1!+1/2!+1/3!+…+1/n!+… 使1fea/=cnt!e=小+1于f/a0c.rt0e0s0u0lt01 result = result * i i=i+1 Loop While fact > 0.000001 Label1.Caption = Val(e)
s=s+n
End If
n=n+1
Loop While n <= 100
NumLabel.Caption = t
SumLabel.Caption = s
End Sub
32
Private Sub ComputeCmd _Click()
Dim n As Integer, s As Integer

C语言 第五章-循环结构程序设计

C语言 第五章-循环结构程序设计

执行过程如图所示。其中i为外循环的控制变 量,j为内循环的控制变量。
i =0 当 i <=10
j=0 当 j<=10
printf(“%d ”, i*j ) j++ i++
例4 编程打印“九九乘法表”。
分析:九九乘法表 1×1=1 1×2=2 1×3=3 … 2×1=2 2×2=4 2×3=6 … 3×1=3 3×2=6 3×3=9 … …… 9×1=9 9×2=18 9×3=27 …
i ++ ; } while ( i <= 100 ) ; printf ( " %d " , sum ) ; }
结果相同
同样是下列程序,但如果while后面的表达式结果一开始就是 假时,两种循环结果会不一样。
main ( ) /*程序1*/
{ int i , sum = 0 ; i = 101 ;
所以程序需要设计成二重循环。由于题目只 要求找到一组解,所以在循环过程中只要找到一组 满足条件的x, y, z就可以跳出循环。
跳出循环的方法可以采用break语句,但是, 因为是二重循环,所以要考虑使用break是否方便。
程序 百钱买百鸡问题。 void main ( ) { int x , y , z ;
打印第2行 ( i = 2 ) for (j=1;j<=9;j++) printf(“%5d”,i*j) ; printf ( “ \n ” ) ; /*换行打印*/
…… 打印第9行 ( i = 9 )
for (j=1;j<=9;j++) printf(“%5d”,i*j) ; printf ( “ \n ” ) ; /*换行打印*/

第5章循环结构

第5章循环结构

第5章循环结构第五章循环结构一、单项选择题(本大题共20小题,每小题1分,共20分)1.执行下面程序段后,输出字符B的个数是()x=0;while(x<=5){printf("B");x+=2;}A.0个B.3个C.5个D.6个2.在下述程序中,for循环执行的次数是()main( ){int i =0,j=10,k=2,s=0;for(; ;){i+=k;if(i>j){printf("%d\n",s);break;}s+=i;}}A.4 B.5 C.6 D.73.执行下面程序段后,输出字符A的个数是()for(i=0;i<=5;i+=2)printf(“A”);A.0个B.3个C.5个D.6个4.执行while(表达式)循环的条件是()A.当表达式的值为0时B.仅当表达式的值为1时C.当表达式的值非0时D.当表达式的值不为1时5.下列程序段输出的结果是()for(i=1;i<3;i+ +)for(j=1;j<3;j+ +)printf("%d",i+j);A.2 3 3 4 B.2 3 4C.2 3 D.23 4 3 46.对do语句while(表达式);结构的循环,下列说法正确的是()A.当表达式的值为非零时不执行循环体B.循环体至少被执行一次C.当表达式的值为零时循环体一次也不执行D.循环体仅被执行一次7.只能在循环语句中用于结束本轮循环的语句是()A.break; B.continue; C.goto D.if10.下列程序段的输出结果是()i=1;while(i<3){j=1;while(j<=i){printf(“%d”,i+j);j++;}i++;printf(“\n”);}A. 2 3 3 4B. 2 3 4C. 2 3D. 23 4 3 48.下列程序段的输出结果是()a=100;a=a+l;while(a>120);printf(“%d”,a);A.100B.101C.120D.1219.关于break和continue语句,下列说法正确的是()A.在循环体中可以用break语句结束本次循环B.在循环体中可以用continue语句结束本次循环C.break语句仅能使用在switch结构中D.可以使用continue语句跳出switch结构10.对于for(表达式l;表达式2;表达式3)语句;控制循环结束的表达式是()A.表达式1B.表达式2C.表达式3D.表达式l和表达式311.下列语句中不能..实现循环结构的语句是()A.if语句B.while语句C.do—while语句D.for语句12.以下程序的输出结果是()main(){ int y=10;while(y——);printf("y=%d",y);A.y=-1B.y=0C.y=1D.y=随机值13.关于break语句,以下说法不正确...的是 ( )A.它可以用于循环语句中B.它可以用于switch语句中C.可以从最内层循环结构中直接跳出最外层循环结构D.可以从当前switch结构中跳出14.执行下面程序段后,a的值是( )int a=100;do{a++;}while(a>120);A.100B.101C.120D.12115.在下列选项中,没有构成死循环的程序段是()A.int i=100;B.for(;;);while(1){ i=i%100+1;if(i>100) break;}C.int k=1000;D.int s=36;do{++k;}while(k>10000);while(s);--s;二、多项选择题(本大题共5小题,每小题2分,共10分)1.下列循环将会产生死循环的有()A.while(1); B.do{ }while(0);C.do{ }while(1); D.for(k=1;k>―10;k+ +); E.for(k=1;k=10;k+ +,k――);2.下列关于break、goto、continue语句的说法中正确的是()A. break语句能够用于循环语句中B. break语句不能用于switch语句中C. goto语句可以用于直接从多层循环中退出D. continue语句可用于跳出循环体E. continue语句不能用于switch语句中3.下面能执行循环结构的语句有()A.if语句B.while语句C.do—while语句D.for语句E.switch语句三、简答题(本大题共4小题,每小题4分,共16分)1.用while循环结构完成下面程序段的功能。

掌握循环结构的语法格式及三要素

掌握循环结构的语法格式及三要素

详案:今天我们学习的内容是:程序设计教程第五章:循环结构程序设计。

教学目标1、理解循环结构2、掌握循环结构的语法格式及三要素3、会设计循环结构教学重难点1、教学重点:For…Next语句的语法格式及用法2、教学难点:For…Next语句的应用一、知识回顾1、顺序结构特点:按照各语句书写次序一条一条地顺序执行。

2、选择结构(又称判断结构)特点:根据所选定的条件为真与否决定执行哪一分支中相应的操作,条件为真时执行Then后的语句,为假时执行Else后面的语句。

3、循环结构比如说,我们每学期都有将近20周的课程,我们每周从星期一到星期五都要上同样的课程,要上20周,像这样重复执行的过程就叫做循环。

二、循环结构程序设计的概念指在程序设计中,从某处开始有规律地反复执行某一程序块的现象,重复执行的程序块称为“循环体”。

提供的循环结构的语句有:For…Next、For Each…Next、Do…Loop、While…Wend 。

其中For…Next、D o…Loop是最常用的循环结构语句。

三、For…Next语句1、For…Next语句的语法格式For<循环变量>=<初值> To <终值>[Step<步长>][<语句块1>][Exit For][<语句块2>]Next[<循环变量>]大家在之前已经学过的C语言和VF、VB等语言,大家有没有发现这样一个特点,就是每种语言的设计思想都是一样的,不同的只是各种语言中语法格式的不同,因此我们根据大家都比较熟悉的C语言来做对比,如for(i=0;i<10;i++){ ….;break;…}对比说明说明:(1)〈循环变量>为必要参数,被用作循环计数器的数值变量,这个变量不能是数组元素。

(2)<步长>可以是正数或负数,若缺省时值为1;(3)可以在程序中放置任意个Exit For,随时退出循环。

【人体解剖生理学】 第五章 循环系统PPT课件

【人体解剖生理学】 第五章 循环系统PPT课件

※——重点
△——难点
※4.髂外动脉(external iliac
artery)
• 分出腹壁下 动脉营养腹 直肌
腹壁下动脉 inferior epigastric a.
图1 下肢的动脉(1)
1.股动脉 (femoral a.)
分出股深动脉, 分支营养大腿肌、 髋关节和股骨 2.腘动脉 (popliteal a.) 分支构成膝关节网; 分为胫前、胫后动 脉两终支
髂外动脉 腘动脉
popliteal a.
股动脉
femoral a.
图2 股动脉
图3 小腿的动脉a

1)胫后动脉
(posterior tibial a.)






分布于小腿后群、外 侧群肌肉和足底。

腓 动
动 脉

侧 动 脉
分支:

腓动脉

足底内侧动脉

足底外侧动脉
图4 小腿的动脉b
图5 足底动脉
great saphenous vein
2)小隐静脉
small saphenous vein
图20 下肢浅静脉(前) 图21 同上(后)
2.盆部的静脉
(1)髂内静脉(internal iliac vein) • 壁支 • 脏支
– 直肠下静脉(直肠静脉丛)
(2)髂外静脉(external iliac vein) (3)髂总静脉(common iliac vein)
肾静脉renal v.
图22 下腔静脉汇流
左肾上腺静脉 left suprarenal v.
右睾丸静脉right testicular v.

cyu第5章循环(新)

cyu第5章循环(新)
即不为循环变量赋初值,不设置循环条件(认为表达式2 为真值),不修改循环变量的值,无终止地执行循环体。 此时应在循环体内设法结束循环,否则会成为死循环
for( ; ; ) { printf("这将一直进行下去 这将一直进行下去"); 这将一直进行下去 i = getchar(); if(i == 'X' || i == 'x') break; }
int i=1;s=0; while(i<1) ( ) { s=s+i; i=i+1; } printf("s=%d\n",s); ( ) }
17
int i=1,s=0; do { s=s+i; i=i+1; } while(i<1); printf("s=%d\n",s);
左边的程序结果为:s=0,而右边的程序结果为 而右边的程序结果为:s=1。 左边的程序结果为 而右边的程序结果为 。
折扣(y) 无 1% 2% 5% 10%
3
本章目标
理பைடு நூலகம்为什么使用循环结构 熟练掌握while循环的使用 熟练掌握do-while循环的使用 理解while 和 do-while 循环的区别
4
循环的必要性
int a1,a2,a3, a4,a5; a1 = 1 * 10; printf("1 × 10 = %d a2 = 2 * 10; printf("2 × 10 = %d a3 = 3 * 10; printf("3 × 10 = %d a4 = 4 * 10; printf("4 × 10 = %d a5 = 5 * 10; printf("5 × 10 = %d \n",a1); \n",a2); \n",a3); \n",a4); \n",a5);

50T-C-2-第5章_循环


5.2 用while语句和do-while语句实现循环 5.2.2 用do-while语句实现循环
一般形式: do 循环体语句 while(表达式); do-while语句的特点: 先执行循环体,然后判 断循环条件是否成立。
n
n 1
100
5.2 用while语句和do-while语句实现循环
说明:设计循环结构,要考虑两个问题:一是循环 体,二是循环结束条件。循环结束条件依赖于循环 变量的初值和增量。 注意while循环中判断的条件是循环继续的条件, 而不是结束条件。
循环的三要素?
循环变量的初值 循环条件 循环变量的增量
5.3 用for语句实现循环 5.3.1 for语句的一般形式和执行过程 • C语言中的for语句使用最为灵活,不仅可 以用于循环次数已经确定的情况,而且可
#include <stdio.h> void main() { int i,sum=0; i=1; while (i<=100) { sum=sum+i; i++; } printf("%d\n",sum); }
编写程序
说明:
(1)循环体如果包含一个以上的 语句,应该用花括号括起来,以 复合语句形式出现. (2)对循环变量i要控制好,初值 为1,循环条件为i<=100,在循 环体中有i++,否则结束不了. i也叫做循环计数器. (3)对累加器sum要注意初值为0, 每次循环sum+=i.
5.1 程序中需要用循环结构
问题1: y
n
n 1
100
什么是循环? 为什么要使用循环? 分数相加后除以课数
问题2:求学生平均成绩

第05章单元总结-练习-实训-知识拓展

《C语言程序设计》 单元总结 单元练习 实训指导 知识拓展

第五章 循环结构程序设计 班级: 姓名: 学号: 1

单元总结提升 在本单元中,如何理解循环的本质、如何分析循环的三个要素以及如何描述循环结构语句是核心内容。通过本单元的学习,我们应该知道: 1. 循环的本质是将程序员从大量重复编写相同代码的工作中解放出来,减少程序源代码的存储空间,提高程序的质量,更提高程序编写的工作效率,但计算机执行程序的工作量并没有减少。 2. 循环结构的三要素包括: (1) (2) (3) 3.循环结构描述语句有三种: 、 和 。其中while和do-while的区别在于 。 4.循环结构控制语句break的作用是: ; 循环结构控制语句continue的作用是: 。 5.在一个循环结构语句中又包含了一个循环结构语句称之为 。程序执行时,外层循环每执行一次,内层循环就要完整的执行完,直至内层循环执行结束,再开始执行下一次外层循环。 通过本单元的学习,应该掌握C语言循环结构程序设计的思路和基本语句的用法。

单元练习 一.选择题 1.下面描述正确的是( )。 A.while语句不管条件表达式是否为真,都将执行一次循环体。 B.do-while语句构成的循环,一定要有能使while后面表达式的值为0的操作,或在循环体中使用break语句。 C.for循环只能用于循环次数确定的情况,且先执行循环体语句,后判断条件表达式。 D.break语句的作用是从最近的循环体内跳出来,而continue语句的作用是继续执行循环体中尚未执行的语句。 2. 对for(表达式1;;表达式3),可理解为( )。 A.for(表达式1;0;表达式3) B.for(表达式1;1;表达式3) C.语法错误 D.仅执行循环一次 2

3. 以下程序的功能为( )。 #include void main() { int i,k=0; for(i=1;i<10;i+=2) k+=i+1; printf("%d\n",k); }

C程序设计第五章课后习题答案

循环结构程序设计P115 5.1 用while计算1至100的合.#include<stdio.h>int main(){int i=1,sum=0;while(i<=100) //对于需要运算的值,要么在运算前可以赋值,要么一开始要指定.{sum=sum+i;i++;}printf("The sum is %d .\n",sum);return 0;}P117 5.2 用do-while来做1至100的合.#include<stdio.h>int main(){int i=1,sum=0;do// do-while可以做的事,用while都可以做到.{ //do-while先做一次执行,再判断条件,而while却是先做一个条件,再执行.sum=sum+i;i++;}while(i<=100);printf("The sum is %d .\n",sum);return 0;}P118 5.3 比较do-while与while的差别.#include<stdio.h>{int i,sum=0;printf("Please input a number :");scanf("%d",&i); //输入10以内,正常,11的话,则sum仍然是0.while(i<=10){sum=sum+i;i++;}printf("The sum of 1-10 is %d .\n",sum);return 0;}#include<stdio.h>int main(){int i,sum=0;printf("Please input a number :");scanf("%d",&i); //输入10以内,结果一样.输入11的话,先做操作,所以sum=11.do{sum=sum+i;i++;}while(i<=10); //此重点在于理解二者的差别.printf("The sum of 1-10 is %d .\n",sum);return 0;}P126 5.4 break的例子.#include<stdio.h>int main(){int i,b=0,a,c;for(i=0;i<=1000;i++){printf("Please input amount :"); //循环体内套有输出语句以及跳出语句.scanf("%d",&a);b=b+a;if(b>=100)break; //break是用于跳出循环,对if无效,对while for switch 这一类.}}c=b/i;printf("conut is %d , aver is %d ",i+1,c); //注意%号后的形式,否则可能输出错误.return 0;}P127 5.5 continue的例子.#include<stdio.h>int main(){int i;for(i=1;i<20;i++){if(i%3!=0){continue; //跳过本次I,执行下一个i.}printf("%d ",i);}printf("\n");return 0;}P128 5.6 形成一个4*5的矩阵.#include<stdio.h>int main(){int i,j,a=0; //没有给初值,会出现警告: 使用了未初始化的局部变量“a”.for(i=1;i<=4;i++){for(j=1;j<=5;j++,a++) // a用来控制换行.{if(a%5==0){printf("\n");}printf("%d\t",i*j);}}printf("\n");return 0;}P131 5.7 用一个交错的式子求哌的近似值.#include<stdio.h>#include<math.h>int main() //四分之哌等于(1)-(1/3)+(1/5)-(1/7)+(1/9)-(1/11).{float s=1,n=1,m,sum=0,t;for(m=1;;m=m+2) //不确定哪项才会小于等于十的负六次方,所以不指定,无限下去.{ //不指定第二项,执行语句中应该有控制跳出的句子,否则死循环.t=(s)*(n/m); //这是第一项,s是符号,if(fabs(t)<=1e-6) //应该写在这里,题目要求这一项不累加进去.{break;}sum=sum+t; //因为累加项在这里,所以,一旦跳出就不会累加进来了.s=s*(-1); //变号一次.}printf("四分之一哌的值是%f.\n",sum);printf("一个完整哌的值是%f.\n",sum*4);return 0;}//下面这段小代码用来验证关于数值型数据类型的关系.去掉注释,可运行.//如果出现类似值为全1或是全零的话,一般可以考虑数据类型赋值或是定义错了的问题.//#include <stdio.h> //这是关于int float double三者关复杂关系的,乱啊,如果看不懂,可以通过实验自己明白来.////int main() //在C语言中,1.0认为是实数,即是double型,所以,如果你把它用float输出的话,会有警告:警告 1 warning C4305: “=”: 从“double”到“float”截断.//{// float m,a,b,c; //一旦定义了是这种类型的话,输出或是赋值的时候只能扩展不能截断,意思就是能变成double型,不能变成int型啦.而且后面的赋值会跟着它变成相应的类型.比如下面的m=1,其实得到的是m=1.0.// int d,e,f;// m=1;// a=1.0/3;// b=1/3;// c=m/3;// d=1.0;// e=1/4;// f=1.0/4;// printf("%lf(float用double的%lf来输出是可以的.)\n%f\n%f\n%f\n",m,a,b,c); //不管上面定义什么,这边写的输出类型是什么,就按相应的类型输出,有可能会出错,所以建议按定义的类型来输出.当然扩展的是不会错的,截断的是会错的,比如float可以用%lf来输出,而不能用%d来输出.// printf("%d\n%d\n%d\n",d,e,f); //但是,不相应的int型不可以用%f来输出的.因为int float就不同种类,一个是整数,一个是小数,float double同样是有小数点的!!!!// return 0;//}#include<stdio.h>int main() //这个就是著名的Fibonacci(费波那契数列问题){int f1=1,f2=1,f3,i;printf("%12d\n%12d\n",f1,f2);for(i=1;i<=38;i++) //注意,这是个基础问题,(i=1;i<=5;i++)这里其实进行了次运算,因为有f1,f2,要求有个,所以要有个.要么写<=38,要么写<39,边界问题一定要注意,不可以太随意!!!!{f3=f1+f2;printf("%12d\n",f3); //这个问题同样适用于"一对兔子一个月生一对"的问题.,f1=f2; //f1=f1+f2;此时它们各是,所以,现在的f1是.f2=f3; //f2=f2+f1;此时的f1已经是最先二者之和了.可以不用到f3.}return 0;}#include<stdio.h>#include<math.h>int main(){double num;int i;printf("Please input a number :");scanf("%lf",&num); //因为sqrt要求是浮点型,那就给它浮点型,需要时再强制转换.for(i=2;i<=sqrt(num);i++) //这边是<=号没错.{if((int)num%i==0) //如果在这期间有任何一个可以为零的话,则不是素数.{break; //当然跳出.}} //执行到这里的时候,i=5,已经变成了!!if(i<=sqrt(num)){printf("Not %d",(int)num);}else//如上所述,i=5,超出了求根的值,所以是素数.{printf("Yes %d",(int)num);}return 0;}P137 5.10 求100至200间的素数.#include<stdio.h>//不解释,HOHO>>>>...#include<math.h>int main(){double j;int i,k=0;for(j=100;j<=200;j++){for(i=2;i<=sqrt(j);i++){if((int)j%i==0){break;}}k=k+1; //这里是布局的开头.学习一下,有助逻辑.if(i<=sqrt(j)){printf("Not %d ",(int)j);if(k%5==0) //5个换一次行.{printf("\n");}}else{printf("Yes %d ",(int)j);if(k%5==0){printf("\n");}}}return 0;}P139 5.11 密码转换.#include<stdio.h>int main(){char c;c=getchar();while(c!='\n') //这也可以用数组来实现.{if((c>='a'&&c<='z')||(c>='A'&&c<='Z')){if((c>='w'&&c<='z')||(c>='W'&&c<='Z')){c=c-22;}else{c=c+4;}printf("%c",c);c=getchar(); //套在循环里,依次得到字母,而while中判断回车为结束.}}printf("\n"); //这是布局问题.return 0;}P140 0.3 最大公约数和最小公倍数.#include<stdio.h>//最大公约数用累除法,除到无余数时的被除数是最大公约数.main (){int m, n, c, d;int gcd(); //这是最大公约数的缩写,此处调用函数,可以不写里面的实参.int lcm(); //这是最小公倍数的缩写,此处调用函数,可以不写里面的实参.printf("Please input two number :\n");scanf("%d %d",&m,&n);c=gcd(m,n); //c获取最大公约数d=lcm(m,n); //d获取最小公倍数printf("The GCD of %d and %d is : %d !\n", m, n, c);printf("The LCM of %d and %d is : %d !\n", m, n, d);return 0;}int gcd(int x, int y) //最大公约数Greatest Common Divisor{int temp;while(x%y!=0){temp=y; //y在下一轮中作为除数,即是下一轮中的X,所以先闪一边去.y=x%y; //x,y的余数作为下一轮中的Y,由x%y来取得.x=temp; //刚才temp中存储了y的值,现在拿出来作为下一轮中的X使用.}return y; //这是每一轮中的被除数,按原理来,这就是最大公约数,即累除法的原理. }int lcm(int x, int y) //最小公倍数Lowest Common Multiple{int i, temp;if(x<y) //此段代码结果是保证二者大的数在X上,小的数在Y上.即小于号降序.{ //以下为经典三行码,实现两个数的互换.temp=x;x=y;y=temp;}for(i=1; i<=y; i++) //设定一个区间,从1至大的数之间的循环.{if(!((x*i)%y)) //此式子如有余数,加上"!"号,会是假,则不返回,进行下一轮.{ //如此往复,直到取模无余数,那么小的数X乘以区间当前的I值,就是最小公倍数.return x*i;}}}P140 0.4 判断一串输入的字符.#include<stdio.h>int main(){char ch;int a=0,b=0,c=0,d=0,e=0;printf("Please input the string\n");while((ch=getchar())!='\n') //直到回车.{if(ch<='z'&&ch>='a'){a++;}else if(ch==' '){c++;}else if(ch<58&&ch>47){d++;}else if(ch<='Z'&&ch>='A'){b++;}else{e++;}}printf("大写%d 小写%d 空格%d 数字%d 其它%d\n",a,b,c,d,e);}#include<stdio.h>//不理解时可以百度或是谷歌更多的信息.int main() //想办法既快速做完,又要消化理解!!!{int temp,i,a,n,sum=0; //主逻辑,友好性暂时放松.scanf("%d %d",&a,&n); //a是数字,n是要乘的个数.temp=a; //先把第一阶的值存起来.for(i=0;i<n;i++){sum=sum+a;printf("%d + ",a); //事关布局.a=a*10+temp; //重点是每次乘,然后加上上一个数.}printf("= %d .",sum);return 0;}P140 0.6 1!+2!+3!+4!.....的值. #include<stdio.h>int main() //1!+2!+3!+4!.....{int i,j,k,sum=0,m=1;scanf("%d",&k); //比如设定为,值为.for(i=1;i<=k;i++) //第一层循环,指定到.{for(j=1;j<=i;j++) //第二层循环,指定至当前数.{m=m*j;} //到此是阶乘的结构.sum=sum+m;m=1;}printf("%d",sum); //完全不理解时,搜索并参考.return 0; //尝试自己做,第一次做出来就是自己的东西了. }#include<stdio.h>int main(){int a,b;double c,asum=0,bsum=0,csum=0;for(a=1;a<=100;a++) //三个块分别注释验证结果.{asum=asum+a;}for(b=1;b<=50;b++) //在VS运行中,注意*.cpp为C++语言.{bsum=bsum+b*b; //为了避免语言差别,请注意文件名为*.c.}for(c=1;c<=10;c++) //c作浮点运算,所以定义在double类型中.{csum=csum+1/c;}printf("%lf",asum+bsum+csum);return 0;}PP#include<stdio.h>#include<math.h>int main(){int j,k,s[6],x=100,y,sum=0;for(j=153;j<=154;j++){for(k=2;k>=0;k--){s[k]=j%(int)pow(10,k+1)/(int)pow(10,k);y=pow(s[k],3);sum+=y;printf("%d-%d--%d\t",k,s[k],j);}printf("%d\n",sum);}return 0;}P140 0.8 水仙花数.//#include <stdio.h> //一步步的发现问题.////int main() //在%和/号之间,以前pow.以后再做.//{// int i,j,k,a,b,c,sum=0; //这里逻辑对,算出来却错了.// for(i=2;i<=4;i++) //计算机在想什么,看来它的大脑难以模拟.// {// for(j=pow(10,i);j<=pow(10,i+1)-1;j++) //我不完全明白它遵守的逻辑. // {// for(k=0;k<=i;k++)// {// sum+=pow((j%pow(10,i+1)/pow(10,i)),3);// }// if(sum==j)// {// printf("%d 是水仙花数!\n",j);// }// sum=0;// }// }// return 0;//} //为什么还是无法实现?!#include<stdio.h>#include<math.h>int main(){int a,b,c,i,sum=0; //这里只计算三位数的.for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;sum+=a*a*a+b*b*b+c*c*c;if(sum==i){printf("%d 是水仙花数.\n",i);}sum=0;}return 0;}P141 0.9 完数.#include<stdio.h>int main(){int i,j,r;for(i=1;i<=1000;i++) //零是个临界值,不能包括它.{r=0; //每次清零重来.类似水仙中的sum.for(j=1;j<i;j++){if(i%j==0) //除得尽即是因子.{r=r+j; //然后累加进去.}}if(r==i) //若相等.{printf("%d 是完数.\n",i);}}return 0;}P141 0.10 2/1+3/2+5/3+8/5+13/8…#include<stdio.h>int main() //10.007051{double i,a=2,b=1,c,s=0; //a是分子,b是分母.for(i=0;i<6;i++) //二十可以用户指定.{s+=a/b; //中间储值变量.c=a+b;b=a;a=c;}printf("%lf\n",s);return 0;}#include<stdio.h>int main() //从一百开始,减一半再自加两次,下降一次,反弹一次.{double sum=100,high=100,up,donw,i;for(i=1;i<10;i++) //不管指定到哪个数,都不会超过三百.{up=high/2;donw=up;high=donw; //自咬尾巴问题.sum+=donw*2;}printf("%lf %lf\n",donw,sum);return 0;}P141 0.12 猴子吃桃子.#include<stdio.h>int main() //从一百开始,减一半再自加两次,下降一次,反弹一次.{int i,sum=1;for(i=1;i<=10;i++) //临界要清楚,结果要与手算的前几个实例相匹配.{printf("倒数第%d天还剩有%d个桃子.\n",i,sum);sum=(sum+1)*2;}//printf("%d\n",sum);return 0;}#include<stdio.h>#include<conio.h>main() //只关注左半部分.右半部分无视空格.{int i,j,k,m=6; //m可指定,指定中心点位置.可任意奇偶.for(i=1;i<=m;i++) //上半部分.其实也是正三角.{for(j=1;j<=m-i;j++) //一到中心点前i个位置填充空格.printf(" ");for(k=1;k<2*i;k++) //空格后向前填充星号的个数.是奇数.一,三,五... printf("*");printf("\n");}for(i=m-1;i>0;i--) //下半部分.其实也是倒三角.{ //减一是因为行数问题.这是中心行以下的.for(j=m-1;j>=i;j--)printf(" ");for(k=1;k<2*i;k++)printf("*");printf("\n");}getch(); //用户反应后结束.但,没必要.}。

第五章 循环

第5章循环结构(一)本章学习的目的和要求(二)本章学习的重点(三)复习题1.1单选题1.以下说法正确的是( )。

A.不能使用do-while语句构成的循环B.do-while语句构成的循环必须用break语句才能退出C.do-while语句构成的循环,当while语句中的表达式值为假时结束循环D.do-while语句构成的循环,当while语句中的表达式值为真时结束循环C语言支持的循环语句有:()A for循环B while循环C do while循环D以上都是1.2多选题1.3判断题1.continue语句用于循环语句内部中。

当遇到continue语句之后,循环体中continue语句后面的语句将被跳过,计算机将接着开始执行下一次循环。

()2.for(表达式1;表达式2;表达式3){},其中表达式1只执行一次。

3.若int i=0,k=8;while(i=8) i=k--;则while循环体的执行次数为0.4.多重循环是指循环语句的循环体中,又嵌套了另一个或多个循环语句,多个内层循环可以相互交叉嵌套。

5.在复合语句中定义的变量可在该复合语句所在的函数的其它地方使用。

6.在函数体内定义的变量称全局变量,可以被程序中的所有函数引用。

7.continue语句用在循环体中,可使整个循环不结束。

8.continue语句可以用于switch结构中。

9.break语句只能用于循环语句中。

10.do......while循环语句至少要执行一次循环体。

11.语句while(!E);中的条件!E等价于E==0。

12.语句for(;;){循环体}和while(1){循环体}是等价的。

13.在C语言中,for语句既可以用于计数类型循环又可以用于条件类型循环。

14.在while循环中允许使用嵌套循环,但只能是嵌套while循环。

15.在实际编程中,do-while循环完全可以用for循环替换。

16.continue语句只能用于三个循环语句中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档