c语言第三章解析课件

PPT
  • 阅读 37 次
  • 下载 0 次
  • 页数 161 页
  • 大小 1.391 MB
  • 2022-11-24 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档40.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
c语言第三章解析课件
可在后台配置第一页与第二页中间广告代码
c语言第三章解析课件
可在后台配置第二页与第三页中间广告代码
c语言第三章解析课件
可在后台配置第三页与第四页中间广告代码
c语言第三章解析课件
c语言第三章解析课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 161
  • 收藏
  • 违规举报
  • © 版权认领
下载文档40.00 元 加入VIP免费下载
文本内容

【文档说明】c语言第三章解析课件.ppt,共(161)页,1.391 MB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-44560.html

以下为本文档部分文字说明:

第3章最简单的C程序设计3.1顺序程序设计举例3.2数据的表现形式及其运算3.3C语句3.4数据的输入输出3.1顺序程序设计举例例3.1有人用温度计测量出用华氏法表示的温度(如F,今要求把它转换为以摄氏法表示的温度(如C)。

解题思路:找到二者间的转换公式)32(95fcf代表华氏温度,c代表摄氏温度例3.1有人用温度计测量出用华氏法表示的温度(如F,今要求把它转换为以摄氏法表示的温度(如C)。算法:输入f的值输出c的值)32(95

fcN-S图#include<stdio.h>intmain(){floatf,c;f=64.0;c=(5.0/9)*(f-32);printf("f=%f\nc=%f\n",f,c);return0;}定义f和c为单精度浮点型变量指定f的值计算c的值输

出f和c的值例3.2计算存款利息。有1000元,想存一年。有三种方法可选:(1)活期,年利率为r1(2)一年期定期,年利率为r2(3)存两次半年定期,年利率为r3请分别计算出一年后按三种方法所得到的本息和。解题思路:确定计算本息和的公式。从数学知识可知:若存款额为p0,则:活期存款一年

后本息和为:p1=p0(1+r1)一年期定期存款,一年后本息和为:p2=p0(1+r2)两次半年定期存款,一年后本息和为:)23+)(123+p0(1=p3rr算法:输入p0,r1,r2,r3的值计算p1=p0(1+r1)计算p2=p0(1

+r2)计算p3=p0(1+)(1+)输出p1,p2,p323r23r#include<stdio.h>intmain(){floatp0=1000,r1=0.0036,r2=0.0225,r3=0.0198,p

1,p2,p3;p1=p0*(1+r1);p2=p0*(1+r2);p3=p0*(1+r3/2)*(1+r3/2);printf(”%f\n%f\n%f\n”,p1,p2,p3);return0;}定义变量同时赋予初值3.2数据的表现形式及

其运算3.2.1常量和变量3.2.2数据类型3.2.3整型数据3.2.4字符型数据3.2.5浮点型数据3.2.6怎样确定常量的类型3.2.7运算符和表达式3.2.1常量和变量1.常量:在程序运行过程中,其值不能被改变的量整型常量:如1000,12345,0,-345实型常量–十进制小数

形式:如0.34-56.790.0–指数形式:如12.34e3(代表12.34103)字符常量:如’?‟–转义字符:如’\n‟字符串常量:如‛boy”符号常量:#definePI3.1416#include<stdio.h>intmain(){floatp0=1000,r1=0.003

6,r2=0.0225,r3=0.0198,p1,p2,p3;p1=p0*(1+r1);p2=p0*(1+r2);p3=p0*(1+r3/2)*(1+r3/2);printf(”%f\n%f\n%f\n”,p1,p2,p3);return0;}转义字符(反斜杠码)是C语言提供的处理一些特

殊字符(包括一些不可打印字符)方法。重要有如下一些:用反斜杠开头后面跟一个字母代表一个控制字符(不可打印字符);用\\代表字符‚\‛,用\′代表撇号字符;用\后跟1到3个八进制数代表ASCII码为该八进制数的字符;用\x后跟1到2个十六进

制数代表ASCII码为该十六进制数的字符。转义字符形式意义\n换行\t水平制表\v垂直制表\b退格\r回车\f走纸换页\a报警(如铃声)\\反斜杠\?问号\“双撇号\’单撇号\ddd1~3位八进制常数\xhh1~2位十六进制常数#include“stdio.h”Voidmain()

{printf(“thisisatestofstring\r”);printf(“thisisatestofstring\n”);}#include“stdio.h”Voidmain(){printf(“aaaaaaaaaaaaaaaaaa\n”);printf(“aaa\taaaaaaa\n”

);}#include“stdio.h”Voidmain(){inti;charch;ch=„\a‟;for(i=0;i<100;i++){printf(“%d\n”,ch);}}#include<std

io.h>intmain(){floatr,l,s;r=12.3;l=2*3.14*r;s=3.14*3.14*r;printf(“r=%f,l=%f,s=%f”,r,l,s);return0;}#inc

lude<stdio.h>#definePI3.14intmain(){floatr,l,s;r=12.3;l=2*PI*r;s=PI*PI*r;printf(“r=%f,l=%f,s=%f”,r,l,s);retu

rn0;}2.变量:在程序运行期间,变量的值是可以改变的变量代表着一个有名字的,具有特定属性的一个存储单元.变量用来存放数据,也就是变量的值,在程序运行期间变量的值可以改变.变量必须先定义,后使用,定义变量时指定该变量的名字和类型

.inta;a=10;变量名和变量值是两个不同的概念从变量中取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据#include<stdio.h>#definePI3.14intmain(

){floatr,l,s;r=12.3;l=2*3.14*r;s=3.14*3.14*r;printf(“r=%f,l=%f,s=%f”,r,l,s);return0;}3.常变量:constinta=3;上面的定义表示a被定义为一个变量,指定其值为

3,并且在变量的存在期间其值不能改变.#include<stdio.h>intmain(){constinta=10;printf(“a=%d”,a);return0;}#include<stdio.

h>intmain(){constinta=10;printf(“a=%d”,a);a=20;printf(“a=%d”,a);return0;}#include<stdio.h>intmain(){constinta;a=2

0;printf(“a=%d”,a);return0;}常变量与变量的区别:常变量具有变量的基本属性:有类型,占存储单元,只是在其生命期内不允许改变其值。所以说,常变量是有名字的不变量。常量是没有名字的不变量,有名字就便于在程序中被引用。#definePi3.141

5926constfloatpi=3.1415926;(1)符号常量Pi和常变量pi都代表3.1415926,在程序中都能使用。(2)定义符号常量用#define指令,它是编译指令,它只是用符号常量代表一个字符串,在预编译时仅是进行字

符串的替换,在编译后,符号常量就不存在了。(3)常变量需要占用存储单元,有变量值,只是该变量的值不能改变。4.标识符:一个对象的名字在C语言中用来对变量、符号常量名、函数、数组、类型等命名的有效字符序列统称为标识符。前面例子中看

到的变量p1,p2,c,f,符号常量名PI,PRICE,函数名printf等都是标识符。C语言规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线合法的标识符:如sum,ave

rage,_total,Class,day,BASIC,li_ling不合法的标识符:M.D.John,¥123,#33,3D64,a>b3.2.2数据类型C语言要求在定义所有的变量时都要指定变量的类型,常量也是区分类型的。在数学上,数值是不分类型的,数值的运算是绝对准

确的。但在计算机中,数据时存放在存储单元中的,它是具体存在的,而且存储单元是由有限的字节构成的,每一个存储单元中存放的数据的范围是有限的,不可能存放‚无穷大‛的数,也不可能存放循环小数。所谓类型,就是对数据分配存储单元的安排,包括存储单元

的长度(占多少字节)以及数据的存储形式不同的类型分配不同的长度和存储形式不同printf(“%f”,1.0/3.0)。C语言数据类型基本数据类型导出数据类型double(双精度浮点型)long(长整型)char(字符类型)

整型short(短整型)int(整型)浮点型float(单精度浮点型)longdouble(长双精度浮点型)void类型用户定制类型T*(指针类型)struct{„}(结构体类型)union{„}(共用体类型)文件类型函数类型构造类型T[„](数组类型)枚举类型

C语言允许使用的数据类型基本类型整型类型基本整型短整型长整型双长整型字符型布尔型浮点类型单精度浮点型双精度浮点型复数浮点型C语言允许使用的数据类型:基本类型枚举类型空类型派生类型指针类型数组类型结构体类型共用体类型函数类型算术类型纯量类型1

.整型数据的分类(1)最基本的整型类型基本整型(int型):占2个或4个字节短整型(shortint):VC++6.0中占2个字节长整型(longint):VC++6.0中占4个字节双长整型(longlongi

nt):C99新增的inta,b;shortintc,d;longinte,f,g;longlongintx,y;2.整型变量的符号属性整数在存储单元中的存储是用整数的补码形式来存放.一个正数的补码是此数的二进制

形式,如果是负数,则要先求出此数的补码,方法是:先将此数的绝对值写成二进制的形式,然后再对其后的所有各二进制按位取反,再加1.intx;符号位数值位-5的补码5的补码00000000000000005的原码0000000000000101

按位取反1111111111111010最后加11111111111111011如果给整型变量分配2个字节,则存储单元中能存放的最大值为:最大值0111111111111111215-1=32767最小值1000000000000000-215=-32768(2)短整型(shortint)短

整型的类型名为shortint或int。如果用visualc++6.0的编译系统,则分配给int数据4个字节,短整型2个字节,存储方式与int型相同。一个短整型变量的范围是-32768~32767(3)长整型(longint)长整型的类型名为longint。如果用

visualc++6.0的编译系统,则分配给longint数据4个字节,存储方式与int型相同。一个长整型变量的范围是-2147483648~2147483647(4)双长整型(longlongint)双长整型的类型名为longlongint。如果用visu

alc++6.0的编译系统,则分配给int数据8个字节。C语言提供了一个测定某一种类型数据所占存储空间长度的运算符‚sizeof”它的格式为:sizeof(类型标识符或数据)当不了解所使用的编译器中的某数据类型的宽度时,可以使用这个运算符计算之。#include"stdio

.h"intmain(){intx=10;printf("x:%d\n",sizeof(x));printf("int:%d\n",sizeof(int));printf("10:%d\n",sizeof(10));return0;}2整型变量的符号属性数据长度(比特)取值范围Sig

ned(有符号)Unsigned(无符号)8-128~1270~25516-32768~327670~6553532-2147483648~21474836470~429496729564-(263-1)~263-10~264-1(18446744073709551615)现实应用中,有

的数据的范围只有正值,比如学号,年龄、存款额等为了充分利用变量的值的范围,可以将变量定义为无符号类型。可以在类型修饰符前面加上修饰符unsigned,表示指定的变量是无符号整数类型。intx;符号位数值位unsingedintx;数值位扩充的整型类型:有符号基本整型[

signed]int;无符号基本整型unsignedint;有符号短整型[signed]short[int];无符号短整型unsignedshort[int];有符号长整型[signed]long[int];无符号长整型unsignedlong

[int]有符号双长整型[signed]longlong[int];无符号双长整型unsignedlonglong[int]注意:(1)只有整型(包括字符型)数据可以加signed或unsigned修饰符,实型数据不能加。(2)对于无符号整型数据用‚

%u”格式输出,%u表示用无符号十进制的数据格式输出。3.2.4字符型数据字符是按其代码(整数)形式存储的C99把字符型数据作为整数类型的一种字符型数据在使用上有自己的特点1.字符与字符代码在程序中,字符与字符

代码并不时任意写一个字符程序都能识别。例如圆周率∏在现实中用的比较多,但在程序中不能被识别,只能使用系统的字符集中的字符,目前大多数系统采用ASICC字符集。字母:A~Z,a~z数字:0~9专门符号:29个:!”#&„()*等空格符:空格、水平制表符、换行等不能显

示的字符:空(null)字符(以‘\0‟表示)、警告(以‘\a‟表示)、退格(以‘\b‟表示)、回车(以‘\r‟表示)等字符是以整数形式(字符的ASCII代码)存放在内存单元中。大写的字母A的ASCII代码是65,二进

制为1000001。小写的字母a的ASCII代码是97,二进制为1100001。字符的ASCII码最多用7个二进制就可以表示,所有的127个字符都可以用7个二进制位表示。在C语言中指定用一个字节存储一个

字符,这时字节中的第一位置为0.01100001„a‟=97字符’1‟和整数1是不同的概念:字符’1‟只是代表一个形状为’1‟的符号,在需要时按原样输出,在内存中以ASCII码形式存储,占1个字节00110001整数1是

以整数存储方式(二进制补码方式)存储的,占2个或4个字节00000000000000012.字符变量用类型符char定义字符变量charc=‟?‟;系统把‚?”的ASCII代码63赋给变量cprintf(”%d%c\n”,c,c);输出结果是:63?字

符变量可以当整型来使用字符类型的变量,也可以使用signed和unsigned来修饰,允许的值为-128~127,但由于字符的代码不可能为负值,所以在存储字符时实际上只用到了0~127这一部分,其第一位都为0。如果将一个负整数赋给有符号字符型变量是合法的,但它不代

表一个字符,而作为一个字节型整型变量存储负整数。unsignedcharc=-6;。3.2.5浮点型数据浮点型数据是用来表示具有小数点的实数float型(单精度浮点型)编译系统为float型变量分配4个字节数值以规范化的二进制数指数形式存+.3141591数符小数部分指数+

0.314159101double型(双精度浮点型)编译系统为double型变量分配8个字节15位有效数字longdouble(长双精度)型3.2.6怎样确定常量的类型#include<stdio.h>intmain(){inta,b,c;floatr=123.4;a=12

3;b=2345;printf(“%d%d”,1234,1234567);return0;}字符常量:由单撇号括起来的单个字符或转义字符.整型常量:不带小数点的数值系统根据数值的大小确定int型还是long型等在TurboC中,系统为整型数据分配2个字节,所以凡是值在-32768~32767之间的

都按int常量处理,如果超过32768,则按longint处理。也可以在一个整数的末尾加大写的L或小写的l,表示它是长整型(longint)。浮点型常量:凡以小数形式或指数形式出现的实数C编译系统把浮点型常量都按双精度处理,分配8个字节floata=3.1415;在

进行编译时,对float分配4个字节,但对于浮点型常量3.14159,则按双精度处理,需要分配8个字节,所以编译系统会给出警告错误。可以在常量的末尾加专用的字符,强制指定常量的类型,如果加F或f就表示float型常量,如果加L或l就表示longdouble常量

。floata=3.1415f;Longdoublea=3.1L;可以对一个变量赋值,但不能对一个类型赋值。inta;a=3;int=3;3.2.7运算符和表达式1.基本的算术运算符:+:正号运算符(单目运算符

)-:负号运算符(单目运算符)*:乘法运算符/:除法运算符%:求余运算符+:加法运算符-:减法运算符说明由于键盘没有运算符×,所以用*代替两个整数相除的结果为整数由于键盘没有运算符÷,所以用/代替如5/3的结果值为1,舍去小数部分如果除数或被除数中有一个为负值,舍入方向不固

定。例如,-5/3,有的系统中得到的结果为-1,在有的系统中则得到结果为-2VC++采取‚向零取整‛的方法如5/3=1,-5/3=-1,取整后向零靠拢%运算符要求参加运算的运算对象(即操作数)为整数,结果也是整数。如8%3,结果为22.自增、自减运算符:作

用是使变量的值1或减1++i,--i:在使用i之前,先使i的值加(减)1i++,i--:在使用i之后,使i的值加(减)1例如:inti=5;i++;y=i;与inti=5;++i;y=i;两段程序执行的结果i值都为6,y

的值也都为6。但是把它们引用在表达式中就表现出区别了。例如:inti=5;x=i++;/*相当于x=i;i=i+1;*/y=i;的执行结果为:x为5,y为6。即后缀方式是“先引用后增值”。而inti=5;x=++i;/*相当于x=i=i+1;*/y=i;自增运算符

(++)和自减运算符(--)只能用于变量,而不能用于常量和表达式.5++,(a+b)++.使用++和—运算符时,常常会出现一些人们想不到的副作用,如i+++j,是理解成(i++)+j,还是i+(++j),所以为了避免歧义性,加一些括号帮助理解,如前面的表达式可以写成为(

i++)+j.3.算术表达式和运算符的优先级与结合性:用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子,称为C算术表达式.运算对象包括常量、变量、函数等C语言规定了运算符的优先级和结合性运算符结合性:指同一优先级的运算符在表达式中操作的组织方向,有‚自左向右‛和‚

自右向左‛两种结合方式.4.不同类型数据间的混合运算:(1)+、-、*、/运算的两个数中有一个数为float或double型,结果是double型。系统将float型数据都先转换为double型,然后进行运算.(2)如果int型与float或double型数据进行

运算,先把int型和float型数据转换为double型,然后进行运算,结果是double型.(3)字符型数据与整型数据进行运算,就是把字符的ASCII代码与整型数据进行运算.下面的表达式中,假设i为整数,值为3,f为float型变量,值为2.5,d为

double型变量,值为7.510+‟a‟+i*f-d/3(1)进行10+‟a‟的运算,‟a‟的值为97,运算的结果为107。(2)由于‚*‛比‚+”的优先级高,先进行i*f的运算,先将i的值与f都转成double型,运算的结果为7.5,double型。(

3)整数107与i*f的积相加。先将107转换成双精度数,相加的结果为114.5,double型。(4)进行d/3的运算,先将3转换成double型,d/3结果为2.5,double型。(5)将10+‟a‟+i*f的结果114.5与d/3的商相减

,结果为112.0,,double型。例3.3给定一个大写字母,要求用小写字母输出。解题思路:关键是找到大、小写字母间的内在联系同一个字母,用小写表示的字符的ASCII代码比用大写表示的字符的ASCII代码大32#in

clude<stdio.h>intmain(){charc1,c2;c1=‟A‟;c2=c1+32;printf("%c\n",c2);printf(”%d\n”,c2);return0;}将字符‘A‟的ASCII代码65放到c1中将65+32的结果放

到c2中用字符形式输出用十进制形式输出5.强制类型转换运算符强制类型转换运算符的一般形式为(类型名)(表达式)(double)a(将a转换成double类型)(int)(x+y)(将x+y的值转换成i

nt型)(float)(5%3)(将5%3的值转换成float型)有两种类型转换系统自动进行的类型转换强制类型转换#include"stdio.h"voidmain(){floatx,y;inta;x=21.3;y=12.4;

a=(int)(x+y);printf("a=%d\n",a);}6.C运算符(1)算术运算符(+-*/%++--)(2)关系运算符(><==>=<=!=)(3)逻辑运算符(!&&||)(4)位运算符(<<>>~|∧&)(5)赋值运算符(=及其扩展赋

值运算符)(6)条件运算符(?:)(7)逗号运算符(,)(8)指针运算符(*和&)(9)求字节数运算符(sizeof)(10)强制类型转换运算符((类型))(11)成员运算符(.->)(12)下标运算符([])(13)其他(如函数调用运算符())前面一部分的

内容要求会定义和使用基本的数据类型及其简单的运算。假如我国国民生产总值的年增长率为9%,计算10年后我国国民生产总值与现在相比增长多少百分比,计算公式如下P=(1+r)n其中r为增长率,n为年数,p为与现在相比的倍数

#include"stdio.h"voidmain(){floatp,r;r=0.09;p=(1+r)*(1+r)*(1+r)*(1+r)*(1+r)*(1+r)*(1+r)*(1+r)*(1+r)*(1+r);printf("p=%f",p);}3.3C语句3.3.1C语句的作用和分

类3.3.2最基本的语句----赋值语句3.3.1C语句的作用和分类C语言程序中,一个函数包含声明部分和执行部分,执行部分是由语句组成的,语句的作用是向计算机系统发出操作指令,要求执行相应的操作。一个C语句经过编译后产生若干条机器指令。声明部分不是语句,它不产生机器指令,只是对有关数据

的声明。C语句分为以下5类:(1)控制语句:用来完成一定的控制功能。C语言有9种控制语句,形式如下:if()….else……for()…….while()……do….while()continuebreakswitchreturngoto(2)函数调用

语句:函数调用语句是由一个函数调用加一个分号构成。printf(“thisisacstatement\n”);(2)表达式语句:表达式调用语句是一个表达式加一个分号构成。a=3a=3;(4)空语句,只有一个分号的语句成为空语句,空语句什么也不做,可以用

来作为流程的转向点,也可以用来作为循环语句中的循环体。(5)复合语句,可以用{}把一些语句和声明括起来成为复合语句。{floatpi=3.14,r=2.5,area;area=pi*r*r;printf(“area=%f”,area);}可以在复合语句中包含声明部分,C99允许将声

明部分放在复合语句中的任何部分,但一般把它放在复合语句的开头位置。3.3.2最基本的语句----赋值语句在C程序中,最常用的语句是:赋值语句输入输出语句其中最基本的是赋值语句例3.4给出三角形的三边长,求三角形面积。解题思路:假设给定的三个边符合构成

三角形的条件关键是找到求三角形面积的公式公式为:))()((csbsassarea其中s=(a+b+c)/2#include<stdio.h>#include<math.h>intmain(){doublea,b,c,s,area;a=3.

67;b=5.43;c=6.21;s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("a=%f\tb=%f\t%f\n",a,b,c);printf("area=%f\n",area);return0;}对边长a、b、

c赋值计算s计算area#include<stdio.h>#include<math.h>intmain(){doublea,b,c,s,area;a=3.67;b=5.43;c=6.21;s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));pr

intf("a=%f\tb=%f\t%f\n",a,b,c);printf("area=%f\n",area);return0;}数学函数,计算平方根调用数学函数加此行#include<stdio.h>#include<math

.h>intmain(){doublea,b,c,s,area;a=3.67;b=5.43;c=6.21;s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("

a=%f\tb=%f\t%f\n",a,b,c);printf("area=%f\n",area);return0;}转义字符,使输出位置跳到下一个tab位置调用数学函数加此行归纳总结:1.赋值运算符‚=‛是赋值运算符作

用是将一个数据赋给一个变量也可以将一个表达式的值赋给一个变量inta,b,c,d;a=10;b=20;c=a+b;d=a*b;2.复合的赋值运算符在赋值符‚=‛之前加上其他运算符,可以构成复合的运算符a+=3等价于a=a+3a*=b+ca=a*b+ca*=(b+c)

a=a*(b+c)3.赋值表达式一般形式为:变量赋值运算符表达式对赋值表达式求解的过程:求赋值运算符右侧的‚表达式‛的值赋给赋值运算符左侧的变量赋值表达式‚a=3*5‛的值为15,对表达式求解后,变量a的值和表达式的值都是15‚a=(b=5)‛和‚a=b=5‛等价“a=b”和‚

b=a”含义不同赋值表达式的例子a=b=c=5a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)分析下面的赋值表达式a=(b=3*4)(a=b)=3*4a=(a=b)=3*4a+=a-=a*aprintf(“%d”,a=

b);4.赋值过程中的类型转换两侧类型一致时,直接赋值inti;i=100;两侧类型不一致,但都是算术类型时,自动将右侧的类型转换为左侧类型后赋值(1)将浮点型数据(包括单、双精度)赋给整型变量时,先对浮点数取整,即舍弃小数部分,然后赋予整型变量。inti;i=100.56;(2)将整

型数据赋给单、双精度变量时,数值不变,但以浮点数形式存储到变量中。floatf;f=23;doubled;d=23;(3)将一个double型数据赋给float变量时,先将双精度数转换为单精度,即只取6~7位有效数字,存储到float型变

量的4个字节中。双精度数值的大小不能超出float型变量的数值范围。floatf;doubled;d=123.456789e100;f=d;将一个float型数据赋给double型变量时,数值不变,在内存中用8个字节存储,有效位数扩展到15位。(4)字符型数据赋给整型

变量时,将字符的ASCII码赋给整型变量。inti;i=„A‟;(5)将一个占字节多的整型数据赋给一个占字节少的整型变量或字符型变量时,只将其低字节原封不动地送到被赋值的变量。inti;i=289;charc;c=„a‟;c=i;00000001001

00001i=28900100001c=33inta;a=32767;shortb;b=a+1;0000000001111111a=32767b=-3276800000000111111111111111111111111要避

免把占字节多的整型数据向占字节少的整型数据赋值,因为赋值后数值可能发生失真。如果一定要进行这种赋值,应当保证赋值后数值不会发生变化,即所赋的值在变量允许数值范围内。5.赋值表达式和赋值语句赋值表达式的末尾没有分号,而赋值语句有分号一个表达式可以包含赋值表达式,但决不能包含赋值语句If(

(a=b)>0){c=a;}If((a=b;)>0){c=a;}6.变量赋初值可以用赋值语句对变量赋初值,也可以在定义变量时对变量赋以初值。inta=3;flaotf=3.56;charc=„a‟;也可以对所定义的变量的一部分赋初值。inta,b,c=3;如果对几个变量赋予同

一个初值,应写成。inta=3,b=3,c=3;inta=b=c=3;inta,b,c;a=b=c=3;一般变量的初始化不是在编译阶段完成的(只有静态存储变量和外部变量的初始化是在编译阶段完成的),而是在程序运行时执行本函数时赋予初值的,相

当于执行一个赋值语句。inta=3;相当于执行:inta;a=3;3.4数据的输入输出3.4.1输入输出举例3.4.2有关数据输入输出的概念3.4.3用printf函数输出数据3.4.4用scanf函数输入数据3.4.5字符数据的输入输出求下面方程的根,a,b,c的值由键盘输入02cb

xax假设b2-4ac>0解题思路:首先要知道求方程式的根的方法。由数学内容知道,如果b2-4ac>0则该方程有两个实数根。aacbbx2421aacbbx2422abp2aacbq242若记qpx1qpx23.4.1输入输出举例#i

nclude<stdio.h>#include<math.h>intmain(){doublea,b,c,disc,x1,x2,p,q;scanf("%lf%lf%lf",&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.2f\nx2=%7.2f\n",x1,x2);return0;}程序中调用数学函数sqrt输入a,b,c的值#include<stdio.h>#inc

lude<math.h>intmain(){doublea,b,c,disc,x1,x2,p,q;scanf("%lf%lf%lf",&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;prin

tf("x1=%7.2f\nx2=%7.2f\n",x1,x2);return0;}输入的是双精度型实数#include<stdio.h>#include<math.h>intmain(){doublea,b,c,disc,x1,x2

,p,q;scanf("%lf%lf%lf",&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.2f\nx2=%7.2f\n",x1,x2);retu

rn0;}要求输入3个实数自动转成实数后赋给a,b,c#include<stdio.h>#include<math.h>intmain(){doublea,b,c,disc,x1,x2,p,q;scanf("%lf%lf%lf",&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.2f\nx2=%7.2f\n",x1,x2);return0;}输出数据占7列,其中小数占2列3.4.2有

关数据输入输出的概念几乎每一个C程序都包含输入输出输入输出是程序中最基本的操作之一(1)所谓输入输出是以计算机主机为主体而言的从计算机向输出设备(如显示器、打印机等)输出数据称为输出从输入设备(如键盘、磁盘、光盘、扫描仪等)向计算机输入数

据称为输入(2)C语言本身不提供输入输出语句输入和输出操作是由C标准函数库中的函数来实现的printf和scanf不是C语言的关键字,而只是库函数的名字putchar、getchar、puts、getsC提供的标

准函数以库的形式在C的编译系统中提供,它们不是C语言文本中的组成部分。不把输入输出作为C语句的目的是使用C语言编译系统简单精练,因为将语句翻译成二进制的指令是在编译阶段完成的,没有输入输出语句就可以避免在编译阶段处理与硬件有关的问题,可以使编译系统简化,而且通用性

强,可移植性好,在各种型号的计算机和不同的编译环境下都能适用,便于在各种计算机上实现。各种C编译系统提供的系统函数库是各软件公司编制的,它包括了C语言建议的全部标准函数,还根据用户的需要补充了一些常用

的函数,已对他们进行了编译,成为目标文件(.obj文件)。他们在程序的连接阶段与由源程序经过编译而得到的目标文件(.obj文件)相连接,生成一个可执行的目标程序(.exe文件)。如果在源程序中有printf函数,在编译时并不把它翻译成目标指令,而是在连接阶段与系统函

数库相连接后,在执行阶段中调用函数库中的printf函数。不同的编译系统所提供的函数库中,函数的数量、名字和功能是不完全相同的。不过有一些通用的函数,各种编译系统都提供,成为各种系统的标准函数。(3)在使用输入输出函数时,要在程序文件的开头用预编译指令#incl

ude<stdio.h>或#include″stdio.h″用尖括号的形式(如<stdio.h>)时,编译系统从存放C编译系统的目录中去寻找要包含的文件(如stdio.h),这成为标准方式;如果用双撇号形式(如‛stdio.h”),在编译时,编译系统

先在用户的当前目录(一般是用户存放源程序文件的子目录)中寻找要包含的文件,若找不到,则再按标准方式查找。如果用#include指令时为了使用系统库函数,因而要包含系统提供的相应头文件,以用标准方式为好,以提高效率。如果用户想包含的头文件不是系统提供的相应头文件,而

是用户自己编写的头文件(这种文件一般都存放在用户当前的目录中),这时应当用双撇号形式,否则会找不到所需要的文件。如果该头文件不在当前目录中,可以在双撇号中写出文件路径。#include“c:\temp\file1.h”以便系统能从中找到所需要的文件。3.4.3用printf函

数输出数据在C程序中用来实现输出和输入的,主要是printf函数和scanf函数这两个函数是格式输入输出函数用这两个函数时,必须指定格式1.printf函数的一般格式printf(格式控制,输出表列)例如:printf(”i=%d,c=%c\n”,i,

c);格式声明格式控制:是用双撇号括起来的一个字符串,称‚转换控制字符串‛,简称‚格式字符串‛,它包括两个信息:(1)格式声明:格式声明由‚%”和格式字符组成,如%d,%f等,它的作用是将输出的数据转换成为指定的格式然后输出。格式声明总是由‚%”字符开始。(2)普

通字符:普通字符即需要再输出时原样输出的字符,例如printf函数中的双撇号内的逗号、空格和换行符,也可以包括其它的字符。输出表列:是程序中需要输出的一些数据,可以是常量、变量或表达式。intprintf(格式控制字符串,输出表达式1,输出表达式2,…);作用

:用于数据输出。格式:printf(“<输出格式>”,输出数据项列表)。其中(1)输出格式用来指出输出项的输出格式。(2)输出数据项列表是程序中要求输出的内容。(3)输出项的类型必须与输出格式相对应。多个数据项之间用‚,‛隔开。(4)引号内的‚输出格式‛包含下

面的三个方面:1格式说明符。(%d,%f)2转义字符。(\n,\t,\a)3普通字符。(a=,ave=)Printf语句在执行时,对于‚输出格式‛中的内容,如果为普通字符,则原样输出,如果是转移字符,则执行相应的操作,如果是格式控制,则控制对应的输出数据项的格式。Printf(“%d%d

”,a,b)格式说明输出表列Printf(“a=%db=%d\n”,a,b)格式说明输出表列普通字符转义字符a=10,b=100;printf(“a=%d\nb=%d”,a,b);a=10b=100;格

式码输出说明举例输出结果d/i带符号十进制定点格式inta=975311;printf(“%d”,a);975310u无符号十进制定点格式inta=975311;printf(“%u”,a);975310o

无符号八进制定点格式inta=975311;printf(“%o”,a);3560717x/X无符号十六进制定点格式inta=975311;printf(“%x”,a);ee1cfc字符inta=68;printf(“%c”,a);Ds字

符串chars[]=”abcde”;printf(“%s”,s);abcdef小数形式十进制doublea=123.456;printf("%f",a);123.456000e/E科学记数法doubl

ea=123.456;printf("%E",a);1.234560E+002g/Gf和e中短者,不印无效0doublea=123.456;printf("%G",a);123.456p输出地址,格式由实现定义doublea=123.45

6;printf("%p",&a);0012FF74(a的地址)%%printf("%%");%2.常用格式字符(1)d格式符。用来输出一个有符号的十进制整数可以在格式声明中指定输出数据的域宽printf(”%5d%5d\n”,12,-345);%d输出int型数据%ld输出lo

ng型数据#include<stdio.h>main(){inta=10;printf(“thevalueofais:\na=%d\n”,a);}试说明下面程序的输出结果:可以在格式声明中指定输出数据的域宽printf(”%5d%5d\n”,12,-345)

;%d输出int型数据%ld输出long型数据%md指定数据输出的宽度,如果数据的位数小于m,则左端补空格,靠右输出。如果数据的位数大于m,则m不起作用。(2)c格式符。用来输出一个字符charch=‟a‟;printf(”%c”,ch);或printf(”%5c”,ch);输

出字符:a一个整数,如果在0~127范围中,也可以用‚%c”使之按字符的形式输出,在输出前,系统会将该整数作为ASCII码转换成相应的字符。shorta=121;printf(“%c”,a);如果整数比

较大,则把它的最后一个字节的信息以字符的形式输出。inta=377;printf(“%c”,a);0000000101111001a=377(3)s格式符。用来输出一个字符串printf(‛%s”,”CHINA”)输出字符串:CHINAprintf(‛st

ring=%s”,”CHINA”)(4)f格式符。用来输出实数,以小数形式输出例3.6用%f输出实数,只能得到6位小数。doublea=1.0;printf(”%f\n”,a/3);①不指定数据宽度和小数位数,用%f②指定数据宽度和小数位数。用%m.nfprintf("%20

.15f\n",1/3);在用%f输出时要注意数据本身所能提供的有效数字,float型的数据的存储单元只能保证6位有效数字,而double型的数据保证15位的有效数字。floata;a=10000/3.0;printf

("%f\n",a);③输出的数据向左对齐,用%-m.nf在m.n的前面加一个负号,作用于%m.nf形式的作用基本相同,但当数据长度不超过m时,数据向左靠,在右端补空格。(5)e格式符。指定以指数形式输出实数printf(”%e”,123.456);输出:1.234560e+002

用格式声明%e指定以指数形式输出实数,如果不指定输出数据所占的宽度和数字部分的小数点位数,许多的C编译系统会自动给出数字部分的小数位数为6,指数部分占5列。格式符e也可以写成大写的E的形式,此时输出的数据中的指数不是小写字母e表示而是以大写字母E表示。printf(”%E”,

123.456);输出:1.234560E+002%m.neprintf(”%13.2e”,123.456);输出:1.23e+002(前面有4个空格)其它的输出格式:(1)i格式:作用于d格式相同,按十进制整型数据的实际长度输

出,一般习惯使用%d而少用%i。(2)o格式:以八进制整数形式输出。将内存单元中的各位的值(0,1)按八进制的形式输出,所以输出的数值不带符号,即将符号位也一起作为八进制的一部分输出。1111111111111111a=-11111111

1111111117777777777337777777777(3)x格式:以十六进制的形式输出。(4)u格式:用来输出无符号数据,以十进制整数形式输出。(5)g格式:用来输出浮点数,系统自动选择f格式或e格式输出,选择其

中长度较短的格式,不输出无意义的0。说明(1)Printf函数输出时,要注意输出对象的类型应与上述格式说明匹配,否则将会出现错误。(2)除了X、E、G外,其它格式字符必须用小写字,比如%d不能写成%D。(3)可以在printf函数中的‚格式控制字符串‛中包含转义字符,如‚\n”,‚\t”

,‚\b”,‚\r”,‚\f”和‚\377”等。(4)课本表3.6中所列出的字母,如果用在‚格式声明‛中就作为格式字符,一个格式字符以‚%”开始,以表中的12个格式符作为结束符,中间可以插入附加格式字符。printf(“c=%cf=%fs=%s

”,c,f,s);(6)如果想输出字符‚%”,应该在‚格式控制串‛中用连续两个‚%”表示。printf(“%f%%”,1.0/3);一个显示美国各州面积、森林覆盖面积和森林覆盖率的简单程序。/******文件名:ex

021201.c******//******美国各州面积列表******/#include<stdio.h>intmain(void){doublear,por,perc;printf("%-12s%12s%12s%1

2s\n","State","Area","Forest","Percent");printf("------------------------------------------------\n");

ar=50750;por=33945;perc=por/ar*100;printf("%-12s%12.0f%12.0f%10.2f%%\n","Alabama",ar,por,perc);ar=591000

;por=201642;perc=por/ar*100;printf("%-12s%12.0f%12.0f%10.2f%%\n","Alaska",ar,por,perc);ar=114000;por=30287;perc=por/ar*100;

printf("%-12s%12.0f%12.0f%10.2f%%\n","Arlzona",ar,por,perc);ar=53187;por=26542;perc=por/ar*100;printf("%-12s%12.0f%12.0f%10.2f%%\

n","Arkanasas",ar,por,perc);ar=158706;por=61532;perc=por/ar*100;printf("%-12s%12.0f%12.0f%10.2f%%\n","California",ar,por,perc);a

r=104000;por=33340;perc=por/ar*100;printf("%-12s%12.0f%12.0f%10.2f%%\n","Colorado",ar,por,perc);printf(“„„\n”);return0;}程序执行结果如下

:3.4.4用scanf函数输入数据scanf()函数的功能是将输入数据送入相应的存储单元。具体地说,它是按格式参数的要求,从终端上把数据传送到地址参数所指定的内存空间中。其原型为:1scanf函数的格式scan

f(“<输入格式>”,“<输入项>”)其中,<输入格式>是输入项的输入格式,不同类型的数据有不同的输入格式表示。<输入项>是程序中需要给变量提供数据的项,必须用地址表示。<输入格式>与<输入项>之间用‚,”隔开。scanf(“%d%f”,&a,&b);输入格式输入项地址参数C语言允许程序

员间接地使用内存地址,这个地址是通过对变量名‚求地址‛运算得到的。求地址的运算符为&。例如对于定义:shorta;floatb;&a给出的是变量a两字节空间的首地址,&b给出的是变量b四字节空间的首地址。2.scanf函数中的格式声明与printf函数中的格式声明相似以%开

始,以一个格式字符结束,中间可以插入附加的字符scanf("a=%f,b=%f,c=%f",&a,&b,&c);在格式字符串中除了有格式声明%f以外,还有一些普通字符(有‚a=“,‛b=”,‚c=“和‛,”等)3.使用scanf函数时应注意的问题scanf(

”%f%f%f”,a,b,c);错scanf(”%f%f%f”,&a,&b,&c);对(1)Scanf函数中的‚格式控制‛后面应当是地址,而不是变量名。scanf("a=%d,b=%d,c=%d",&a,&b,&c);132↙错a=1,b=3,c=2↙对a=1b=3c=2

↙错(2)如果在‚格式控制字符串‛中除了格式声明以外还有其他字符,则在输入数据时在对应的位置上应输入于这些字符相同的字符。scanf("a=%db=%dc=%d",&a,&b,&c);132↙错a=1,b=3,c=2↙错a=1b=3c=2↙对scanf("a=%d:b=%d:c=%d",

&a,&b,&c);132↙错a=1,b=3,c=2↙错a=1:b=3:c=2↙对(3)在用%c格式声明输入字符时,空格字符和转义字符中的字符都作为有效的输入。对于scanf(”%c%c%c”,&c1,&c2,&c3);abc↙对abc↙对

于scanf(”%d%c%f”,&a,&b,&c);若输入1234a123o.26(4)在输入数值数据时,如输入空格、回车、Tab键或遇非法字符(不属于数值的字符),认为该数据结束。例如:sanf(“%d%d%d”,&a,&b,&c);从键盘

上输入数据时下面三种都是真确的输入方式10空格20空格30回车或者10回车20回车30回车或者10tab20tab30回车根据格式项中指定的域宽分隔出数据项。/*文件名:ex021601.c*/#include<stdio.h>intmain(void){inta;fl

oatb,c;scanf(″%2d%3f%4f″,&a,&b,&c);printf(″a=%d,b=%f,c=%f″,a,b,c);return0;}一次运行情况如下:12345678987654321a=12,b=345.00000

0,c=6789.000000用户自己设置分隔符,分隔符可以用‚,”或‚:”例如:scanf(“%d,%d,%d”,&a,&b,&c);scanf(“%d:%d:%d”,&a,&b,&c);上面两种都是合法的用户设置的分隔符3.4.5字符数据的输入输出1.用putchar函数

输出一个字符从计算机向显示器输出一个字符putchar函数的一般形式为:putchar(c)例3.8先后输出BOY三个字符。解题思路:定义3个字符变量,分别赋以初值B、O、Y用putchar函数输出这3个字符变量的值#include<stdio.h>in

tmain(){chara='B',b='O',c='Y';putchar(a);putchar(b);putchar(c);putchar('\n');return0;}向显示器输出字符B向显示器输出换行符#include<stdio.h>intmai

n(){chara='B',b='O',c='Y';putchar(a);putchar(b);putchar(c);putchar('\n');return0;}改为inta=66,b=79,c=89;putchar(’\101‟);(输出字符A)p

utchar(’\‟‟);(输出单撇号字符’)putchar(„\015‟);Putchar(c)中的C可以是字符常量、整型常量、字符变量或整型变量。2.用getchar函数输入一个字符向计算机输入一个字符getchar

函数的一般形式为:getchar()Getchar()函数没有参数,它的作用是从计算机终端输入一个字符,即计算机获得一个字符。Getchar()函数的值就是从输入设备得到的字符。Getchar()函数只能接收一个字符,如果想输入多个字符就要用多个getchar()函数

。例3.9从键盘输入BOY三个字符,然后把它们输出到屏幕。解题思路:用3个getchar函数先后从键盘向计算机输入BOY三个字符用putchar函数输出#include<stdio.h>intmain(){chara,b,c;a=getchar();b=getchar();c=get

char();putchar(a);putchar(b);putchar(c);putchar('\n');return0;}输入一个字符,送给变量a执行getchar()函数不仅可以从输入设备获得一个可显示的字符,而且可以获得在屏幕上无法显示的字符,比如控制字符。用get

char()函数得到的字符可以赋给一个字符变量,也可以不赋给任何变量,而作为表达式的一部分,在表达式中利用它的值。#include<stdio.h>intmain(){chara,b,c;a=getchar();b=getchar();c=getchar();putchar(a);putchar

(b);putchar(c);putchar('\n');return0;}putchar(getchar());#include<stdio.h>intmain(){chara,b,c;a=getchar();b=getchar();c=getchar();put

char(a);putchar(b);putchar(c);putchar('\n');return0;}putchar(getchar());putchar(getchar());#include<stdio

.h>intmain(){chara,b,c;a=getchar();b=getchar();c=getchar();putchar(a);putchar(b);putchar(c);putchar('\n');return0;}

putchar(getchar());putchar(getchar());putchar(getchar());#include<stdio.h>intmain(){chara,b,c;a=getchar();b=getchar();c=getchar();putchar(a)

;putchar(b);putchar(c);putchar('\n');return0;}putchar(getchar());putchar(getchar());putchar(getchar());注意:在执行getchar()时,虽然是读入一个字符,就回显一

个字符,但并不是从键盘按一个字符,该字符就被立即送给一字符变量,而是等到一个回车键后,才将一行字符输入缓冲区,然后getchar函数从缓冲区中取一个字符给一个字符变量。这种情况称为行缓冲。getchar()的行缓冲(等回车)和回显也会为某些交互

性应用带来不便。这时,可以用下面的两个库函数代替:getche():读字符,并回显,不等回车;getch():读字符,但不回显,不等回车。不过,这两个库函数在ANSIC标准中并没有定义,是一种常见扩充。对于多数C编译器,这两个函数的原型被定义在<conio.h>头

文件中。在有的编译器(如VisualC++)中,它们可能被冠以下划线前缀:_getche()和_getch()。

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?