c语言复习第六节

上传人:shaoy****1971 文档编号:114878616 上传时间:2019-11-12 格式:PPT 页数:26 大小:204KB
返回 下载 相关 举报
c语言复习第六节_第1页
第1页 / 共26页
c语言复习第六节_第2页
第2页 / 共26页
c语言复习第六节_第3页
第3页 / 共26页
c语言复习第六节_第4页
第4页 / 共26页
c语言复习第六节_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《c语言复习第六节》由会员分享,可在线阅读,更多相关《c语言复习第六节(26页珍藏版)》请在金锄头文库上搜索。

1、二、if语句的嵌套,嵌套:if语句包含if语句。 if ( ) if ( ) 语句1 else 语句2 else if ( ) 语句3 else 语句4 注意:else总是和它上面最近的if配对。,if ( ) if ( ) 语句1 else 语句2 如上:希望与第一个if配对使用,实际上在执行过程当中是与最近的配对。, if ( ) 语句1,例:写出程序的运行结果,main( ) int x,y=1, z; if (y!=0) x=5; printf(“%dn”,x); if (z= y0) x=4; else if (y=0) x=5; else x=6; printf(“%dn%dn”,

2、x,z); if (z=(y =0) x=5; 运行: x=4 ; printf(“%d,%dn”,x,z); ,5 6 0 4, 0,Lx6. 下面程序的输出是 A) -1 B) 0 C) 1 D) 不确定的值 main() int x=100, a=10, b=20, ok1=5, ok2=0; if(ab) if(b!=15) if(! ok1) x=1; else if(ok2)x=10; else x=-1; printf(“%dn“,x);,lx7.若执行下面的程序时从键盘上输入5,则输出是 A) 7 B) 6 C) 5 D) 4 main() int x; scanf(“%d“,

3、三、条件表达式,1。条件表达式的一般形式: 表达式1?表达式2:表达式3 2。功能:先判断表达式1的值,为真(非0)执行表达式2,为假(0)执行表达式3。 3。框图:,例如: min=(xy)? x : y ;,若xy,取x的值赋给min(把小数赋给min 若xy,取y的值赋给min(把小数赋给min) 相当于: if (xy) min=x; else min=y;,条件 只有其内嵌的语句为赋值语句且两分支都给同一变量赋值时,才能代替if语句。,练习:编程求y的值。 x2+1 (x=0) y= x2-1 (x0),y=(x=0)? x*x+1 :x*x-1 ;,例(P98 例5.4)输入一个字

4、符,判断它是否为小写。是小写则转换成大写,并输出其ASC码值。 ( a97,A65) 条件表达式? 条件:ch在az间;真:变大写 main( ) 假:不变 char ch; printf(“请输入一个字母ch:”) ch=getchar( ); *或用scanf(“%c”, ,ch=(ch=a ,运行:,请输入一个字母ch:d ch=d,ch-32=100-32=68,输出: 大写为:D,其ASC码值为:68 将上题条件表达式换成IF语句: ch=(ch=a 可,if (ch=a *取原值不变*,问:else 一句不要可否?,5.5 switch (多分支选择)语句,当条件分支较多时,可以用

5、switch语句来完成。 一形式: switch ( 表达式 ) case 常量:语句 case 常量:语句 : : case 常量n :语句n default :语句n+1 说明:“表达式”可是任何类型,一般为整型或字符型; 常量仅是起标号作用,表达式与哪个常量相匹配,就从此标号开始往下执行。,二、功能: 先依次判断case中的常量是否与表达式的值相等。如相等,则从其后的语句往下执行。若没有一个常量与表达式的值相等,则执行default后的语句。,例:,main( ) char grade; printf(“输入级别:”); scanf (“%c”,&grade); switch (grad

6、e) case A : printf (“成绩为:优n”); case B : printf (“成绩为:良n”); case C : printf (“成绩为:中n”); case D : printf (“成绩为:及格n”); case E : printf (“成绩为:不及格n”); default : printf (“输错,请重输n”); ,思考:若grade为C,如何执行和输出?,执行:先判断 grade的值,如:grade=C ; 第一个case不满足,则执行第二个,满足输出 常量只起语句标号作用,进入该入口。 运行结果为: 成绩为中 成绩为及格 成绩为不及格 输错,请重输 若:

7、不想让下面的内容都输出,应在每个语句后加break语句。,break: 中止语句,功能:中止下面的语句,跳出switch结构,往下执行。 修改:switch (grate); caseA : printf (“成绩为:优n”) ;break ; caseB : printf(“成绩为:良n”) ;break ; caseC : printf(“成绩为:中n”) ;break ; caseD : printf(“成绩为:及格n”);break ; caseE : printf(“成绩为不及格n”);break ; default : printf(“输错,请重输n”); 这样,每执行一个case

8、则跳出switch结构。一次只能执行一个case后面的语句。,可不加break,给一个不多与5位的整数,求它是几位数分别打印出每一位数字按逆序打印各位数字。比如输入原数321,则输出123。 分析: 1定义x,为long int,位数为p,每位数分别为:g,s,b,q,w。为int类型。 2用if求位数,若x9999,则位数P=5 否则,若x999,则位数P=4 否则,若x99,则位数P=3 否则,若x9,则位数P=2 否则,p=1,3求每位数g,s,b,q,w为整型,w=x/10000 56271, 6271取整后被截去 q=(x-w*10000)/1000 =(56271-50000)/1

9、000=6271/1000=6 g=x%10; 4输出正序和逆序 正序: printf(“正序数:”,w,q,b,s,g); 逆序: printf(“逆序数:”,g,s,b,q,w);,第6章 循环控制,6.1 概述 循环结构程序就是反复执行一个程序段的程序。它是C程序中最重要的最基本的程序结构之一。 6.2 goto语句(无条件转移语句) 格式:goto 语句标号 功能:无条件的转移到“语句标号”处。 说明:语句标号用标识符表示,不能只是数字。 如: abc: scanf(“%d,%d,%d”, 可用于循环体中跳转,但不提倡用。,main( ) /*将输入的大写字母转为小写*/ char c

10、h; printf(“请输入一个字母ch:”) ch=getchar( ); if (ch=a 问:若输入的不是字母是否出现问题?,if (ch=a,a1: printf(“请输入一个字母ch:”),引例,计算一个班30名学生每人本学期三门主要课程的平均分。,6.3 while语句(当型循环语句),格式: while(表达式)循环体语句 功能:先判断表达式的值,若为(非0)执行“语句”,执行后,再判断表达式的值。直至为(0),退出循环。 流程图:,while (n=30),scanf(”%d,%d,%d”,例1(例6.2):求s=1+2+3100的值。 main( ) int i,s=0; i

11、=1 ; while _ printf(“s=%dn”,s); ,main( ) int a,b,c,n =1; float v; while (n=30) scanf(”%d,%d,%d”, ,(i=100),s=s+i; i+ ;,说明:循环体若是复合语句,应用括起来。循环体中应由使循环趋向结束的语句,如:i+ ,(i=i+1),即修改循环变量的值。,6.4 do- while语句,一 、格式: do 循环体语句 while(表达式) 功能:先执行循环体(语句),然后判断表达式,若其值为非零,重新执行循环体,直到表达式的值为0。 流程图:,假(0),do scanf(”%d,%d,%d”,

12、while (n=30),main() int i=0,s=0; doi=i+1; s=s+i; while (i100); printf(“和s=%dn“,s); getch(); ,用复合的赋值运算如何表示?,问:如何输出1100的奇数,并求奇数和,以及奇数的个数。,s+=i,计数,累加,每次i增加多少?,例2。求:S=1+2+3+4+100,例3。求:S=1+3+5+99,和s,个数j。,main() int i=1,s=1,j=1; doi=i+2; s=s+i;j=j+1; while (i99); printf(“s=%dn“,s);printf(“j=%dn“,j); getch

13、(); ,比较while与do while,do while先循环后判断 ,while先判断后循环 循环体基本相同 循环变量初始化都在循环外进行。 若:while 后的表达式第一次为“假”(如i的初值为100,结果不同。 例4:求任意整数的阶乘。j=n! 分析:j=1*2*3*4*n这是一个累乘. 初值:i=1,j=1, 循环体: 循环条件: 时结束,去掉j=1可否?,j=j*i,i=i+1,,i=n,程 序:,main( ) int n,i; long int j; printf(“input n:”); scanf(“%d”, 用while语句作?,While (i=n) j=j*i; i

14、=i+1;,若有定义:float x=1.5; int a=1,b=3,c=2;则正确的switch语句是 A)switch(x) B) switch(int)x); case 1.0: printf(“*n“); case 1: printf(“*n“); case 2.0: printf(“*n“); case 2: printf(“*n“); C) switch(a+b) D) switch(a+b) case 1: printf(“*n“); case 1: printf(“*n“); case 2+1: printf(“*n“); case c: printf(“*n“);,上机作业,实验四 3,4 实验五 1,5,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 职业教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号