C语言程序设计第3章程序设计初步第1页第3章程序设计初步本章概述本章的学习目标主要内容C语言程序设计第3章程序设计初步第2页本章概述本章主要介绍以下内容:常用的输入输出函数简单顺序结构程序设计举例C语言程序设计第3章程序设计初步第3页本章的学习目标本章教学目的:掌握赋值语句的使用方法,掌握putchar、getchar、printf、scanf函数的使用方法,能编写简单的程序。本章教学重点:printf、scanf函数的使用方法本章教学难点:printf、scanf函数的使用方法C语言程序设计第3章程序设计初步第4页主要内容3.1C语句概述3.2顺序结构程序设计3.3数据的输入与输出3.4程序设计举例C语言程序设计第3章程序设计初步第5页3.1C语句概述3.1.1C语句的种类在C程序中,共有如下五种C语句组成:►1.表达式语句•由一个表达式的后面加上一个分号构成的语句►2.函数调用语句•由函数名、实际参数加上“;”组成。其一般形式为:“函数名(实际参数表);”。C语言程序设计第3章程序设计初步第6页►3.控制语句•控制语句用于控制程序的流程,以实现程序的各种结构方式。它们由特定的语句定义符组成。C语言有九种控制语句。可分成以下三类:•(1)条件判断语句:if语句、switch语句•(2)循环执行语句:•dowhile语句、while语句、for语句•(3)转向语句:•break语句、continue语句、goto语句、return语句►4.复合语句•把多个语句用括号{}括起来组成的语句称为复合语句。在程序中应把复合语句看成是单条语句,而不是多条语句,例如►5.空语句•只有“;”组成的语句称为空语句C语言程序设计第3章程序设计初步第7页3.1C语句概述3.1.2C程序的赋值语句►说明:•1.由于在赋值符“=”右边的表达式可以是另一个赋值表达式,因此,下述形式“变量=(变量=表达式);”是成立的,从而形成嵌套的形式。其展开之后的一般形式为:“变量=变量=…=表达式;”•2.注意在变量说明中给变量赋初值和赋值语句的区别。给变量赋初值是变量说明的一部分,赋初值后的变量与其后的其它同类型变量之间仍必须用逗号间隔,而赋值语句则必须用分号结尾。C语言程序设计第3章程序设计初步第8页3.1C语句概述•3.在变量说明中,不允许连续给多个变量赋初值。如下述说明是错误的:“inta=b=c=5;”,必须写成“inta=5,b=5,c=5;”,而赋值语句允许连续赋值。•4.注意赋值表达式和赋值语句的区别,赋值表达式是一种表达式,它可以出现在任何允许表达式出现的地方,而赋值语句则不能。语句“if((x=y+5)0)z=x;”是合法的,它的功能是,若表达式“x=y+5”大于0则z=x。语句“if((x=y+5;)0)z=x;”是非法的,因为“x=y+5;”是语句,不能出现在表达式中。C语言程序设计第3章程序设计初步第9页3.2顺序结构程序设计通常,结构化程序设计包括下列三种基本结构,即顺序结构、选择结构和循环结构。它们的结构流程图如下图所示:C语言程序设计第3章程序设计初步第10页例3.1已知长方形的长和宽,计算其周长和面积。流程图如图3.2所示,程序如下。#includestdio.hintmain(){floatx,y,c,area;printf(输入长和宽:);scanf(%f,%f,&x,&y);c=2*(x+y);area=x*y;printf(周长是:%f\n,c);printf(面积是:%f\n,area);return0;}运行情况如下:输入长和宽:3.0,4.0↙周长是:14.000000面积是:12.000000图3.2计算周长和面积的流程图C语言程序设计第3章程序设计初步第11页3.3数据的输入与输出在C语言中,所有的数据输入/输出都是由库函数完成的,因此都是函数调用语句。本节主要介绍常用的格式输出函数printf()、格式输入函数scanf()及字符输入函数getchar()、getch()和字符输出函数putchar()。C语言程序设计第3章程序设计初步第12页3.3数据的输入与输出3.3.1printf函数►1.printf()函数的一般形式•printf函数的调用格式为:•printf(“格式控制串”,输出表列);•“格式控制串”用于指定输出格式。它必须用双引号括起来,由格式说明符、普通字符和转义字符组成。C语言程序设计第3章程序设计初步第13页3.3数据的输入与输出►例3.2写出下面程序的输出结果。►程序代码如下:►#includestdio.h►intmain()►{inta=65,b=97;►printf(%d%d\n,a,b);►printf(%d,%d\n,a,b);►printf(%c,%c\n,a,b);►printf(a=%d,b=%d,a,b);►return0;►}程序的输出结果如下:659765,97A,aa=65,b=97C语言程序设计第3章程序设计初步第14页3.3数据的输入与输出►2.printf函数格式说明•(1)整型数据输出的格式字符–整型的输出形式有四种:带符号的十进制整型形式、无符号的十进制整型形式、无符号的十六进制形式和无符号的八进制形式。分别使用格式字符d、u、x或X和o。其中x表示以小写形式输出十六进的a~f,X表示以大写形式输出。•(2)字符型数据输出的格式字符–在输出字符型数据时,若要输出一个字符,则使用格式字符c;若要输出一串字符,则要使用格式字符s。C语言程序设计第3章程序设计初步第15页3.3数据的输入与输出(3)实型数据输出的格式字符–实型数据输出的格式字符有f、e或E、g或G几种方式。其中格式字符f表示以小数形式输出实数;格式字符e或E表示以指数形式输出实数;格式字符g或G表示输出时自动选择使用格式字符f或e。C语言程序设计第3章程序设计初步第16页例3.3写出下面程序的输出结果。#includestdio.hintmain(){inta,b;charc;floats1,s2,sum;a=65;b=-3;s1=123.4;s2=56.75;sum=s1+s2;c='A';printf(%d%c%d%o%f%c%d,a,a,b,b,sum,c,c);return0;}程序运行结果如下:65A–3177775180.150002A65C语言程序设计第3章程序设计初步第17页3.3数据的输入与输出3.转义字符►在printf()函数中,也可以使用转义字符(在第二章中已经介绍),转义字符是一个以“\”开头的字符序列。在表2.2中已列出常用的转义字符。4.修饰字符►在printf()函数中,所有的输出格式都是以“%”开始,再接一组有意义的字母。若想使数据按固定的字段长度输出,可以在“%”后面加上输出长度的数值。如“%3d”,表示输出十进制整数时,长度共占3列;“%6.3f”则表示输出浮点数时,长度包括小数点共有6列,小数点前占2列,小数占3列。C语言程序设计第3章程序设计初步第18页例3.4写出如下程序的执行结果。#includestdio.hintmain(){printf(\whatdoyoulike?\);return0;}程序输出结果如下:Whatdoyoulike?C语言程序设计第3章程序设计初步第19页printf()函数的修饰符C语言程序设计第3章程序设计初步第20页例3.5写出下面程序的输出结果。#includestdio.hintmain(){inti=56,j=13;floatf=12.3456;printf(i=%-4d,i);printf(j=%4d\n,j);printf(f=%6.2f\n,f);return0;}输出结果如下:i=56j=13f=12.35C语言程序设计第3章程序设计初步第21页例3.6写出下面程序的输出结果。#includestdio.hintmain(){inta=2,b=8;floatx=123.4567,y=-567.123;charc='A';longd=1234567;unsignedlonge=65535;printf(%3d%3d\n,a,b);printf(%-12f,%-12f\n,x,y);printf(%7.2f,%7.2f\n,x,y);printf(%e,%10.2e\n,x,y);printf(%c,%d,%o,%x\n,c,c,c,c);printf(%ld,%lo,%lx\n,d,d,d);printf(%u,%o,%x\n,e,e,e);printf(%s,%5.3s\n,computer,computer);return0;}程序的运行结果如下:28123.456703,–567.122986(计算机表示实数不精确,所以显示结果有误差)123.46,-567.12(列宽为7,小数点后取两位)1.234567e+002,-5.67e+002A,65,101,411234567,4553207,12d68765535,177777,ffffcomputer,com(按%5.3s格式输出“computer”,取“computer”前3个字符,列宽为5)C语言程序设计第3章程序设计初步第22页3.3数据的输入与输出3.3.2scanf函数►格式输入函数scanf()的作用是在终端设备上,以指定的格式输入一个或多个任意类型的数据。C语言程序设计第3章程序设计初步第23页3.3数据的输入与输出1.scanf()函数的一般格式►scanf()函数的调用格式►scanf(“格式控制串”,&变量1,&变量2,…);•“格式控制串”用于指定输入格式,它必须用双引号括起来,由格式说明符、普通字符组成。•格式说明符由%和格式字符组成,用于说明输入数据的格式。如“%d”表示按十进制整型输入,“%c”表示按字符型输入。•普通字符是指在输入数据时按原样输入的字符。•而“&变量1”、“&变量2”等则是当用户由键盘上输入数据并按下回车键后,数据内容就会传送到相应变量的内存单元中。使用scanf()函数时要注意的是,在变量名前面必须加上地址运算符“&C语言程序设计第3章程序设计初步第24页3.3数据的输入与输出例3.7由键盘输入两个整数并求其平均值及总和。•#includestdio.h•intmain()•{•inta,b;•scanf(“%d%d”,&a,&b);•/*由键盘输入两个数并赋给变量a、b*/•printf(“a+b=%d\n”,a+b);/*计算总和并输出内容*/•printf(“(a+b)/2=%1f\n”,(float)(a+b)/2);/*输出平均值*/•return0;•}C语言程序设计第3章程序设计初步第25页3.3数据的输入与输出C语言程序设计第3章程序设计初步第26页3.3数据的输入与输出3.使用scanf()函数必须注意的问题►(1)在scanf()函数“格式控制串”部分中的每个格式说明符,都必须有一个变量与之对应。而且,格式说明符必须要与相应变量的类型一致。►(2)scanf()中要求给出变量地址,如只给出变量名则会出错。如语句“scanf(“%d”,a);”是非法的,应改为“scanf(“%d”,&a);”才是合法的。►(3)当格式说明符之间没有任何字符时,在输入数据时,两个数据之间使用“空格”、“tab”或“回车”键作间隔;如果格式说明符之间包含其他字符,则输入数据时,应输入与这些字符相同的字符作间隔。C语言程序设计第3章程序设计初步第27页3.3数据的输入与输出(4)可以在格式说明符的前面指定输入数据所占的列数,系统将自动按此列数截取所需的数据,如:•scanf(“%2d%3d”,&x,&y);•当用户输入12345时,系统将自动地把12赋给变量x,将345赋给变量y。这种方式也