三种程序控制结构预处理命令C程序源程序文件.ppt

上传人:scccc 文档编号:14037753 上传时间:2022-01-31 格式:PPT 页数:57 大小:165KB
返回 下载 相关 举报
三种程序控制结构预处理命令C程序源程序文件.ppt_第1页
第1页 / 共57页
三种程序控制结构预处理命令C程序源程序文件.ppt_第2页
第2页 / 共57页
三种程序控制结构预处理命令C程序源程序文件.ppt_第3页
第3页 / 共57页
三种程序控制结构预处理命令C程序源程序文件.ppt_第4页
第4页 / 共57页
三种程序控制结构预处理命令C程序源程序文件.ppt_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《三种程序控制结构预处理命令C程序源程序文件.ppt》由会员分享,可在线阅读,更多相关《三种程序控制结构预处理命令C程序源程序文件.ppt(57页珍藏版)》请在三一文库上搜索。

1、三种程序控制结构预处理命令C程序源程序文件,第二讲 三 种 程 序 控 制 结 构,三种程序控制结构预处理命令C程序源程序文件,数据输入/输出的概念,顺序结构,三种程序控制结构预处理命令C程序源程序文件,语言本身不提供输入/输出语句,所有的数据输入输出都是由库函数完成的。 在C语言中使用库函数时,要使用预处理命令#include 将相关的头文件(*.h)包含到用户源文件中。 使用形式: #include 头文件 或 #include ,说明:1. 标准输入/输出头文件是:stdio.h 2. printf() 和 scanf()函数不需要头包含文件,数据输入/输出语句,三种程序控制结构预处理命

2、令C程序源程序文件,函数putchar 的功能是在显示器上输出单个字符。 其一般形式为: putchar(字符变量) ;,字符输出函数putchar(),函数getchar函数的功能是从键盘上输入单个字符。 其一般形式为: 字符变量=getchar(); 只接受单个字符,输入数字也按字符处理。 输入多于一个字符时,只接收第一个字符,多余的字符存入到键盘的缓冲区,若有下一个getchar函数语句,由直接从键盘的缓冲区读一个字符。,字符输入函数getchar( ),三种程序控制结构预处理命令C程序源程序文件,一、格式输出函数printf() 一般形式为: printf(“格式控制字符串”,输出表列

3、),格式输入/输出,例如:printf(”x=%3dn,x),%格式说明起始符,3输出数据的宽度,d输出数据的类型,x输出项,普通字符,三种程序控制结构预处理命令C程序源程序文件,格式字符串的一般形式为: % 标志 输出最小宽度 .精度 长度 类型 其中方括号 中的项为可选项。,说 明:,三种程序控制结构预处理命令C程序源程序文件,d ,i 以十进制形式输出带符号整数(正数不输出符号) o 以八进制形式输出无符号整数(不输出前缀O) x, X 以十六进制形式输出无符号整数(不输出前缀OX) u 以十进制形式输出无符号整数 f 以小数形式输出单、双精度实数(小数6位) e ,E 以指数形式输出单

4、、双精度实数 g ,G 以%f ,%e中较短的输出宽度输出单、双精度实数 c 输出单个字符 s 输出字符串,格式字符,三种程序控制结构预处理命令C程序源程序文件,- 结果左对齐,右边填空格 + 输出符号(正号或负号)空格输出值为正时冠以空格,为负时冠以负号 # 对c,s,d,u类无影响; 对o类,在输出时加前缀o;对x类,在输出时加前缀0 x;对e,g,f 类当结果有小数时才给出小数点,标志,输出最小宽度 用十进制整数来表示输出的最少位数。 若实际位数多于定义的宽度,则按实际位数输出; 若实际位数少于定义的宽度则补以空格或0。,三种程序控制结构预处理命令C程序源程序文件,精度格式符以“.”开头

5、,后跟十进制整数。 本项的意义是:如果输出数字,则表示小数的位数;如果输出的是字符, 则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。,精度,三种程序控制结构预处理命令C程序源程序文件,各种格式字符的说明,一:d格式符1. %d 按数据实际长度输出%md m为指定的输出字段的宽度,如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。3. %ld 输出长整型数据,三种程序控制结构预处理命令C程序源程序文件,二:o格式符和x格式符 输出数据不带符号,即符号位作为数据的一部分输出三:u格式符 以无符号十进制输出例如:int a=-1; (-1以补码形式存储为)pr

6、intf(“%d,%o,%x,%u”,a,a,a,a);,结果为:-1,,177777, ffff,65535,三种程序控制结构预处理命令C程序源程序文件,四:c格式符(输出一个字符)五:s格式符(输出字符串)1. %s 按数据实际长度输出2. %ms m为指定的输出字段的宽度,如果数据的位数 小于m,则左端补以空格,若大于m,则按实际位数输出。3. %-ms 右端补以空格4. %m.ns 输出m列,但是只取字符串左端n个字符。 输出在m列的右侧,左补空格。 5. %-m.ns 右补空格,若nm则保证n个字符输出。,三种程序控制结构预处理命令C程序源程序文件,void main() print

7、f(%4.3sn,123456789); printf(%-4.3sn,123456789); printf(%4.5sn,123456789); printf(%-4.5sn,123456789);,例 如:,三种程序控制结构预处理命令C程序源程序文件,六:f格式符1. %f 整数部分全部输出,输出六位小数。 (注意有效位只有7位)%m.nf 输出数据共m列,其中n位小数。 如果数据长度小于m,左端补空。%-m.nf 右端补0。 (注意小数点也占一列),三种程序控制结构预处理命令C程序源程序文件,void main() printf(%fn,1.23456789); printf(%4.3f

8、n,1.23456789); printf(%-4.3fn,1.2); printf(%4.5fn,12.3456789); printf(%-4.5fn,12.3456789);,例 如:,三种程序控制结构预处理命令C程序源程序文件,七:e格式符%e 小数部分输出6位,指数部分5位,其中“e”占1位,指数符号占一位,指数占3位。%m.ne 输出数据共m列,其中n为尾数的小数位数。 如果数据长度小于m,左端补空。3. %-m.ne 右端补空。,三种程序控制结构预处理命令C程序源程序文件,void main() printf(%en,12.3456789); printf(%7.3en,12.3

9、456789); printf(%16.3en,12.3456789); printf(%-16.3en,12.3456789);,例 如:,三种程序控制结构预处理命令C程序源程序文件,scanf(“格式控制字符串”,地址表列); 格式控制字符串的使用与printf函数基本相同; 不能显示非格式字符串,也就是不能显示提示字符串;地址表列中给出各变量的地址。地址是由地址运算符“&”后跟变量名组成的。,二、格式输入函数scanf( ),三种程序控制结构预处理命令C程序源程序文件,格式字符串的一般形式为: %*输入数据宽度长度类型,格式字符串,宽 度 用十进制整数指定输入的宽度(即字符数)。 例如:

10、 scanf(%5d, 输入:12345678将把1234赋予a,而把5678赋予b。,三种程序控制结构预处理命令C程序源程序文件,scanf函数中没有精度控制。(2) 输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格,TAB或回车作间隔。(3) C编译在碰到空格,TAB,回车或非法数据时即认为该数据结束。(4) 在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。(5) 如果格式控制串中有非格式字符则输入时也要输入该非格式字符。 (6) 输入的数据与格式字符串中的类型要相一致。,使用scanf函数注意以下几点:,三种程序控制结构预处理

11、命令C程序源程序文件,判断题(P18),10printf函数中的格式符“%c”只能用于输出字符类型数据。12按格式符“%6.3f”输出i (i=123.45) 时,输出结果为 123.450。14格式符“%f”不能用于输入 double类型数据。15当格式符中指定宽度时,从缓冲区中读入的字符数完全取决于所指定的宽度。29不能用printf()函数输出字符。,三种程序控制结构预处理命令C程序源程序文件,填空题(P19-P21),1根据所给条件,写出下列各题的输出结果。(1)int i=234, j=567; 函数printf(%d%dn, i, j)的输出结果是 。(2)int i=234; f

12、loat x=-513.624; 函数printf(i=%5d x=%7.4fn, i, x)的输出结果是 。(3)函数printf(sin(%3.0f*%f/180)n, alfa, pi)的输出结果是 。,三种程序控制结构预处理命令C程序源程序文件,(4)char ch=$; float x=153.45; 函数printf(%c%-8.2fn, ch, x)的输出结果是 。(5)int d=27; 函数printf(%-5d,%-5o,%-5xn, d, d, d)的输出结果是 。(6)float x1=13.24, x2=-78.32; 函数printf(x(%d)=%.2f x(%d

13、)=%.2fn,1,x1,2,x2)的输出结果是 。,三种程序控制结构预处理命令C程序源程序文件,选择结构程序设计,三种程序控制结构预处理命令C程序源程序文件,1)第一种形式,基本形式: if (表达式) 语句; 2) 第二种形式,if-else形式 if (表达式) 语句1; else 语句2;,if 语句,三种程序控制结构预处理命令C程序源程序文件,3)第三种形式,if-else-if形式 if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式m) 语句m; else 语句n;,三种程序控制结构预处理命令C程序源程序文件,if关键字之后均为表达式,该表达式

14、通常是逻辑表达式或关系表达式,但也可以是其它表达式,甚至也可以是一个变量。在if 语句中,条件判断表达式必须用括号括起来,即使是一个变量的最简单表达式,也要用括号括起来;在语句之后必须加分号。(3) 在if 语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用 括起来组成一个复合语句。,注 意 :,三种程序控制结构预处理命令C程序源程序文件,一般形式可表示如下:,if (表达式1) if (表达式2) 语句1; else 语句2;,if 语句的嵌套,if(表达式1) if (表达式2) 语句;,在嵌套内的if语句可能又是if-else型的,这

15、将会出现多个if和多个else重叠的情况,这时要特别注意if和else的配对问题。语言规定,else 总是与它前面最近的if配对。 为了避免配对问题的产生,建议加 。,三种程序控制结构预处理命令C程序源程序文件,switch语句,switch(表达式) case 常量表达式1: 语句1; break; case 常量表达式2: 语句2; break; case 常量表达式n: 语句n; break; default : 语句n+1; ,三种程序控制结构预处理命令C程序源程序文件,在switch语句中,“case 常量表达式”只相当于一个语句标号,表达式的值和某标号相等则转向该标号执行,但不能在

16、执行完该标号的语句后自动跳出整个switch 语句,将继续执行所有后面case语句的情况。 case后的各常量表达式的值不能相同。 case后,允许有多个语句,可以不用 括起来。 各case和default子句的先后顺序可以变动,而不会影响程序执行结果。default子句可以省略不用。 若判断的是一个区间,要将区间转换成单个值。,说 明,三种程序控制结构预处理命令C程序源程序文件,main() int a=0, i; for(i=1;i5;i+) switch(i) case 0: case 3:a+=2; case 1: case 2:a+=3; default : a+=5; printf

17、(%dn,a); A) 31 B) 13 C) 10 D) 20,三种程序控制结构预处理命令C程序源程序文件,循环结构,分类当型循环:while直到型循环:do while最灵活的for循环适用场合循环次数已知:for 、while 、do while循环次数未知:while 、do while如何转换?,三种程序控制结构预处理命令C程序源程序文件,循环结构类型,三种程序控制结构预处理命令C程序源程序文件,while 语句,while语句的一般形式为: while(表达式) 语句;,三种程序控制结构预处理命令C程序源程序文件,do-while语句的一般形式为: do 语句; while (表达

18、式);,Dowhile语句,三种程序控制结构预处理命令C程序源程序文件,1.在if语句、while语句中,表达式后面都不能加分号,而在 do-while语句的表达式后面则必须加分号。2.do-while语句也可以组成多重循环,而且也可以和while语句相互嵌套。3.当循环体由多个语句组成时,也必须用 括起来组成一个复合语句。4.如果循环至少要执行一次, while和do-while语句可以相互替换。,使用while和do-while语句注意以下几点:,三种程序控制结构预处理命令C程序源程序文件,for语句,for (表达式1;表达式2;表达3) 语句; 表达式1通常用来给循环变量赋初值,一般是

19、赋值表达式。也允许在for语句外给循环变量赋初值,此时可以省略该表达式。 表达式2通常是循环条件,一般为关系或逻辑表达式。 表达式3通常可用来修改循环变量的值,一般是赋值语句。,三种程序控制结构预处理命令C程序源程序文件,1.for语句中的各表达式都可省略,但分号间隔符不能少。2.在循环变量已赋初值时,可省去表达式1。3.省去表达式2或表达式3则相当于while语句,并且造成无限循环,这时应在循环体内设法结束循环。4. for语句中的三个表达式都可以是逗号表达式,即每个表达式都可由多个表达式组成。,在使用for语句中要注意以下几点:,三种程序控制结构预处理命令C程序源程序文件,break语句和

20、continue语句,break语句只能用在switch 语句或循环语句中,其作用是跳出switch语句或跳出本层循环,转去执行后面的程序。 continue语句结束本次循环,不再执行循环体中之后的语句,转入下一次循环条件的判断与执行。注意:本语句只结束本层本次的循环,并不跳出循环。,三种程序控制结构预处理命令C程序源程序文件,循环三要素,循环条件循环变量初始化for循环:第一个表达式中赋初值while、do循环:循环体外赋初值改变循环变量的值for循环:第三个表达式中改变while、do循环:循环体内写语句改变,三种程序控制结构预处理命令C程序源程序文件,int n=0,p; doscanf

21、(%d, 此处do-while 循环的结束条件是A) p 值不等于12345 并且n 的值小于3 B) p 值等于12345 并且n 的值大于等于3 C) p 值不等于12345 或者n 的值小于3 D) p 值等于12345 或者n 的值大于等于3,例如:,三种程序控制结构预处理命令C程序源程序文件,关键问题,防止死循环和不循环控制循环条件表达式的值的变化正常出口循环条件不满足时正常退出紧急出口ifbreak/continue;如何判断退出方式通过退出循环后,循环变量的值,三种程序控制结构预处理命令C程序源程序文件,以下程序中,while 循环的循环次数是 int i=0; while(i1

22、0) if(i1) continue ; if(i=5) break; i+; A) 1 B) 10 C) 6 D)死循环,不能确定次数,三种程序控制结构预处理命令C程序源程序文件,void main() int i=0,a=0; while(i20) for( ; ;) if(i%10)=0) break; else i - -; i+=11; a+=i; printf(%dn,a); a)21B) 32 C) 33 D) 11,三种程序控制结构预处理命令C程序源程序文件,判断题(P18),27一个复合语句在语法上被认为是一条语句。28只能用while语句构成循环。 33break语句只能用

23、于switch语句和循环控制语句中。35一个for循环语句,一定可以使用while语句来替换。,三种程序控制结构预处理命令C程序源程序文件,填空题(P20),4根据所给题意填空题。(1)求1100的和,写作for(s=0, i=1; ; +i) s+=i;(2)执行“y=1; x=5; while(x-); y+;”后,y的值 。(3)顺序输出26个大写英文字母的循环结构,写作: for( ) putchar(ch);(4)输入若干个字符,以问号结束,同时输出这串字符(不包括问号),写作:while( !=?) putchar(ch);(5)循环程序段“k=5; for(; k0; k-);”

24、执行后,k的值为 。,三种程序控制结构预处理命令C程序源程序文件,程序填空题( P23),1填空,使修改后的下列程序在输入n后,能够求1+1/2+1/3+1/n的值并输出结果。 (1) void main() float (2) ; int n,i=1; scanf(%d,(1) #include stdio.h(2) s=0(3) s+1.0/i,三种程序控制结构预处理命令C程序源程序文件,3 列程序在输入m后,求n使n!m(n+1)!(例如输入726,应输出n=6),填空将程序补充完整。(1) void main() int (2) ; scanf( (3) ); for(n=2; jc=

25、m; n+) jc=jc*n; printf(n=%dn, (4) );,(1) #include stdio.h(2) m,n,jc= 1 (3) %d,&m (4) n -2,三种程序控制结构预处理命令C程序源程序文件,1程序功能:输入整数n(n0),求m使得 2的m次方小于或等于n、2的m+1次方大于或等于n。#include void main() int i=0,t=1,n; while( _ 1 _); while(!(t=n) _ 2 _ i+; printf(%dn,i);,参考:上机考试样卷程序调试(P80),(1) scanf(“%d“,&n),n=0(2) t=t*2,三

26、种程序控制结构预处理命令C程序源程序文件,4下列程序输出610000之间的亲密数对,填空将程序补充完整。【说明】若a、b是亲密数对,则a的因子和等于b、b的因子和等于a,且a不等于b。# includevoid main() int a, b, c, i; for(a=6; a=10000; a+) b=1; for(i=2; i=a/2; i+) if( (1) )b+=i; (2) for(i=2; i=b/2; i+) if(b%i=0) c+=i; if( (3) ,(1) a%i=0(2) c=1;(3) a=c,三种程序控制结构预处理命令C程序源程序文件,5输入若干个正整数,判断每

27、个数从高位到低位各位数字是否按值从小到大排列。,void main() int n; while(scanf(%d, ,(1) int m(2) k=m%10;(3) m=(m-k)/10,三种程序控制结构预处理命令C程序源程序文件,程序阅读题( P29),程序1# include# includevoid main() float a1, a2, a3, s, d; scanf(“%f%f%f”, 运行时输入3 4 5,输出结果为:3.00,4.00,5.00,s= 6.00,三种程序控制结构预处理命令C程序源程序文件,程序2# includevoid main() unsigned k,

28、n; scanf(%u,运行时输入数据为: 69,输出结果为:n=69 k=96,三种程序控制结构预处理命令C程序源程序文件,程序3# includevoid main() int x=40, y=4, z=4; x=y=z; printf(%d %d %dn, x, y, z); x=x=(y=z); printf(%d %d %dn, x, y, z);,输出结果为:44044,三种程序控制结构预处理命令C程序源程序文件,程序4# includevoid main() int x, y, z; x=y=2; z=3; y=x+-1; printf(%dt%dt %dt, x, y, z);

29、 y=-z+1; printf(%dt%dt %dn, x, y, z); x=y=z=0; +x,输出结果为:13 3 3 2110 0 1 0,三种程序控制结构预处理命令C程序源程序文件,程序5# includevoid main() char x; int n=0, k=0; while(x=getchar()!=.) switch(x) case t: k+; break; case h: if(k=1) k+; break; case e: if(k=2) k+; break; default: k=0; if(k=3) n+; printf(%dn ,n); ,输出结果为:3,运行时输入: a the asdftheth e there .,三种程序控制结构预处理命令C程序源程序文件,综合编程题( P37复习指导书第8、9、15题),8编程序计算:精度为0.000001。9编程序求解一元二次方程 AX2 +BX+C=0 ,要求考虑实根、虚根等情况。 15. 有1分、2分、5分硬币若干枚,从中取出20枚硬币使其总值为60分,求出取法的数量以及每一种取法的1分、2分、5分硬币个数。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1