单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,计算机基础与程序设计,1.C语言语句综述,C语言语句及分类,从程序的组成结构看:,所有语句都按“函数”进行组织,数据描述:数据定义部分,数据操作:语句实现部分,从程序的功能看,:,数据输入,数据的运算处理,结果输出,1,1.C语言语句综述 C语言语句及分类1,1.C语言语句综述,表达式语句,表达式;,例如,a=5;,x+;,分号是表达式语句不可缺少的,用于分隔多条表达语句,2,1.C语言语句综述 表达式语句2,1.C语言语句综述,函数调用语句,函数名(实参表);,例如,y=sqrt(x);,printf(Hello World!);,分号是表达式语句不可缺少的,用于分隔多条表达语句,3,1.C语言语句综述 函数调用语句3,1.C语言语句综述,空语句,;,空语句意味着什么都不做,但是它却会消耗一定的计算机资源,复合语句,语句1;语句2;语句3;,用花括号把若干语句括起来,被看成是一条语句,例如,c=a;,a=b;,b=c;,4,1.C语言语句综述 空语句4,1.C语言语句综述,对程序流程实现控制的语句,语句形式,功能,语句形式,功能,if(.)else.,条件语句,goto,转向语句,while(),循环语句,continue,结束本循环语句,do while(),循环语句,break,中断语句,for(),循环语句,return,返回语句,switch,多分支选择语句,5,1.C语言语句综述 对程序流程实现控制的语句语句形式功能,2.赋值语句及输入输出语句,赋值语句,变量名=表达式;,例如,a=1;b=3;c=3;,x=a*a+b*b+c*c,赋值表达式和赋值语句是不相同的,例如,逗号运算表达式中含有赋值表达式,y=(a=1,b=a+1,c=b+2);,当把以上语句看成一个整体时,才是赋值语句。,6,2.赋值语句及输入输出语句 赋值语句6,2.赋值语句及输入输出语句,数据处理的一般过程是:,输入,处理,输出,。,“输出”的功能是将保存在内存单元中的变量或者数组中的值显示在屏幕上或者用打印机打印出来,即把信息从内存传送到外设。,“输入”的功能是利用键盘等输入设备为变量或者数组等提供数据,并保存到内存单元中,供程序计算时使用,即把信息从外设传送到内存。,在C语言中,输入输出操作是由编译系统提供的,库函数,来实现的。,使用标准输入、输出库函数时要用在源文件开头使用预编译命令“#include”或“#include,stdio.h,”。,主要介绍getchar()、putchar()、scanf()、printf()等输入、输出库函数。,7,2.赋值语句及输入输出语句 数据处理的一般过程是:输入,2.赋值语句及输入输出语句,格式输出语句printf(),printf(输出格式,输出表列);,双引号内的输出格式是一个字符串,可由格式说明、按原样输出的字符、转义字符组成。,例如,printf(a=%d b=%dn,a,b),注意:,(1)输出格式中的格式说明符的个数和输出表列中的数据个数必须一致,(2)原样输出的字符可以是任意可显示字符,包括空格和控制字符,8,2.赋值语句及输入输出语句 格式输出语句printf(,2.赋值语句及输入输出语句,形式:printf(格式控制字符串,输出项表列),#include,void main(),int i=5;float f=32.345;,printf(i=%3df=%5.1f n,i,f);,printf(End.n);,要输出的值列表,输出表列,格式控制,例:,9,2.赋值语句及输入输出语句 形式:printf(格式控制,2.赋值语句及输入输出语句,格式控制字符串的组成,i=%3df=%5.1f,常规字符,格式说明,%5 .1 f,引导符,宽度,小数位数,精度,格式符,10,2.赋值语句及输入输出语句 格式控制字符串的组成i=%,2.赋值语句及输入输出语句,格式控制完整的格式,:,%0,m.n,l/h,格式字符,输出项的类型,类型修正,输出域的宽度及精度,空位是否填,0,是否左对齐输出,格式说明的引导符号,数字,注意,:,格式字符区分大小写,必须!,11,2.赋值语句及输入输出语句 格式控制完整的格式:数字注意,2.赋值语句及输入输出语句,格式字符,功能说明,d(decimal),以十进制带符号形式输出整数,x(hexadecimal),以十六进制形式输出整数,o(octal),以八进制形式输出整数,u(unsigned int),以十进制无符号形式输出整数,c(char),以字符形式输出一个字符,s(string),输出字符串,f(float),以小数形式输出实数,e(exponential),以指数形式输出实数,g(global),选用%f和%e中输出宽度较短的一种格式,%,输出百分号本身,12,2.赋值语句及输入输出语句 格式字符功能说明d(deci,2.赋值语句及输入输出语句,格式选择式,功能说明,+,结果向右靠齐(不写,则默认为+),-,结果向左靠齐,0,有0时不用位置填0,无0时不用位置填空格,m(整数),m是输出字符的宽度(总列数,包括小数点),n(整数),n是小数部分的长度,l(小写字母),用于输出长整数或double型数据,13,2.赋值语句及输入输出语句 格式选择式功能说明+结果向右,2.赋值语句及输入输出语句,格式输入语句scanf(),scanf(输入格式,变量地址表列);,输入格式的含义与printf相同,变量地址表列是由若干地址组成的输入项表,可以是变量的地址或字符串的首地址。,例如,scanf(%d,其中,&是“取地址运算符”,&a表示变量a在内存中的地址。,注意:,(1)输入地址表列中必须写变量的地址,而不是写变量名,(2)输入数据时,如果有多个整型或实型数据要输入,两个数据之间以一个或多个空格来间隔,也可用回车或TAB键来间隔,如有语句:scanf(“%d%d%d”,14,2.赋值语句及输入输出语句 格式输入语句scanf(),2.赋值语句及输入输出语句,(3)多个scanf函数连用时。,(4)数值型与字符型混合输入时。,(5)当双引号内的输入格式中有按原样输入字符的话,则在键盘输入时,也应输入与这些字符相同的字符。,例1:scanf(“a=%d,b=%d”,运行时输 a=2,b=5,例2,:scanf(“%d%d”,运行时输 入:2 5,例3:scanf(“请输入a,b的值:%d,%d”,运行时输 入:请输入a,b的值:2,5,(6)可以指定输入数据所占的列数m,系统会自动按m列截取数据。,(7)输入实数时不能规定精度。,(8)%后的*格式选择符,用来表示跳过所对应的数据不用。,(9)输入时转义字符也被视为有效字符,不能识别为转义字符。,15,2.赋值语句及输入输出语句(3)多个scanf函数连用时。,2.赋值语句及输入输出语句,例:,#,include,void main(),int a;,float b;,scanf(%d%f,printf(%d,%fn,a,b);,读入数据,23,12.345,分配内存空间,取得首地址,输出数据,16,2.赋值语句及输入输出语句 例:读入数据2312.345,2.赋值语句及输入输出语句,格式控制字符串,%,m,l/h,格式字符,输入的数据类型和格式,类型修正,宽度,附加说明,引导符号,完整格式:,17,2.赋值语句及输入输出语句 格式控制字符串%,2.赋值语句及输入输出语句,格式字符,功能说明,d(decimal),用于输入十进制整数,x(hexadecimal),用于输入十六进制整数,o(octal),用于输入八进制整数,c(char),用于输入一个字符,s(string),用于输入字符串,f(float),用于输入实数,e(exponential),与f相同,e和f可以互换使用,18,2.赋值语句及输入输出语句 格式字符功能说明d(deci,2.赋值语句及输入输出语句,格式选择式,功能说明,l(小写字母),用于输入长整数,h(小写字母),用于输入短整数,m(整数),指定输入数据所占的列数,*,指定输入项在读入后不赋给相应的变量,最后说明:prinft()和scanf()均为系统基本输入输出库中的库函数,程序调用库函数必须在程序的开头写一个#include命令,但是C语言规定:这两个函数可以不用而直接在程序中使用,这是唯一的一个例外。,19,2.赋值语句及输入输出语句 格式选择式功能说明l(小写,2.赋值语句及输入输出语句,字符输入输出函数以字符为单位,在程序使用这两个函数时,要求在开头写:#include“stdio.h”,字符输出语句putchar(),putchar(字符变量/字符常量);,向终端屏幕输出一个字符。,20,2.赋值语句及输入输出语句 字符输入输出函数以字符为单位,2.赋值语句及输入输出语句,字符输入语句getchar(),getchar();,从终端键盘输入一个字符,函数的返回值就是从键盘得到的这个字符,这个值可以赋给一个整型变量、一个字符变量,也可以作为表达式的一部分。,21,2.赋值语句及输入输出语句字符输入语句getchar(),3.顺序结构程序设计的方法及应用,程序由语句构成,每次只能执行一个语句,顺序结构是根据,语句,在程序中的,先后次序顺序执行,的程序结构,A A,B,B,N-S图,例:,void main(),a=3;,b=4;,c=a+b;,22,3.顺序结构程序设计的方法及应用 程序由语句构成,每次只,3.顺序结构程序设计的方法及应用,例3-10 输入两个数a,b,请编程将a,b的值进行互换并输出。,解法1:,#include,main(),int a,b,c;,printf(请输入两个数给a,b:);,scanf(%d%d,%a,%b);,printf(交换前 a=%d b=%dn,a,b);,c=a;a=b;b=c;,printf(交换后 a=%d b=%dn,a,b);,23,3.顺序结构程序设计的方法及应用 例3-10 输入两个数,3.顺序结构程序设计的方法及应用,例3-10 输入两个数a,b,请编程将a,b的值进行互换并输出。,解法2:,#include,main(),int a,b;,printf(请输入两个数给a,b:);,scanf(%d%d,%a,%b);,printf(交换前 a=%d b=%dn,a,b);,a=a+b;b=a-b;a=a-b;,printf(交换后 a=%d b=%dn,a,b);,24,3.顺序结构程序设计的方法及应用 例3-10 输入两个数,3.顺序结构程序设计的方法及应用,例3-11 计算半径为r的圆的面积。,#include,main(),float r,s;,printf(请输入半径r的值:);,scanf(%f,s=3.14159*r*r;,printf(The area is%8.4fn,s);,25,3.顺序结构程序设计的方法及应用 例3-11 计算半径,3.顺序结构程序设计的方法及应用,例3-12 已知三个电阻r1,r2,r3的阻值,求三者串联、并联、r1和r2并联再与r3串联三种情况下,各自的总电阻ra,rb,rc,r1、r2、r3的值由用户从键盘输入。,#include,main(),float r1,r2,r3,ra,rb,rc;,scanf(%f,%f,%f,ra=r1+r2+r3;,rb=1/(1/r1+1/r2+1/r3);,rc=(r1*r2)/(r1+r2)+r3;,printf(ra=%f rb=%f rc=%fn,ra,rb,rc);,26,3.顺序结构程序设计的方法及应用 例3-12 已知三个,