第五章 循环
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章 循环结构1

说明:
(3)最简单的应用形式: for(循环变量赋初值;循环条件;循环变量增值) 例如:for(i=1;i<=10;i++) sum=sum+i; (4)三个表达式均可缺省,但起分割作用的两个分号 不可省略。 例如:for( ; ; ) i=1;for(;i<=10;i++) sum=sum+i; 或 for(i=1;i<=10;) {sum=sum+i;i++;} • 表达式1省略,应在for之前对循环变量赋初值 • 表达式2省略,则不判断条件,循环无终止进行下去 • 表达式3省略,则应另设法保证循环的结束
5.4
循环的嵌套
一个循环体内又包含另一个完整的循环结构称为循 环的嵌套。
① while() {… while() {…} } ② do {… do {…} while(); } while() ; ③ for(;;) { for(;;) {…} }
5.4
④ while() {… do {…} while(); … } 说明:
在许多问题中都需要用到循环结构,如
要求计算全校每个学生的平均成绩,计算两 个正整数的最大公约数和最小公倍数等都需
要用到循环控制。C语言中有三种循环语句, 分别是while语句、do…while语句和for语 句。
5.1 while循环语句
while循环语句是用来实现“当型”循环结构的。 它的特点是先判断表达式,后执行语句。 格式: while(表达式) 语句; 该语句的执行顺序是:先计算表达式的值,再判 断其值是否为“真”(即非0)。若结果为“真”, 则执行语句;此过程重复执行,直到表达式的值为 “假”(即为0)时,结束循环。其流程图和N-S图 分别如图5-1和5-2所示。
C语言程序设计:第5章 循环结构

12
do...while语句(cont...)
课堂练习: 1.输出1---n之间的数,其中n从键盘输入。
int main(void) {
//1.定义变量i和n //2.输入n的值 //3.思考循环的开始条件:i从1开始 //4.思考循环的结束条件:i++,i > n //5.循环的条件:i<=n //6.循环要做的事情:输出i的值 return 0; }
} 相当于 while(1) {
}
26
小结
❖for(i=m;i<n;i++)//循环次数:n-m次 ❖for(i=m;i<=n;i++)//循环次数:n-m+1次
27
循环语句的练习
课堂练习: 1.输出n---1之间的数,其中n>1且n从键盘输入。 2.计算1*2*3*...*n的值(n的阶乘n!), 其中n从键盘输入。 3.计算10- 1/2 - 1/3 -....1/n的值 以上练习分别以while、do...while、for语句实现
int main(void) {
//1.定义变量i,n,sum //2.输入n的值 //3.思考循环的开始条件:i从1开始 //4.思考循环的结束条件:i++,i > n //5.循环的条件:i<=n //6.循环要做的事情:累加i的值 //7.输出计算结果 return 0; }
24
for语句(cont...)
{
sum = sum + i;
if(sum > 100)break;
第五章 循环系统

循环系统的解剖结构
第一节 循环系统的解剖结构
一、 心 中空肌性器官,循环系统的动力装置 二、 血管 三、淋巴系统
循环系统的解剖结构
(一)血管种类与结构
血管是运输血液的管道,包括动脉、毛细血管和静脉三类。
大动脉:以弹性纤维为主, 称为弹性血管
动 脉 中等动脉:管壁平滑肌比较丰富,
循环系统的解剖结构
(二) 心的外形
前后略扁圆锥体 心尖向左前下方 心底向右后上方
心的外形和血管(前)
心的外形和血管(后)
循环系统的解剖结构
(三) 各心腔的形态结构
1、右心房
位于心的右上部,壁薄腔大 右心耳:左前方锥体形囊状突起 三个入口:上腔静脉口
下腔静脉口 冠状窦口 一个出口:右房室口,通向右心室
横向每小格代表0.04秒的时间 纵向每小格代表0.1mv的电压
心电图各波和间期的意义
1、P波:反映左右心房的去极化过程。 2、QRS波群:反映两心室去极化过程。 3、T波:反映两心室复极化过程。 4、P-R间期:反映房室传导时间。 5、QT间期:心室开始去极化到完全复极化所经历的时间。 6、ST段:心室各部分均处于平台期。
2、心电图导联 引导电极安放的位置和连接方式。
常规心电图包括12个导联即:I、II、III、aVR、aVL、aVF、 V1、V2、V3、V4、V5、V6
★ 心电图检测主要用于帮助诊断心律失常等心脏疾患。
标准肢体导联 I、II、III
加压单极肢体导联 aVR、aVL、aVF
单极胸导联导联 V1、V2、V3、 V4、V5、V6
等容舒张期 左室舒张,室内压↓<动脉压,动脉瓣关;
此时,室内压虽低>房内压,房室瓣尚未开。
cyu第5章循环(新)

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);
第5章 循环结构程序设计PPT课件

}
C语言程序设计
第5章 循环结构程序设计
§ 5.2 用while语句实现循环i=1w; hile (i<=100)
2、while语句的注意事项
{ sum=sum+i;
注意:
i++; }
(1) 循环体如果包含一个以上的语句,应该用花括弧括
起来,以复合语句形式出现
(2) 在循环体中应有使循环趋向于结束的语句。如果无
C语言程序设计
第5章 循环结构程序设计
§ 5.2 用while语句实现循环
1、while语句的一般形式
while语句用来实现“当型”循环结构 一般形式: while (表达式)
循环体语句
当表达式为非0值时,执行while 语句中的循环体语句 其特点是:
先判断表达式,后执行语句
C语言程序设计
第5章 循环结构程序设计
} 运行结果:
}
1↙ sum=55 再运行一次:
}说明:当while后面的表达式的第一次的
值为“真”时,两种循环得到的结果相
11↙ sum=0
同。否则,二者结果不相同
C语言程序设计
第5章 循环结构程序设计
§ 5.4 用for语句实现循环
1、for语句的一般形式
C语言中的for语句使用最为灵活,不仅可以用于 循环次数已经确定的情况,而且可以用于循环次数 不确定而只给出循环结束条件的情况,它完全可以 代替while语句
语句,转到第(5)步
(3) 求解表达式3
(4) 转第(2)步骤继续执行
(5) 循环结束,执行for语句下面的一个语句
C语言程序设计
第5章 循环结
执行表达式1
循环初始条件
C语言程序设计:第5章-循环结构-课件教案

C语言程序设计课件教案第五章循环结构教学目的掌握循环结构中的while语句、dowhile语句、for语句的用法,掌握中断语句中break和continue语句的用法。
教学要求1.熟练掌握while语句、dowhile语句、for语句2.熟练掌握break语句、continue语句重点和难点1.while语句、dowhile语句、for语句的使用2.break语句、continue语句的使用教学支撑环境与教学资源:1.笔记本电脑2.VC20103.投影仪教学方法讲授法、练习法、讨论法授课课时6课时教学过程AM一、课程引入计算1+2+3+...+n有几种方法,需要多少步骤?、循环结构语句什么时候用到循环结构:处理重复的问题的时候。
循环结构的三大语句:while语句、dowhile语句、for语句。
1.while语句while(循环条件表达式)循环体语句;执行过程:只有循环条件表达式的值为真就执行循环体语句,先判断后执行。
1.输出1---n之间的数intmain(void){inti=1;intn=0;printf("请输入n的值:");scanf("%d",&n);//1015while(i<=n)15printf("%d\n",i);i++;}return0;}2.计算m+...+n 的值intmain(void){inti=1;intn=0;intm=0;intsum=0;printf("请依次输入m 和n 的值:");scanf("%d%d",&m,&n);//m+...n10while(m<=n){sum=sum+m ;m++;}printf("sum=%d\n",sum);return0;}2.do...while 语句do循环体语句;}while(循环条件表达式);执行过程:先执行循环体语句,再检查循环条件表达式的值是否为真,如果为真则继续执行循环体语句,否则结束循环。
第5章循环系统

窦房结是心脏正常的起搏点 ,位于右
心房壁内,上腔静脉入口处的心外膜内, 含有起搏细胞和过渡细胞。
正常人为窦性心率。机体内受交感神 经、副交感神经的支配。
心底部、第二肋
部位 中线第五肋间隙
间隙锁骨左右缘
在瓣膜狭窄或关闭不全的病理情况下,血液通 过瓣膜时都会产生涡流而出现杂音。
八、心电图(electrocardiogram,ECG)
心脏兴奋时,兴奋部位膜电位去极化,在兴 奋部位和未兴奋部位之间产生电位差。这种生 物电变化通过心脏周围的导电组织和体液,传 导到身体表面,使身体各部位在每一心动周期 中也出现有规律的电变化,将联接心电图仪的 测量电极置于人体表面的一定部位,记录的心 脏电变化曲线,称为心电图。
心电图是反映整个心脏兴奋的产生、传播和 恢复过程中的电变化,但并不反映心脏的机械 收缩活动。
心电图的导联
1.标准导联(双极肢体导联) Ⅰ导联 右臂 左臂 Ⅱ导联 右臂 左足 Ⅲ导联 左臂 左足
2.加压单极肢体导联 aVR 右臂接探查电极,无干电极接左手和左足 aVL 左臂接探查电极,无干电极接右手和左足 aVF 左足接探查电极,无干电极接右手和左手
第一章 第二章 第三章 第四章 第五章 第六章 第七章 第八章 第九章
细胞和组织 绪论 运动系统 内脏学 循环系统 特殊感官 神经系统 内分泌系统 人体的基本生理功能
第五章 循环系统
第一节 第二节 第三节 第四节 第五节
概述 血液 心脏 血管 淋巴系统
第五章 循环系统
第一节 概述 一、组成 二、循环系统的功能 三、血液循环的途径
第五章 循环

第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语句只能用于三个循环语句中。
第5章 循环结构程序设计

运行结果:
printf("%d\n",sum);
sum = 5050
}
while语句和用do-while语句的比较:
一般情况,用while循环语句和用do -while循环语句处理问 题时,若循环体部分一样,结果也一样。但是如果while循 环语句循环条件一开始为“假”,则循环结果不同。while 循环语句一次也不执行,而do -while循环语句不论条件是 否成立,先执行一次循环体语句。
循环变量不增值。无终止地执行循环体。
例5-7用for语句求1 + 2 + 3 + … + 100
#include <stdio.h> void main() {
int i,sum=0; /*将累加器sum初始化为0*/ for(i=1; i<=100; i++) sum += i;/*实现累加*/ printf("sum=%d\n",sum); } 程序运行的结果为: sum=5050 解析:先执行变量赋初值,然后判定循环继续条件, 如果为“真”,执行循环体语句,i 为运算项目和循 环变量,执行完一次,增加一次,最后累加和。
if(n%3!=0) /*循环体*/
printf("%5d",n);
}
§5.4 多重循环
• 当循环中的内嵌语句是循环语句时,称为循 环的嵌套使用。内嵌的循环中嵌套循环,称 为多重循环。
C语言程序设计技术基础
第5章 循环结构程序设计
第5章 循环结构程序设计
5.1 while 循环语句 5.2 do while循环语句 5.3 for循环语句 5.4 多重循环 5.5 break语句与continue语句 5.6 几种循环语句的比较 5.7 循环结构程序举例
人体解剖生理学第五章循环系统

目录•循环系统概述•心脏结构与功能•血管结构与功能•血液成分与功能•循环系统调节机制•循环系统常见疾病及防治策略循环系统概述功能循环系统的主要功能是运输血液,为全身各组织器官提供营养物质和氧气,同时带走代谢废物和二氧化碳,维持内环境的相对稳定。
定义循环系统是由心脏、血管和血液组成的一个封闭的管道系统。
定义与功能组成与结构心脏心脏是循环系统的动力器官,主要由心肌构成,具有自动节律性收缩的能力。
心脏内部被分隔为四个腔室,分别是左心房、左心室、右心房和右心室。
血管血管是运输血液的管道,分为动脉、静脉和毛细血管三种类型。
动脉负责将血液从心脏输送到全身各部位,静脉负责将血液从全身各部位输送回心脏,毛细血管则连接动脉和静脉,实现血液与组织之间的物质交换。
血液血液是循环系统的运输介质,主要由血浆和血细胞组成。
血浆中含有多种营养物质、代谢废物和激素等,血细胞则包括红细胞、白细胞和血小板等。
维持生命活动循环系统通过运输营养物质和氧气,为全身各组织器官提供能量和代谢底物,维持生命活动的正常进行。
调节内环境循环系统通过运输代谢废物和二氧化碳等,维持内环境的相对稳定,保证机体各项生理功能的正常发挥。
防御保护循环系统中的白细胞和抗体等具有免疫功能的物质,能够识别和清除入侵机体的病原体和有害物质,起到防御保护的作用。
调节体温循环系统中的血液在流经皮肤血管时,能够通过散热或保温的方式调节体温,维持体温的恒定。
生理意义心脏结构与功能01心脏位于胸腔中纵隔内,约2/3在正中线左侧,1/3在右侧。
02心脏呈倒置的圆锥形,前后略扁,心尖指向左前下方,心底朝向右后上方。
03心脏表面有三条沟,分别为冠状沟、前室间沟和后室间沟,是心脏表面分界的标志。
心脏位置与形态心脏内部被心间隔和房室瓣分为四个腔,分别是左心房、左心室、右心房和右心室。
左心房和右心房之间由房间隔分开,左心房接收肺静脉的血液,右心房接收上下腔静脉的血液。
左心室和右心室之间由室间隔分开,左心室负责将血液泵入主动脉,右心室负责将血液泵入肺动脉。
第5章 循环 fortran

例5-2 使用循环来计算2+4+6+8+10 PROGRAM EX0502 IMPLICIT NONE INTEGER, PARAMETER :: LIMIT=10 ! 计数器的上限 INTEGER COUNTER ! 计数器 INTEGER :: ANS = 0 ! 拿来累加使用 DO COUNTER=2, LIMIT, 2 ANS = ANS + COUNTER END DO WRITE(*,*) ANS ! STOP END
1.确定性循环
(1)变量用来控制循环次数,一般称为循环变量; (2)表达式1 代表循环变量的初值; (3)表达式2 代表循环变量的终值; (4)表达式3 代表循环变量的步长,缺省步长为1。 (5)循环次数的计算按下面公式:
MAX ((表达式2 - 表达式1+ 表达式 3)/表达式3,0)
例5-3 DO 循环的嵌套使用
PROGRAM EX0503 IMPLICIT NONE INTEGER I, J DO I=1, 3 DO J=1, 3 WRITE ( *, "(I2, I2)" ) I, END DO WRITE (*,*) "ANOTHER CYCLE" END DO END 显式循环(DO END DO)
第三节 循环结构
署名的循环
例5-8
功能是循环时能明确地知道END DO这个描述的位置是否正确 。
PROGRAM EX0508 IMPLICIT NONE INTEGER :: I, J OUTER: DO I=1, 3 ! 循环取名为OUTTER INNER: DO J=1, 3 ! 循环取名为INNER WRITE ( *, " ('( ',I2,' ,' ,I2, ') ') " ) I,J END DO INNER ! 结束INNER这个循环 END DO OUTER ! 结束OUTTER这个循环 !STOP END
第5章 循环结构

第5章循环结构1、有以下程序#include <stdio.h>main(){ int y=10;while(y--); printf("y=%d\n", y);}程序执行后的输出结果是A) y=0B) y=-1C) y=1D) while构成无限循环参考答案:B【解析】执行y - -直到值为0,由于y - -是先用再减,所以退出循环时,y的值为-1。2、有以下程序#include <stdio.h>main(){ int k=5;while(--k) printf("%d",k -= 3);printf("\n");}执行后的输出结果是A) 1B) 2C) 4D) 死循环参考答案:A【解析】--k先自减在使用,所以第一次判断条件即为while(4),条件为真执行打印k的值k=4-3,结果为1,第二次判断条件即为while(0),条件为假,结束循环,打印回车换行符。所以选择A选项。3、关于"while(条件表达式)循环体",以下叙述正确的是A) 循环体的执行次数总是比条件表达式的执行次数多一次B) 条件表达式的执行次数总是比循环体的执行次数多一次C) 条件表达式的执行次数与循环体的执行次数一样D) 条件表达式的执行次数与循环体的执行次数无关参考答案:B【解析】while循环是先判断条件,满足条件后执行循环体,执行完后接着判断条件,执行,直到最后一次判断条件后不成立,跳出循环,所以最后一次执行了条件表达式,但是没有执行循环体,所以选择B选项。4、设有以下代码do {while (条件表达式1)循环体A;} while (条件表达式2);while (条件表达式1){do {循环体B;} while (条件表达式2);}其中,循环体A与循环体B相同,以下叙述正确的是A) 循环体A与循环体B的执行次数相同B) 循环体A比循环体B的执行次数多一次C) 循环体A比循环体B的执行次数少一次D) 循环体A与循环体B的执行次数不确定参考答案:A【解析】while循环语句一般形式为:while(表达式){循环体},执行过程为:首先判断表达式,成立(非0)则执行循环体,不成立(0)则退出循环。
C语言循环结构

例5.1编写程序,求1+2+3+···+100的值 5.1编写程序,求1+2+3+···+100的值 main( ) { int i,sum; i=1; sum=0; while (i<=100) { sum=sum +i; i++;} printf(“ printf(“ sum=%d \n” ,sum); }
15
5-2有以下程序 main() { int i, s=0; for (i=0;i<10;i+=2) s+=i+1; printf (“%d\n”,s); (“%d\ } 程序执行后的结果是 A.自然数1-9的累加和 A.自然数1 B.自然数1-10和的累加 B.自然数1 10和的累加 C.自然数1-9中奇数之和 C.自然数1 D.自然数1-10中偶数之和 D.自然数1 10中偶数之和
16
5-3要求以下程序的功能是计算: s=1+1/2+1/3+···+1/10。 s=1+1/2+1/3+···+1/10。 main() { int n; float s; s=1.0; for (n=10; n>1; n--) n--) s=s+1/n; printf(“%6.4f\ printf(“%6.4f\n”,s); } 程序运行后出现结果错误,导致错误结果的程序 行是 A. s=1.0; B. for (n=10; n>1; n--) n--) C. s=s+1/n; D. printf(“%6.4f\n”,s); pr循环结构的嵌套 在一个循环体内又完整地包含了另一个循环, 称为循环嵌套。前面介绍的三种类型的循环都可 以互相嵌套,循环的嵌套可以多层,但每一层循 环在逻辑上必须是完整的。 例5.5使用双层for循环打印下面的图形 5.5使用双层for循环打印下面的图形 **** **** ****
c语言 第5章循环结构(while do-while for)

第1次运行: Input data: 11 22 33 44 55 66 77 88 99 0 1 2 11 22 33 44 55 66 77 88 99 0 sum=495 第1次运行: Input data: 0 0 sum=0 sum的初值与0的和
5.4 for语句
#include <stdio.h> int main() { int i=1,sum=0; while (i<=100) { sum=sum+i; i++; } printf("sum=%d\n",sum); return 0; for (i=1;i<=100;i++) } #include <stdio.h> int main() { int i=1,sum=0; do { sum=sum+i; i++; }while(i<=100); printf("sum=%d\n",sum); return 0; }
i++ for ( i = 1; i <= 100; i = i + 1 ) printf ( “**********\n” );
语句是?
【例1】在3~100之间所有3的倍数中,找出个位 数为2的数。
编程点拨 3~100内3的倍数有3 6 9 … 99 for ( i=3; i<=100; i=i+3 )
第1次运行: Input data: 11 22 33 44 55 66 77 88 99 0 1 2 11 22 33 44 55 66 77 88 99 sum=495 第2次运行: Input data: 0 (空一行) sum的初值 sum=0
第五章-物质循环

3.温室效应
全球变暖的证据
全球平均温度在上升
温室气体浓度在增加
冰川在融化
海平面在上升
人类生产活动7.1Gt C 工业革命20世纪50年代以后 大气(280增至360)
人类对自然的改造 碳增加、吸收减弱
温室气体
温室气体除了二氧化碳外,还包括甲烷、 氧化氮和弗氯烷(CFC)和臭氧等,其中二氧 化碳作用约占全部温室气体作用的50%以上, 大气中的水蒸气也对温室效应起了重大的作用。
• 1995年,第一次缔约方大会审评发达国家的履约情况,发现只有 少数发达国家温室气体排放量降到了1990年的水平,而且发达国 家在技术转让和资金提供上行动也十分有限。为此,会议决定 (“柏林授权”:Berlin Mandate):应开始一个进程,谈判制 定一项议定书,为发达国家规定2000年后具体的减排义务和时间 表,同时决定不得为发展中国引入任何新任务。 • 1997年,第三次缔约方大会通过《京都议定书》。议定书对附件 I国家(发达国家和经济转型国家)规定了在具体的承诺期(从 2008-2012年为第一承诺期)数量减排目标(在1990年水平上平 均减少5.2%),同时也引入了联合履行、排放贸易和清洁发展机 制等三个灵活机制。 • 《京都议定书》被看作是从软法律到硬法律的进步,但有关具体 实施细则的谈判依旧困难,生效艰难。2001年3月,美国宣布拒 绝批准《京都议定书》。 • 2001年7月,第六次缔约方大会达成《波恩政治协议》,挽救了 《京都议定书》。 • 2001年10月,第七次缔约方大会通过《马拉喀什协定》,完成 《京都议定书》生效的准备工作,但其环境效益打了折扣。
3 氮 循 环
大气是最大的氮库( 3.9* 1021gN ),土壤和植被的氮库较小 ( 3.5* 1015gN和 95* 1015gN -140* 1015gN )。海洋除了接受陆地输入的氮 以外,通过降水接受一部分氮。
C语言程序设计教程(第4版)_第5章_循环结构

5.1 for语句
程序流程图: 程序:example5_2.c 思考: ①该算法的缺点; ②设计更好的算法。 ③假如输入的数可以为任意整数, 如果a≤b,计算 i ; 如果a>b,则计算 i 。 请设计算法并编写程序验证。
i b ia ia i b
5.1 for语句
例3:编写程序,从键盘输入m和n的值,用符号“*”在屏幕 上打印出如下所示具有m行n列的矩形图案。 ******* ******* ******* ******* ******* ******* ******* ******* 分析: ①图案有规律,共有m行,每行有n个*号。 ②可采用循环嵌套的方式: 第1层(外层)控制行数,用i来表示,输出m行“*” ; 第2层(内层)控制列数,用j来表示,输出n列“*” 。
100
5.1 for语句
for语句所具有的特性。 1.<初始表达式>可以省略,但须保留分号(;),同时在for之 前必须给循环控制变量赋值,形式为: <初始表达式>; for(;<条件表达式>;<循环表达式>) <循环体语句> 2.<条件表达式>一般不可省略,否则为无限循环。 例如: for(i=1;; i++) sum =sum+i; 相当于条件总为真,程序会一直不停地执行直到“数据溢出”。
5.2 while语句
例7:编写程序,统计从键盘输入的字 符个数(回车换行符也是一个字符) ,当遇到结束标志时程序结束。 分析:关键是循环计数。
开始 count=0
(ch=getchar())!=EOF
F
设置一个累加器count(初值为0),
每次从键盘输入一个字符,只要该字 符的值不等于结束标志,累加器的值 就增1:count=count+1; 算法流程图如图所示。 程序: example5_7.c
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.有以下程序#include <stdio.h>main(){ int y=10;while(y--); printf("y=%d\n", y);}程序执行后的输出结果是A) y=0B) y=-1C) y=1D) while构成无限循环参考答案:B【解析】执行y - -直到值为0,由于y - -是先用再减,所以退出循环时,y的值为-1。2.有以下程序#include <stdio.h>main(){ int k=5;while(--k) printf("%d",k -= 3);printf("\n");}执行后的输出结果是A) 1B) 2C) 4D) 死循环参考答案:A【解析】--k先自减在使用,所以第一次判断条件即为while(4),条件为真执行打印k的值k=4-3,结果为1,第二次判断条件即为while(0),条件为假,结束循环,打印回车换行符。所以选择A选项。3.关于"while(条件表达式)循环体",以下叙述正确的是A) 循环体的执行次数总是比条件表达式的执行次数多一次B) 条件表达式的执行次数总是比循环体的执行次数多一次C) 条件表达式的执行次数与循环体的执行次数一样D) 条件表达式的执行次数与循环体的执行次数无关参考答案:B【解析】while循环是先判断条件,满足条件后执行循环体,执行完后接着判断条件,执行,直到最后一次判断条件后不成立,跳出循环,所以最后一次执行了条件表达式,但是没有执行循环体,所以选择B选项。4.有以下函数:int fun(char *s){ char *t=s;while(*t++);return(t-s);}该函数的功能是()A) 计算s所指字符串的长度B) 比较两个字符串的大小C) 计算s所指字符串占用内存字节的个数D) 将s所指字符串复制到字符串t中参考答案:A【解析】首先char *s 接受一个字符型数组的首地址并将这个首地址赋给另一个字符型指针char*t ,while(*t++)不断循环直到*t 为'\0',再将t-1 ,这时字符指针t 指向字符串的最后一个字符,又因为s 指向字符数组的首地址即字符串的首地址所以return(t-s) 便是返回字符数组中字符串的长度。
5.有以下程序#include <stdio.h>main(){ int y=10;while(y--);printf("y=%d\n",y);}程序执行后的输出结果是A) y=-1B) y=0C) y=1D) while构成无限循环参考答案:A【解析】y- - 先使用在自减。所以最后一次y的值为0,条件不成立但仍要执行自减操作,y的值为-1,跳出循环。打印y的值-1。6.有以下程序#include <stdio.h>main(){ int a = 7;while ( a-- ) ;printf ("%d\n", a);}程序运行后的输出结果是A) 0B) -1C) 1D) 7参考答案:B【解析】a- -的含义是先用后减1,所以当a的值为0时,跳出循环,但是仍要执行a-- ,a的值变为-1。7.有以下函数int aaa(char *s){ char *t=s;while(*t++);t--;return(t-s);}以下关于aaa函数功能叙述正确的是A) 将串s复制到串tB) 比较两个串的大小C) 求字符串s的长度D) 求字符串s所占字节数参考答案:C【解析】本题重点考察的知识点while循环语句的应用。
aaa()函数中,首先定义了一个字符指针t指向形参s,然后通过一个while循环让指针t不断递增,直到t指向字符串结束标识处。
当t指向结束标识处时,由于后缀++运算符的原因,它还会被再递增1,所以接下来的t--;语句让它回到结束标识处。
最后返回t-s,s还是指向字符串第1个字符处,而t指向了字符串结尾,故返回值为字符串的长度值。
因此C选项正确。
8.在以下给出的表达式中,与while(E)中的(E)不等价的表达式是A) (E>0||E<0)B) (E==0)C) (! E==0)D) (E!=0)参考答案:B【解析】while语句中条件表达式E的值不为0即为真,认为满足条件,所以与B选项中表达式的含义正好相反,选择B选项。9.有以下程序#include <stdio.h>int fun( char s[]){ int n=0;while(*s <= '9'&&*s >='0') { n=10*n+*s-'0' ; s++; }return (n);}main(){ char s[10]={ '6', '1', '*', '4', '*', '9', '*', '0', '*'};printf("%d\n",fun(s));}程序的运行结果是A) 5B) 9C) 61D) 61490参考答案:C【解析】在fun函数中,while循环的功能是:逐个取字符数组s的字符判断其是否是数字。
若是则将其作为个位数字保存到变量n中,n的原数据的各个数位将相应左移一个10进制位。
当指针s指向数组的第3位时,循环条件不成立,循环结束,返回n的值,输出n的值为61。
因此C选项正确。
10.若有以下程序#include <stdio.h>main(){ int a=-2, b=0;while(a++) ++b ;printf("%d,%d\n", a, b);}则程序的输出结果是A) 1,2B) 0,2C) 1,3D) 2,3参考答案:A【解析】第一次while判断条件中a++,先用后加,为-2不为0条件为真,执行a的自加与++b操作,a 的值变为-1,b的值变为1。第二次while判断后,a的值变为0,b的值变为2。第三次while判断条件为假,但是仍要执行自加操作,即值为1,跳出循环。打印1和2。11.由以下while构成的循环,循环体执行的次数是int k=0;while ( k=1 ) k++;A) 有语法错,不能执行B) 一次也不执行C) 执行一次D) 无限次参考答案:D【解析】本题考察while语句,while语句的语义是:计算表达式的值,当值为真(非0)时,执行循环体语句。
k=1为赋值语句,即k 的值等于1。
while(k=1) = while(1) ,是死循环,执行无限次。
因此A选项正确。
12.以下叙述中正确的是A) 只要适当地修改代码,就可以将do-while与while相互转换B) 对于"for(表达式1;表达式2;表达式3) 循环体"首先要计算表达式2的值,以便决定是否开始循环C) 对于"for(表达式1;表达式2;表达式3) 循环体",只在个别情况下才能转换成while语句D) 如果根据算法需要使用无限循环(即通常所称的"死循环") ,则只能使用while语句参考答案:A【解析】B选项中,for语句中需要先求解先求解表达式1;C选项中,for语句使用最为灵活,它完全可以取代while 语句;D选项中,对于死循环,也可以使用for语句。
因此A选项正确。
13.对于while(!E) s; ,若要执行循环体s,则E的取值应为:A) E等于1B) E不等于0C) E不等于1D) E等于0参考答案:D【解析】while语句的一般形式为:while(表达式)语句;其中表达式是循环条件,语句为循环体。
while语句的语义是:计算表达式的值,当值为真(非0)时,执行循环体语句。
该题中如要执行语句s,则!E应为真,因此E应等于0,D选项正确。
14.有以下程序#include <stdio.h>int fun( char *s ){ char *p=s;while (*p !=0 ) p++;return ( p-s );}main(){ printf( "%d\n", fun( "goodbey!" ) ); }程序的输出结果是A) 0B) 6C) 7D) 8参考答案:C解析】本题主要考查了函数定义及调用,以及while循环语句,执行fun函数后,首先是找到最后一个字符的地址,然后减去第一个地址得到的就是这个字符串的长度,所以本题答案为8.15.有以下程序#include <stdio.h>main(){ int a = -2, b = 0;while (a++ && ++b) ;printf("%d,%d\n", a, b );}程序运行后输出结果是A) 0,2B) 0,3C) 1,3D) 1,2参考答案:D【解析】本题重点考察while语句,变量a和b分别赋初值为-2和1,while语句的语义是:计算表达式的值,当值为真(非0)时,执行循环体语句。
a++即a参与运算后,a的值再自增1。
++b 即b自增1后再参与其它运算。
当表达式的值为0时,退出循环,最后输出a和b的值为1和2。
因此D选项正确。
16.有以下程序#include <stdio.h>main(){char *s="12134";int k=0, a=0 ;while( s[ k +1 ] ){k++;if ( k % 2 ==0 ){a = a + ( s[ k ] - '0' +1 ) ;continue;}a = a + ( s[ k ] - '0' );}printf (" k=%d a=%d\n", k, a );}程序运行后的输出结果是A) k=5 a=15B) k=4 a=12C) k=6 a=11D) k=3 a=14参考答案:B【解析】当k=0时,执行while一次,得到k=1,a为2;当k=1时,执行while一次,得到k=2,a 为4;当k=2时,执行while一次,得到k=3,a为7;当k=3时,执行while一次,得到k=4,a为12;所以答案为B选项。
17.以下不构成无限循环的语句或语句组是()。
A) n=0;do {++n;} while (n<=0);B) n=0;while (1) { n++;}C) n=10;while (n);{n--;}D) for(n=0,i=1;;i++) n+=i;参考答案:A【解析】选项A)中do后面的语句只执行了一次便结束了循环;B)选项中条件while(1)永远成立,所以是死循环;C)选项中n的值为10,而循环体为空语句,所以while(n)永远为真,进入死循环;D)选项中for语句第二个表达式为空,所以没有判别条件,进入死循环。