c04第四章.顺序程序设计_第1页
c04第四章.顺序程序设计_第2页
c04第四章.顺序程序设计_第3页
c04第四章.顺序程序设计_第4页
c04第四章.顺序程序设计_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、程序的三种基本结构 顺序结构顺序结构N-S结结构构图图流流程程图图ABABYNABP成立成立? P T F A B程序的三种基本结构循环结构循环结构NYP成立成立?A当当P成立时成立时 A A当P成立时YNAP成立成立?N-S结结构构图图流流程程图图主要内容:主要内容:4.1 C语句概述语句概述4.2 赋值语句赋值语句4.3 数据输入输出的概念数据输入输出的概念4.4 字符数据的输入输出字符数据的输入输出简单语句简单语句空语句(;)空语句(;)复合语句(复合语句(一条或多条语句一条或多条语句)表达式语句(表达式;表达式语句(表达式;)函数调用语句(函数名(参数表);)函数调用语句(函数名(参数

2、表);)流程控制语句流程控制语句结构化语句结构化语句条件语句(条件语句(if语句,语句,switch语句)语句)while语语句句do-while语句语句 for语句语句非结构化语句非结构化语句 break语句语句continue语句语句 return语句语句 非限定转向语句非限定转向语句 (goto)循环语句循环语句 1. 控制语句1选择分支控制语句 if ( ) else switch ( ) 2循环控制语句 for ( ) while ( ) do while ( )3其他控制语句 break、continue、gotoreturn 表达式后面加一个分号,构成表达式语句x=3; y=y+

3、5; x=a-b & c | d ; printf(x=%d, y=%dn,x,y); sort(a,10); 2. 表达式语句 空语句用一个分号表示,其一般形式为: ; 它在语法上占有一个简单语句的位置,而执行该语句不做任何操作。 空语句常用于循环语句中,构成空循环。4.空语句空语句 构成:函数调用表达式;构成:函数调用表达式; printf(“This is a C program.”);3. 函数调用语句函数调用语句:5.复合语句复合语句 复合语句是由花括号将多条语句组合在一起而构成的,在语法上相当于一条语句。复合语句的形式为: 内部数据描述语句内部数据描述语句 数据操作语句数据

4、操作语句1; 数据操作语句数据操作语句n; 使用复合语句应注意:使用复合语句应注意: (1)在复合语句的“内部数据描述语句”中定义的变量,是局部变量,仅在复合语句中有效。 (2)复合语句结束的“”之后,不需要再加分号。例例L4.0.c 复合语句。复合语句。#include main() int xl, y2; int x2; int x3; printf(x=%d, y%dn,x, y); / * x3 */ printf(x=%d, y%dn,x, y); /* x=2 * / printf(x=%d, y=% dn,x, y); / * x=1 * /程序运行结果为:程序运行结果为:x=3

5、 x=2 x=1运行运行4.2 赋值语句 赋值表达式加一个“;”构成; 赋值语句“=”是一个运算符; 赋值表达式可以包含在其他表达式中 例 (a=b)0。4.3 数据输入输出的概念数据输入输出的概念 输出输出:计算机向外部设备:计算机向外部设备 输入输入:输入设备向计算机:输入设备向计算机 C语言本身不提供输入输出语句语言本身不提供输入输出语句 输入输出是有函数提供的,例如输入输出是有函数提供的,例如printf和和scanf函数函数 标准的输入输出函数,标准的输入输出函数,putchar, getchar, printf, scanf, puts, gets 加入头文件加入头文件 #incl

6、ude 4.4 字符数据的输入输出字符数据的输入输出4.4.1 单个字符的输出单个字符的输出putchar()函数函数例例L4.1.c putchar() 函数的格式和使用方法。函数的格式和使用方法。/*功能:说明功能:说明putchar()函数的格式和使用方法。函数的格式和使用方法。*/#include stdio.h/*编译预处理命令:文件包含*/main() char ch1=N, ch2=E, ch3=W; putchar(ch1); putchar(ch2); putchar(ch3); /*输出*/ putchar(n); putchar(ch1); putchar(n);/*输出

7、ch1的值,并换行*/ putchar(E); putchar(n);/*输出字符E,并换行*/ putchar(ch3); putchar(n); 程序演示程序演示演示演示程序运行结果:程序运行结果: NEW N E W说明:说明: 1putchar()函数的格式:函数的格式: putchar(ch); 其中其中ch可以是一个字符变量或常量,也可以是一个转义字符。可以是一个字符变量或常量,也可以是一个转义字符。 2putchar()函数的作用:向终端输出一个字符。函数的作用:向终端输出一个字符。 (1)putchar()函数只能用于单个字符的输出,且一次只能输出一函数只能用于单个字符的输出,

8、且一次只能输出一个字符。个字符。 (2)在程序中使用)在程序中使用putchar()函数,必须加上编译预处理命令,即:函数,必须加上编译预处理命令,即: #include stdio.h4.4.2 单个字符的输入单个字符的输入getchar()函数函数例例L4.2.c/*功能:说明功能:说明getchar()函数的格式和作用。函数的格式和作用。*/#include stdio.h/*文件包含*/main() char ch; printf(Please input two character: ); ch=getchar();/*输入1个字符并赋给ch */ putchar(ch);putch

9、ar(n); putchar(getchar(); /*输入一个字符并输出*/ putchar(n);演示演示程序运行情况如下:程序运行情况如下: Please input two characters: ab a b 1getchar()函数的格式函数的格式: getchar(); 2getchar()函数的作用函数的作用:从系统隐含的输入设备:从系统隐含的输入设备(如键盘)输入一个字符。(如键盘)输入一个字符。 (1)getchar()函数只能用于单个字符的输入,一次输函数只能用于单个字符的输入,一次输入一个字符。入一个字符。 (2)程序中要使用)程序中要使用getchar()函数,必须在

10、程序(或文函数,必须在程序(或文件)的开头加上编译预处理命令:件)的开头加上编译预处理命令: #include “stdio.h”4.5.1 printf()函数(格式输出函数)函数(格式输出函数)printf()函数的作用:向计算机系统默认的输出设备(一般指函数的作用:向计算机系统默认的输出设备(一般指终端或显示器)输出一个或多个任意类型的数据终端或显示器)输出一个或多个任意类型的数据。例例L4.4.c 已知圆半径已知圆半径radius=1.5,求圆周长和圆面积。,求圆周长和圆面积。main() float radius,length,area,pi=3.1415926; radius=1.

11、5; length=2*pi*radius;/*求圆周长求圆周长*/ area=pi*radius*radius; /*求圆面积求圆面积*/ printf(“radius=%fn”,radius);/*输出圆半径输出圆半径*/ printf(“length=%7.2f,area=%7.2fn”,length,area); /*输出圆周长、输出圆周长、面积面积*/ 演示演示程序运行结果如下:程序运行结果如下: radius=1.500000 length= 9.42,area= 7.07 1. printf()函数的一般格式函数的一般格式:printf(“格式控制格式控制” ,输出项表,输出项表

12、);(1).格式控制格式控制(转换控制字符串)(转换控制字符串),可以包含三种可以包含三种字符:字符: a、格式说明、格式说明。一般形式如下:。一般形式如下:%格式字符格式字符 b、转义字符转义字符 (见见p48) c、普通字符、普通字符除格式指示符和转义字符之外的其它字符。格式除格式指示符和转义字符之外的其它字符。格式字符串中的普通字符,字符串中的普通字符,原样输出。原样输出。 例如,例如,printf(“radius=%fn”, radius);中的中的“radius=”是普通字符。是普通字符。(2).输出项表输出项表 可选项。如果要输出的数据不只可选项。如果要输出的数据不只1个,相邻个,

13、相邻2个之间用逗号分开。个之间用逗号分开。 例例 printf(I am a student.n); printf(%d, 3+2); printf(a=%f b=%5dn, a, a+3);注意:注意:“格式字符串格式字符串”中的格式指示符,必须与中的格式指示符,必须与“输出项表输出项表”中、中、输出项的数据类型一致,否则会引起输出错误。输出项的数据类型一致,否则会引起输出错误。输出格式说明符整型数据 %d以有符号十进制形式输出整型数%o以无符号八进制形式输出整型数%x以无符号十六进制形式输出整型数%u以无符号十进制形式输出整型数实型数据 %f以小数形式输出实型数%e以指数形式输出实型数%g

14、按数值宽度最小的形式输出实型数字符型数据 %c输出一个字符%s输出字符串其他 %输出字符 % 本身 在和格式符之间可以使用附加说明符2 格式字符格式字符附加格式说明符 l输出长整型数(只可与d、o、x、u结合用)m指定数据输出的宽度(即域宽).n对实型数据,指定输出 n 位小数;对字符串,指定左端截取n 个字符输出+使输出的数值数据无论正负都带符号输出-使数据在输出域内按左对齐方式输出例如:%ld 输出十进制长整型数 %m.nf 右对齐,m位域宽,n位小数或n个字符%-m.nf 左对齐 输出不同类型的数据,要使用不同的格式字符(类型转换输出不同类型的数据,要使用不同的格式字符(类型转换字符)。

15、字符)。 (1)类型转换字符)类型转换字符d以带符号的以带符号的十进制整数十进制整数形式输出。形式输出。 %d: 实际长度输出实际长度输出 %md:指定的输出字段的宽度:指定的输出字段的宽度 %ld 长整型数据长整型数据对于整数,还可用无符号形式的八进制(对于整数,还可用无符号形式的八进制(%o(小写字母小写字母o)) 和十六进制和十六进制(x/X);对于;对于unsigned型数据,用型数据,用%u格式符。格式符。所谓无符号形式是指,不论正数还是负数,系统一律当作无符号整数所谓无符号形式是指,不论正数还是负数,系统一律当作无符号整数来输出。来输出。例例L4.5.c 类型转换字符类型转换字符d

16、的使用。的使用。main() int num1=123; long num2=123456789; /*用用4种不同格式,输出种不同格式,输出int型数据型数据num1的值的值*/ printf(num1=%d, num1=%5d,num1=%-5d,num1=%2dn,num1,num1,num1,num1); /*用用3种不同格式,输出种不同格式,输出long型数据型数据num2的值的值*/ printf(num2=%ld,num2=%8ld,num2=%5ldn,num2,num2,num2); printf(num1=%ldn,num1); printf(num2=%dn,num2);

17、 演示演示程序运行结果如下:程序运行结果如下:num1=123,num1=123,num1=123,num1=123num2=12345689,num2=123456789,num2=123456789num1=16908411(TC2.0结果,结果,VC结果正确)结果正确)num2=-7616(TC2.0结果,结果,VC结果正确)结果正确) (2)类型转换字符)类型转换字符f以小数形式、按系统默认的宽度,输以小数形式、按系统默认的宽度,输出单精度和双精度实数。出单精度和双精度实数。 %f%m.nf%-m.nf 对于实数,也可使用对于实数,也可使用格式符格式符%e,以标准指数形式输出,以标准指

18、数形式输出尾数中尾数中的整数部分大于等于的整数部分大于等于1、小于、小于10(1位),小数点占一位,尾数中的小位),小数点占一位,尾数中的小数部分占数部分占6位,指数部分占位,指数部分占5位(如位(如e-03),其中),其中e占一位,指数符号占占一位,指数符号占一位,指数占一位,指数占3位,共计位,共计13列宽度。列宽度。 也可使用也可使用格式符格式符%g让系统根据数值的大小,自动选择让系统根据数值的大小,自动选择%f或或%e格式、且不输出无意义的零。格式、且不输出无意义的零。例例L4.6.c 类型转换字符类型转换字符f的使用。的使用。main( )float f=123.456; doubl

19、e d1,d2; d1=1111111111111.111111111; d2=2222222222222.222222222; printf(%f,%12f,%12.2f,%-12.2f,%.2fn,f,f,f,f,f); printf(d1+d2=%fn,d1+d2);演示演示程序运行结果如下:程序运行结果如下: 123.456001,123.456001,123.46,123.46,123.46 d1+d2=3333333333333.333010 说明:说明:本案例程序的输出结果中,数据本案例程序的输出结果中,数据123.456001和和3333333333333.333010中的中的

20、01和和010都是无意义的,都是无意义的,因为它们超出了有效数字的范围。因为它们超出了有效数字的范围。 (3)类型转换字符)类型转换字符c输出一个字符(只占一列宽输出一个字符(只占一列宽度)。度)。例例L4.7.c 类型转换字符类型转换字符c的使用。的使用。main() char c=A; int i=65; printf(c=%c,%5c,%dn,c,c,c); printf(i=%d,%c,i,i); 程序运行结果如下:程序运行结果如下: c=A,A,65 i=65,A注意:注意:在在C语言中,整数可以用字符形式输出,字符数据也可语言中,整数可以用字符形式输出,字符数据也可以用整数形式输出

21、。将整数用字符形式输出时,系统首先求以用整数形式输出。将整数用字符形式输出时,系统首先求该数与该数与256的余数,然后将余数作为的余数,然后将余数作为ASCII码,转换成相应的码,转换成相应的字符输出。字符输出。演示演示(4)类型转换字符)类型转换字符s输出一个字符串。输出一个字符串。例例L4.8.c 类型转换字符类型转换字符s的使用。的使用。 main() printf(%s,%5s,%-10s,Internet,Internet,Internet); printf(%10.5s,%-10.5s,%4.5sn,Internet,Internet,Internet); 程序运行结果如下:程序运

22、行结果如下:Internet,Internet,Internet,Inter,Inter,Inter演示演示使用说明使用说明 (1)printf()可以输出常量、变量和表达式的值。但格式控制中可以输出常量、变量和表达式的值。但格式控制中的格式说明符,必须按从左到右的顺序,与输出项表中的每个数据的格式说明符,必须按从左到右的顺序,与输出项表中的每个数据一一对应,否则出错。一一对应,否则出错。 例如,例如,printf(str=%s, f=%d, i=%fn, Internet, 1.0 / 2.0, 3 + 5, CHINA);是错误的。是错误的。 (2)格式字符)格式字符x、e、g可以用小写字

23、母,也可以用大写字母。可以用小写字母,也可以用大写字母。使用大写字母时,输出数据中包含的字母也大写。除了使用大写字母时,输出数据中包含的字母也大写。除了x、e、g格式格式字符外,其它格式字符必须用小写字母。字符外,其它格式字符必须用小写字母。 例如,例如,%f不能写成不能写成%F。 (3)格式字符紧跟在)格式字符紧跟在“%”后面就作为格式字符,否则将作为后面就作为格式字符,否则将作为普通字符使用(原样输出)。普通字符使用(原样输出)。 例如,例如,“printf(”c=%c, f=%fn“, c, f);”中的第一个中的第一个c和和f,都是普,都是普通字符。通字符。scanf 例例 已知圆柱体

24、的底半径已知圆柱体的底半径radius=1.5,高,高high=2.0,求其,求其体积。体积。main() float radius=1.5, high=2.0, pi=3.14159, vol; vol=pi*radius*radius*high; /*求体积求体积*/ printf(“vol=%7.2fn”,vol);/*输出求出的体积输出求出的体积*/ 例例L4.9.c 已知圆柱体的底半径为已知圆柱体的底半径为radius,高为,高为high,求,求其体积。其体积。/*功能:说明函数功能:说明函数scanf()的格式及作用。的格式及作用。*/main() float radius,hig

25、h,vol,pi=3.1415926; printf(Please input radius & high: ); scanf(%f%f,&radius,&high);/*从键盘输入两个实数赋给变量r,h*/ vol=pi*radius*radius*high; printf(radius=%7.2f, high=%7.2f, vol=%7.2fn,radius,high,vol); 程序运行结果如下:程序运行结果如下: Please input radius & high: 1.52.0 radius=1.50,high=2.00,vol=14.14演示演示1

26、. scanf()函数的一般格式函数的一般格式scanf(“格式控制格式控制, 输入项首地址表输入项首地址表);(1)格式控制字符串)格式控制字符串。格式控制字符串可以。格式控制字符串可以包含包含3种类型的字符:格式指示符、空白字符种类型的字符:格式指示符、空白字符(空格、(空格、Tab键和回车键)和非空白字符(又称键和回车键)和非空白字符(又称普通字符)。普通字符)。格式指示符与格式指示符与printf()函数的相似,空白字符函数的相似,空白字符作为相邻作为相邻2个输入数据的缺省分隔符,非空白字个输入数据的缺省分隔符,非空白字符在输入有效数据时,必须原样一起输入。符在输入有效数据时,必须原样

27、一起输入。(2)输入项首地址表)输入项首地址表由若干个输入项首地由若干个输入项首地址组成,相邻址组成,相邻2个输入项首地址之间,用逗号分开。个输入项首地址之间,用逗号分开。输入项首地址表中的地址:输入项首地址表中的地址:变量的地址、字符变量的地址、字符数组名或指针变量数组名或指针变量。变量地址的表示方法:变量地址的表示方法: &变量名变量名其中其中“&”是地址运算符。例如,是地址运算符。例如,L4.9.c中的中的“&radius”是指变量是指变量radius在内存中的地址。在内存中的地址。 2scanf()函数的功能函数的功能:从键盘上接收格式:从键盘上接收格式化输入。

28、化输入。运行例运行例L4.9.c的程序时,从键盘上输入的程序时,从键盘上输入2个实个实数,分别存入数,分别存入&radius、&high所标示的存储单元所标示的存储单元中,即输入两个实数分别赋给中,即输入两个实数分别赋给radius和和high。 3、格式指示符、格式指示符 格式指示符的一般形式为:格式指示符的一般形式为: % * 宽度宽度 h|l 类型字符类型字符 (1)类型字符)类型字符 类型字符如类型字符如p80表表4.3。例如,在例。例如,在例L4.9.c的的scanf()函数函数语句中,格式字符串语句中,格式字符串“%f%f”。 (2)宽度)宽度n 指定该项指定该项输

29、入数据所占列数为输入数据所占列数为n。 换句话说,读取输入数据中相应的换句话说,读取输入数据中相应的n位,但按需要的位数位,但按需要的位数赋给相应的变量,多余部分被舍弃。赋给相应的变量,多余部分被舍弃。 例如,例如,scanf(%3c%3c,&ch1,&ch2); printf(ch1=%c,ch2=%cn,ch1,ch2); 假设输入假设输入“abcdefg”,则系统将读取的,则系统将读取的“abc”中的中的“a”赋给变量赋给变量ch1;将读取的;将读取的“def”中的中的“d”赋给变量赋给变量ch2,所以,所以printf()函数的输出结果为:函数的输出结果为:ch1=a,

30、ch2=d。 (3)赋值抑制字符)赋值抑制字符* 表示本输入项对应的数据读入后,不赋给相应的变量表示本输入项对应的数据读入后,不赋给相应的变量(该变量由下一个格式指示符输入)。(该变量由下一个格式指示符输入)。 例如,例如,scanf(%2d%*2d%3d,&num1,&num2); printf(num1=%d,num2=%dn,num1,num2); 假设输入假设输入“123456789”,则系统将读取,则系统将读取“12”并赋值并赋值给给num1;读取;读取“34”、但舍弃掉(、但舍弃掉(“*”的作用);读取的作用);读取“567”并赋值给并赋值给num2。所以,。所以,

31、printf()函数的输出结果为:函数的输出结果为:num1=12,num2=567。 (4)类型修饰符)类型修饰符h、l。 其含义与其含义与printf()中的一样,分别为短整型和长整型。中的一样,分别为短整型和长整型。 4、 数据输入操作数据输入操作 (1)如果相邻)如果相邻2个格式指示符之间,不指个格式指示符之间,不指定数据分隔符(如逗号、冒号等),则相应的定数据分隔符(如逗号、冒号等),则相应的2个输入数据之间,至少用一个空格分开,或者用个输入数据之间,至少用一个空格分开,或者用Tab键分开,或者输入键分开,或者输入1个数据后,按回车,然后个数据后,按回车,然后再输入下再输入下1个数据

32、。个数据。 例如,例如,scanf(%d%d,&num1,&num2); 假设给假设给num1输入输入12,给,给num2输入输入36,则正,则正确的输入操作为:确的输入操作为:1236 或者:或者:12 36 (2)“格式字符串格式字符串”中出现的普通字符(包括转中出现的普通字符(包括转义字符形式的字符),务必原样输入。义字符形式的字符),务必原样输入。 例如,例如,scanf(%d,%d,&num1,&num2); 假设给假设给num1输入输入12,给,给num2输入输入36,正确的输入操,正确的输入操作为:作为:12,36 另外,另外,scanf()函数中

33、、格式字符串内的转义字符函数中、格式字符串内的转义字符(如如n),系统并不把它当转义字符来解释,从而产生一个控制,系统并不把它当转义字符来解释,从而产生一个控制操作,而是将其视为普通字符,所以也要原样输入。操作,而是将其视为普通字符,所以也要原样输入。 例如:例如:scanf(num1=%d,num2=%dn,&num1,&num2); 假设给假设给num1输入输入12,给,给num2输入输入36,正确的输入操,正确的输入操作为:作为: num1=12,num2=36n 提高人机交互性建议提高人机交互性建议:为改善人机交互性,同时简化:为改善人机交互性,同时简化输入操作,在设计

34、输入操作时,一般先用输入操作,在设计输入操作时,一般先用printf()函数输出函数输出一个提示信息,再用一个提示信息,再用scanf()函数进行数据输入。函数进行数据输入。 例如,将例如,将scanf(num1=%d,num2=%dn,&num1,&num2);改为:改为: printf(num1=); scanf(%d,&num1); printf(num2=); scanf(%d,&num2); (3)输入数据时,遇到以下情况,系统认为该数据结束:输入数据时,遇到以下情况,系统认为该数据结束: a.遇到空格,或者回车键,或者遇到空格,或者回车键,或者Tab

35、键。键。 b.遇到输入域宽度结束。例如遇到输入域宽度结束。例如“%3d”,只取,只取3列。列。 c.遇到非法输入。例如,在输入数值数据时,遇到字母遇到非法输入。例如,在输入数值数据时,遇到字母等非数值符号等非数值符号(数值符号仅由数字字符数值符号仅由数字字符0-9、小数点和正负号、小数点和正负号构成构成)。 (4)使用格式说明符使用格式说明符“%c”输入单个字符时,空格输入单个字符时,空格和转和转 义字符均作为有效字符被输入。义字符均作为有效字符被输入。 例如,例如,scanf(%c%c%c,&ch1,&ch2,&ch3); printf(ch1=%c,ch2=%c,c

36、h3=%cn,ch1,ch2,ch3); 假设输入:假设输入:ABC ,则系统将字母,则系统将字母A赋值给赋值给ch1,空格空格赋值给赋值给ch2,字母,字母B赋值给赋值给ch3。 在顺序结构程序中,各语句(或命令)是按照位置的在顺序结构程序中,各语句(或命令)是按照位置的先后次序,顺序执行的,且每个语句都会被执行到。先后次序,顺序执行的,且每个语句都会被执行到。例例L4.10.c 输入任意三个整数,求它们的和及平均值。输入任意三个整数,求它们的和及平均值。/*功能:设计一个顺序结构程序,求三个整数的和及平均值。功能:设计一个顺序结构程序,求三个整数的和及平均值。*/ main()int num1,num2,num3,sum; float aver; printf(Please input three numbers:); scanf(%d,%d,%d,&num1,&num2,&num3);/*输入三个整数输入三个整数*/ sum=num1+num2+num3; /*求累计和求累计和*/ aver=sum/3.0; /*求平均值求平均值*/ printf(num1=%d,num2=%d,num3=%dn,num1,num2,num3); printf(sum=%d,aver=%7.2fn,sum,aver);演示演示思

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论