《第3章 输入输出函数.ppt》由会员分享,可在线阅读,更多相关《第3章 输入输出函数.ppt(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第3章章 顺序结构程序设计顺序结构程序设计本章的学习目的:1)了解C语言语句的几种基本形式;2)当程序运行时如何接受键盘数据的输入;3)程序运行的结果或各种类型的数据是如何输出到屏幕上。3.1 C语言的基本形式语言的基本形式3.2 数数据的输入和输出据的输入和输出3.3 顺序结构程序范例顺序结构程序范例 Return C程序由函数组成,如前面的主函数程序由函数组成,如前面的主函数main()及其它子函数;而函数由及其它子函数;而函数由各种语句组成。各种语句组成。案例案例3.1C程序语句的种类:程序语句的种类:main()int a,b,t;scanf(“%d,%d”,&a,&b);if(ab
2、)t=a;a=b;b=t;printf(“%d,%dn”,a,b);控制语句控制语句函数调用语句函数调用语句表达式语句表达式语句复合语句复合语句3.1 C语言的语句语言的语句1.控制语句如上例中的if 语句。用以完某种控制功能。C语言的控制语句共有九条,分别在分支和循环节构中构中完成不同的控制功能。2.函数调用语句函数调用加上“;”组成。如上例中的scanf();和printf();。3.表达式语句由表达式加上“;”组成,如上例中的 t=a;。4.复合语句由括起的语句系列。整体上可认为是一条语句。如上例中的t=a;a=b;b=t;5.空语句只有一个“;”号组成的语句;只是一条形式上的语句,本身
3、不执行任操作。C语言的语句形式有以下五种:Return为了让计算机处理各种数据,首先就应该把源数据输入到计算机中;计算机处理结束后,再将目标数据信息以人能够识别的方式输出。C语言中的输入输出操作,是由C语言编译系统提供的库函数来实现。3.2.1 格式化输出格式化输出printf()函数函数3.2.2 格式化输入格式化输入scanf()函数函数3.2.3 单单个个字字符符输输入入输输出出getchar()和和putchar()函函数数 3.2 C程序中数据的输入和输出程序中数据的输入和输出Returnprintf()函数的作用:向计算机系统默认的输出设备(一般指显示器)输出一个或多个任意类型的数
4、据。案例案例3.1 已知圆半径r=1.5,求圆周长和圆面积。/*案例代码文件名:EX32.C。*/#define pi 3.415926main()float r,l,s;r=1.5;l=2*pi*r;/*求圆周长*/s=pi*r*r;/*求圆面积*/printf(“r=%fn”,r);/*输出圆半径*/printf(“l=%7.2f,s=%7.2fn”,l,s);/*输出圆周长、面积*/3.2.1 格式化输出格式化输出printf()函数函数程序运行结果如下:r=1.500000l=10.25,s=7.69 其中:第一行输出由printf(“r=%fn”,r)输出,表示输出r的值。第二行输出
5、是由printf(“l=%7.2f,s=%7.2fn”,l,s)输出,输出l和s的值。printf()函数的一般格式如下:printf(格式字符串格式字符串,输出项表,输出项表);1格式字符串。“格式字符串”在此也称“输出格式字符串”,可以包含两种字符:(1)格式说明符。格式说明符的一般形式如下:%m.n如上面的%7.2f,其中f为格式字符,指明要输出的对应输出项为实型;7.2对应格式说明符中的m.n,指明输出的总宽度占7位,小数位占2位,又称m.n为附加格式说明符。以下为常用的格式字符及可用的附加符:表表3.1 printf格式字符格式字符格式字符说 明d,i以带符号的十进制形式输出整数(正
6、数不输出符号)o以八进制形式输出整数x,X以十六进制形式输出整数u以无符号十进制输出整数s输出字符串c以字符形式输出单个字符f以小数形输出实数,包括单精度和双精度,小数点后默认输出6位。e,E以指数形式输出实数g,G自动%f或%g中输出宽度较短的一种格式中输出实数表表3.1 printf附加格式字符附加格式字符附加格式符说 明字母l表示输出长整型时m表示输出的宽度.n当输出实数时,表精度即小数位;当输出字符串时,表示从左边截取的字符个数。-表示输出时按左对齐(2)其它字符。包括普通字符和转义字符。)其它字符。包括普通字符和转义字符。普通字符输出时原样输出,如上例中的普通字符输出时原样输出,如上
7、例中的l=等;转义字符按其含义输出,等;转义字符按其含义输出,如,如,n等等。等等。2.输出项表输出项表包含若干要输出的数据,每个输出项可以为变量、常量或表达式。包含若干要输出的数据,每个输出项可以为变量、常量或表达式。格式说明符和输出项是一一对应的关系。如:格式说明符和输出项是一一对应的关系。如:printf(“l=%7.2f,s=%7.2fn”,l,s);案例案例3.3 用用 printf函输出各类数据函输出各类数据main()int a=5,b=7;float x=67.8564,y=-789.124;char c=A;long n=1234567;printf(“%d%d%3d%3dn
8、”,a,b,a,b);printf(“%f,%fn”,x,y);printf(“%10f,%-15f,%8.2f,%4fn”,x,y,x,y);printf(“%e,%10.2en”,x,y);printf(“%ldn”,n);printf(“%s,%5.3sn”,“computer”,“computer”);printf(“computern”);运行刻程序,输出如下:运行刻程序,输出如下:57 5 767.856400,-789.124023 67.856400,-789.124023 ,67.86,-789.1240236.78564e+01,-7.9e+021234567compute
9、r,comcomputerReturn3.2.2 格式化输入格式化输入scanf()函数函数scanf()函数的作用是用来从键盘向程序输入数据的。如案例3.2只能求得固定半径 r为1.5的圆的周长和面积,要想程序能求得任意给定半径的圆的周长和面积,则要求程序能接受键输入的任意半径。案例3.4对案例3.2略加修改,以满足上述要求。#define pi 3.415926main()float r,l,s;printf(“please input r:n”);scanf(“%f”,&r);/*输入半径值*/l=2*pi*r;/*求圆周长*/s=pi*r*r;/*求圆面积*/printf(“r=%fn
10、”,r);/*输出圆半径*/printf(“l=%7.2f,s=%7.2fn”,l,s);/*输出圆周长、面积*/运行程序:运行程序:please input r:1.5r=1.500000l=10.25,s=7.69重新运行:重新运行:please input r:2.5 r=2.500000l=17.08,s=21.35通过运行程序说明:使用scanf()函数,通过键盘输入,给程序提供所需、任意的数据。1.scanf()函数的一般格式 scanf(格式字符串格式字符串,输入项表输入项表);(1)格式字符串。格式字符串可以包含3种类型的字符:格式说明符、空白字符(空格、Tab键和回车键)和非
11、空白字符(又称普通字符)。格式指示符与printf()函数的相似,空白字符作为相邻2个输入数据的缺省分隔符,非空白字符在输入有效数据时,必须原样一起输入。(2)输入项表由若干个输入项首地址组成,相邻2个输入项首地址之间,用逗号分开。如,&变量名变量名 其中“&”是地址运算符。例如,案案例例3.4中的“&r”是指变量r在内存中的地址。有关有关scanf函数的格式说明见表函数的格式说明见表3.2,表表3.2:表表3.1 scanf格式字符格式字符格式字符说 明d,i用以输入有符号的十进制整数o用来输入八进制形式的整数x,X用以输入十六进制形式整数u用以输入无符号十进制整数s用以输入字符串(中间不能
12、有空格)c用以输入单个字符f e,E g,G用以输入单精度实数。以指数形式或小数形式均可表表3.1 scanf附加格式字符附加格式字符附加格式符说 明l用以输入长整型或双精度型宽度用以限制最大输入宽度2.案例案例3.5利用利用scanf函数通过键盘给变量赋值的范例函数通过键盘给变量赋值的范例main()int a,b;long l;float x,y;double d;char c;scanf(“%d%d”,&a,&b);scanf(“%f,%f,c=%c”,&x,&y,&c);scanf(“%ld%lf”,&l,&d);如果要达到如果要达到a=1,b=2,l=3,x=1.5,y=3.5,d=
13、5.5,c=A同样的效果同样的效果.程序运行时应输入程序运行时应输入:1 2 1.5,3.5,c=A 3 5.5 3.scanf使用要领总结使用要领总结 (1)各输入项一定要是变量的地址各输入项一定要是变量的地址,即用即用&符号取地址运算符号取地址运算.(2)格式说明符位置按指定类型输入格式说明符位置按指定类型输入.(3)非空白字符要如实对应输入非空白字符要如实对应输入,如如“,”“c=“(4)空白字符对应零到多个空白字符的输入空白字符对应零到多个空白字符的输入(包括回车包括回车,空格空格,TAB按键按键).如如scanf(“%d ,%d”,&a,&b);可输入可输入:1,2 也可输入也可输入
14、:1 ,2 也可输入也可输入:1 ,2 或其它形式输入或其它形式输入.(5)非非%c格式符之前格式符之前,可输入多个空白字符可输入多个空白字符(包括回车包括回车,空格空格,TAB按键按键).如如scanf(“%d ,%d”,&a,&b);输入同第二个输入同第二个%d格式符对应整数之前可任意输入空白符格式符对应整数之前可任意输入空白符.即完全可同第即完全可同第(4)种情形种情形.相反相反,如如scanf(“%d%c”,&a,&b);要使要使a得到整数得到整数3,b得到需要的字符得到需要的字符c,可输入可输入:3c 如果输入如果输入3 c,则则b将得到空格字符将得到空格字符.Return3.2.3
15、 单个字符输入输出单个字符输入输出getchar()和和putchar()函数函数1 单个字符的输出单个字符的输出putchar()函数函数案例案例3.6 putchar()函数的格式和使用方法。#include stdio.h/*编译预处理命令:文件包含*/main()char ch1=N,ch2=E,ch3=W;putchar(ch1);putchar(ch2);putchar(ch3);/*输出*/putchar(n);putchar(ch1);putchar(n);/*输出ch1的值,并换行*/putchar(E);putchar(n);/*输出字符E,并换行*/putchar(ch3
16、);putchar(n);程序运行结果如下:NEW N E W1)putchar()函数的格式:putchar(ch);其中ch可以是一个字符变量或常量,也可以是一个转义字符。2)putchar()函数的作用:向屏幕输出一个字符。(1)putchar()函数只能用于单个字符的输出,且一次只能输出一个字符。另外,从功能角度来看,printf()函数可以完全代替putchar()函数。(2)在程序中使用putchar()函数,务必牢记:在程序(或文件)的开头加上编译预处理命令(也称包含命令),即:#include stdio.h 表示要使用的函数,包含在标准输入输出(stdio)头文件(.h)中。
17、2 单个字符的输入单个字符的输入getchar()函数函数案例案例3.7 说明getchar()函数的格式和作用。#include stdio.h/*文件包含*/main()char ch;printf(Please input two character:);ch=getchar();/*输入1个字符并赋给ch*/putchar(ch);putchar(n);putchar(getchar();/*输入一个字符并输出*/putchar(n);程序运行情况如下:Please input two characters:ab a b1getchar()函数的格式:getchar();2getcha
18、r()函数的作用:从系统隐含的输入设备(如键盘)输入一个字符。另外,从功能角度来看,scanf()函数可以完全代替getchar()函数。(1)getchar()函数只能用于单个字符的输入,一次输入一个字符。(2)程序中要使用getchar()函数,必须在程序(或文件)的开头加上编译预处理命令:#include stdio.h“Return 在顺序结构程序中,各语句(或命令)是按照位置的先后次序,顺序执行的,且每个语句都会被执行到。案例案例3.8 输入任意三个整数,求它们的和及平均值。/*案例代码文件名:ex38.C*/*功能:设计一个顺序结构程序,求三个整数的和及平均值。*/main()in
19、t num1,num2,num3,sum;float aver;printf(Please input three numbers:);scanf(%d,%d,%d,&num1,&num2,&num3);/*输入三个整数*/sum=num1+num2+num3;/*求累计和*/aver=sum/3.0;/*求平均值*/printf(num1=%d,num2=%d,num3=%dn,num1,num2,num3);printf(sum=%d,aver=%7.2fn,sum,aver);3.3 顺序结构程序设计顺序结构程序设计思考题思考题:能否将“aver=sum/3.0;”中“3.0”改为“3”
20、?案案例例3.9 求方程ax2+bx+c=0的实数根。a,b,c由键盘输入,a0且b2-4ac0。/*案例代码文件名:ex39.C。*/*功能:设计一个顺序结构程序,求方程的根。*/#include math.h/*为使用求平方根函数sqrt(),包含math.h头文件*/main()float a,b,c,disc,x1,x2;printf(Input a,b,c:);scanf(%f,%f,%f,&a,&b,&c);/*输入方程的三个系数的值*/disc=b*b-4*a*c;/*求 判 别 式 的 值 赋 给disc*/x1=(-b+sqrt(disc)/(2*a);x2=(-b-sqrt
21、(disc)/(2*a);printf(nx1=%6.2fnx2=%6.2fn,x1,x2);案案例例3.10 从键盘输入一个小写字母,要求用大小写字母形式输出该字母及对应的ASCII码值。/*案例代码文件名:ex310.C。*/#include stdio.hmain()char c1,c2;printf(Input a lowercase letter:);c1=getchar();putchar(c1);printf(,%dn,c1);c2=c1-32;/*将大写字母转换成对应的小写字母*/printf(%c,%dn,c2,c2);程序运行情况如下:Input a lowercase letter:a a,97 A,65 在顺序结构程序中,一般包括以下几个部分:1程序开头的编译预处理命令。在程序中要使用标准函数(又称库函数),除printf()和scanf()外,其它的都必须使用编译预处理命令,将相应的头文件包含进来。2顺序结构程序的函数体中,是完成具体功能的各个语句和运算,主要包括:(1)变量类型的说明。(2)数据输入部分。(3)运算处理部分。(4)数据输出部分。Return