C语言程序设计-第2讲-2+作业_第1页
C语言程序设计-第2讲-2+作业_第2页
C语言程序设计-第2讲-2+作业_第3页
C语言程序设计-第2讲-2+作业_第4页
C语言程序设计-第2讲-2+作业_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C程序设计第二讲变量名的命名规则?数据的类型有何作用?如何输入数据?如何输出数据?基础知识关键字是由C语言规定的具有特定意义的字符串,通常也称为保留字。用户定义的标识符不应与关键字相同。C语言的关键字分为以下几类:

(1)类型说明符用于定义、说明变量、函数或其它数据结构的类型。如int,

double(2)语句定义符用于表示一个语句的功能。如if就是条件语句的语句定义符。C语言的关键字标准ANSIC89一共只有32个关键字p378autobreakcasecharconstcontinuedefaultdodoubleelseenum

externfloatforgoto

ifint

longregisterreturnshortsignedstaticsizeof

struct

switchtypedef

unionunsignedvoidvolatilewhileC99中新增:inlinerestrict_bool_complex_imaginary(1)数据类型说明符(14个)

长短双正负longshortdoubleunsignedsingned

无值整型浮点字符voidintfloatchar联合枚举结构unionenum

struct

(2)变量类型(4个):外部静态自动寄存器extern

static

auto

register

(3)常量(1个):const(2)程序结构语句定义符(10个)判断:if循环:fordowhile转移:goto跳出:breakcontinue返回:return开关:switchcase3、其它关键字sizeof

类型大小typedef类型定义default默认volatile可变的变量数据为什么要区分类型?不同类型的数据代表不同的数据表示形式合法的取值范围占用内存空间大小可参与的运算种类数据类型(DataType)p42C语言的数据类型数据类型:对数据分配存储单元的安排,包括存储单元的长度(所占字节数),以及数据的存储形式。

不同的类型分配不同的长度和存储形式。在C语言中,数据类型可分为:基本类型,枚举类型,空类型,派生类型四大类p43。基本类型派生类型枚举类型(enum)空类型(void)整型浮点类型基本整型(int)长整型(long)短整型(short)*双长整型(longlongint)字符型(char)*布尔型(bool)数据类型单精度浮点型(float)双精度浮点型(double)复数浮点型数组类型([])结构体类型(union)共用体类型(stuct)数据类型(p43)指针类型(*)函数计算机中的数据单位:

bit,Byte,KB,MB,GB,TBbit,位Byte,字节,BKilobyte(KB),KMegabyte(MB),MGigabyte(GB),GTera

byte(TB),T1TB==

1,024GB1GB

==

1,024MB1MB

==

1,024KB1KB

==

1,024B1B==

8b为什么每增加一个量级是1024而不是更容易计算的1000?为什么2M网络下载速度只有两百多K?常量和符号常量(p39)在程序运行过程中,其值不能被改变的量称为常量常量区分为不同的类型:整型100,012,3.14浮点型3.14,1.23E2字符型‘a’,‘2’,‘\n’字符串“a”,

“ab”,“1232”符号常量#definePRICE30

变量

(p41)变量的值存放在特定存储单元中的数据,在程序运行期间,变量的值是可以改变的。变量名对应着内存空间中的某个地址,在对程序编译连接时由编译系统给每一个变量名分配对应的内存地址。从变量中取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据。图3-33变量值变量名存储单元aint

整数,在目前绝大多数编译器上占4个字节。TC3.0中是2个字节

inta=64;float浮点数单精度浮点数,一般是4个字节长

floatb=64.0;char字符字符,一般是1个字节长用来表示256个ASCII字符,或者0-255的整数。

char=‘a’;基本数据类型变量在内存中以补码的形式存储。shortint:0000000000001101int

或longint型:00000000000000000000000000001101在VC中,以整数13为例:其二进制数为:1101负整数的补码为其正整数的反码+1负数13:1000000000001101附符号位外,取反(1变0,0变1)在VC中,以整数-13为例:其二进制数为:-11011111111111110010反码+11111111111110011unsignedint

65523short

int,短整型,2个字节。简写为shortlong

int,长整型,4个字节。简写为longsigned用来修饰char、int、short和long,说明他们是有符号的整数(正整数、0和负整数)。一般缺省都是有符号的,所以这个修饰符通常省略unsigned用来修饰char、int、short和long,说明他们是无符号的整数(正整数和0)整型数据类型修饰符关键字sizeof

计算不同类型数据所占字节数

用法:sizeof(变量或变量类型)

返回变量类型所占字节数#include"stdio.h"voidmain(){

printf("char:%d\n",sizeof(char));

printf("int:%d\n",sizeof(int));

printf("long:%d\n",sizeof(long));

printf("float:%d\n",sizeof(float));

printf("double:%d\n",sizeof(double));

}各类整型量所分配的内存字节数及数的表示范围。p45类型说明符在VC中,变量的范围字节数short-32768~32767即-215~(215-1)2unsignedshort0~65535即0~(216-1)2(long)int-231~(231-1)4unsignedlong0~(232-1)4两字节的最大数为:1111111111111111signed,最高位是符号位,15位有效数字,最大值为215-1unsigned,16位有效数字,最大值为216-1浮点数:用来表示具有小数点的实数

以指数的形式存放在存储单元中float单精度浮点数4字节(VC)double

双精度浮点数8字节(VC)longdouble长双精度8字节(VC)浮点型数据浮点型变量(1)浮点型数据在内存中的存放形式浮点型数在内存中占4个字节(32位)。浮点型数据是按照指数形式存储的。浮点型数分成小数部分和指数部分。指数部分采用规范化的指数形式。浮点型常量的两种表示方法小数指数0.1231.23e-3或1.23E-3

注意:

1.字母e(或E)之前必须有数字,且e后面的指数必须为整数

2.数字和e之间不能有空格。1e3,1.8e-3,-123e-6,-.1e-3E3,2.1e3.5,.e3,e

规范化的指数形式:

在字母e(或E)之前的小数部分中,小数点左边应有一位(且只能有一位)非零的数字.

例如:123.456可以表示为:

123.456e0,12.3456e1,1.23456e2,0.123456e3,0.0123456e4,0.00123456e5

“规范化的指数形式”为:1.23456e3。浮点数在内存中的存放形式p50浮点数占4个字节(32位)内存空间。按指数形式存储。浮点数3.14159在内存中的存放形式如下:±.3141591符号小数部分指数0.314159*101=3.14159用二进制表示浮点数二进制只有0和1,小数用下面的方式来表示:

a1×2-1+a2×2-2+a3×2-3+......+an×2-n

其中a1,a2等只可以是0或者1。类型说明符bit(byte)有效数字位数数的范围float32(4)6~710-37~1038

double64(8)15~1610-307~10308

单精度浮点数4字节(32bit),其中小数部分占23

bit,指数占8bit,符号位1bit。双精度浮点数8字节(64bit),其中小数部分占52

bit,指数占11bit,符号位1bit。小数部分的位数(bit)决定浮点数的精度。思考:为什么float的有效数字位数不是7,而是6~7?float型数据提供7位有效数字double型数据提供16位有效数字使用不当导致舍入误差#include<stdio.h>main(){ floata;

doubleb; a=123456.789e4; b=123456.789e4; printf("%f\n%f\n",a,b);}浮点数提供的有效数字位数程序执行结果:123457888.0000001234567890.000000TC2中int的范围是-32768~32767如果我们给它一个小于-32768或者大于32767的数会如何呢?小蛇能吞下大象吗?超出取值范围会怎样?一台安装了Windows95/98的机器,如果连续运行49.7天没有重新启动,可能死机原因:Windows自启动时刻起,有一个计数器,记录系统已经运行了多少毫秒。这个计数器是个unsigned

long

类型的变量unsigned

long的最大值是:4294967295(232-1)一天有24*60*60*1000=86400000毫秒4294967295/86400000=49.71026961805……当49.7天的时候,此计数器会溢出,引起死机溢出(Overflow)造成的危害整型常数18、-31长整型常量123l、123L、123456l、123456L无符号型常量123u、123U浮点常数十进制小数形式123.45、456.78指数形式1e-2、4.5e3单精度浮点型常量123.45f、456.78F、1e-2f、4.5e3F长双精度浮点型常量123.45l、456.78L、1e-2l、4.5e3L常数(Constant)整型常数缺省被看作int类型,如果超出int的范围,就自动被看作long。可以在数字后面加上l或者L强制其为long。浮点常数缺省为double,后缀f或F为float,后缀l或L为longdouble。因为字母l和数字1容易混淆,所以当用l做后缀时,常使用大写形式。以数字“0”开始的整型常数是八进制数022、-037010和10大小不一样以“0x”或者“0X”开始的整型常数是十六进制A-F和a-f用来表示十进制的10-15十六进制的形式比较常用,尤其在进行位一级的控制的时候0x12、-0x1F,-0x1f八进制与十六进制常数练习,下列哪些数是合法的16进制数0X2A0XA05A0XFFFF0X3H字符常数的表示方法′a′,′A′,′5′,′%′,′$′……单引号内只能有一个字符,除非用〞\〞开头!单引号内不能没有字符!字符常数是一个普通整数,可参与各种运算每个字符具有一个0-255之间的数值,可从ASCII表查出注意:′5′和整数5的区别字符(Character)常数ASCII码表转义字符(p40)一些特殊字符(无法从键盘输入或者另有它用)用转义字符表示字符常数用八进制转义字符表示ASCII码‘\ooo’中的o代表8进制数(最多三位数)。取值范围为:\0至\777注意,8进制数中不包含8.使用规则:先将八进制数转换为十进制数,再取十进制对应的ASCII码。用十六进制转义字符表示ASCII码‘\xhh’中的h代表16进制数(最多两位数)。取值范围为:\0至\FF使用规则:先将十六进制数转换为十进制数,再取十进制对应的ASCII码。定义方式:

char变量名;占1个内存单元。字符型变量可做为整型变量计算和显示。取值范围:unsignedchar0-FF0-255signedchar-128-127字符型变量课堂练习:写出以下程序的输出结果。#include

"stdio.h"voidmain(){

char

cOctal

=

'\101';

char

cHex

=

'\x41';

char

cVariable

=65;

printf(“cOctal:%c,%d\n",cVariable,cVariable);printf(“cHex:%c,%d\n",cHex,cHex);printf(“cVariable:%c,%d\n",cOctal,cOctal);

}小写字母转换为大写字母#include<stdio.h>main(){

char

ch='b';

ch='b'-32;

printf("%c,%d\n",ch,ch);}#include<stdio.h>main(){

char

ch=‘a’;/*定义ch

为字符型变量*/

printf(“%c,%d\n”,ch,ch);/*分别以字符形式、整数形式输出ch*/}Char型与int

型之间的关系以字符型和整数型两种格式输出字符变量。用双引号括住的由0个或多个字符组成的字符序列"Iamastring"""表示空字符串转义字符也可以在字符串中使用引号只作为字符串开始和结束的标志C语言内部用'\0'

表示字符串的结束除注释外,是唯一可以出现中文的地方"x"和’x’是不同的<string.h>里定义了一系列专门的字符串处理函数字符串(String)常数宏常量也称符号常量一般采用大写字母表示

#define标识符字符串不是语句,而是一种编译预处理命令宏替换(MacroSubstitulition)

#include<stdio.h>#definePI3.14159#defineR5.3main(){ printf("area=%f\n",PI*R*R);

printf("circumference=%f\n",2*PI*R);}宏常量习惯上符号常量的标识符用大写字母,变量标识符用小写字母,以示区别。用const修饰定义的变量为常量constfloat

pi=3.1425926;

常量只能在定义时赋值,然后不能再改变其值常数、const常量、宏常量和枚举常量,都可以用来表示一个永远不会改变的数。const常量#include

"stdio.h"voidmain(){

int

iNum

=65;

const

int

iCount

=10;

iNum

=

iCount;

iCount

=

iNum;

printf("%d,%d\n",iNum,iCount);}课堂练习:写出以下程序的输出结果。输出函数printf()printf函数称为格式输出函数,用来向标准输出设备(屏幕)写数据;

printf(“格式控制串”,参数表);

格式化字符串包括两部分内容:1.正常字符,这些字符将按原样输出;2.格式声明,%格式字符,确定输出格式。参数表个数必须与格式化字声明的个数一样,

各参数之间用","分开,且顺序一一对应,

参数可以是变量,常量和表达式。1.格式字符

符号

作用

%d

decimal十进制有符号整数

%f

float

浮点数(默认小数点后6位)

%c

character单字符

%s

string字符串

%u

unsigned

十进制无符号整数

%p

pointer

指针

%e

exponential指数形式的浮点数(1.2e+02)%x,%X

hex无符号以十六进制表示的整数

%o

octal无符号以八进制表示的整数说明:除了X,E,G外,其他格式字符必须用小写。可以在printf函数中的“格式控制”字符串中包含转义字符。一个格式说明必须以“%”开头,以9个格式字符之一为结束,中间可以插入附加格式字符。想输出%,则应该在格式控制字符串中用连续两个%表示(1)在“%”和字母之间插进数字表示最大场宽。

%3d表示输出3位整型数,不够3位右对齐。

%9.2f表示输出场宽为9的浮点数,其中小数位为2,整数位为6,小数点占一位,不够9位右对齐。(2)“-“输出左对齐。%-7d表示输出7位整数左对齐格式输入与输出(一).格式输入函数函数作用:按照变量在内存的地址将变量值存进去。一般格式:scanf(格式控制,地址表列)同printf函数是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址

使用scanf()函数时应注意的问题

:(1)scanf()函数中的“格式控制”后面应当是变量地址,而不应是变量名。

(2)

如果在“格式控制”字符串中除了格式说明以外还有其他字符,则在输入数据时在对应位置应输入与这些字符相同的字符。

(3)在用“%c”格式输入字符时,空格字符和“转义字符”都作为有效字符输入(4)在输入数据时,遇以下情况时认为该数据结束。①遇空格,或按“回车”或“跳格”(Tab)键;②按指定的宽度结束,如“%3d”,只取3列;③遇非法输入。写出下列程序的执行结果:#include"stdio.h"voidmain(){inta=12,b=32;

printf("%d,%x,%d,%x",a,a,b,b);}%x,%X

hex

无符号以十六进制表示的整数写出下列程序的执行结果:#include"stdio.h"voidmain(){inta=-12,b=32;

printf("%u,%d",a,b);}%u

unsigned

十进制无符号整数

写出下列程序的执行结果:#include"stdio.h"voidmain(){floata=345.234,b=22.1;

printf("%f,%e",a,b);

printf("\n");printf("%6.2f,%6.0e",a,b);}%f

float

浮点数(默认小数点后6位)可以在“%”和字母之间插进数字表示最大场宽。

写出下列程序的执行结果:#include"stdio.h"voidmain(){inta=97;

printf("%c=",a);

printf("%d,%c",a,a);}%c

character单字符

2.常用转义字符p40

字符作用

\n换行

\f清屏并换页

\r回车

\t

Tab符

\\输出\课外知识,IEEE754标准浮点数

在IEEE754标准中的表示形式V=(-1)S×(M)×2^(E-127)

S符号位、M有效数字、E指数S=0表示正数,S=1表示负数M是规范指数表示的二进制小数

(1.xxxx*2n

)E指数部分(E=n+127)float是用4字节即32位二进制位来存储。其中1位符号位,8位指数位和23位有效数字位。有效数字为标准指数格式1.xxxx*2n

,存储时省略1。指数:E-127,指数位的数字为E,实际值为E-127,值大于0为正指数,小于0指数为负值。将一个浮点数转化为实数存储格式的步骤为:(1)先化为二进制数(2)

将二进制数写成标准指数格式1.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论