好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

C语言第3章C程序的基本控制结构.ppt

97页
  • 卖家[上传人]:re****.1
  • 文档编号:590676325
  • 上传时间:2024-09-15
  • 文档格式:PPT
  • 文档大小:750.50KB
  • / 97 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 第第3章章 C程序的基本控制结构程序的基本控制结构3.1 顺序结构顺序结构 3.2 选择结构选择结构 循环结构循环结构 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 学习目标学习目标 ((1)掌握)掌握C语言语句的分类语言语句的分类2)理解三种程序控制结构的流程图理解三种程序控制结构的流程图3)掌握各种类型数据的格式化输入)掌握各种类型数据的格式化输入/输出方法输出方法4)掌握字符数据的非格式化输入)掌握字符数据的非格式化输入/输出方法输出方法5)理解选择结构的含义;掌握)理解选择结构的含义;掌握if、、switch语句的使用方法语句的使用方法 ((6)掌握关系运算符、逻辑运算符和条件运算符的用法;运)掌握关系运算符、逻辑运算符和条件运算符的用法;运算符的优先级关系和结合性算符的优先级关系和结合性7)理解循环结构的含义;掌握不同循环结构的选择及其转)理解循环结构的含义;掌握不同循环结构的选择及其转换方法;掌握混合控制结构程序设计的方法换方法;掌握混合控制结构程序设计的方法 ((8)掌握)掌握C语言三种循环结构的特点;掌握语言三种循环结构的特点;掌握while、、do-while、、for、、break、、continue语句的使用方法。

      语句的使用方法 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 程序设计语言有顺序、选择、循环三种基本程序设计语言有顺序、选择、循环三种基本的控制结构的控制结构1.用流程图表示.用流程图表示((1)顺序结构)顺序结构 表示先执行表示先执行A,再执行,再执行BBAab 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 ((2)选择结构)选择结构 如果如果P条件成立,执行条件成立,执行A,否则执行,否则执行B,然后转向,然后转向后面的语句后面的语句abab 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 ((3)循环结构)循环结构 有两种形式有两种形式 ①① while 结构(当型循环)结构(当型循环) 表示先判断条件表达式表示先判断条件表达式P,当,当P成立,即为成立,即为“真真”,,反复执行反复执行循环体循环体A;直到;直到P不成立,即为不成立,即为“假假”,转向其,转向其后面的语句。

      后面的语句注意:注意:如果如果P一开始就不成立,一开始就不成立, 则则A一次也不执行,一次也不执行, 直接转到下一条语句直接转到下一条语句ab 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 ②② do-while结构(直到型循环)结构(直到型循环) 先执行先执行循环体语句循环体语句A ,然后判断条件表达式,然后判断条件表达式P注意:注意:不管条件不管条件P 成立与否,循成立与否,循环体环体A至少执行一次至少执行一次ab 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 三种基本结构的共同特点三种基本结构的共同特点1.只有一个入口;只有一个入口;2.只有一个出口;只有一个出口;3.结构内的每一部分都有可能被执行到;结构内的每一部分都有可能被执行到;4.结构内不存在结构内不存在“死循环死循环” 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.1.1 C程序的语句程序的语句C语言的语句可分为以下四类:语言的语句可分为以下四类:1.表达式语句表达式语句2.函数调用语句函数调用语句 3.控制语句控制语句 4.复合语句复合语句 5.空语句空语句 简单语句简单语句 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 1. 表达式语句表达式语句由一个表达式加上一个分号构成。

      其一般形式为:由一个表达式加上一个分号构成其一般形式为:表达式;表达式; 如:如: x=y+z;; y+z;; i++;;2. 函数调用语句函数调用语句由函数调用表达式加分号构成由函数调用表达式加分号构成. 如:如: printf(“C Program”);; scanf(“%d”,&a); 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.控制语句控制语句用于控制程序的流程,用于控制程序的流程, 以实现程序的各种结构方式以实现程序的各种结构方式 C语言有C语言有九种九种控制语句控制语句,, 可分成以下三类可分成以下三类1) 条件判断语句:条件判断语句:if语句,语句,switch语句2) 循环执行语句:循环执行语句:do while语句,语句,while语句,语句,for语句3) 转向语句:转向语句:break语句,语句,goto语句,语句,continue语语句,句,return语句。

      语句 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 4. 4. 复合语句复合语句 把多个语句用大括号括起来组成的一个语句把多个语句用大括号括起来组成的一个语句称复合语句称复合语句例如:例如: 花括号中的语句,可以是简单花括号中的语句,可以是简单语句、空语句、复合语句、流程控语句、空语句、复合语句、流程控制语句,所有这些语句括在一起,制语句,所有这些语句括在一起,在语法上看成是一条语句,执行时在语法上看成是一条语句,执行时顺序执行花括号中的每条语句复顺序执行花括号中的每条语句复合语句多用于流程控制语句中合语句多用于流程控制语句中{ x=y+z;; a=b+c;; printf(“%d%d”,,x,,a);;} 复合语句内的各条语句都必须以分号复合语句内的各条语句都必须以分号“;;”结尾,结尾,在括号在括号“}”外不能加分号外不能加分号 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 5.空语句空语句只有分号组成的语句称为空语句只有分号组成的语句称为空语句 例如:例如: while(getchar()!='\n') ;; 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.1.2 数据输出函数数据输出函数printf() 和和putchar一.一.printf()函数(格式输出函数)函数(格式输出函数) 1.调用的一般形式调用的一般形式 printf(“格式控制字符串格式控制字符串”,输出表列输出表列) 其中格式控制字符串用于指定输出格式。

      格式控制串可由其中格式控制字符串用于指定输出格式格式控制串可由格式字符串格式字符串和和非格式字符串非格式字符串两种组成格式字符串是以两种组成格式字符串是以%开开头的字符串,在头的字符串,在%后面跟有各种格式字符,以说明输出数据后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等的类型、形式、长度、小数位数等可以是常量、可以是常量、变量、表达式量、表达式1.格式字符格式字符2.转义字符转义字符3.普通字符普通字符 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 【练一练】void main(){ int a=88,b=89; printf("%d %d\n",a,b); printf("%d,%d\n",a,b); printf("%c,%c\n",a,b); printf("a=%d,b=%d\n ",a,b);}程序运行输出结果:88 8988,89X,Ya=88,b=89 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 2.格式字符串.格式字符串 格式字符串的一般形式为:格式字符串的一般形式为:3.1 3.1 顺序结构顺序结构 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 格式转换说明符(格式转换说明符(格式字符格式字符))功功能能 %c 输出一个字符输出一个字符 %d 输出十进制整数,按实际位数输出输出十进制整数,按实际位数输出 %f 定点格式输出浮点数,整数部分取实际位数,小数部分保留定点格式输出浮点数,整数部分取实际位数,小数部分保留6位位 %e 指数格式指数格式[-]+nn输出浮点数输出浮点数 %g 选择选择 %f和和%e格式中,输出宽度较小的一种格式中,输出宽度较小的一种 %s输出字符串,按实际位数输出输出字符串,按实际位数输出 %u输出十进制无符号整数,按实际位数输出输出十进制无符号整数,按实际位数输出 %o输出八进制无符号整数,按实际位数输出输出八进制无符号整数,按实际位数输出 %x输出十六进制无符号整数,按实际位数输出输出十六进制无符号整数,按实际位数输出 %%输出一个输出一个% %p输出指针值输出指针值 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 对于格式转换说明符可以进行以下三类修饰:对于格式转换说明符可以进行以下三类修饰:1. 1. 指定字段宽度指定字段宽度(1) %其中:其中:m 规定输出字段的最小宽度;规定输出字段的最小宽度;n 规定输出最小有效位数。

      规定输出最小有效位数例如,例如, printf(“%3d,%6d,%6.5d\n”,1234,1234,1234);输出结果为输出结果为1234, 1234, 01234(2) %其中:其中:m 规定输出字段的最小宽度;规定输出字段的最小宽度;n 规定输出小数位数规定输出小数位数 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例如,例如,printf(“%10f,%10.2f,%.2f\n”,123.456,123.456,123.4); 输出结果为输出结果为 (3) %其中:其中:m 规定输出最小宽度;(规定输出最小宽度;(n-1)为尾数部分的小数位数为尾数部分的小数位数例如,例如,printf(“%10e,%10.4e,%.3e\n”,123.456,123.456,123.4);输出结果为输出结果为1.23456e+02, 1.235e+02,1.23e+02 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 注意:注意:(1) 无论是无论是 % % 还是还是 % % 格式,对舍去的小数最高格式,对舍去的小数最高位都四舍五入位都四舍五入。

      例如,例如, printf(“%04d,%010.2f,%010.3e\n”,125,12.3,123.5);printf(“%04d,%010.2f,%010.3e\n”,125,12.3,123.5);输出结果为:输出结果为:0125,0000012.30,001.24e+020125,0000012.30,001.24e+02(2) 对以上三种情况,如果在对以上三种情况,如果在““%”%”和和 之间加一个之间加一个 0 0,,则在规定字段宽度内左边多余的空位以则在规定字段宽度内左边多余的空位以 0 0 来填充,而不来填充,而不是空格 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 (4) %2. 2. 左对齐左对齐 如果在如果在“%”之后加一个负号(即之后加一个负号(即“-”),则在规定的宽度),则在规定的宽度内输出内容向左对齐,右面补空格或内输出内容向左对齐,右面补空格或“0”例如,例如,printf(“%3s,%15s,%10.5s,%.4s\n”,”China”,”Beijing”,”Beijing”,”China”);其中:其中:m 的含义与前面相同;的含义与前面相同;n 规定截取输出字符串左面的字符规定截取输出字符串左面的字符个数,字符串长度小于个数,字符串长度小于 n 时,按实际长度输出(时,按实际长度输出(n不起作用)。

      不起作用)输出结果为输出结果为 China,, Beijing,, Beiji,,Chin 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例如,例如,printf(“%-3d,%-6d,%-6.5d\n”,1234,1234,1234);printf(“%-10f,%-10.2f,%-.2f\n”,123.456,123.456,123.4);printf(“%-3s,%-15s,%-10.5s,%-.4s\n”,”China”,”Beijing”, ”Beijing”,”China”);输出结果为输出结果为1234,1234 , 01234China, Beijing , Beiji ,Chin 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3. 3. 类型修饰类型修饰(2) 在类型说明符在类型说明符 f、、e、、g 前面可以加字母前面可以加字母 l,表示输出,表示输出double 型数据1) 在类型说明符在类型说明符 d、、u、、o、、x、、i 前面可以加字母前面可以加字母“l”或或“h”,分别,分别表示输出表示输出 long 或或 short 型的数据。

      型的数据例如,例如,printf(“%d,%ld\n”,7000,70000l,);例如,例如,printf(“%15.8lf,%16.9le\n”,12.34567889,12.34567889);输出结果为输出结果为 12.34567889, 1.234567889e+01 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 关于格式输出的几点说明:关于格式输出的几点说明:-1和和65535例如,例如, printf(“%d,%u,%o,%x\n”,-1,-1,-1,-1); printf(“%d,%u,%o,%x\n”,65534u,65534u,65534u,65534u);((1)对于任何一种形式的整数都可以用)对于任何一种形式的整数都可以用 d、、i、、o、、u、、x(或(或“X”)格式输出,其中)格式输出,其中 d、、 i 输出带符号十进制形式,而输出带符号十进制形式,而 u、、o、、x格式输出无符号整数格式输出无符号整数输出结果为输出结果为-1,65535,177777,ffff-2,65534,177776,fffe-2和和655341 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0假设一个基本整假设一个基本整型数据在内存占型数据在内存占2B 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 ((2)如果)如果 printf( ) 函数中有多个表达式时,不同系统求值顺序不函数中有多个表达式时,不同系统求值顺序不同。

      同Turbo C 系统的求值顺序是自右至左的系统的求值顺序是自右至左的而在从右到左进行时,还而在从右到左进行时,还按运算符不同分批运算按运算符不同分批运算 例如,例如,printf(“%d,%d,%d\n”,2+3,3*4,6/2);void main(){ int i=8; printf("%d\n",++i); printf("%d\n",--i); printf("%d\n",i--); printf("%d\n",i++); printf("%d\n",-i--);}例例3-1 printf函数输出表列中的求值顺序函数输出表列中的求值顺序运行输出结果:运行输出结果:9887-8 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 void main(){ int i=8; printf("%d\n%d\n%d\n%d\n%d\n",++i,--i,i--,i++,-i--);} Turbo C中的结果:中的结果:7687-8中的结果中的结果8788-8 因为不同的系统对这种问题的处理方式采用不同的规则所以,应该因为不同的系统对这种问题的处理方式采用不同的规则。

      所以,应该尽可能在尽可能在printf语句内输出变量的值,不建议输出表达式的值语句内输出变量的值,不建议输出表达式的值 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例例3-2:使用:使用printf函数输出如下信息:函数输出如下信息:*************************** 好好学习,天天向上***************************#include <>void main(){ printf(“***************************\n”); printf(" 好好学习,天天向上好好学习,天天向上\n"); printf("***************************\n");}输出结果:*************************** 好好学习,天天向上好好学习,天天向上*************************** 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例例3-3:使用:使用printf函数输出如下信息:函数输出如下信息:姓名 外语 数学王丽 60 70程序:#include <>void main(){ printf("姓名\t外语\t数学\n"); printf(“王丽\t60\t70\n”);} 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 二.字符输出函数二.字符输出函数putchar()一般调用形式为:一般调用形式为: putchar(字符参数字符参数) 其功能是在显示器上输出单个字符。

      其功能是在显示器上输出单个字符例如:设例如:设char x=‘B’;;int i=66;;lputchar('A');; 输出大写字母输出大写字母Alputchar(x);; 输出字符变量输出字符变量x的值字母的值字母Blputchar(‘\101’);输出字符;输出字符Alputchar('\n');换行;换行lputchar(65);输出大写字母;输出大写字母Alputchar(i);; 输出变量输出变量i的值为的值为ASCII码的字母码的字母B字符型常量、变量字符型常量、变量或整型常量、变量或整型常量、变量注意:注意:使用本函数前必须要用文件包含命令:使用本函数前必须要用文件包含命令:#include<> 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 数据输入函数数据输入函数scanf()和和getchar 一.一. scanf函数(格式输入函数)函数(格式输入函数) 一般调用形式一般调用形式 scanf(“输入格式控制串输入格式控制串”,输入变量输入变量地址地址清单清单);格式格式转换说明符明符其他字符其他字符例如,例如, int k ; float x; char ch;scanf(“%d,%f,%c”,&k,&x,&ch); 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 格式转换说明符格式转换说明符功功能能 %c 输入一个字符输入一个字符 %d 输入十进制整数输入十进制整数 %f 输入浮点数,输入浮点数,不能指定小数位数不能指定小数位数 %e 输入浮点数,输入浮点数,不能指定小数位数不能指定小数位数 %s输入字符串,遇空格、制表符或回车符结束输入字符串,遇空格、制表符或回车符结束 %u输入十进制无符号整数输入十进制无符号整数 %o输入八进制无符号整数输入八进制无符号整数 %x输入十六进制无符号整数输入十六进制无符号整数 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 关于关于 scanf( ) 函数使用的几点说明:函数使用的几点说明:1 1 输入数据的分隔符输入数据的分隔符:空格、制表符或回车键:空格、制表符或回车键例如,例如,scanf(“%d%d%d”,&i,&j,&k);输入形式可以是:输入形式可以是:①① 3 4 5②② 3 4 5③③ 3 4 5 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 2 2 输入数据类型输入数据类型1)) 输入长整型数据时,可以用输入长整型数据时,可以用 %ld、、%lo、、%lx 或或%lu,,而且用整型格式控制整型变量输入时,从键盘输入的必须是整而且用整型格式控制整型变量输入时,从键盘输入的必须是整数。

      数例如,例如,scanf(“%d%d”,&a,&b);如果输入如果输入12 .56 23结果结果 a=12,而变量,而变量 b 没有得到值没有得到值2)当用)当用%f 或或%e 格式控制格式控制float和和double型变量的输入时,输入型变量的输入时,输入的数据可以是小数形式、指数形式或整数不能指定小数位数的数据可以是小数形式、指数形式或整数不能指定小数位数 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3)对于用)对于用%c 格式输入格式输入 char 型数据时,不需加单引号如型数据时,不需加单引号如果连续输入多个字符时,不需要使用分隔符果连续输入多个字符时,不需要使用分隔符例如,例如,scanf(“%c%c%c”,&c1,&c2,&c3);如输入如输入ABC则有则有 c1=‘A’,c2=‘B’,c3=‘C’而如输入而如输入A B C则有则有 c1=‘A’,c2=‘ ’,c3=‘B’ 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 4. 4. 限制输入数据的宽度(限制输入数据的宽度(““m”m”))例如,例如,scanf(“%5d%4d%4d”,&a,&b,&c);scanf(“%10s”,str);如果输入如果输入1234567890good morning则各变量的值:则各变量的值:a=12345,,b=6789,,c=0字符型数组字符型数组 str 得到的值是得到的值是“good” 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 二.二.getchar()函数函数一般形式为: getchar()功能:是从键盘上输入一个字符。

      通常把输入的字符赋予一个字符变量,构成赋值语句,如:通常把输入的字符赋予一个字符变量,构成赋值语句,如:#include<>void main(){ char c;; printf("input a character\n");; c=getchar();; putchar(c);;}注意:注意:使用本函数前必须要用文件包含命令:使用本函数前必须要用文件包含命令:#include<> 第第3 3章章 C C程序的基本控制结构程序的基本控制结构  顺序结构程序举例 顺序结构程序举例例3-1:编写程序,要求输入以华氏度表示的温度值,输出以摄氏度表示的温度值提示】表示温度的单位有两种:摄氏度和华氏度由华氏度转换为摄氏度的转换公式为:C=5/9(F-32) 其中C代表摄氏度,F代表华氏度 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 测试(运行)测试(运行)输入华氏温度输入华氏温度:75.5摄氏温度为:摄氏温度为:程序如下:程序如下:#include<>void main(){float f,c; printf("输入华氏温度输入华氏温度:\n"); scanf("%f",&f); c=5.0/9.0*(f-32); printf("摄氏温度为:摄氏温度为:%5.1fC\n",c);} 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.1.5 常见错误(自修)常见错误(自修)  关系运算 关系运算1. 关系运算符关系运算符 运算符含 义运算级别结合性<小于优先级相同(高)左结合<=小于或等于↑>大于↑>=大于或等于↑= =等于优先级相同↑!=不等于(低)3.2 3.2 选择结构选择结构 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 2. 关系表达式关系表达式 用关系运算符将两个表达式连接起来所构成的表达式。

      一般形式为: <表达式表达式1> <关系运算符关系运算符>< 表达式表达式2> 关系表达式的值关系表达式的值: “真”和“假”两种,分别用“1”和“0” 表示例如,例如,设有定义:int a=3,b=4,c=5,d=6,i=-8,j=1,k=2,x=0; 计算下列各表达式的值 1.a+b>c-d 2.x>3/2 3.'a'+1(b>c) 6.a!=(c==d)7.a>b>c1001110  逻辑运算 逻辑运算1. 逻辑运算符逻辑运算符 C语言中提供了三种逻辑运算符C语言中提供了三种逻辑运算符 逻辑运算符含 义运算级别结合性!逻辑非(高)右结合&&逻辑与↑左结合||逻辑或(低) 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 2.逻辑表达式.逻辑表达式 用逻辑运算符将任意用逻辑运算符将任意C表达式连接起来构成的表达式表达式连接起来构成的表达式一般形式为:一般形式为: [<表达式表达式1>] <逻辑运算符逻辑运算符>< 表达式表达式2> 3.逻辑运算的值.逻辑运算的值 在C语言中分别用“1”和“0”来表示 “真”和“假” 。

      参加逻辑运算的表达式以“非非0”和和“0”代表代表“真真”和和“假假” aba&&ba||b!a!b0000110非00110非000101非0非01100 int a=5; float b=3.5; !a ( ) !(a < b) ( ) a && b ( ) !a&&b ( ) !a&&!b ( ) !(a&&b) ( ) a ¦¦ b ( ) !a||b ( ) !a||!b ( ) !(a||b) ( ) (a < b) && (a > 0) ( ) (a < b) ¦¦ (a > 0) ( )例如例如011000110001 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 1 if-else语句一般格式: if(表达式表达式) 语句语句1;; [ else 语句语句2;;]功能:如果表达式的功能:如果表达式的值为真,真,则执行行语句句1,,否否则执行行语句句2 。

      C语言的if语句有两种基本形式 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例例 输入两个整数,求最大数include <>void main() /* 主函数 */{ int a,b; int max; printf("\n 请输入两个数: "); scanf("%d%d",&a,&b); if(a>b) /* 判断表达式 */ max=a; /* 语句1 */ else max=b; /* 语句2 */ printf("max=%d\n",max);}请输入两个数:8 9max=9 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.2.3 if语句和条件运算符语句和条件运算符省略省略else分支的分支的if语句语句 一般形式: if(表达式表达式) 语句语句1 或 if(表达式表达式) 语句语句1 功能:如果表达式的值为真,￿则执行其后的“语句1”,￿否则不执行“语句1”。

      第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例 输入两个整数,求最大数include <>void main() /* 主函数 */{ int a,b; int max; printf("\n 请输入两个数: "); scanf("%d%d",&a,&b); max=a; if(maxmax=9 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 #include <>void main(){ int a,b,t; scanf(“%d,%d ”, &a,&b); if (a >b ) { t = a; a = b; b = t; } printf(“Result: %d, %d”, a,b ); }例例3-5:输入两个整数,按从小到大顺序输出。

      输入两个整数,按从小到大顺序输出 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 2 if-else-if形式(当有多个分支选择时采用)形式(当有多个分支选择时采用)一般形式为: if(表达式表达式1) 语句语句1else if(表达式表达式2) 语句语句2else if(表达式表达式3) 语句语句3…else if(表达式表达式n) 语句语句n[else 语句语句n+1]执行流程如下图所示:执行流程如下图所示: 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 功能:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句然后跳到整个if语句之外继续执行程序￿如果所有的表达式均为假,则执行语句n+1然后继续执行后续程序 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例例 从键盘输入任意字符,根据其从键盘输入任意字符,根据其ASCII码来判别属于哪类码来判别属于哪类字符 #"void main(){ char c; printf("input a character: "); c=getchar(); if(c<32) printf("This is a control character\n"); else if(c>='0'&&c<='9') printf("This is a digit\n"); else if(c>='A'&&c<='Z') printf("This is a capital letter\n"); else if(c>='a'&&c<='z') printf("This is a small letter\n"); else printf("This is an other character\n");} 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例例3-6.输入某学生的成绩,经处理后给出成绩输入某学生的成绩,经处理后给出成绩的等级。

      等级划分如下:的等级等级划分如下:输入一个分数输入一个分数scorel当当score >= 90 输出输出 Al当当80<=score <90 输出输出 Bl当当70<=score <80 输出输出 Cl当当60<=score <70 输出输出 Dl当当 score<60 输出输出 E 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 #include<> /* li3-6.c */main( ){ float score; scanf(“%f”, &score); if ( score>=90) printf(“%c” , ’A’); else if ( score >=80) printf(“%c” , ’B’); else if (score >=70) printf(“%c” , ’C’); else if (score >=60) printf(“%c” , ’D’); else printf(“%c” , ’E’); }程序如下:程序如下: 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3 选择结构的嵌套。

      if ( 表达式表达式1) if ( 表达式表达式2) 语句句1 [ else 语句句2]else if ( 表达式表达式3) 语句句3 [ else 语句句4]表达式表达式2表达式表达式1表达式表达式3语句语句1语句语句2语句语句3语句语句4非000非00非0 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 2.条件运算符和条件表达式.条件运算符和条件表达式 条件运算符 ? : 它是一个三目运算符条件表达式形式为: 表达式表达式1?表达式表达式2:表达式表达式3功能功能:如果表达式1的值为真,则以表达式2 的值作为条件表达式的值,否则以表达式3的值作为整个条件表达式的值优先级优先级:仅高于逗号和赋值运算结合性结合性:右结合的例如:max=a>b?a:b 相当于 max=(a>b?a:b) a>b?a:c>d?c:d 相当于 a>b?a:(c>d?c:d) if(a>b) max=a;else max=b;max=(a>b)?a:b; 等价于表达式表达式1取表达式取表达式2的值的值作为整个表达式作为整个表达式的值的值非00取表达式取表达式3的值作的值作为整个表达式的为整个表达式的值值 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 如:if(a==b&&x==y) printf(“a=b,x=y”); if(3) printf(“OK”); if(‘a’) printf(“%d”,’a’);例 考虑下面程序的输出结果: #include <> main() { int x,y; scanf(“%d,%d”,&x,&y); if(x>y) x=y; y=x; else x++; y++; printf(“%d,%d\n”,x,y);}Compile Error!3.在使用.在使用if语句中应注意的问题语句中应注意的问题l语句可以是复合语句lif后面的表达式类型任意if(x)  if(x!=0)if(!x)  if(x==0) 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 缺省缺省{ }时,时,else总是和它上面离它最近的未配对的总是和它上面离它最近的未配对的if配对配对if(……)if(……)if(……)else…...else…...else…...lif ~ else 配对原则:配对原则: 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 实现if ~ else 正确配对方法例:例: if (a==b) if(b==c) printf(“a==b==c”); else printf(“a!=b”);修改:修改: if (a==b) { if(b==c) printf(“a==b==c”); } else printf(“a!=b”);实现if ~ else 正确配正确配对方法:加方法:加{ } 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.2.4 switch语句语句一般形式为:一般形式为:switch(表达式表达式E){ case E1: 语句组语句组1;; break;; case E2: 语句组语句组2;; break;; … case En: 语句组语句组n;; break;; [default: 语句组语句组n+1;;]} E1~En常量常量表达式表达式 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 注意:lE1,E2,…En是常量表达式,且值必须互不相同。

      l语句标号作用, case后可包含多个可执行语句,且不必加{ },必须用break跳出ldefault可以缺省,在这种情况下,如果没有成功的匹配,则程序什么都不执行,直接退出switchlbreak语句也可以缺省,程序流程如图3-14所示l多个case可共用一组执行语句如:如: …… case ‘A’: case ‘B’: case ‘C’: printf(“score>60\n”); break; …….. 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 缺省全部缺省全部break语句后,语句后, switch语句的执行流程:语句的执行流程: 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例3-7 要求输入某学生的成绩,经处理后给出学生的等级,等级分类如下: 90分以上(包括90):A 80至90分(包括80):B 70至80分(包括70):C 60至70分(包括60):D 60分以下: E分析: 设score为整型数,利用两个整数相除,结果自动取整的特性,score和 score /10 有如下对应关系: score score/10 90以上 10, 9 70~89 7 , 8 60~69 6 60以下 5,4,3,2,1,0 因此,可以用score /10的值来确定分支。

      第第3 3章章 C C程序的基本控制结构程序的基本控制结构 #include<>void main(){ int score; char ch; printf("\ninput a student's grade:"); scanf("%d",&score); if(score<0||score>100) printf("\ninput error!\n"); else { switch (score/10) { case 10: case 9: ch='A'; break; case 8: ch='B'; break; case 7: ch='C'; break; case 6: ch='D'; break; default: ch='E'; } printf("\nthe student's scort:%c\n",ch); }} 第第3 3章章 C C程序的基本控制结构程序的基本控制结构  选择结构程序举例 选择结构程序举例例例3-8 下下面面程程序序的的功功能能是是将将一一个个50000以以内内的的正正整整数数逆逆序序输出。

      例如输入输出例如输入1234,输出,输出4321程序如下: 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 #include <>main(){int a,b,c; int n; printf("Please input an integer(>0 and <=50000): "); scanf("%d",&a); if(a>=10000)n=5; else if(a>=1000) n=4; else if(a>=100)n=3; else if(a>=10)n=2; else n=1; b=0; switch(n) {case 5: c=a%10; a/=10; b=b*10+c; case 4: c=a%10; a/=10; b=b*10+c; case 3: c=a%10; a/=10; b=b*10+c; case 2: c=a%10; a/=10; b=b*10+c; case 1: c=a%10; a/=10; b=b*10+c; }printf("Result: %d.\n", b);} 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.2.6 常见错误常见错误(自修自修)1. 把关系运算符把关系运算符“==”误写为赋值运算符误写为赋值运算符“=” 比较两个数的大小关系。

      比较两个数的大小关系x=3;;y=4;;if(x=y) printf("x=y\n");;l运行状态:正常运行,但没有得到预期结果运行状态:正常运行,但没有得到预期结果l原因:原因:if(x=y)中中x=y是赋值表达式,其是赋值表达式,其x=4x=y赋值表达赋值表达式的值也是式的值也是4,非零,永远为真应把,非零,永远为真应把if(x=y)改为改为if(x==y) 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 2.遗漏括号遗漏括号语句:if x>=y x=9;l运行状态:语法错误l错误描述:syntax error : identifier 'x'l原因:if语句中,条件判断表达式必须加括号才正确应改为:if (x>=y) x=9; 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.遗漏大括号遗漏大括号程序段:if(b

      一般格式为while (表达式表达式) 语句语句3.3 3.3 循环结构循环结构 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例例3-9:把一个非零整数的各位分解出来,并按逆序输出例如,若输入为6582,则输出2 8 5 6 #include <>main() { int n; int remainder; printf("请输入要分解的数:"); scanf("%d",&n); while(n!=0) { remainder=n%10; printf("%d ",remainder); n=n/10; }}请输入要分解的数:65822 8 5 6 第第3 3章章 C C程序的基本控制结构程序的基本控制结构   do-while语句语句 do-while语句属于“直到型”循环一般形式是 do{语句语句}while(表达式表达式);;注意 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例例3-9-2:把一个非零整数的各位分解出来,并按逆序输出例如,若输入为6582,则输出2 8 5 6。

      #include <>main() { int n; int remainder; printf("请输入要分解的数:"); scanf("%d",&n); do { remainder=n%10; printf("%d ",remainder); n=n/10; } while(n!=0);}请输入要分解的数:65822 8 5 6 第第3 3章章 C C程序的基本控制结构程序的基本控制结构   for语句语句 for语句属于当型循环,它按步长修改循环控制变量的值,故也称为“步长型”循环一般格式为:for(for(表达式表达式1;1;表达式表达式2;2;表达式表达式3)3) 循环体语句循环体语句1.计算表达式计算表达式1,通常用于循环开始,通常用于循环开始前设置变量初值前设置变量初值2.计算表达式计算表达式2,值为,值为0则结束循环,则结束循环,否则执行第否则执行第3步3.执行循环体语句执行循环体语句4.计算表达式计算表达式3,返回第,返回第2步执行流程执行流程 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例例: 求求 1+2 +…+99#include<>main( ){ int i,s=0; for(i=1;i<=99;i++) s=s+i; printf(“s=%d”,s); }分析:用变量分析:用变量i i从从1 1到到9999循环,把循环,把i i的值累加到变量的值累加到变量s s中,最后输出中,最后输出s s的的值。

      值程序如下:程序如下:i=1i<=99s=s+ii++假真 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 从上面的程序我们看到,从上面的程序我们看到,for语句中:语句中:表达式表达式1::通常是给通常是给循环控制变量循环控制变量赋初值赋初值表达式表达式2::循环是否继续执行的判别表达式,这个表达式循环是否继续执行的判别表达式,这个表达式通常与某一个(或多个)变量的值有关通常与某一个(或多个)变量的值有关表达式表达式3::通常用于改变通常用于改变循环控制变量循环控制变量的值 在某些情况下,在某些情况下,for语句中的表达式语句中的表达式1、、2、、3都可以省略,都可以省略,而改用其他的方式来实现这些功能我们还用上面的例子说而改用其他的方式来实现这些功能我们还用上面的例子说明明for语句省略表达式的情形语句省略表达式的情形例如, for(i=1,j=10;imain( ){ int i=1,s=0; for(;i<=99;i++) s=s+i; printf(“s=%d”,s); }2.省略表达式省略表达式3::#include<>main( ){ int i,s=0; for(i=1;i<=99;) {s=s+i;i++;} printf(“s=%d”,s); }3. 同时省略表达式同时省略表达式1、、3#include<>main( ){ int i=1,s=0; for(;i<=99;) {s=s+i;i++;} printf(“s=%d”,s); }表达式表达式2也可以省略也可以省略但在循环体中要借助但在循环体中要借助break;语句来实现循语句来实现循环的结束,我们将在环的结束,我们将在后面介绍。

      后面介绍注意:表达注意:表达式省略,分式省略,分号不省略号不省略 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 for语句中的表达式可以是一切形式的表达式,语句中的表达式可以是一切形式的表达式,逗号运算逗号运算符符参与的表达式也可以运用在参与的表达式也可以运用在for语句中,通常运用于表达式语句中,通常运用于表达式1和表达式和表达式3 如上面的例子可以改写为:如上面的例子可以改写为:#include<>main( ){ int i,s; for(s=0,i=1;i<=99;s=s+i,i++) ; printf(“s=%d”,s); }注意此处注意此处的分号 此处,表达式此处,表达式1用逗号表达式的形式,给多个变量赋初值用逗号表达式的形式,给多个变量赋初值表达式表达式3用逗号表达式把循环体也写入其中注意表达式用逗号表达式把循环体也写入其中注意表达式3书书写顺序不能交换写顺序不能交换 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例3-11:求sum=1+3+5+7+9+…+99。

      include<>main( ){ int i,s=0; for(i=1;i<=99;i+=2) s=s+i; printf(“s=%d”,s); } 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.3.4 三种循环的比较三种循环的比较(1)从功能和使用角度讲,for循环功能最强,最方便灵活,因而使用较多 (2)for循环与while循环是等价的,两者可以相互代替 (3) for循环和while循环是先判断循环条件,后执行循环体;而do-while循环则是先执行一次循环体,然后才判断循环条件。因此,后者不管在什么情况下,都至少要执行一次循环体。 第第3 3章章 C C程序的基本控制结构程序的基本控制结构  循环的嵌套 循环的嵌套 一个循环体内又包含另一个完整的循环结构,称循环嵌套三种循环语句都可以任意地互相嵌套执行时把内层循环看做是外层循环体中的一部分例如,例如,for(;;;;) {for(;;;;) {…}} 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 注意:注意: 在使用循环相互嵌套时,被嵌套的一定是一个完整的循环结构,即两个循环结构不能相互交叉。

      第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例3-12:用for循环输出如下图案:************************************ 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 #include <>main() { int row,col,m,n; scanf("%d%d",&m,&n); for(row=1;row<=m;row++) /* 外循环控制行数 */ { for(col=1;col<=n;col++) /* 内循环控制*的数量 */ printf("*"); printf("\n"); }}49************************************ 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例:输出九九乘法表例:输出九九乘法表 #include <>main(){ int i,j; for(i=1;i<=9;i++) { for(j=1;j<=i;j++) printf(" %d*%d=%d",i,j,i*j); printf("\n"); }}1*1=12*1=2 2*2=43*1=3 3*2=6 3*3=9……9*1=9 9*2=18 9*3=27……9*9=81 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.3.6 break和和continue语句语句 1.. break语句语句 功能功能:是退出是退出当前当前循环或循环或当前当前switch结构结构。 。 一般格式为 break;;main( ){ int s=0,i=1; for (; ;) { if (i>99) break; s = s+i; i++; } printf(“s=%d”,s);} 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 2..continue语句语句功能:只用在循环结构中,功能是结束本次循环。

      功能:只用在循环结构中,功能是结束本次循环一般格式一般格式 continue;;(a) while循环 (b) do while循环 (c) for循环 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例:输出例:输出10以内不能被以内不能被5整除的数整除的数 #include <>main(){ int i; for(i=1;i<=10;i++) { if(i % 5 ==0) continue; printf("%d\t",i); } printf("\n");}12346789 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例3-14:判断一个整数是否是素数分析:分析: 素数就是只能被1和这个数本身整除,而不能被其他任何数整除的数例如2,3,5,7是素数;6,8,10不是素数判断一个数n是否素数,可以有三种方法:1.用n依次除以2~n-12.用n依次除以2~n/23.用n依次除以2~若之间有一个数能整除n,即说明n不是素数。

      3.3.7 循环结构举例循环结构举例 可以使用for循环结构实现 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 #include <> /* 方法一:使用标志变量 */ main(){ int n,i; int flag=-1; printf("请输入一个整数:"); scanf("%d",&n); for(i=2;i<=n-1;i++) if(n%i==0) { flag=0; break; } if(flag==-1) printf("%d:是素数\n",n); else printf("%d:不是素数\n",n);}第一次运行:第一次运行:113113:是素数是素数第二次运行:第二次运行:5656:不是素数不是素数i的终止值可以换成的终止值可以换成n/2 或或 sqrt(n) 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 #include <> /* 方法二:不用标志变量 */#include <> main(){ int n,i,k; printf("请输入一个整数:"); scanf("%d",&n); k=sqrt(n); for(i=2;i<=k;i++) if(n%i==0)break; if(i>k) printf("%d:是素数\n",n); else printf("%d:不是素数\n",n);}第一次运行:第一次运行:113113:是素数是素数第二次运行:第二次运行:5656:不是素数不是素数 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 例3-15:输出100~200之间的所有素数。

      include <> #include <> main(){ int n,i,k; for(n=100;i<=200;n++) { k=sqrt(n); for(i=2;i<=k;i++) if(n%i==0)break; if(i>k) printf("%4d",n); }} 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 3.3.8 常见错误(自修)常见错误(自修)1.遗漏大括号.遗漏大括号 求sum=1+2++3+4+5+6+7+8+9+10和的程序段:while(i<=10) sum=sum+i; i++;printf("%d",sum);l运行状态:无限循环l原因:循环体由两条语句构成,但没用花括号括起来 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 2.遗漏右括号.遗漏右括号程序段:for(i=0;i<9;i++){for(j=0;j

      l原因:for(i=0;i<9;i++);语句后多加一个“;”号将一个分号放在for 语句的末尾,将产生一个什么都不做的空循环,从而改变了程序的结构,并没有实现累加操作 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 4.差.差1错误错误下面程序段功能,使循环体运行次数为10次for(count=0;count<=10;count++){ ……}l运行状态:运行循环体11次l原因:循环变量的初值或终值不正确;为了保证运行10次可以这样修改,或者把count的初值改为1,或者是把count的终值改为count<10,究竟是修改循环变量的初值还是修改循环变量终值,要根据具体情况而定3.3 3.3 循环结构循环结构 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 5.语法错误.语法错误程序段:for(count=0;count<=10,count++) sum+=count;l运行状态:语法错误l原因:for语句中用“,”号代替了“;” 第第3 3章章 C C程序的基本控制结构程序的基本控制结构 6.在累加、累乘、统计中变量没有赋初值.在累加、累乘、统计中变量没有赋初值程序段:int count ,fact,int sum;for(count=1;count<=10;count++) sum+=count;for(count=1;count<=10;count++) fact*=count;l运行状态:正常运行,但没有得到预期结果。

      l原因:变量sum和fact作为累加、累乘必须赋初值,sum=0,fact=1。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.