第四章程序流程控制语句(编辑修改稿)内容摘要:
case 4: case 6: case 9: case 11: /* 处理 “ 小 ” 月 */ days=30。 break。 case 2: /* 处理 “ 平 ” 月 */ if ( year%4==0 amp。 amp。 year%100!=0 || year%400==0 ) days=29。 /* 如果是闰年 */ else days=28。 /* 不是闰年 */ break。 default: /* 月份错误 */ printf(Input error!\n)。 days=0。 } if (days!=0) printf(”%d,%d is %ddays\n,year,month,days)。 } 省略 case子句之后的语句 第 33 页 167。 442 选择语句 switch语句 省略 break语句 例如:某程序段中, error是进行出错处理的函数。 flag=1。 /* error marker */ switch (i) { case 1: case 2: case 3: flag=0。 /* no error */ break。 case 4: flag=1。 /* error 1 */ case 5: error(flag)。 /* error process */ break。 default: flag=2。 /* other error */ } /* 假定函数 error是出错处理函数 */ 当 i=1, 2, 3 时: flag=0; 退出。 当 i=5 时: flag = 1; 调用 erorr(flag); 退出。 当 i=4 时: flag = 1; 调用 error(flag); 退出。 第 34 页 167。 442 选择语句 switch语句 例 : 请编写一个程序计算表达式: data1 op data2的值。 main ( ) { float data1, data2。 char op。 /* 定义操作数、操作符变量 */ printf(Enter your expression:)。 scanf (”%f%c%f”, amp。 data1, amp。 op, amp。 data2)。 /* 输入表达式 */ switch ( op ) /* 根据操作符分别进行处理 */ { case ’+’ : /* 处理加法 */ printf(%.2f+%.2f=%.2f\n, data1, data2, data1+data2)。 break。 case ’’ : /* 处理减法 */ printf (%.2f%.2f=%.2f\n, data1, data2, data1data2)。 break。 case ’*’ : /* 处理乘法 */ printf (%.2f*%.2f=%.2f\n, data1, data2, data1*data2)。 break。 case ’/’ : /* 处理除法 */ if ( data2==0 ) /* 若除数为0 */ printf (Division by zero.\n)。 else printf (%.2f/%.2f=%.2f\n, data1, data2, data1/data2)。 break。 default: /* 输入其它运算符 */ printf (Unknown operater.\n)。 } } 例 C3_4202 第 35 页 167。 45 循环语句 提出问题 提问: 从键盘上输入 10个整数并求和,怎么编程。 回答: 在程序中写入 10个 scanf( )语句。 提问: 从键盘上输入 500个整数并求和,怎么编程。 回答: 这个,嗯 ……??? 不会让我写 500个 ...... 老师: 让我们换一个角度来看待这些问题, 以上问题的实质是:将 scanf函数重复执行 N遍。 学生: 对。 好象是这么回事 ...... 老师: 我们可以引出一个概念“ 循环 ”,简单而言: 循环 就是不断 反复地执行同一段程序。 学生: 这就是我们今天要学的新东西。 第 36 页 167。 45 循环语句 循环 反复执行同一段程序,直到满足一定的条件后才停止执行该段程序。 C语言中控制循环的语句: ◆ while ◆ for ◆ dowhile 第 37 页 167。 451 while语句 while语句格式 while ( 表达式 ) 语句 ; 说明:语句 部分可以是 简单语句 ,也可 以是复合语句。 while语句的执行流程 表达式 ? 执行 语句 成立 不成立 执行 while循环之后的语句 循环控制条件 循环体 第 38 页 167。 451 while语句 实例 例 从键盘输入 10个整数,求这 10个整数的和。 include main ( ) { int count,num,total。 /* count:计数器, num:输入的整数 */ count=0。 total=0。 /* total:存放累加和 */ while ( count10 ) /* 循环控制条件 */ { count ++。 /* 循环体 */ printf (Enter the No.%d=, count)。 scanf (%d, amp。 num)。 total += num。 /* 计算累加和 */ } printf(Total=%d\n, total)。 } 例 C3_5101 第 39 页 167。 451 while语句 实例 例: 分析程序的运行结果 include main ( ) { int n=0。 while ( n3 ) printf (”n is %d\n”,n)。 n++。 printf(”That\’s all this program does.\n”)。 } 结果: 程序将不停的打印“ n is 0”, 直至终止程序 无法正常终止的程序,称为“ 死循环 ”。 结论: while语句 循环体 中,一定要有能够 对循环控制条件产生影响的语句。 避免出现“ 死循环 ”现象。 例 C3_51011 { } 第 40 页 167。 451 while语句 实例 例 1: 分析下列程序段 index=1。 while ( index 5 ) printf(”Good morning!\n”)。 分析: 程序段将无限制打印字符串。 因为循环中 没有 任何语句可以改变循环控制变量 index的初值 1。 第 41 页 167。 451 while语句 实例 例 2: 分析下列程序段 index=1。 while( index 5 ) printf(”Good morning!\n”)。 分析: 仍有问题,程序改变了 index,但方向错了。 在 index达到系统能够处理的最大负数时,将会产生下溢而终止程序。 结论: 循环体中必须有能够使循环 正常停止 的条件。 第 42 页 167。 451 while语句 实例 例 : 从键盘中读入一系列字符,直到输入字母 a时才停止。 分析: 由于不知道要输入的字符数量,只知停止条件是输入字母 a, 则只能将循环控制条件设为 ch!=39。 a39。 include main( ) { char ch=39。 39。 while ( ch!=39。 a39。 ) putchar( ch = getch( ) ); } 例 C3_5103 改写: include main( ) { char ch。 while ( (ch = getch( )) !=39。 a39。 ) ; } 例 C3_51031 循环体为空语句 第 43 页 167。 451 while语句 实例 例 : 对输入的行和字符进行计数。 分析: \n作为 行结束 标记的, DOS中有 [CTRL+Z]作为文件结束 标记 define EOF 1 include main ( ) { int c,nl=0,nc=0。 while ( ( c = getchar( ) ) != EOF ) { ++ nc。 if ( c == 39。 \n39。 ) ++ nl。 } printf(chars=%d, lines=%d\n, nc, nl)。 } 例 C3_5104 定义文件结束标记 nl行计数器 nc字符计数器 进行字符计数 如果找到 \n, 则行计数 第 44 页 167。 451 while语句 实例 例 3: 求 1到 100的之和。 main ( ) { int total=0, i=1。 while ( i = 100 ) { total = total + i。 i ++。 } printf(”Total=%d\n, total)。 } 例 C3_51041 变形 1: while ( i = 100 ) total += i++。 == total+=i。 ++i 变形 2: int i=0。 while ( ++i = 100 ) == ++i。 判断 i=100 total += i。 变形 3: int i=0。 while ( i++ 100 ) == 判断 i100; i++ total += i。 变形 4: int i=0。第四章程序流程控制语句(编辑修改稿)
相关推荐
会、非姊妹染色单体节段互换,导致基因交换,产生交换型染色单体; 4. 发生交换的性母细胞中四种染色单体分配到四个子细胞中,发育成四种配子 (两种亲本型、两种重组合型 /交换型 )。 5. 相邻两基因间发生断裂与交换的机会与基因间距离有关:基因间距离越大,断裂和交换的机会也越大。 甘肃农业大学动物科技学院 28 连锁与互换的遗传机理 P F1 偶线期同源染色体联会
• 派生类的对象也看作是原有基类的对象,可以当作基类的对象使用(子类就是子类型,Liskov 代换原理, 2020 年图灵奖) • 类定义了对象的状态成分(数据成员)和一组相关操作(称为方法) • 方法调用总是针对某个对象进行的,将方法调用看作是给相应对象送一个消息,对象通过执行相应操作的方式对消息做出响应 • 对一个消息执行什么方法,由接收消息的对象的类型确定(根据该对象所属的类确定
的分类 • 可以根据不同的标准进行对法律监督进行分类。 • 根据法律监督的主体不同 ,可分为国家监督和社 会监督; • 根据法律监督主客体关系的不同 ,可以分为系统内的监督和系统外的监督; • 根据法律监督的阶段不同 ,可分为事前监督、日常监督、事后
case ’1’ : printf(“%d\n”, a+b)。 break。 case ’2’ : printf(“%d\n”, ab)。 break。 case ’3’ : printf(“%d\n”, a*b)。 break。 case ’4’ : printf(“%f\n”, (float)a/b)。 } } else printf(“Invalid selsction.”)。 }
还是取消它的执行计划。 (2)在执行计划前, Agent找出它们计划中可能发生冲突的地方,并相互协调以预防冲突的发生。 13 在数据库系统中,一般都采取第一种方法,通过事务的概念来解决冲突。 通过 提交 或 回滚来实现事务处理。 这种事务处理机制是假设在冲突发生时,所有已执行的操作都可撤回的。 但在现实中,并不是所有的操作都可被撤回。 例如:两架飞机碰撞。 所以在 Agent分布式环境中
统的随机模型。 对随机现象进行模拟,实质上是要给出随机变量的模拟,即利用计算机随机地产生一系列数值,它们的出现服从一定的概率分布,称为 随机数。 离散事件系统仿真的基础就是产生随机数 产生随机数的方法 1927年 ,4万随机数表 ,以后有 100万随机数表(可以输入内存,随时调用) 从真实物理现象的随机因素中产生随机数,放射性粒子的放射源,电子晶体管的固有噪音等