1、第3章 顺序结构程序设计,本章的学习目的:1)了解C语言语句的几种基本形式;2)当程序运行时如何接受键盘数据的输入;3)程序运行的结果或各种类型的数据是如何输出到屏幕上。3.1 C语言的基本形式 3.2 数据的输入和输出 3.3 顺序结构程序范例Return,C程序由函数组成,如前面的主函数main()及其它子函数;而函数由各种语句组成。,案例3.1C程序语句的种类: main() int a,b,t;scanf(“%d,%d”, ,控制语句,函数调用语句,表达式语句,复合语句,3.1 C语言的语句,1.控制语句 如上例中的if 语句。用以完某种控制功能。C语言的控制语句共有九条,分别在分支和
2、循环节构中构中完成不同的控制功能。,2.函数调用语句 函数调用加上“;”组成。如上例中的scanf();和printf();。,3.表达式语句 由表达式加上“;”组成,如上例中的 t=a;。,4.复合语句 由括起的语句系列。整体上可认为是一条语句。 如上例中的t=a;a=b;b=t;,5.空语句 只有一个“;”号组成的语句;只是一条形式上的语句,本身不执行任操作。,C语言的语句形式有以下五种:,Return,为了让计算机处理各种数据,首先就应该把源数据输入到计算机中;计算机处理结束后,再将目标数据信息以人能够识别的方式输出。C语言中的输入输出操作,是由C语言编译系统提供的库函数来实现。3.2.
3、1 格式化输出printf()函数 3.2.2 格式化输入scanf()函数 3.2.3 单个字符输入输出getchar()和putchar()函数,3.2 C程序中数据的输入和输出,Return,printf()函数的作用:向计算机系统默认的输出设备(一般指显示器)输出一个或多个任意类型的数据。 案例3.1 已知圆半径r=1.5,求圆周长和圆面积。 /*案例代码文件名:EX32.C。*/ #define pi 3.415926 main() float r,l,s; r=1.5; l=2*pi*r; /*求圆周长*/ s=pi*r*r; /*求圆面积*/ printf(“r=%fn”,r);
4、 /*输出圆半径*/ printf(“l=%7.2f,s=%7.2fn”,l,s); /*输出圆周长、面积*/ ,3.2.1 格式化输出printf()函数,程序运行结果如下: r=1.500000 l= 10.25,s= 7.69 其中:第一行输出由printf(“r=%fn”,r)输出,表示输出r的值。 第二行输出是由printf(“l=%7.2f,s=%7.2fn”,l,s)输出,输出l和s的值。printf()函数的一般格式如下: printf(“格式字符串“ ,输出项表);1格式字符串。“格式字符串”在此也称“输出格式字符串”,可以包含两种字符: (1)格式说明符。格式说明符的一般形
5、式如下:%m.n 如上面的%7.2f,其中f为格式字符,指明要输出的对应输出项为实型;7.2对应格式说明符中的m.n,指明输出的总宽度占7位,小数位占2位,又称m.n为附加格式说明符。 以下为常用的格式字符及可用的附加符:,表3.1 printf格式字符,表3.1 printf附加格式字符,(2)其它字符。包括普通字符和转义字符。 普通字符输出时原样输出,如上例中的l=等;转义字符按其含义输出,如,n等等。 2.输出项表 包含若干要输出的数据,每个输出项可以为变量、常量或表达式。格式说明符和输出项是一一对应的关系。如: printf(“l=%7.2f,s=%7.2fn”,l,s);,案例3.3
6、 用 printf函输出各类数据 main() int a=5,b=7;float x=67.8564,y=-789.124;char c=A;long n=1234567;printf(“%d%d%3d%3dn”,a,b,a,b);printf(“%f,%fn”,x,y);printf(“%10f,%-15f,%8.2f,%4fn”,x,y,x,y);printf(“%e,%10.2en”,x,y);printf(“%ldn”,n);printf(“%s,%5.3sn”,“computer”,“computer”);printf(“computern”); 运行刻程序,输出如下:,57 5
7、7,67.856400,-789.124023,67.856400,-789.124023 , 67.86,-789.124023,6.78564e+01, -7.9e+02,1234567,computer, com,computer,Return,3.2.2 格式化输入scanf()函数,scanf()函数的作用是用来从键盘向程序输入数据的。如案例3.2只能求得固定半径 r为1.5的圆的周长和面积,要想程序能求得任意给定半径的圆的周长和面积,则要求程序能接受键输入的任意半径。 案例3.4对案例3.2略加修改,以满足上述要求。 #define pi 3.415926 main() float
8、 r,l,s; printf(“please input r:n”);scanf(“%f”, /*输出圆周长、面积*/ ,运行程序: please input r: 1.5 r=1.500000 l= 10.25,s= 7.69 重新运行: please input r: 2.5 r=2.500000 l= 17.08,s= 21.35 通过运行程序说明: 使用scanf()函数,通过键盘输入,给程序提供所需、任意的数据。,1. scanf()函数的一般格式scanf(“格式字符串“, 输入项表);(1)格式字符串。格式字符串可以包含3种类型的字符:格式说明符、空白字符(空格、Tab键和回车键
9、)和非空白字符(又称普通字符)。 格式指示符与printf()函数的相似,空白字符作为相邻2个输入数据的缺省分隔符,非空白字符在输入有效数据时,必须原样一起输入。(2)输入项表由若干个输入项首地址组成,相邻2个输入项首地址之间,用逗号分开。如,&变量名其中“&”是地址运算符。例如,案例3.4中的“&r”是指变量r在内存中的地址。有关scanf函数的格式说明见表3.2,表3.2:,表3.1 scanf格式字符,表3.1 scanf附加格式字符,2.案例3.5利用scanf函数通过键盘给变量赋值的范例 main() int a,b;long l;float x,y;double d;char c;
10、scanf(“%d%d”, 如果要达到a=1,b=2,l=3,x=1.5,y=3.5,d=5.5,c=A同样的效果. 程序运行时应输入: 1 2 1.5,3.5,c=A 3 5.5 ,3.scanf使用要领总结(1)各输入项一定要是变量的地址,即用要使a得到整数3,b得到需要的字符c,可输入:3c 如果输入3 c,则b将得到空格字符.,Return,3.2.3 单个字符输入输出getchar()和putchar()函数,1 单个字符的输出putchar()函数 案例3.6 putchar() 函数的格式和使用方法。 #include “stdio.h“ /*编译预处理命令:文件包含*/ mai
11、n()char ch1=N, ch2=E, ch3=W;putchar(ch1); putchar(ch2); putchar(ch3); /*输出*/putchar(n);putchar(ch1); putchar(n); /*输出ch1的值,并换行*/putchar(E); putchar(n); /*输出字符E,并换行*/putchar(ch3); putchar(n); 程序运行结果如下:NEWNEW,1)putchar()函数的格式: putchar(ch);其中ch可以是一个字符变量或常量,也可以是一个转义字符。 2)putchar()函数的作用:向屏幕输出一个字符。(1)putc
12、har()函数只能用于单个字符的输出,且一次只能输出一个字符。另外,从功能角度来看,printf()函数可以完全代替putchar()函数。(2)在程序中使用putchar()函数,务必牢记:在程序(或文件)的开头加上编译预处理命令(也称包含命令),即:#include “stdio.h“表示要使用的函数,包含在标准输入输出(stdio)头文件(.h)中。,2 单个字符的输入getchar()函数案例3.7 说明getchar()函数的格式和作用。 #include “stdio.h“ /*文件包含*/ main() char ch;printf(“Please input two chara
13、cter: “);ch=getchar(); /*输入1个字符并赋给ch */putchar(ch);putchar(n);putchar(getchar(); /*输入一个字符并输出*/putchar(n); 程序运行情况如下:Please input two characters: abab,1getchar()函数的格式:getchar(); 2getchar()函数的作用:从系统隐含的输入设备(如键盘)输入一个字符。另外,从功能角度来看,scanf()函数可以完全代替getchar()函数。(1)getchar()函数只能用于单个字符的输入,一次输入一个字符。(2)程序中要使用getc
14、har()函数,必须在程序(或文件)的开头加上编译预处理命令:#include “stdio.h“Return,在顺序结构程序中,各语句(或命令)是按照位置的先后次序,顺序执行的,且每个语句都会被执行到。 案例3.8 输入任意三个整数,求它们的和及平均值。 /*案例代码文件名:ex38.C */ /*功能:设计一个顺序结构程序,求三个整数的和及平均值。*/ main() int num1,num2,num3,sum; float aver; printf(“Please input three numbers:“); scanf(“%d,%d,%d“, ,3.3 顺序结构程序设计,思考题:能否
15、将“aver=sum/3.0;”中“3.0”改为“3”?案例3.9 求方程ax2+bx+c=0的实数根。a,b,c由键盘输入,a0且b2-4ac0。 /*案例代码文件名:ex39.C。*/ /*功能:设计一个顺序结构程序,求方程的根。*/ #include “math.h“ /*为使用求平方根函数sqrt(),包含math.h头文件 */ main() float a,b,c,disc,x1,x2;printf(“Input a, b, c: “);scanf(“%f,%f,%f“, ,案例3.10 从键盘输入一个小写字母,要求用大小写字母形式输出该字母及对应的ASCII码值。 /*案例代码文
16、件名:ex310.C。*/ #include “stdio.h“ main() char c1,c2;printf(“Input a lowercase letter: “);c1=getchar();putchar(c1);printf(“,%dn“,c1);c2=c1-32; /*将大写字母转换成对应的小写字母*/printf(“%c,%dn“,c2,c2); ,程序运行情况如下:Input a lowercase letter: aa,97A,65在顺序结构程序中,一般包括以下几个部分:1程序开头的编译预处理命令。在程序中要使用标准函数(又称库函数),除printf()和scanf()外,其它的都必须使用编译预处理命令,将相应的头文件包含进来。2顺序结构程序的函数体中,是完成具体功能的各个语句和运算,主要包括:(1)变量类型的说明。(2)数据输入部分。(3)运算处理部分。(4)数据输出部分。Return,