《第3章简单程序设计》由会员分享,可在线阅读,更多相关《第3章简单程序设计(37页珍藏版)》请在金锄头文库上搜索。
1、第第3 3章章 顺序结构程序设计顺序结构程序设计3.1 C3.1 C语言的基本语句语言的基本语句3.2 3.2 数据输入输出数据输入输出3.3 3.3 程序举例程序举例上一页上一页下一页下一页教学目的和基本要求:教学目的和基本要求:要求学生了解语句,尤其是复合语句的概念和使用场合教学重点:教学重点:复合语句上一页上一页下一页下一页 程序设计语言有顺序、选择、循环三种基本的控程序设计语言有顺序、选择、循环三种基本的控制结构。制结构。 BA图图3.1 顺序结构执行流程顺序结构执行流程 顺序结构是最基本的控制结构,其包含的语句是顺序结构是最基本的控制结构,其包含的语句是按照书写的顺序执行的,且每条语
2、句都将被执行。程按照书写的顺序执行的,且每条语句都将被执行。程序流程如图序流程如图3.1 所示,语句按书写顺序执行。先执行所示,语句按书写顺序执行。先执行A,再执行,再执行B。例:例: main() int a,b,temp; scanf(%d%d,&a,&b); temp=a; a=b; b=temp; printf(%d,%d,a,b); 输入:输入:14 8 输出输出8,14上一页上一页下一页下一页 C语言的语句可分为以下四类:语言的语句可分为以下四类: 简单语句(包括输入简单语句(包括输入/输出语句)输出语句) 空语句空语句 复合语句复合语句 流程控制语句。流程控制语句。 3.1 C语
3、言的基本语句语言的基本语句 本章将介绍前三种语句。本章将介绍前三种语句。上一页上一页下一页下一页3.1.1 简单语句简单语句1.表达式语句表达式语句: 由一个表达式加上一个分号构成。由一个表达式加上一个分号构成。如:如:A+; x=1; p+=q*4+5; y=42?6:1; 2. 空语句空语句:3. 由一个分号表示,一般形式为:由一个分号表示,一般形式为:4. ;5. 空语句在语法上是一条语句,但执行时空语句在语法上是一条语句,但执行时不做任何操作。不做任何操作。上一页上一页下一页下一页 此此外外,C 语语言言还还有有丰丰富富的的标标准准函函数数库库, 可可提提供各类函数供用户调用,完成预先
4、设定好的操作供各类函数供用户调用,完成预先设定好的操作. 例如调用标准库函数求数学函数值:例如调用标准库函数求数学函数值: sin(x) 、cos(x) 、 exp(x) (求求ex ) 、 fabs(x) (求求x的绝对值的绝对值)、log(x)等。等。3. 函数调用语句函数调用语句: 由函数调用表达式加分号构成。由函数调用表达式加分号构成。 如:如: 输入输出函数:输入输出函数: scanf(“%f”,&b); 输入输出函数:输入输出函数: printf(“%d”,a); 上一页上一页下一页下一页若调用标准库函数要注意:若调用标准库函数要注意:在程序中要包含相应的头文件在程序中要包含相应的
5、头文件例如:例如:#include #include 调用规则:调用规则: 函数名函数名(参数表参数表)例如:例如: y=sin(1.7); x=pow(3,18); (指数函数,指数函数,x的的y次幂次幂p358) 函数调用的实质:函数调用的实质: 在调用点转去执行一段预先设计好的程序在调用点转去执行一段预先设计好的程序,求出结果后返回调用点。求出结果后返回调用点。图例图例 函数的值又叫函数的返回值。函数的值又叫函数的返回值。上一页上一页下一页下一页调用函数调用函数A函数函数A执行函数执行函数A函数执行结束函数执行结束继续执行剩余的语句继续执行剩余的语句主函数主函数main()()end例例
6、例例: : : : intint max(int x,int y) max(int x,int y) int z; int z; z=xy?x:y; z=xy?x:y; return(z); return(z); main() main() intint a,b,ca,b,c; ; scanf(“%d%d”,&a,&bscanf(“%d%d”,&a,&b); ); c= c= max(a,bmax(a,b); ); printf(“n%dn”,cprintf(“n%dn”,c); ); 在在在在主主主主函数中,可以如使用简单变量一样使用函数中,可以如使用简单变量一样使用函数中,可以如使用简单变
7、量一样使用函数中,可以如使用简单变量一样使用maxmax,类型为类型为类型为类型为intint型,内有值。若输入型,内有值。若输入型,内有值。若输入型,内有值。若输入3 4 3 4 ,则,则,则,则maxmax中的值为中的值为中的值为中的值为4 4。函数调用语句函数调用语句函数调用语句函数调用语句上一页上一页下一页下一页 如如:数学表达式数学表达式 y=|3sinx+4cosx|+ex ,可以可以用用C语言表达式表示为:语言表达式表示为: 其中,其中,fabs,sin,cos,exp都包含于头文件都包含于头文件math.h,用到这些函数,必须在程序的预用到这些函数,必须在程序的预处理语句中用处
8、理语句中用 include 把数学函数库包含把数学函数库包含进来。进来。 如:如: #includey=fabs(3*sin(x)+4*cos(x)+exp(x);上一页上一页下一页下一页3.1.2 3.1.2 复合语句复合语句 语句1; 语句n; 用一对花括号,把若干条语句括起来,用一对花括号,把若干条语句括起来,就形成了一条复合语句。形式如下:就形成了一条复合语句。形式如下: 花括号中的语句,可以是简单语句、空语句、复花括号中的语句,可以是简单语句、空语句、复合语句、流程控制语句,所有这些语句括在一起,在合语句、流程控制语句,所有这些语句括在一起,在语法上看成是一条语句,执行时顺序执行花括
9、号中的语法上看成是一条语句,执行时顺序执行花括号中的每条语句。复合语句多用于流程控制语句中。每条语句。复合语句多用于流程控制语句中。上一页上一页下一页下一页2.5 2.5 不同类型数据的输入和输出不同类型数据的输入和输出一、一、 printfprintf( ) ( ) 函数函数功能功能:将给定输出项按:将给定输出项按指定格式指定格式输出到标准输出设备。输出到标准输出设备。一般格式:一般格式:printf(“格式控制字符串格式控制字符串”,输出项列表,输出项列表);格式转换说明符格式转换说明符转义字符转义字符普通字符普通字符常量、变量、常量、变量、表达式表达式上一页上一页下一页下一页格式转换说明
10、符格式转换说明符功功能能 %c 输出一个字符输出一个字符 %d 输出十进制整数,按实际位数输出输出十进制整数,按实际位数输出 %i 输出十进制整数,按实际位数输出输出十进制整数,按实际位数输出 %f 定点格式输出浮点数,整数部分取实际位数,小数部分保留定点格式输出浮点数,整数部分取实际位数,小数部分保留6位位 %e 指数格式指数格式-m.ddddde+nn输出浮点数输出浮点数 %E 指数格式指数格式-m.ddddde+nn输出浮点数输出浮点数 %g 选择选择 %f和和%e格式中,输出宽度较小的一种格式中,输出宽度较小的一种 %s输出字符串,按实际位数输出输出字符串,按实际位数输出 %u输出十进
11、制无符号整数,按实际位数输出输出十进制无符号整数,按实际位数输出 %o输出八进制无符号整数,按实际位数输出输出八进制无符号整数,按实际位数输出 %x输出十六进制无符号整数,按实际位数输出输出十六进制无符号整数,按实际位数输出 %输出一个输出一个% %p输出指针值输出指针值 %n将将%n之前所输出的字符个数存入整型变量所在的地址中之前所输出的字符个数存入整型变量所在的地址中上一页上一页下一页下一页对于格式转换说明符可以进行以下三类修饰:对于格式转换说明符可以进行以下三类修饰: 1. 1. 指定字段宽度指定字段宽度(1) %m.nd其中:其中:m 规定输出字段的规定输出字段的最小最小宽度;宽度;n
12、 规定输出规定输出最小最小有效位数。有效位数。例如,例如, printf(“%3d,%6d,%6.5dn”,1234,1234,1234);输出结果为输出结果为1234, 1234, 01234(2) %m.nf其中:其中:m 规定输出字段的最小宽度;规定输出字段的最小宽度;n 规定输出小数位数。规定输出小数位数。上一页上一页下一页下一页例如,例如,printf(“%10f,%10.2f,%.2fn”,123.456,123.456,123.4); 输出结果为输出结果为123.456000, 123.46,123.40(3) %m.ne其中:其中:m 规定输出最小宽度;(规定输出最小宽度;(n
13、-1)为尾数部分的小数位数。)为尾数部分的小数位数。例如,例如,printf(“%10e,%10.4,%.3en”,123.456,123.456,123.4);输出结果为输出结果为1.23456e+02, 1.235e+02,1.23e+02上一页上一页下一页下一页注意:注意:(1) 无论是无论是 % %m.nfm.nf 还是还是 % %m.nem.ne 格式,对舍去的小数最高格式,对舍去的小数最高位都四舍五入。位都四舍五入。(2) 对以上三种情况,如果在对以上三种情况,如果在“%”%”和和 m.nm.n 之间加一个之间加一个 0 0,则在规定字段宽度内左边多余的空位以则在规定字段宽度内左边
14、多余的空位以 0 0 来填充,而不来填充,而不是空格。是空格。例如,例如, printf(“%04d,%010.2f,%010.3en”,125,12.3,123.5);printf(“%04d,%010.2f,%010.3en”,125,12.3,123.5);输出结果为:输出结果为:0125,0000012.30,001.20125,0000012.30,001.24 4e+02e+02上一页上一页下一页下一页 (4) %m.ns其中:其中:m 的含义与前面相同;的含义与前面相同;n 规定截取输出字符串左面的字符规定截取输出字符串左面的字符个数,字符串长度小于个数,字符串长度小于 n 时,
15、按实际长度输出(时,按实际长度输出(n不起作用)。不起作用)。例如,例如,printf(“%3s,%15s,%10.5s,%.4sn”,”China”,”Beijing”,”Beijing”,”China”);输出结果为输出结果为 China, Beijing, Beiji,Chin 2. 2. 左对齐左对齐 如果在如果在“%”之后加一个负号(即之后加一个负号(即“-”),则在规定的宽度),则在规定的宽度内输出内容向左对齐,右面补空格或内输出内容向左对齐,右面补空格或“0”。上一页上一页下一页下一页例如,例如,printf(“%-3d,%-6d,%-6.5dn”,1234,1234,1234)
16、;printf(“%-10f,%-10.2f,%-.2fn”,123.456,123.456,123.4);printf(“%-3s,%-15s,%-10.5s,%-.4sn”,”China”,”Beijing”, ”Beijing”,”China”);输出结果为输出结果为1234,1234 , 01234123.456000,23.46 ,123.40China, Beijing , Beiji ,Chin上一页上一页下一页下一页 3. 3. 类型修饰类型修饰 (1) 在类型说明符在类型说明符 d、u、o、x、i 前面可以加字母前面可以加字母“l”或或“h”,分别表示输出,分别表示输出 lo
17、ng 或或 short 型的数据。型的数据。例如,例如,printf(“%d,8ld,%ldn”,7000,70000l,70000l); (2) 在类型说明符在类型说明符 f、e、g 前面可以加字母前面可以加字母 l,表示输出,表示输出double 型或型或 long double型数据。型数据。例如,例如,printf(“%15.8lf,%16.9len”,12.34567889,12.34567889);输出结果为输出结果为 12.34567889, 1.234567889e+01上一页上一页下一页下一页关于格式输出的几点说明:关于格式输出的几点说明:(1)对于任何一种形式的整数都可以用
18、)对于任何一种形式的整数都可以用 d、i、o、u、x(或(或“X”)格式输出,其中)格式输出,其中 d、 i 输出带符号十进制形式,而输出带符号十进制形式,而 u、o、x格式输出无符号整数。格式输出无符号整数。例如,例如, printf(“%d,%u,%o,%xn”,-1,-1,-1,-1); printf(“%d,%u,%o,%xn”,65534u,65534u,65534u,65534u);输出结果为输出结果为-1,65535,177777,ffff-2,65534,177776,fffe-1和和65535-2和和65534上一页上一页下一页下一页 (2)%n 的使用的使用功能功能:将本:
19、将本 printf( )函数中位于它之前输出的字符个数存放到对函数中位于它之前输出的字符个数存放到对应的整型变量的地址中。应的整型变量的地址中。例如,例如,main( ) int i; printf(“Where are%n you?n”,&i); printf(“i=%dn”,i);程序运行结果程序运行结果Where are you?9上一页上一页下一页下一页 (3)如果)如果 printf( ) 函数中有多个表达式时,函数中有多个表达式时,Turbo C 系统系统的求值顺序是自右至左的。的求值顺序是自右至左的。例如,例如,printf(“%d,%d,%dn”,2+3,3*4,6/2);二、
20、二、 scanfscanf( ) ( ) 函数函数 一般格式一般格式scanf(“输入格式控制串输入格式控制串”,输入输入变量地址变量地址清单清单);格式转换说明符格式转换说明符其他字符其他字符例如,例如,scanf(“%d,%f,%c”,&k,&x,&ch);上一页上一页下一页下一页格式转换说明符格式转换说明符功功能能 %c 输入一个字符输入一个字符 %d 输入十进制整数输入十进制整数 %i 输入十进制整数输入十进制整数 %f 输入浮点数,不能指定小数位数输入浮点数,不能指定小数位数 %e 输入浮点数,不能指定小数位数输入浮点数,不能指定小数位数 %s输入字符串,遇空格、制表符或回车符结束输
21、入字符串,遇空格、制表符或回车符结束 %h输入输入 short int 型数据型数据 %u输入十进制无符号整数输入十进制无符号整数 %o输入八进制无符号整数输入八进制无符号整数 %x输入十六进制无符号整数输入十六进制无符号整数 %p输入指针值输入指针值 %n接收接收%n之前所输入的字符个数存入整型变量所在的地址中之前所输入的字符个数存入整型变量所在的地址中 %D 输入十进制长整数输入十进制长整数 %O输入八进制无符号长整长数输入八进制无符号长整长数 %X输入十六进制无符号长整数输入十六进制无符号长整数 %F输入双精度数输入双精度数上一页上一页下一页下一页关于关于 scanf( ) 函数使用的几
22、点说明:函数使用的几点说明: 1 1 输入数据的分隔符输入数据的分隔符:空格、制表符或回车键:空格、制表符或回车键例如,例如,scanf(“%d%d%d”,&i,&j,&k);输入形式可以是:输入形式可以是: 3 4 5 3 4 5 3 4 5上一页上一页下一页下一页 2 2 输入数据类型输入数据类型 1) 输入长整型数据时,可以用输入长整型数据时,可以用 %ld、%lo、%lx 或或%lu,而且用整型格式控制整型变量输入时,从键盘输入的必须是整而且用整型格式控制整型变量输入时,从键盘输入的必须是整数。数。例如,例如,scanf(“%d%d”,&a,&b);如果输入如果输入12 .56 23结
23、果结果 a=12,而变量,而变量 b 没有得到值。没有得到值。 2)当用)当用%f 或或%e 格式控制格式控制float和和double型变量的输入时,型变量的输入时,输入的数据可以是小数形式、指数形式或整数。输入的数据可以是小数形式、指数形式或整数。上一页上一页下一页下一页 3)对于用)对于用%c 格式输入格式输入 char 型数据时,不需加单引号。如型数据时,不需加单引号。如果连续输入多个字符时,不需要使用分隔符。果连续输入多个字符时,不需要使用分隔符。例如,例如,scanf(“%c%c%c”,&c1,&c2,&c3);如输入如输入ABC则有则有 c1=A,c2=B,c3=C而如输入而如输
24、入A B C则有则有 c1=A,c2= ,c3=B上一页上一页下一页下一页 4)用)用 %s 控制字符串输入时,也不需加双引号,但字符控制字符串输入时,也不需加双引号,但字符串中不应该含有空格、制表符或换行符。串中不应该含有空格、制表符或换行符。 3. 3. 抑制赋值控制符(抑制赋值控制符(“* *”)例如,例如,scanf(“%d%*c%d”,&x,&y);scanf(“%d%*d%d”,&a,&b);如果输入如果输入10/20102030则各变量的值为:则各变量的值为:x=10,y=20,a=10,b=30上一页上一页下一页下一页 4. 4. 限制输入数据的宽度(限制输入数据的宽度(“m
25、m”)例如,例如,scanf(“%5d%4d%4d”,&a,&b,&c);scanf(“%10s”,str);如果输入如果输入1234567890good morning则各变量的值:则各变量的值:a=12345,b=6789,c=0字符型数组字符型数组 str 得到的值是得到的值是“good morni”上一页上一页下一页下一页三、字符输出输入函数三、字符输出输入函数 1. Putchar( ) 函数函数 一般格式一般格式putchar(c);字符型常量、变量字符型常量、变量或或0 0 255255的整型的整型常量、变量常量、变量例例 putchar( ) 函数的使用。函数的使用。/* ex
26、2-4.c */# include “stdio.h”main( ) int c=65; char d=A; putchar(c);putchar(d);putchar(n); putchar(65);putchar(A);putchar(n);输出结果:输出结果:AAAA上一页上一页下一页下一页 2. Getchar( ) 函数函数 一般格式一般格式getchar( ); 例例 getchar( ) 函数的使用。函数的使用。/* ex2-5.c */# include “stdio.h”main( ) char c1,c2; c1=getchar( );c2=getchar( ); prin
27、tf(“%cn”,c1); printf(“%dn”,c1); putchar(c2); printf(“%dn”,c2); 上一页上一页下一页下一页四、单字符输入函数(四、单字符输入函数(getche( ) 和和 getch( ))功能:功能:与与 getchar( )相同,不同之处只是输入字符后无须回车键。相同,不同之处只是输入字符后无须回车键。定义在标题文件定义在标题文件“conio.h”中。中。注意:注意:getche( ) 接收字符后回显,而接收字符后回显,而 getch( ) 不回显。不回显。例例 getche( ) 函数的使用。函数的使用。/* ex2-6.c */# inclu
28、de “conio.h”main( ) char c1; c1=getche( ); printf(“%cn”,c1); printf(“%dn”,c1); 上一页上一页下一页下一页 例例 getch ( ) 函数的使用。函数的使用。/* ex2-7.c */# include “conio.h”main( ) char c1; c1=getch ( ); printf(“%cn”,c1); printf(“%dn”,c1); 上一页上一页下一页下一页3.3 程序举例程序举例 例例3.1 输入圆的半径,输出圆的周长和面积。输入圆的半径,输出圆的周长和面积。分析:分析: 1.定义实型变量r、l、
29、s用于存放半径、周长、面积;2.调用输入函数,输入r:3.分别利用周长公式和面积公式求出l、s;4.调用输出函数输出l、s。上一页上一页下一页下一页程序:程序:#include main() float r,l,s; scanf(“ %f ”,&r); l = 2 * 3.14159 * r; s = 3.14159 *r * r; printf(“n l=%.4f”,l); printf(“n s=%.4f”,s); 上一页上一页下一页下一页/*ch3_12.c*/#include #include main() float a,b,c,s,area; scanf(%f,%f,%f,&a,&
30、b,&c); s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c); printf(a=%7.2f, b=%7.2f, c=%7.2f, s=%7.2fn,a,b,c,s); printf(area=%7.2fn,area);输入:输入:3,4,6 输出:输出:a= 3.00, b= 4.00, c= 6.00 s= 6.50 area= 5.33文件包含预处理命令变量定义输入数据输出数据例例 输入三角形边长,求面积输入三角形边长,求面积上一页上一页下一页下一页分析:分析:1.输入小写字母存入变量a;2.转换成大写a = a-32;3.输出 a.例例3.
31、2 从键盘输入一个小写字母,用从键盘输入一个小写字母,用大写形式输出该字母。大写形式输出该字母。上一页上一页下一页下一页#include “stdio.h”void main() char a; 程序:程序:思考:如何使程序可以处理任何字符的输入。即判断输入思考:如何使程序可以处理任何字符的输入。即判断输入的是小写字母,才转换成大写;如果输入的其他字符,则的是小写字母,才转换成大写;如果输入的其他字符,则直接输出。直接输出。 printf(“Input a lowercase letter:”); a = getchar(); a = a-32; printf(“%c n”,a); printf(“input a letter:”); a=getchar( ); a=a=a&a=z?a-32:a; printf(“%cn”,a);上一页上一页下一页下一页再见!再见!同学们:同学们: