《C语言顺序结构》由会员分享,可在线阅读,更多相关《C语言顺序结构(39页珍藏版)》请在金锄头文库上搜索。
1、第三章 顺序结构顺序结构C C语言的语句语言的语句: : 由一个表达式加一个分号构成一个语句由一个表达式加一个分号构成一个语句 a = 3 ;分号分号赋值表达式赋值表达式表达式语句表达式语句数据的输入输出:I/O设备输入设备输入设备键盘、鼠标键盘、鼠标软盘、硬盘、光驱以文件的形式软盘、硬盘、光驱以文件的形式串行口、并行口、串行口、并行口、USB接口、接口、IEEE1394口、网络口、网络端口端口扫描仪、视频采集卡、电视卡、游戏杆、话筒扫描仪、视频采集卡、电视卡、游戏杆、话筒输出设备输出设备显示器、打印机显示器、打印机软盘、硬盘、软盘、硬盘、CD-R/DVD-R以文件的形式以文件的形式串行口、并
2、行口、串行口、并行口、USB接口、接口、IEEE1394口、网络口、网络端口端口音箱音箱单纯的输入设备或者单纯的输出设备越来越少单纯的输入设备或者单纯的输出设备越来越少数据的输入输出输入输出是以计算机主机为主体而言的输入输出是以计算机主机为主体而言的l输输出出: :从从计算机向外部输出设备计算机向外部输出设备输出数据输出数据l输输入入: :从从输入设备向计算机输入输入设备向计算机输入数据数据. .C C语言本身不提供输入输出语句语言本身不提供输入输出语句, ,输入和输出操作是输入和输出操作是由由C C函数库中的函数来实现的。函数库中的函数来实现的。例如例如: :格式输入函数格式输入函数: sc
3、anf: scanf格式输出函数格式输出函数: printf: printf字符输入函数字符输入函数: getchar: getchar字符输出函数字符输出函数:putchar:putchar字符串输入函数字符串输入函数:gets:gets字符串输出函数字符串输出函数:puts:puts在使用系统库函数时在使用系统库函数时, ,要用预编译命令要用预编译命令#include#include将有关的将有关的“头文件包括到用户源文件中头文件包括到用户源文件中. .在调用标准输入输出库函数时,文件开头应该有:在调用标准输入输出库函数时,文件开头应该有: #include “stdio.h #inclu
4、de “stdio.h或者:或者: #include #include stdio stdio 是是standard input &outputstandard input &output的意思。的意思。3.1 数据输出把数据从程序内部送到计算机外部设备上显把数据从程序内部送到计算机外部设备上显示器或打印机等的操作称为示器或打印机等的操作称为“输出。输出。C语语言通过调用库函数中的输出函数实现输出功能,言通过调用库函数中的输出函数实现输出功能,本节将介绍格式输出函数本节将介绍格式输出函数printf。3.1 数据输出3.1.1 printf 函数函数(格式输出函数格式输出函数)的调用形式的调用
5、形式printf ( “格式控制串格式控制串 , 输出项输出项 )例如:例如:int a , b ;a = 2 ; b = 3 ;printf ( “ %d , %d n , a , b ) ;结果显示:结果显示: 2 , 3必须用英文的双引号必须用英文的双引号括起来。括起来。作用是控制输出项的格作用是控制输出项的格式和输出一些提示信息。式和输出一些提示信息。要输出的数据项。要输出的数据项。可以是常量、变量或表可以是常量、变量或表达式。每个输出项之间达式。每个输出项之间用逗号分隔。用逗号分隔。举例:举例:main( ) int a=3,b=4; printf(“a=%d , b=%dn , a
6、, b );输出结果输出结果: a=3 , b=4格式说明符格式说明符普通字符普通字符输出表列输出表列转义字符转义字符3.1 数据输出# include main ( ) int i = 2518 ; double a = 3.1415 ; printf ( “ i = %d , a = %f , a*10 = %en, i, a, a*10);结果显示结果显示:i = 2518 , a = 3.141500 , a * 10 = 3.141500e+013.1 数据输出3.1.2 printf函数中常用的格式说明函数中常用的格式说明格式说明符格式说明符作用作用%d输出带符号的十进制整型数。注
7、意长整型为输出带符号的十进制整型数。注意长整型为%ld,短整型为,短整型为%hd%o以八进制格式输出整型数,以八进制格式输出整型数,%o不带先导不带先导0,%#o带先导带先导0%x(或或%X)以十六进制格式输出整型数,以十六进制格式输出整型数,%x不带先导不带先导0x,%#x带先导带先导0x%u以无符号十进制形式输出整型数以无符号十进制形式输出整型数%f输出实型数据(单精度和双精度)输出实型数据(单精度和双精度)%e以指数形式输出实型数据(单精度和双精度)以指数形式输出实型数据(单精度和双精度)3.1 数据输出使用说明:使用说明:尽量使用根本型参数尽量使用根本型参数(%c、 %d、%x、%X、
8、%u和和%s格式格式说明符说明符),少用长整型参数,少用长整型参数(%ld、%lu、%lx和和%lX格格式说明符式说明符),至于浮点型的参数,至于浮点型的参数(%f)那么尽量不要使那么尽量不要使用。用。在其它条件不变的情况下,使用在其它条件不变的情况下,使用%f参数,会使生成参数,会使生成的代码的数量增加很多,执行速度降低。的代码的数量增加很多,执行速度降低。3.1 数据输出3.1.2 printf函数中常用的格式说明函数中常用的格式说明1、输出数据可以做宽度说明、输出数据可以做宽度说明printf ( “ %4d , 12 ) ;输出结果输出结果: _ _ 12 ( _ 表示空格表示空格)p
9、rintf ( “ %2d , 1234 ) ;输出结果输出结果: 1234 (指定宽度缺乏,自动突破指定宽度缺乏,自动突破)printf ( “ %10f , 3.14 ) ;输出结果输出结果3.1 数据输出实型数据可以使用实型数据可以使用 “n1.n2的形式指定输出宽度和精的形式指定输出宽度和精度:度:printf ( “ %10.2f , 3.14 ) ;输出结果:输出结果:printf ( “ % .2f , 3.14 ) ;输出结果:输出结果:printf ( “ % .0f , 3.14 ) ;输出结果:输出结果:33.1 数据输出2、改变输出数据的对齐方式、改变输出数据的对齐方式
10、输出数据隐含右对齐,如果想左对齐,可以输出数据隐含右对齐,如果想左对齐,可以在格式控制中的在格式控制中的“%和宽度之间加一个和宽度之间加一个“-号来实现:号来实现:printf ( “ %4d , 12 ) ;输出结果:输出结果:_ _ 12printf ( “ %-4d , 12 ) ;输出结果:输出结果:12 _ _3.1 数据输出3.1.3 使用使用printf函数时的本卷须知函数时的本卷须知1、格式说明符与输出项必须一一对应,类型必须一致、格式说明符与输出项必须一一对应,类型必须一致 int a , b ; a = 2 ; b = 3 ; printf ( “%d , a , b )
11、; 输出结果:输出结果:2 printf ( “%d , %d , a) ; 输出结果:输出结果:2 , 不确定值不确定值 printf (“%d , ( a , b ) ) ; 输出结果:输出结果:33.1 数据输出printf ( “ %d , 3.14 ) ;输出结果:不确定值输出结果:不确定值short int a ;a = 98304 ;printf ( “ %d “ , a ) ;输出结果:不确定值输出结果:不确定值main( ) unsigned int m; m= 65448; printf(nm=%dn,m); printf(m=%un,m); 输出结果:输出结果: m=-8
12、8m=65448按有符号数输出按有符号数输出按无符号数输出按无符号数输出3.1 数据输出2、特殊符号的输出、特殊符号的输出在输出在输出%时,要在格式控制串中使用时,要在格式控制串中使用%的形的形式说明式说明例如:例如: printf ( “%dn , 12 ) ;结果:结果:%123.1 数据输出3、尽量不要在输出语句中改变输出变量的值、尽量不要在输出语句中改变输出变量的值int k = 8 ;printf ( “ %d , %d n , k , + k ) ;输出结果:输出结果:9 , 93.1 数据输出4、printf函数可以直接输出字符串的值函数可以直接输出字符串的值printf ( “
13、 Hello ! n ) ;输出结果:输出结果:Hello ! /*一般用于在程序中输出提示信息一般用于在程序中输出提示信息*/3.2 数据输入从计算机外部设备键盘将数据传送给程序从计算机外部设备键盘将数据传送给程序内部的操作称为输入。内部的操作称为输入。C语言同样利用标准库语言同样利用标准库函数来实现。函数来实现。3.2 数据输入3.2.1 scanf函数的一般调用形式函数的一般调用形式scanf ( 格式控制串,输入项格式控制串,输入项 )例如:例如:int a , b ;scanf ( “ %d%d , &a , &b ) ;&为求地址运算符为求地址运算符3.2 数据输入3.2.2 sc
14、anf函数中常用的格式说明函数中常用的格式说明格式说明符格式说明符作用作用%d输入带符号的十进制整型数。注意长整型为输入带符号的十进制整型数。注意长整型为%ld,短整型为,短整型为%hd%o以八进制格式输入整型数,可以带先导以八进制格式输入整型数,可以带先导0,也,也可以不带可以不带%x(或或%X)以十六进制格式输入整型数,可以带先导以十六进制格式输入整型数,可以带先导0x,也可以不带也可以不带%u以无符号十进制形式输入整型数以无符号十进制形式输入整型数%f输入实型数据,输入实型数据,注意双精度为注意双精度为%lf%e以指数形式输入实型数据,双精度为以指数形式输入实型数据,双精度为%le3.2
15、 数据输入3.2.3 通过通过scanf函数从键盘输入数据函数从键盘输入数据在输入数据时,数据之间必须用空格、回车符、在输入数据时,数据之间必须用空格、回车符、制表符制表符TAB键等间隔符隔开。键等间隔符隔开。格式无关字符必须原样输入格式无关字符必须原样输入#include main() int a, b; printf(Please input a and b:); scanf(%2d%*2d%2d, &a, &b); printf(a=%d, b=%d,a+b=%dn,a,b,a+b);Please input a and b:a=12, b=56, a+b = 68123456 例如例如
16、3.3 复合语句和空语句3.3.1 复合语句复合语句复合语句是用一对花括号复合语句是用一对花括号 把假设干语句括起把假设干语句括起来构成的一个语句组。其语句形式如下:来构成的一个语句组。其语句形式如下: 语句语句1;语句;语句2;语句语句n 例如:例如: a + ; b * = a ; printf ( “ b = %d n , b ) ; 注意:一个复合语句在语法上视为一条语句。注意:一个复合语句在语法上视为一条语句。例如main() int a = 0; int a = 1; printf(In: a = %dn, a); printf(Out: a = %dn, a); In: a =
17、1Out: a = 0复合语句 t=x;t=x; x=y; x=y; y=t; y=t; 被当作一条被当作一条语句来处理语句来处理3.3 复合语句和空语句3.3.2 空语句空语句如果一行上只有一个分号如果一行上只有一个分号“ ;,就是空语句;,就是空语句main ( ) ;空语句空语句有什么作用?空语句有什么作用?什么也不做,只表示语句的存在什么也不做,只表示语句的存在自顶向下程序设计时用在那些未完成的模块中自顶向下程序设计时用在那些未完成的模块中main()main() DataInitialze(); DataInitialze(); DataProcess(); DataProcess(
18、); DataOutput(); DataOutput(); DataInitialze()DataInitialze() ; ; 3.4 顺序结构程序设计 在顺序结构程序中,在顺序结构程序中,各语句或命令是按照各语句或命令是按照位置的先后次序,顺序执位置的先后次序,顺序执行的,且每个语句都会被行的,且每个语句都会被执行到。执行到。开始开始处理步骤处理步骤1处理步骤处理步骤2处理步骤处理步骤n输出结果输出结果结束结束.3.4 程序举例例例1:以下程序由终端输入两个整数给变量:以下程序由终端输入两个整数给变量x和和y,然,然后交换后交换x和和y中的值,最后输出中的值,最后输出x和和y。# inc
19、lude main ( ) int x , y , t ; printf ( “ Please Enter x and y :n ); scanf ( “%d%d , &x , &y ); t = x ; x = y ; y = t ; printf ( “ x = %d , y = %d n , x , y );例例2:输入一个:输入一个double类型的数,使该数保存小数点后两位,对类型的数,使该数保存小数点后两位,对第三位小数进行四舍五入处理,然后输出此数,以便验证处理第三位小数进行四舍五入处理,然后输出此数,以便验证处理是否正确。是否正确。#includemain( ) double
20、x; printf(“Enter x :n); scanf(“%lf,&x); x = x * 100 ; x = x + 0.5; x = ( int )x; x = x / 100; printf(“%fn, x); ;3.4 程序举例例例3:输入三角形的三边长,求三角形面积。:输入三角形的三边长,求三角形面积。三角形的三边长三角形的三边长a , b , c,那么该三角形的面积,那么该三角形的面积公式为:公式为:其中其中s = (a+b+c)/2开始开始输入三边长输入三边长计算计算s s计算面积计算面积结束结束算法描述3.4 程序举例#include#includemain() doubl
21、e a,b,c,s,area; scanf(“%lf %lf %lf,&a,&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); 例4 求x2方程的根。 a,b,c由键盘输入,设 。众所周知,一元二次方程式的根为x1= x2= 可以将上面的分式分为两项:p= , q= x1=p+q, x2=p-q#include #include void main ( ) float a,b,c,disc,x1,x2,p,q; scanf(%f%f%f,&a,&b,&c); disc=b*b-4*a*c; p=-b/(2*a); q=sqrt(disc)/(2*a); x1=p+q;x2=p-q; printf(nnx1=%5.2fnx2=%5.2fn,x1,x2);