,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,单击此处编辑母版标题样式,糖果了网络教育学院:,53122C,语言在线课堂,第三章:顺序结构,本章所介绍的语句,将按它们在程序中出现的顺序逐条执行,由这样的语句构成的程序结构称为顺序结构。,3.1,赋值语句,在赋值表达式的尾部加上一个“;”号,就构成了赋值语句也称表达式语句。例如,a=,b+c,是赋值表达式,,a=,b+c,;,则是赋值语句。,i=1,j=2,是逗号表达式,而,i=1,j=2;,则是一条赋值语句。,i+;i,-;,都是赋值语句,程序进行时,首先取出变量,i,中的值,加,1,或减,1,后再把新的数放入变量,i,中。赋值语句是一种可执行语句,应该出现在函数的可执行部分。,注意:,C,语言中可由形式多样的赋值表达式构成赋值语句,用法灵活,因此读者首先应当掌握好赋值表达式的运算规律才能写出正确的赋值语句。,3.2,数据输出,把数据从计算机内部送到计算机的外部设备上的操作称为“输出”。例如,把计算机运算结果显示在屏幕上或打印在纸上;或者送到磁盘保留起来。从计算机外部设备将数据送入计算机内部的操作称为“输入”。,注意:,C,语言本身不提供用于输入和输出的语句。在,C,语言程序中,可以通过调用标准库函数提供的输入和输出函数来实现数据的输入和输出。,3.2.1,printf,函数的一般调用形式,printf,函数是,C,语言提供的标准输出函数,它的作用是在终端设备(或系统隐含指定的输出设备)上按格式进行输出。,printf,函数的一般调用形式如下:,printf,(,格式控制,输出项表,),如果在,printf,函数调用之后加上“,;”,,就构成了输出语句。例如:,printf(“a,=%,d,b,=%,d”,a,b,);,其中,,printf,是函数名;在圆括号中用双引号扩起来的字符串,如,”,a=%,d,b,=%d”,称为,格式控制串,;,a,b,是输出项表中的输出项,它们都是,printf,函数的参数。(注意:格式说明与输出项要一一对应),在这里,格式控制的作用是:,1,、为各输出项提供格式转换说明,格式转换说明的作用是将要输出的数据转换为指定的格式输出。它总是由“,%”,符号开始,紧跟其后的是,格式描述符。,当输出项为,int,类型时,系统规定,d,为格式描述字符,其形式为,%d,,如上面的例子:当输出项为,float,或,double,类型时,用,f,或,e,作为格式描述符,其形式为,%f,或,%e,(对于,double,类型也可以用,%lf,或,%le,)。,2,、提供需要原样输出的文字或字符,如以上输出语句中的,”,a=”,”b=”,等都是希望原样输出的字符。假若,a,b,的值分别为,3,和,4,,则以上输出语句的输出结果为:,a=3,b=4,。,输出项表中的各输出项需要用逗号隔开,输出项可以是合法的常量、变量或表达式。格式转换说明的个数要与输出项的个数相同,使用的格式描述符也要与它们一一对应且类型匹配。,例如以下程序:,main(),int,i=2518;,float a=3.1415;,printf(“i,=%,d,a,=%,f,a,*10=%,en”,i,a,a,*10);,3.2.2,printf,函数中常用的格式说明,每个格式说明都必须用“,%”,符号开头,以一个格式字符作为结束,在此之间可以根据需要插入“宽度说明”、左对齐符号“,-”,、前导零符号“,0”,等。,1,、格式字符:见下表,建议用小写字母。,%c,:输出一个字符,%d,:输出一个十进制的数据,%o,:以八进制格式输出。,%X,:以十六进制输出,%U:,无符号十进制输出,%f:,以带小数点的数字输出,%e:,以指数形式输出,%s,:输出一个字符串。,%,:输出一个,%,号,2,、输出数据所占的宽度,当使用,%d,、,%f,、,%c,、,%e,、,格式说明时,输出数据所占宽度由系统决定(通常取数据本身的宽度,不加空格),并采用右对齐的形式。可以用以下三种方法人为控制输出数据所占的宽度。,(,1,)在,%,与格式字符之间插入一个整数来指定输出宽度,注意,不能用变量。如果指定的宽度不够,并不影响数据的完整输出,系统会代之以隐含的输出宽度;如果指定的输出宽度多于数据实际所需宽度,数据右对齐,左边补以空格。,输出语句 输出结果,printf(“%dn”,42);42,printf(“%5dn”,42);,空格空格空格,42,printf(“%fn”,123.54);123.540000,printf(“%12fn”,123.54);,空格空格,123.540000,printf(“%en”,123.54);1.23540e+02,printf(“%.5dn”,42);00042,printf(“%.0dn”,42);42,printf(“%8.3fn”,123.55);,空格,123.550,3,、输出数据左对齐,可以在指定输出宽度的同时指定左对齐。这可在宽度前加一个“,-”,号来实现。,例如,printf(“%6d#n”,123);,空格空格空格,123#,printf(“%-6d#n”,123);123,空格空格空格,#,4,、在输出数据前加前导,0,可以在指定输出宽度的同时,在数据前面的多于空格处填以数字,0,。如,printf(“%6dn”,12);,空格空格空格空格,12,printf(“%06dn”,12);000012,printf(“%10.5fn”,3.1415);,空格空格空格,3.14150,printf(“%010.5fn”,3.1415);0003.14150,5,、在输出的八进制数前加,0,,在输出的十六进制数前加,0 x,。在用格式字符,o,和,x,按八进制数和十六进制数的形式输出整数时,在数据的前面并不出现,0,和,0 x,,如果需要在输出的八进制数前加,0,,在输出的十六进制前加,0 x,,可在,%,和格式字符,o,和之间插入一个号(注意,号对其它格式字符通常不起作用),如,printf(“%o,%#o,%x,%#xn”,10,10,10,10);,输出结果如下:,12,012,a,0 xa,3.2.3,调用,printf,函数时的注意事项,需注意,1,、在格式控制串中,格式说明与输出项从左到右在类型上必须一一对应匹配。,2,、在格式控制串中,格式说明与输出项的个数应该相同。,3,、在格式控制串中,除了合法的格式说明外,可以包含任意的合法字符(包括转义字符),这些字符在输出时将原样输出。,4,、如果需要输出百分号,%,,则应该在格式控制串中用两个连续的百分号,%,来表示。,5,、在输出语句中改变输出变量的值,如,i=5;printf(“%d%dn”,i,i+);,则不能保证先输出,i,值,然后再求,+i,并输出。从右向左输出,练习,(,1,)阅读以下程序,#include,main(),int,case;float,printF,;,printf,(“,请输入,2,个数:”,);,scanf(“%d,%,f”,&case,&pjrintF,);,printf(“%d,%,fn”,case,printF,);,该程序编译时产生错误,其出错原因是(,A,),A,)定义语句出错,,case,是关键字,不能用作用户自定义标识符,B,)定义语句出错,,printF,不能用作用户自定义标识符,C,)定义语句无错,,scanf,不能作为输入函数使用,D,)定义语句无错,,printf,不能输出,case,的值,(,16,)有以下程序,#include,main(),int,a=1,b=0;,printf(“%d,”,b,=,a+b,);,printf(“%dn”,a,=2*b);,程序运行后的输出结果是(,D,),A,),0,0,B,),1,0,C,),3,2,D,),1,2,(,15,)程序段:,int,x=12;,double y=3.141593;,printf,(“,%d%8.6f”,x,y,);的输出结果是(,A,),A,),123.141593,B,),12,3.141593,C,),12,,,3.141593,D,),12 3.141593,#include,main(),double a=123.456;,printf(%6.2f,a);,920vpn,网:,