《第3章 最简单的C程序设计课件.pdf》由会员分享,可在线阅读,更多相关《第3章 最简单的C程序设计课件.pdf(127页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第3章最简单的C程序设计3.1 顺序程序设计举例3.2 数据的表现形式及其运算3.3 C语句3.4 数据的输入输出3顺序程序设计举例例3.1有人用 温度计测量出用华氏法表示 的温度(如 F,今要求把它转换为以摄氏法 表示的温度(如C)oA解题思路:找到二者间的转换公式5。二一(/32)9f代表华氏温度,C代表摄氏温度3顺序程序设计举例例3,1有人用温度计测量出用华氏法表 示的温度(如F,今要求把它转换为以摄氏法表示的温度(如C)OA算法:输入f的值_5c=-(7-32)_9输出C的值NS图5-(/-32)93顺序程序设计举例#include int main()(float f,c;定义f和c
2、为单精度浮点型变量f=64.0;指定f的值c=(5.0/9)*(f-32);计算 c 的值printf(f=%fnc=%fn,f,c);return 0;输出f和c的值=t64.000000-17.7777783顺序程序设计举例例3.2计算存款利息。有1000元,想存 一年。有三种方法可选:(1)活期,年利率为1(2)一年期定期,年利率为r2(3)存两次半年定期,年利率为r3请分别计算出一年后按三种方法所得到 的本息和。3顺序程序设计举例解题思路:确定计算本息和的公式。从数学知识可知:若存款额为pO,贝!J:活期存款一年后本息和为:p1=pO(1+r1)一年期定期存款,一年后本息和为:p2=p
3、0(1+r2)两次半年定期存款,一年后本息和为:p3=pO(lr 3 r 3+一)(1+一)223顺序程序设计举例 算法:输入pO j l j 2 j 3的值计算 p l=pO(l+rl)计算 p2=p0(1+r2)计算 p3=pO(1+Ll)(1+2)_2 2输出 pl,p2,p33顺序程序设计举例include int main()定义变量同时赋予初值float p0=1000,r1=0.0036,r2=0.0225,r3=0.0198,p1,p2,p3;p1=pO*(1+r1);p2=pO*(1+r2);p3=pO*(1+r3/2)*(1+r3/2);printf(,%fn%fn%fn)
4、,p1,p2,p3);return 0;)003.599976022.500000019.8980103.2数据的表现形式及其运算3.2.0预备知识3.2.1 常量、变量和标识符3.2.2 数据类型3.2.3 整型数据3.2.4 字符型数据3.2.5 浮点型数据3.2.6 怎样确定常量的类型3.2.7 运算符和表达式C语B程序设计预备知识计算机 中 数的 表示及进制 转换。数码、基与权数码:表示数的符号基:数码的个数权:每一位所具有的值。数制数据描述c数制十进制数二进制数八进制数十六进制数数码0901009,AF,af基102816权10,101,102,.2,21,22,.8,81,82,.
5、16,161,162,.表示八进制:4275=4x83+2x82+7x81+5x8 i1+14x16特点逢十进逢二进一2逢十六进一语言程序设计数据描述C语言程序设计数据描述各种 进制 之间 的 转换二进制、八进制、十六进制转换成十进制方法:按权相加例(111011)2=1x25+1x24+1x23+0 x22+1x21+1x2=(59)10n i n例(136)8=1x8+3x8+6 x8=(94)in o 1U例(1尸 2/)16=1 X 16 3+15 X 16 2+2 X 16 1+10 X 16 =(7978%C语言程序设计*各种进制 之间 的转换(整数)二进制、八进制、十六进制转换成
6、十进制方法:按权相加十进制转换成二进制、八进制、十六进制方法:连续除以基,从低到高记录余数,直至商为0例把十进制数59转换成二进制数例把十进制数159转掾成八进制数例把率进撷459转灯就十六进制数-数据描述2|迎159 余余|7 1闻|裨9.解俗一ib|2 h|12 3 Q 14=q 2 2 72。余 10(159)io=(2维毒军寻 o 1(459)w=(1CB)i6:1(59)io=(111O11)2C语言程序设计二进制与八进制 之间 的转换二进制转换成八进制:从右向左,每3位一组(不足3位左 补0),转换成人进制八进制转换成二进制:用3位二进制数代替每一位八进制数数据描述例(110100
7、1)2=(001,101,001)2=(151)8例(246)尸(010,100,110)2=(10100110)2000,-0001-1010-2011-3100,4101-5110-6111-7C语言程序设计二进制 与十六进制 之间 的 转换二进制转换成十六进制:从右向左,每4位一组(不足4位左补0),转换成十六进制十六进制转换成二进制:用4位二进制数代替每一 位十六进制数例(11010101111101)2=(0011,0101,0111,1101)2=(357 D)i6(4B9E)i6=(0100,1011,1001,1110)2=(100101110011110)2数据描述0000
8、00001 10010 20011 30100 40101 50110 60111 71000 81001 91010 A1011 B1100 C1101 D1110 E1111 FC语言程序设计字节和位*内存以字节为单元组成7 6 5 4 3 20*每个字节有一个地址0 一个字节一般 由8个二进制 位组成 1数据描述c语B程序设计数值的表示方法一一原码、反码和补码。原码:最高位为符号位,其余各位为数值本身的绝对值。反码:正数:反码与原码相同 负数:符号位为1,其余位对原码取反。补码:正数:原码、反码、补码相同 负数:最高位为1,其余位为原码取反,再对整个数加1数据描述c语言程序设计(用一字节
9、表示数)原码反码补码+7000001110000011100000111-7100001111111100011111001+0000000000000000000000000-0100000001111111100000000数的范围01111111-11111111(-127+127)01111111-10000000(-127-+127)01111111-10000000(-128-+127)O负数补码转换成十进制数:最高位不动,其余位取反加1数据描述例:如何已知求原来的数,补码:取反:刀川1:111110011000011010000111=-7c语言程序设计3.2.1常量和变量常量。
10、定义:程序运行时其值不能改变的量(即常数)。分类:符号常量:用标识符代表常量.定义格式:#defirie 符号常量 常量/血田土目隹L冉d 如#define直接常量(根据其不同白例符号常量举例.#define PRICE 30数据描述整型常量实型常量字符常量字符串常量main()运行结果:total=300int num9total;num=10;total=num*PRICE;printf(ntotal=%dn9total);3.2.1常量和变量 整型常量:如 1000,12345,0,-345实型常量十进制小数形式:如0.34-56,79 0.0指数形式:如12.3463(代表12.34*
11、1。3)字符常量:普通字符:如?,转义字符:如n5字符串常量:如”boyQ字符常量。定义:用单引 号括起来的单个普通字符或转义字符.c语言程序设计由字符串常量。定义:用双引号(“”)括起来的字符序列。存储:每个字符串尾自动加一个 0 作为字 符串结束标志例 字符串“heHo在内存中 lh Ie I 1 11 Io I 0例空串字符 常量与字符串 常量不同数据描述例匕 ffl a”|a0例:char ch;ch=A;而ch=A;是不对的、c语言程序设计变量。概念:其值可以改变的量。变量名与变量值。变量定义的一般格式:数据类裂 变量1,銮量2,一O变量初变量n;例:int 勺=1 h=-2 rr例
12、:&infme2例-例 一 数据描述main()int a5b=2;a=l;float data;data=(a+b)*1.2;printf(data=%fnd。;、=2bc=4;data=3.67;cU 一,.)in function main3.2.1常量和变量变量名和变量值是两个不同的楼念变量名实际上是以一个名字代表的一个存储地址从变量中取值,实际上是通过变量名找到相应的 内存地址,从该存储单元中读隼数据3.2.1常量和变量3,常变量:const int a=3;4.标识符:一个对象的名与大小写字母是不同的字符 _ _.c语言规定标识符只能由字每r妻冬和下划线3种 字符组成,且第一个字符
13、必须为字母或下划线 合法的标识符:如sum,average,_total,Class,day,BASIC,lij ing 一不合法的标识符:M.D.J ohn,123,#33,3D64,ab3.2.2数据类型所谓类型,就是对数据分配存储单元的安 排,包括存储单元的长度(占多少字节)以及 数据的存储形式不同的类型分配不同的长度和存储形式3.2.2数据类型C语言允许使用的数据类型:基本类型整型类型。基本整型*短整型*长整型。双长整型。字符型。布尔型浮点类型单精度浮点型双精度浮点型复数浮点型3.2.2数据类型c语言允许使用的数据类型基本类型枚举类型空类型派生类型指针类型数组类型 算术类型结构体类型共
14、用体类型函数类型3.2.3整型数据1.整型数据的分类最基本的整型类型 基本整型(int型):占2个或4个字节 短整型(short int):VC+6.0中占2个字节 长整型(long int):VC+6.0中占4个字节 双长整型(long long int):C99新增的3.2.3整型数据1.整型数据的分类2.整型变量的符号属性整型变量的值的范围包括负数到正数可以将变量定义为“无符号”类型扩充的整形类型:ftui 6uo|6uo|pauBisun 幅第三砥含导学 巾U!6uo|6uo|peuBis福害三砥含导单)ui 6uo|pauBisun,第含导 巾U!6uo|pauBis 幅第含导单 后
15、刈 uoqs pauBisun 福第再宣导 后11口 uoqs pauBis 幅第再含导单“!peuBisun 得言幸/含导学:刈pauBis福言幸需含导单:减隶?g舞翎字金哥藤他森.乙3.2.4字符型数据字符是按其代码(整数)形式存储的 C99把字符型数据作为整数类型的一种字符型数据在使用上有自己的特点3.2.4字符型数据1.字符与字符代码大多数系统采用ASCII字符集 字母:A Z,a z 数字:09 专门符号:29个:!”#&,()*等 空格符:空格、水平制表符、换行等 不能显示的字符:空(null)字符(以0表示)、警告(以,a表示)、退格(以,b表示)、回车(以表示)等3.2.4字符
16、型数据字符1,和整数1是不同的概念:字符1只是代表一个形状为1的符号,在 需要时按原样输出,在内存中以ASCII码形式 存储,占1个字节0 0 1 1 0 0 0 1整数1是以整数存储方式(二进制 补码方式)存 储的,占2个或4个字节0 0 0 0 0 0 0 00 0 0 0 0 0 0 13.2.4字符型数据2.字符变量用类型符char定义字符变量 char c=?;系统把“?”的ASCII代码63赋给变量c printf(d%cn,c,c);输出结果是:63?3.2.5浮点型数据浮点型数据是用来表示具有小数点的实数 float型(单精度浮点型)编译系统为float型变量分配4个字节数值以
17、规范化的二进制 数指数形式存放参见主教材图313.2.5浮点型数据浮点型数据是用来表示具有小数点的实数 float型(单精度浮点型)double型(双精度浮点型)编译系统为double型变量分配8个字节 15位有效数字long double(长双精度)型3.2.6怎样确定常量的类型字符常量:由单撇号括起来的单个字符或 转义字符整型常量:不带小数点的数值系统根据数值的大小确定int型还是long型等浮点型常量:凡以小数形式或指数形式出 现的实数C编译系统把浮点型常量都按双精度处理分配8个字节c3.2.7运算符和表达式C运算符算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 条件运算符 逗
18、号运算符 指针运算符 求字节数(+-*/(=!=)数据描述强制类型转换:(类型)分量运算符:(.-)下标运算符:(口)其它:()-)C语言程序设计学习运算符应注意:。运算符功能。与运算量关系要求运算量个数要求运算量类型。运算符优先级别。结合方向。结果的类型数据描述c语言程序设计算术运算符和表达式。基本算术运算符:+-*/%结合方向:从左向右(只有单目 运算符“一”和“+”的结合 性是从右到左)。优先级:-*/%-+-(2)(3)(4)说明:“一”可为单 目 运算符时,右结合性两整数相除,结果为整数,如5/3=1郎到T 3由郎烈;数据描述例 5/2=2-5/2.0=25有一个为负值/3=-1有一
19、个为实投%要求两侧均为整型数据对于-7%4,7%-4,-7%-4的值;即结果的符号 由 被除数的利例5%2-5%2 1%10 5%1 5.5%2=1=-1=1=0(x)即5才巴4、-3)c数据描述。自增、自减运算符+一(重点)作用:使变量值加1或减1种类:前置+i,i(先执行i+1或iT,再使用i值)后置 i+,i(先使用i值,再执行i+1或iT)例 产3k=+j;/k=4,j=4j=3k=j+;/k=3,j=4j=3printf(%(T,+j);/4j=3printf(%d,j+);/3a=3b=5;c=(+a)*b;/c=20,a=4a=3b=5;c=(a+)*b;/c=15,a=4c语言
20、程序设计*自增、自减运算符+作用:使变量值加1或减1种类:前置+i,i(先执行i+1或iT,再使用i值)后置 i+,i(先使用i值,再执行i+1或iT)说明:+不能用于常量和表达式,如5+,(a+b)+结合方向:自 右向左 优先级:+-*/%-+-(2)(3)(4)数据描述例i+i=3;printf-i+);3.2.7运算符和表达式4.不同类型数据间的混合运算:(1)+、-、*、/运算的两个数中有一个数为float或 double型,结果是double型。系统I夺float型数据者B 先转换为double型,然后进行运算(2)如果int型与float或double型数据进行运算,先把 int型
21、和float型数据转换为double型,然后进行运算,结果是double型(3)字符型数据与整型数据进行运算,就是把字符的ASCI I代码与整型数据进行运算3.2.7运算符和表达式例3.3给定一个大写字母,要求用小写字 母输出。A解题思路:关键是找到大、小写字母间的内在联系同一个字母,用小写表示的字符的ASCII代 码比用大写表示的字符的ASCH代码大323.2.7运算符和表达式#include int main()(char c1,c2;c1=A;将字符8的ASCH代码65放到c1c2=c1+32;小 将65+32的结果放到c2中 printf(n,c2);用字符形式输出printf(gn”
22、,c2);用十进制形式输出return 0;)73.2.7运算符和表达式5.强制类型转换运算符强制类型转换运算符的一般形式为(类型名)(表达式)(double)a(将a转换成double类型)(int)(x+y)(将x+y的值转换成int型)(float)(5%3)(1 寻5%3的值转换成float型)有两种类型转换 系统 自 动进行的类型转换 强制类型转换C语B程序设计不同类型数据间的转换隐式转换。什么情况下发生 运算转换-不同类型数据混合运算时 赋值转换-把一个值赋给与其类型不同的变量时 输出转换-输出时转换成指定的输出格式 函数调用转换-实参与形参类型不一致时转换。运算转换规则:不同 类
23、型数据运算时先自 动转换 成同一类型数据描述低例 char ch;int i;float f;double d;double-floatlongunsignedint char,short说明:必定的转换运算对象类型不同时转换例 int i;float f;double d;long 1;ch/i intint+Ddouble doubledouble doubledoubledoublec语言程序设计数据描述显式转换(强制转换)讲义中P10页三。一般形式:(类型名)(表达式)例(int)(x+y)(int)x+y(double)(3/2)(int)3.6。说明:强制转换得到所需类型的中间变量
24、,原变 7,4例 main()float x;int i;x=3.6;i=(int)x;printf(x=%f,i=%dx,i);)结果:x=3.600000,i=3精度损失问题较高类z2向较低类型转换时可能发生3.3 C语句331 C语句的作用和分类3.3.2最基本的语句-赋值语句3.3.1 C语句概述一个C程序是由若干个函数组成。一个 函 数有 函 数说 明 部分和 函 数体组成。函 数体 由 数据声 明 语句 和执行语句 组成。语句:是用来对数据进行加工(完成操作任务),是 构成程序的基本单位。每条语句总是以;结束。C语句分为5类控制语句 函数调用语句 表达式语句 空语句复合语句(一)控
25、制语句:完成一定的控制功能1 if()else条件语句2 for()循环语句3 while。循环语句4 dowhile。;循环语句5 continue继续语句6 break间断语句7 switch()开关语句8 goto转向语句9 return返回语句(二)函数调用语句有一个 函 数调用 加一个分号构成一个语句Printf(T his is a C sta tement.;(三)表达式语句有个表达式加个分号构成个语句赋值表达式=卜分号 表达式语句a=3;空语句:只有一个分号的语句7(什么也不做)用来做流程的转向点用 来作为循环语句 中 的循环体(五)复合语句用一对括起来的语句z=x+y;t=z
26、/100;printf(“f”,t);)3.3.2最基本的语句-赋值语句在C程序中,最常用的语句是:赋值语句输入输出语句其中最基本的是赋值语句c语B程序设计赋值运算符和表达式。简单赋值运算符符号:格式:变量标识符二表达式作用:将一个数据(常量或表达式)赋给一个变量复合赋I种类:含义:例 a=3;d=func();c=d+2;0=&=I=expl=expl op exp2数据描述a+=3 a=a+3x*=y+8 x=x*(y+8)x%=3 x=x%3c例:。说明:结合方向:自右向左左侧必须是变量,不能是常量或表达式例 3=x-2*y;达式值自动转换成其左边 a+b=3;_例 int i;i=2.
27、56;/结果 i=2;a=b=c=5 a=(b=5)a=5+(c=6)/表达式值为5,a,b,c值为5/b=5;a=5/表达式值n,c=6,a=ll数据描述a二(b=4)+(c=6)/表达式值 10,a=10,b=4,c=6 a=(b=10)/(c=2)/表达式值5,a=5,b=10,c=2c语言程序设计*说明:结合方向:自右向左左侧必须是变量,不能是常量或表达式赋值转换规则:使赋值号右边表达式值自动转换成其左边 变量的类型赋值表达式的值与变量值相等,且可嵌套例:a=12;a+=a-=a*a/a=-264 等价于a=a+(a=a-(a*a)数据描述列:int a=2;a%=4-l;(相 当于a
28、=a%(4-1)=2%3=2)a+=a*=a-=a*=3;/a=0 等价于a=a+(a=a*(a=a-(a=a*3)c语言程序设计数据描述赋值运算符和赋值表达式的说明:(1)赋值运算符的优先级别只高于逗号运算符,比其它 任何运算符的优先级都低,且具有自右向左的结合 性。因此,对于如下的表达式:a=2+7/3,由于所 有其它运算符的优先级都比赋值运算符高,所以将 先计算赋值运算符右边表达式的值,再把此值赋给 变量a。赋值运算符不同于数学中的“等于号”,这里不是 等同的关系,而是进行“赋予”的操作。赋值表达式x=y的 作用 是,将变量y所代表的存储 单元中的内容赋给变量x所代表的存储单元,x中原
29、有的数据被替换掉;赋值后,y变量中的内容保持 不变。此表达式应当读做“把右边变量中的值赋予 左边变量”,而不应读做“x等于yC语言程序设计数据描述 表达式X=X中,虽然赋值运算符两边的运算对象都是X,但出现在赋值号 左边和右边的X具有不相同含义。赋值号右边的X表示变量X所代表的存 储单元中 的值。赋值号左边的X代表以X为标识的存储单元。该表达式的 含义是隼变量X中的值放入到变量X中去。当然,这一操作并无实际意义。而n=n+1,则是合法的赋值表达式,其作用是隼变量n中的值加1后再放 入到变量n中;即,使变量n中的值增1。赋值运算符的左侧只能是变量不能是常量或表达式。如a+b=c是不合法 的赋值表
30、达式。赋值号右边的 表达式也可以是一个赋值表达式,如a=b=7+1,按照运算 符的优先级,以上表达式将先计算出7+1的值8;按照赋值运算符自右向 左结合性,将先把8赋给变量b,然后再把变量b的值赋给变量a。而表达 式a=7+1=b则是不合法的,因为在7+1=b中,赋值号的左边不是一个变 量。在C语言中“二”符号被视为一个运算符,a=19是一个表达式,而表达式 应该有一个值,C语言规定最左边变量所得到的新值就是赋值表达式的 值。(8)C语言的赋值表达式可以作为语句中的某个成分出现在众多的语句或表 达式中,因而比较难以掌握变量中的数值变化过程。因 此要求读者在学 习 过程中 建立正确的概念,才能准
31、确掌握赋值表达式的 运算规律。c下列合法的赋值语句是:x=y=5x=n%2.5x+n=ix-5=4+1求表达式3.65/2+1.2+5%2=T-+2 T-+263.8 3.=di+2 T-+6 di数据描述3.3.2最基本的语句-赋值语句例3.4给出三角形的三边长,求三角 形面积。3.3.2最基本的语句-赋值语句解题思路:假设给定的三个边符合构成 三角形的条件关键是找到求三角形面积的公式公式为:area=73(其中 s=(a+b+c)/2s-q)(s 6)(s c)#include#include int main()double a,b,c,s,area;a=3.67;b=5.43;对边长a
32、、b、c赋值c=6.21;_s=(a+b+c)/2;计算 s 算 areaarea二sqrt(s*(s-a)*(s-b)*(s-c 加 printf(a=%ftb=%ft%fn,a,b,c);printf(area=%fn,area);return 0;)#include/include 调用数学函数加此行int main()double a,b,c,s,area;a=3.67;b=5-43;数学函数,计算平方根c=6.21;-1-Js=(a+b+c)/2 area二sqrt(ssa)*(s-b)*(s-c);printf(na=%ftb=%ft%fn,JaJb5c);printf(area=
33、%fn,area);return 0;)#include#include int main()double-Aa=3 67-转义字符,使输出位置跳 b=5.43;1I下一个 tab 位罟;c=6.21;【/s=(a+b+c)/2;/area=sqrt(s*(s-a)*Q/b)*(s-c);printf(a=%itp=%tpfn,a,b,c);printf(area=%fn,area);a=3.670000 b=5.430000area=9.9034316.210000归纳总结:1.赋值运算符“=”是赋值运算符 作用 是将一个数据赋给一个变量 也可以将一个表达式的值赋给一个变量归纳总结:1.赋值
34、运算符2.复合的赋值运算符在赋值符“=”之前加上其他运算符,可以构 成复合的运算符 a+=3 等价于 a=a+3归纳总结:1.赋值运算符2.复合的赋值运算符3.赋值表达式一般形式为:变量赋值运算符表达式对赋值表达式求解的过程:。求赋值运算符右侧的“表达式”的值赋给赋值运算符左侧的 变量归纳总结:1.赋值运算符2.复合的赋值运算符3.赋值表达式赋值表达式“a=3*5”的值为15,对表达式求 解后,变量a的值和表达式的值都是15“a=(b=5)”和“a二b=5”等价“a=b”和“b=a”含义不同归纳总结:1.赋值运算符2.复合的赋值运算符3.赋值表达式4.赋值过程 中 的类型转换两侧类型一致时,直
35、接赋值两侧类型不一致,但都是算术类型时,右侧的类型转换为左侧类型后赋值自动将定义变量时要防止数据溢出归纳总结:1.赋值运算符2.复合的赋值运算符3.赋值表达式4.赋值过程 中 的类型转换5.赋值表达式和赋值语句赋值表达式的末尾没有分号,而赋值语句有分号 一个表达式可以包含赋值表达式,但决不能包含 赋值语句归纳总结:1.赋值运算符2.复合的赋值运算符3.赋值表达式4.赋值过程 中 的类型转换5.赋值表达式和赋值语句6.变量赋初值int a=3,b=3,c;int a=3;相当于 int a;a=3;3.4数据的输入输出3.4.1 输入输出举例3.4.2 有关数据输入输出的概念3.4.3 用pri
36、ntf函数输出数据3.4.4 用scanf函数输入数据3.4,5 字符数据的输入输出3.4.1输入输出举例例3.5 ax 2+bx+C=0方程的根。a、b、c由键盘输入,2 八设 6-4 ac 03.4.1输入输出举例解题思路:首先要知道求方程式的根的 方法。由数学矢口识已矢口:如果6 2-4 6ZC0,贝!J 一元二次方程有两个实根:-b+b-4 acX=-X22 a-b-xlb2-4 ac2 a若记bP=一 2 a%=p+q x?=p-qinclude include 程序中调用数学函数sqrtint main()double a,b,c,disc,x1,x2,p,q;scanf(%lf%
37、lf%lf,&a,&bJ&c);输入 a,b,c 的值disc=b*b-4*a*c;p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;printf(x1=%7.2fnx2=%7.2fn,x1,x2);return 0;)#include#include int main()double a,b,c,disc,x1,x2,p,q;scanf(|%lf%lf%j f;,&a,&b,&c);disc=b*b-4*a*c;-p=-b/(2.0*a);92呼精度型Mq=sqrt(disc)/(2.0*a);L x1=p+q;x2=p-q;printf(x1=
38、%7.2fnx2=%7.2fn,x1,x2);return 0;#include#include int main()double a,b,c,disc,x1,x2,p,q;自动转成实数后赋给a,b,cscan,(”lf%lf 对&a,&b,&c);disc=b*b-4*a*c;p=-b/(2.0*a);F求输入3个实数q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;printf(x1=%7.2fnx2=%7.2fn,x1,x2);return 0;#include#include int main()double a,b,c,disc,x1,x2,p,q;scanf(%
39、lf%lf%lf,&a,&b,&c);disc=b*b-4*a*c;p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);13 2 1=1.00 k2=-200)x1=p+q;x2=p-q;printf(x1=|%7.2|nx2=%7.2fn,x1,x2);retu-输出数据占7列,其中小数占2列-3.4.2有关数据输入输出的概念几乎每一个c程序都包含输入输出输入输出是程序中最基本的操作之一3.4.2有关数据输入输出的概念(1)所谓输入输出是以计算机主机为主体而言 的从计算机向输出设备(如显示器、打印机等)输出数据称为输出从输入设备(如键盘、光盘、扫描仪等)向计算机输入数据称为输
40、入3.4.2有关数据输入输出的概念(2)C语言本身不提供输入输出语句输入和输出操作是由C标准函数库中的函数 来实现的 printf和scanf不是C语言的关键字,而只是 库函数的名字格式输入函数:sca nf 格式输出函数:printf 字符输入函数:getcha r 字符输出函数:putcha r 字符串输入函数:gets 字数穿输出函数:puts3.4.2有关数据输入输出的概念(3)在使用输入输出函数时,要在程序文件的 开头用预编译指令#include 或/include stdio.h3.4.3用printf函数输出数据在c程序中用来实现输出和输入的,主要是 printf函数矛口 sca
41、nf函数这两个函数是格式输入输出函数用这两个函数时,必须指定格式343用printf函数输出数据1.格式输出函数格式:printf(“格式控制”,输出项表)功能:按指定格式向显示器输出数据返值:正常,返回输出字节数;出错,返回EOF(-1)例如:printf(,i=|%d,|c=cj n”,i,c);格式声明3.4.3用printf函数输出数据1.printf函数的一般格式printf(格式控制,输出表列)例如:printf(怛 c|%婀”,i,c);-普通字符343用printf函数输出数据1.printf函数的一般格式printf(格式控制,输出表列)例如:可以是常量、变量或表达式343用
42、printf函数输出数据2.常用格式字符 d格式符。用来输出一个有符号的十进制整数。可以在格式声明中指定输出数据的域宽 printf(,%5d%5dn,J 12,-345);O%d输出int型数据O%ld输出long型数据3.4.3用printf函数输出数据2.常用格式字符 C格式符。用来输出一个字符 char ch=,aJ;printf(c”,ch);或 printfC%5cch);输出字符:a3.4.3用printf函数输出数据2,常用格式字符 s格式符。用来输出一个字符串 printf(“%s,CHINA);输出字符串:CHINA3.4.3用printf函数输出数据2.常用格式字符f格式
43、符。用来输出实数,以小数形式输出 不指定数据宽度和小数位数,用例3.6用!7输出实数,只能得到6位小数。double a=1.0;printf(%fna/3);.333333343用printf函数输出数据2.常用格式字符f格式符。用来输出实数,以小数形式输出 指定数据宽度和小数位数。用01,什printf(H%20.15fnH,1/3);0.333333333333333printf(H%.Ofn,J 10000/3.0);333343用printf函数输出数据2.常用格式字符f格式符。用来输出实数,以小数形式输出 指定数据宽度和小数位数。用171,Mfloat a;a=10000/3.0;
44、printf(%fn,a);333.333333343用printf函数输出数据2.常用格式字符f格式符。用来输出实数,以小数形式输出 输出的数据向左对齐,用-m.nf343用printf函数输出数据2.常用格式字符f格式符。用来输出实数,以小数形式输出float型数据只能保证6位有效数字0 double型数据能保证15位有效数字计算机输出 的 数字不都是绝对精确有效的343用printf函数输出数据2.常用格式字符 e格式符。指定以指数形式输出实数%e,VC+给出小数位数为6位指数部分占5列小数点前必须有而且只有1位非零数字 printf(),%e),J 123.456);输出:1.2345
45、60 e+002343用printf函数输出数据2.常用格式字符 e格式符。指定以指数形式输出实数%m.neprintf(”13.2e”,123.456);输出:1.23e+002(前面有4个空格)格式字符:di十进制整数x,X0UC十六进制无符号整数 八进制无符号闻 不带符号十进帝单一字符字符串int a=567;printf(%d,a);int a=255;printf(%x,a);567IF例 main()unsigned int u=65535;printf(u=%dnu);e,E指数形式浮点小|丁.小数形式浮点小工输出结果:u=-luvau a ju/o/or002g,和中较短一种%
46、百分号本身float a=567.789;printf(%g,a);printf,%”);567.789000567.789%说明 HIKI-IMMIM 65535 格式字符要用小L 格式字符与输出项个数应相同,按先后顺序一一对应 输出转换:格式字符与输出项类型不一致,自动按指定格式输出 102附加格式说明符(修饰符)T多饰符 功 金巨m 输出数据域宽,数据长度m,左补空格;否则按实际输出对实数才旨定4、数点后位数(四 舍五入)对字符 串,指定实际输 出位数-输出数据在域内 左对齐(缺省右对齐)+指定在有符号数的正数前显示正号(+)0 输出数值时指定左面不使用 的空位置 自 动填0#在八进制
47、和十六进制 数前显示前导0,Ox 在d,o,x,u前,指定输出精度为long型在e,f,g前,指定输出精度为double型103m.n例 int a=1234;float f=123.456;char ch=H;printffc%8d5%2dn,a?a);printf(f,%8f,%8.lf,%.2f,%.2en,fff);printf(%3 cn”,ch);运行 1234,1234结果:123.456000,123.456000,123.55123.46J.23e+002a例 static char a=Hello,world!”printf(a4%sn%15sn%10.5sn%2.5sn%
48、.3sn,a9a9a9a9a);运行结果:Hello.world!Hello.world!Hello Hello Hei104例-例 int a=1234;float f=123.456;static char c=Hello,world!”;printfC%8d9%-8dn,a9a);printfC4%10.2f?%-10.1;printf(10.5s,%-10.3sn”,c,c);运行结果:1234,1234 123.46,123.5 Hello,Hei105例0、+例 int a=1234;float f=123.456;printf(08dia);/00001234 printfC4%
49、010.2fn5f);/0000123.46 printf(“0+8dn;/000+1234 printf(0+10.2fnf);/000+123.56例#例 int a=123;printf(%o9%#o9%X9%#Xn,a9a9a9a);173,0173,7BQX7B例1OQ 00 00 00 00 00 00 01 oq 00 00 00 00 00 00 00例 long a=65536;printf(“d,%81dn;a,a);0,65536106 3.4.4用scanf函数输入数据格式:scanf(“格式控制”,地址表)功能:按指定格式从键盘读入数据,存入地址表指定的存储单元中,并
50、按回车键结束返值:正常,返回输入数据个数地址表:变量的地址,常用取地址运算符&,不 能是变量格式字符:d 工 o,x,u,c,s,f,e例 scanf(%d;&a);输入:10则 a=10例 scanf(%x;&a);输入:11则 a=171073.4.4用scanf函数输入数据scanf函数中的格式声明与printf函数中的格式声明相似以开始,以一个格式字符结束,中间可以 插入附加的字符scanf(a=%f,b=%f,c=%f,&a,&b,&c);3.4.4用scanf函数输入数据使用scanf函数时应注意的问题scanf(),%f%f%f),a,b,c);错scanf(),%f%f%f),