文档详情

第4章 Cx51流程控制语句.ppt

发布:2017-05-19约字共41页下载文档
文本预览下载声明
第四章 Cx51流程控制语句 4.1 C语言程序的基本结构及流程图 4.2 选择语句 4.3 循环语句 4.1 Cx51语言的基本结构及流程图 4.2 选择语句 4.3 循环语句 习题参考答案(P.93) 习题6. 用选择分支编写程序,把输入的一个数字按下列对应关系显示。当输入Z时,程序结束。 #include stdio.h #include reg51.h 习题7. 若在C中的switch操作漏掉break,会发生什么? 习题8. 编写程序,输出x3数值表,x为0—10。 习题9. 用三种循环方式分别编写程序,显示1—100的平方。 例 for(;;) { a+=1; if(a100) break; } 初始语句、循环条件和结尾语句都不是必须的,任何一部分都可以省略。 这个例子中,是依靠循环体内的条件检测,利用break语句来结束循环的。 下面是一个利用循环语句延时1ms的延时程序,用参数50调用这个函数时,每次可以产生约50ms的延时: void msec(unsigned int x) { unsigned char i; while(x--) { for( i = 0 ; i 125 ; i++ ) { ;} } } 这并不是很精确的延时,根据不同的编译环境和优化条件,得到的汇编代码并不相同,延时效果会不一样,其中的125需要根据实际调整。若需要精确的延时,最好利用定时器来设计。 习题p. 93 6、7、8、9 请把第6题的“输入^Z”改为“输入Z” 答: 开始 输入 K=? 显示A K=1 显示B K=2 显示C K=3 显示D K=4 显示? 其他 K=Z? 结束 N Y main( ) { unsigned char k; do { scanf(“%c”,k); switch(k) { case ‘1’: printf(“A”); break; case ‘2’: printf(“B”); break; case ‘3’: printf(“C”); break; case ‘4’: printf(“D”); break; default: printf(“?”); break; } }while( k ! = ‘Z’ ); while( 1 ); } 答:若在case语句中漏掉break,则程序执行case选择部分程序后不会按照要求退出switch语句,而是继续执行下一个case语句选择的内容。 答: 开始 x=0 y=(int)x*x*x x++ x11? 结束 N Y 输出 x , y main() { unsigned char x; unsigned int y; for(x=0;x11; x++) { y=(unsigned int)x*x*x; printf(“%c,%d\n”,x,y); } while(1); } 答:三种流程图如下: #define uint unsigned int for 开始 x=1 y=(uint)x*x x++ x101? 结束 N Y 输出 x , y while 开始 x=1 y=(uint)x*x x++ x101? 结束 N Y 输出 x , y do while 开始 x=1 y=(uint)x*x x++ x101? 结束 N Y 输出 x , y main() { unsigned int y; unsigned char x; for( x = 0 ; x 101 ; x++) { y=(unsigned int)x*x; printf(“%c,%d\n”,x,y); } while(1); } main( ) { unsigned int y; unsigned char x=1; while(x101) { y=(unsigned int)x*x; printf(“%c,%d\n”,x,y);
显示全部
相似文档