资源描述
*,4.1,C,语句概述,.3 格式输入与输出,.4 顺序程序设计举例,.2 字,符数据的输入输出,第四章,C,语言简单程序设计,.1,C,语句概述,C,语言的语句概述:,程序对数据的处理是通过“语句”的执行来实现的。,一条语句完成一项操作。,一个为实现特定目的的程序应包含若干条语句。,C,语言本身不提供输入/输出语句。,C,语言的输入/输出功能由,C,语言的标准,I/O,库函数提供。,Printf,scanf,getchar,putchar,4.2,输入与输出语句,(1)函数原型,getchar,();,函数的名称,无参数,(2)函数功能,从标准输入设备(一般为键盘)读入一个字符,得到该字符的,ASCII,码值,4.2,字符输入与输出函数,1,、字符输入函数,例:,#,include”stdio.h,”main()char,m,n,;m=,getchar,();n=,getchar,();,printf(“%d,%d”,m,n,);,此题本意是输出,A,B,的,ASCII,码值,如果输入,A,B,由于,也属于字符,所以本程序输出的实际答案是,65,10,,这样与预期的结果不相符,正确的输入如下:,AB,输出,65,66,注意:每一个,getchar,(),只能接受一个字符!,注意:,调用函数,getchar,时,程序执行被中断,等待用户从键盘输入数据。当用户键入字符并敲回车键以后,程序继续运行。若用户输入字符后未按回车键,则键入的内容一直保留在键盘缓冲区中,只有用户键入回车键后,字符输入函数,getchar,才进行处理。,函数,getchar,将回车键作为一个字符读入。如果程序中有两个以上函数,getchar,时,应该一次性输入所需字符,最后再按回车键,如上例所示。,无论输入的是英文字母或标点符号还是数字,都是作为字符输入。,(1)函数原型,putchar(int,);,函数的名称,函数的参数,(2)函数功能,向标准输出设备(一般为显示器)输出一个字符,2,、字符输出函数,注意:每一个,putchar,(),只能输出一个字符!,例:,#,include ,程序运行结果为:,ABBC,main(),int,a=65;,char b=B;,putchar(a,);,putchar(65+1);,putchar(b,);,putchar(B+1);,包含函数,putchar,的头文件,另外:,putchar,还可以输出其他字符,例如:,putchar(n,);,putchar,();,putchar(001);,main(),char c1,c2;,c1=,getchar,();,c2=c1+32;putchar(c2);,#,include ,例:从键盘中输入一个大写字母,要求输出小写字母,#,include ,main(),char c1,c2;,scanf(“%c”,c2=c1+32;printf(“%c”,c2);,1.函数原型,printf(format,,argument,.);,2.函数功能,函数,printf,将一组参数,由,format,给定的格式规定输出格式,把数据格式化并且输出到标准输出设备。,可以有多个参数,4.3.1,格式输出函数,putchar,只能输出字符且只能是一个,而,printf,可以输出多个数据,且可以为任意类型(,%,d,%f,%c,),函数调用的一般形式:,printf,(,格式控制字符串,,输出项列表);,必须用英文的双引号括起来。,作用是控制输出项的格式和输出一些提示信息。,要输出的表达式。,常量、变量、运算,符表达式、函数返回值等,每个输出项之间用逗号(,)分隔。,3,、输出列表项 输出列表项可以是一些需要输出的变量名,也可以是常量,也可以是表达式,例,:main(),int,a;float b;,scanf(“%d,%f”,&a,&b,);,printf(“%d,%fn”,a,b,);,printf(“sum,=%,fn”,a+b,);,4.,格式控制字符:,(1)组成:,普通字符、转义字符、格式说明。,普通字符,:,按原样输出,主要用于输出提示信息。,转义字符,:,指明特定的操作。如,n,t,格式说明,:,由,%,和,格式字符串,组成:%格式字符串。,它表示按规定的格式输出数据。,例,#include,stdio.h,main(),int,a=97,b=98;,printf(1:97,98n);/*,普通字符,原样输出*/,printf(2:%d,%dn,a,b);/*a,b,以十进制整数形式输出*/,printf(3:%c,%cn,a,b);/*a,b,以字符形式输出*/,printf(4:a=%d,b=%d,a,b);,程序运行结果为:,1:97,98,2:,97,98,3:,a,b,4:a=97,b=98,(2)格式说明的形式:,格式字符,对不同的数据用不同的格式字符进行输出,1,d,格式符,用来输出十进制整数,用法:,%d,按整型数据的实际长度输出,%,md,m,为输出字段的宽度,m,为正整数,若要输出的数据位数小于,m,则左端补空格。,若位数大于,m,则按实际位数输出,例:,int,a=123,b=12345;,printf(“a,=%4d,b=%4d”,a,b);,输出结果:,a=123,b=12345,例如,:,printf,(%dn“,100);,printf(%5dn,100);,printf(%8dn%8d,100,100*100);,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,%ld,输出长整型数据,例:,long a=135790L;,printf(“%ld”,a,);,若以,%d,输出可能会由于超出数据范围而发生错误,2,o,格式符,用来以八进制输出整数,例:,int,a=45;,printf(“%d,%o”,a,a,);,3,x,格式符,用来以十六进制输出整数,例:,int,a=45;,printf(“%d,%x”,a,a,);,4,u,格式符,用来以十进制形式输出无符号型整数,unsigned,例:,main(),int,a=-1;,printf(“%d,%o,%x,%u”,a,a,a,a,);,思考:结果如何?,5,c,格式符,用来输出一个字符,例:,char i=c;,printf(“%c”,i,);,6,S,格式符,用来输出一个字符串,用法:,%s,用来输出字符串,%ms,输出的字符占,m,列,若串长小于,m,则左补空格;若字符串本身长度大于,m,则突破,m,的限制,将字符串全部输出。,%-ms,如果串长小于,m,则在,m,列范围内,字符串右补空格,%,m.ns,输出占,m,列,但只取字符串中左端,n,个字符。这,n,个字符输出在,m,列的右侧,左补空格。,%-,m.ns,其中,m,n,含义同上,n,个字符输出在,m,列范围的左侧,右补空格。如果,nm,则,m,自动取,n,值,即保证,n,个字符正常输出,.,#include,main(),printf(“%sn,”,“china”);,printf(“%7sn”,“china”);,printf(“%-7sn”,“china”);,printf(“%7.2sn”,“china”);,printf(“%-5.3sn”,“china”);,china,china,china,ch,chi,7,f,格式符,用来输出实数,用法:,%f,整数部分全部输出,小数部分输出,6,位,注意有效位数,%,m.nf,表示输出的数据共占,m,列,其中有,n,位小数,不够,m,列则,左,端补空格,%-,m.nf,表示输出的数据共占,m,列,其中有,n,位小数,不够,m,列则,右,端补空格,printf,(%fn%10.3fn,100.7654321,100.7654321);,例如,:,1,0,0,.,7,6,5,4,3,2,1,0,0,.,7,6,5,1,0,0,.,7,6,5,printf,(%-10.3fn,100.7654321);,()格式字符(,type),一鉴表,:,字符,说明,d(,或,i),以带符号的十进制形式输出整数,不输出,(+),号,o,以八进制无符号形式输出整数(不输出前导符数字,O),x(,或,X),以十六进制无符号形式输出整数(不输出前导符,Ox),u,以无符号十进制形式输出整数,c,输出一个字符,s,输出字符串,f,以小数形式输出单、双精度数,隐含输出6位小数,e(,或,E),以指数形式输出单、双精度数,小数位数为6位,g(,或,G),由给定的值和精度自动选用%,f,或%,e,或%,E,格式,%,输出百分号(%),1.函数原型,scanf(format,,argument,.);,2.函数功能,按规定格式从键盘输入若干任何类型的数据给,argument,所指的单元;,可以有多个参数,4.3.2,格式输入函数,3.函数调用的一般形式:,scanf,(,格式控制字符串,,地址列表);,必须用英文的双引号括起来。,由普通字符和格式说明字符组成。,由若干个地址组成的列表,。,变量的地址、字符串的首地址、指针变量等,以逗号(,)间隔。,4.格式控制字符:,(1)组成:,普通字符、格式说明。,普通字符,:,格式说明,:,键盘输入时,要按原样输入,一般起分隔或提示作用。,%,type,&:取地址运算符。,表示将所输入后的数据放入对应地址的存储单元中。,scanf,(“i=%,d,&i,);,printf,(“i=%,d,i,);,scanf,(%d%d%d,&a,&b,&c);,i,=,3,0,输,入,i,=,3,0,输,出,1,2,3,或,1,2,3,1,2,3,错,scanf,(%d,%d,%d,&a,&b,&c);,1,,,2,,,3,1,:,2,:,3,a,=,1,b,=,2,c,=,3,scanf,(%d:%d,:%d,,&a,&b,&c);,scanf,(“a=%d,b=%d,c=%,d”,&a,&b,&c,);,(4),注意事项,:,scanf,(),的格式控制字符串中没有转义字符。如,scanf,(“%dn”,&a);,是错误的。,scanf,(),的格式控制字符串中的普通字符不是用来显示的,而是输入时要求照普通字符输入的。,scanf,(),中参数的第二部分一定是地址列表,不能是表达式。,C,语言提供三种结构化语句来控制程序的执行流程:,顺序结构:,选择结构:,循环结构:,一种按书写顺序执行的结构。,根据运行时的情况自动选择要执行的语句,。,根据情况自动重复执行有关语句。,4.4,程序的三种基本结构,顺序结构即按照语句书写顺序执行的程序结构。,A,B,顺序结构,顺序结构,例:,#,include,stdio.h,main(),int,a,b;,printf(input,a,b:);,scanf(%d%d,&a,&b,);,printf(a,=%d,b=%d,a,b);,input a,b:7,8,a=7,b=8,顺序程序设计举例,例,:,输入一个华氏温度,输出对应的摄氏温度。输出取1位小数。转换公式为,#,include,stdio.h,main(),float c,f;,scanf(%f,&f,);,c=5.0/9*(f-32);,printf(%.1fn,c);,注意数学表达式到,C,语言表达式的转换,例,:,从键盘输入圆半径,求圆的面积和周长,结果保留两位小数。,#include,stdio.h,#,includemath.h,“#define PI 3.14,main(),float,r,area,L,;,scanf(%f,&r,);,area=PI*pow(r,2);/*,函数,pow(x,y,),表示,x,y,*/,L=2*PI*r;,printf(area,=%.2f,L=%.2fn,area,L);,第三章 小结,小 结,1、表达式与语句的区别,2、格式化输入/输出语句的使用,3、简单顺序程序的编写,作业,、编写一个程序,输入任一
展开阅读全文