1 / 13

TKS

TKS. 1. 高级语言. (自学第三讲). 多路开关 ?. 绍兴文理学院. 计算机系计算机应用教研室. 第四章 流程控制语句 ( 二 ). 一、自学目的: 明确多分支的概念; 掌握 switch 结构的用法; 掌握 do…while 循环结构的使用方法;掌握 do…while 循环结构程序设计;程序设计训练。. 二、自学重点: switch 结构的用法; 迭代与穷举算法的思想和方法; do…while 循环结构的使用方法; do…while 循环结构进行程序设计;程序设计训练。. 三、自学难点: 迭代与穷举算法;循环结构进行程序设计;程序设计训练。 四、自学内容:.

fahim
Télécharger la présentation

TKS

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. TKS 1 高级语言 (自学第三讲) 多路开关 ? 绍兴文理学院 计算机系计算机应用教研室

  2. 第四章 流程控制语句(二) 一、自学目的:明确多分支的概念;掌握switch结构的用法;掌握do…while循环结构的使用方法;掌握do…while循环结构程序设计;程序设计训练。 二、自学重点:switch结构的用法;迭代与穷举算法的思想和方法;do…while循环结构的使用方法;do…while循环结构进行程序设计;程序设计训练。 三、自学难点:迭代与穷举算法;循环结构进行程序设计;程序设计训练。 四、自学内容:

  3. §4.3 switch语句 TKS 3 1、语句格式 switch(表达式) {case 常量表达式1: 语句序列1 case 常量表达式2: 语句序列2 ┆ case 常量表达式n: 语句序列n default: 语句序列n+1 } 2、语句执行过程:计算表达式的值。并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断, 继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同,则执行default后的语句。 00:50

  4. 3、匹配一分支执行 TKS 4 switch(表达式) {case 常量表达式1: 语句序列1 break; case 常量表达式2: 语句序列2 break; ┆ case 常量表达式n: 语句序列n break; default: 语句序列n+1 break; } 功能:执行与判断表达式相匹配的一个case子结构中的switch语句 00:50

  5. 4、例题 例1 将一个月份数字转换成月份的英文名称C+S3_1 TKS 5 void MonthName(int month) {switch(month) {case 1: cout<<"January\n";break; case 2: cout<<"February\n";break; case 3: cout<<"March\n";break; case 4: cout<<"April\n";break; case 5: cout<<"May\n";break; case 6: cout<<"June\n";break; case 7: cout<<"July\n";break; case 8: cout<<"August\n";break; case 9: cout<<"September\n";break; case 10: cout<<"October\n";break; case 11: cout<<"November\n";break; case 12: cout<<"December\n";break; default: cout<<"Illegal month\n";break; } } 00:50

  6. 例2 编写函数测试是数字、空白还是其他字符C+S3_2 TKS 6 void test_char(char c) {switch(c) {case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': cout<<"it \'s a digit\n";break; case ' ': case '\n': case '\t': cout<<"it \'s a white\n";break; default:cout<<"it \'s a char\n"; break; } } 00:50

  7. 5、注意 TKS 7 (1) 一个switch结构的执行部分是由一些case子结构和一个可缺省的default子结构所组成的复合语句,它们位于一对花括号之内。 (2) switch中的表达式只整数(包括字符)类型和整型常数表达式。 case 5+6: √ int x=5,y=6; case x+y: × (3)在case后的各常量表达式的值不能相同,否则会出现错误。 (4) case “常量表达式”只是起语句标号作用,并不是在该处进行条件判断。在执行switch语句时,根据switch后面表达式的值找到匹配的人口标号,就从此标号开始执行下去,不再进行匹配。 (5) switch结构允许嵌套。 (6)在case后,允许有多个语句,可以不用{}括起来。 如:case 1: x=x*x;printf(“\n%d”,x;);i++; (7) default子句可以省略不用。 (8)多个case可以共用一组执行语句。 (9)使用break语句,使程序结束switch语句的执行。 00:50

  8. int main(void) {char c; cin>>c; switch(c) {case 'a': case 'A': cout<<"Ada,Algol?\n"; cin>>c; switch(c){ case 'd': case 'D': cout<<"Ada \n"; break; case 'l': case 'L': cout<<"Algol \n"; break; default: cout<<"input error\n"; break; } break; case 'b': case 'B': cout<<"BasiC,BCDL? \n"; cin>>c; switch(c){ case 'a': case 'A': cout<<"BasiC \n"; break; case 'c': case 'C': cout<<"BCDL \n"; break; default: cout<<"I am sorry! \n"; break; } break; case 'c': case 'C': cout<<"C,Cobol,C++,C#? \n"; cin>>c; switch(c){case 'c': case 'C': cout<<"C\n"; break; case 'o': case 'O': cout<<"Cobol \n"; break; case '+': cout<<"C++ \n"; break; case '#': cout<<"C# \n"; break; default: cout<<"I am sorry! \n"; break; } break; default: cout<<"I am sorry! \n"; break; } return 0; } TKS 8 例3 联想猜词游戏C+S3_3 00:50

  9. §4.6 do 语句 TKS 9 1、语句格式 do 语句 while(表达式); 2、执行过程 实现“直到型”循环。先执行循环中的语句,然后再判断表达式是否为真,如果为真则继续循环;如果为假, 则终止循环。因此, do-while循环至少要执行一次循环语句。其执行过程如右图所示。 00:50

  10. 例4 用牛顿迭代法计算一个正实数a的平方根,精确到ε=10-5C+S3_4 xk+1=xk-f(xk)/f’(xk)=xk-( -a)/2xk 2 x k 取 =a为初值 迭代终止标志 | -a|<ε TKS 10 分析:建立迭代关系 由于 f(x)=x2-a 由 f(x)==0, f’(x)=2x 得迭代公式: #define E0 0.00005 double sq_root(double a) {double x=a; do x=(x+a/x)/2; while(fabs(x*x-a)>=E0); return(x); } int main(void) {double f=2.0; printf("The root of %lf is %lf\n",f,sq_root(f)); return 0; } =(xk+a/xk)/2 #include<iostream> using namespace std; #include<cmath> 00:50

  11. TKS 11 例5 编写程序将所输入的字符原样输出(标志法)C+S3_5 #include<iostream > using namespace std; int main(void) {int c; do {c=getchar(); putchar(c); }while(c!=EOF); // EOF 一般表示文件结束;其值一般为 return 0; // -1,这里可按“Ctrl-Z”键或F6键作为 } // 输入结束。 注意至少输出一个字符 00:50

  12. 例6 输入若干个数,将最大数打印输出C+S3_6 TKS 12 #include<iostream > using namespace std; #define FLAG -32768 int main(void) {int max,n; printf("Input a number:"); cin>>n; max=n; do {if(n>max) max=n; cout<<"Input next number:"; cin>>n; }while(n!=FLAG); cout<<"The max is:"<<max<<endl; return 0; } 00:50

  13. TKS 13 五、自学练习题: 编程题:5014、5019、5020、5026、1103、1119、1140 ? 00:50

More Related