版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序的基石—基本数据类型及表达式C语言程序设计第二章本章目录01.基本数据类型和标识符02.常量03.变量04.运算符和表达式05.常用的数学函数06.趣味实例2.1基本数据类型和标识符程序世界的砖瓦与命名规则C语言的基本数据类型在现实生活中会遇到不同类型的数据,有整数、实数、单个字符和字符串等。C语言把这些数据类型定义为整型、浮点型、字符型和字符串型等,例如123、7.56、1.35e6、'a'、"工匠精神"分别属于不同的数据类型,其中,123是整型常量,7.56和1.35e6是浮点型常量,'a'是字符常量,"工匠精神"是字符串常量。C语言的基本数据类型见下表:标识符类型名称占用字节数表示范围short短整型2int或
long长整型4char字符型10~
255float浮点型(实型)4double双精度浮点型8说明:
C语言的基本数据类型标识符什么是标识符?所谓标识符,指的是编程人员在编写程序时自己规定的具有特定含义的词,用来标明设定的变量名、数组名、函数名等。简单来说,就是我们给程序中的各种元素起的“名字”。必须遵守的命名规则只能由字母、数字和下划线组成,且第一个字符必须是字母或下划线。严格区分英文字母大小写,例如score和Score是两个不同的标识符。不能使用C语言的关键字作为标识符。标识符示例与命名规范合法标识符示例student_name(见名知意,使用下划线)age(简单明了,单个单词)_score(以下划线开头,常用于私有变量)PI(全大写字母,通常表示常量)非法标识符示例123abc(以数字开头,规则不允许)myname(包含空格,属于非法字符)float(使用了编程语言的关键字)stu-name(包含非法字符'-'减号)推荐命名规范见名知义拒绝使用无意义的x,y。例如用user_id代替a,使代码更具可读性。规避易混淆字符不单独使用字母“l”(小写L)和“o”(小写O)作为标识符,防止与数字“1”和“0”混淆。长度合规性
C语言标识符无理论长度限制,但受编译器/系统实际限制(如早期编译器仅识别前8个字符),命名时需兼顾长度适中与编译器兼容性。实例体验例2-1在Dev-C++中使用sizeof体验不同数据类型的字长#include<stdio.h>main(){printf("%d\n",sizeof(short));printf("%d\n",sizeof(int));printf("%d\n",sizeof(long));printf("%d\n",sizeof(char));printf("%d\n",sizeof(float));printf("%d\n",sizeof(double));}代码解析与说明该程序通过sizeof运算符获取short、int等6种C语言基本数据类型的内存字节数,经printf输出,直观地展示不同类型的内存占用情况,结果随系统位数略有差异。2.2常量程序运行中值不能改变的量常量常量是指在程序运行过程中其值保持不变的量,分为直接常量和符号常量。直接常量包括整型常量、实型常量、字符常量和字符串常量。例如:整型常量:15、-8、0。实型常量:3.7、-8.2、58.12E-2。字符常量:'a'、'A'、'+'、'5'。字符串常量:"thisisaboy."、"a"、"123"。符号常量定义与格式定义:用标识符代表常量,一般用大小字母表示。格式:#define标识符常量示例:#definePI3.14159主要优点一改全改修改#define处的值,程序中所有引用自动更新。代码实战示例#definePRICE50#include<stdio.h>main(){intnum,total;num=10;total=num*PRICE;printf("total=%d\n",total);}例2-2:运用符号常量表示某商品的单价,编程计算10个该商品的总价。整型常量十进制整数由数字0-9组成,不能以0开头(数字0本身除外)。示例:123,-45,0八进制整数以数字0开头,由数字0-7组成。示例:0123(83),045(37)十六进制整数以0x或0X开头,由数字0-9和字母a-f组成。示例:0x1A(26),0XFF(255)长整型整数long型,十进制,以字母l或L结尾。示例:0L,12345L注意事项:任何类型的数据在计算机中都是以二进制补码形式存储的。正数的补码和该数的原码(该数的二进制形式)相同,负数的补码是将该数的绝对值的二进制形式按位取反再加1,即原码的反码加1得到。实型常量十进制形式由数字和小数点组成,小数点前后至少有一边有数字。
示例:3.14,-0.55.(等价于5.0).6(等价于0.6)指数形式(科学记数法)格式:尾数e/E指数(表示尾数×10^指数)示例:1.23e4(即12300)3.6E-2(即0.036)注意事项:字母e或E前后必须有数字,且指数部分必须是整数。字符型常量与字符串常量字符常量定义:单引号括起的单个字符,如'a','5','#'转义字符:以反斜杠开头,如\n(换行),\t(制表),\\(反斜杠)字符串常量定义:双引号括起的字符序列,如"Hello","Clanguage"特性:末尾自动添加结束符\01)字符由单引号括起来,字符串由双引号括起来。2)字符只能是单个字符,字符串则可以含一个或多个字符。3)可以把一个字符赋予一个字符型变量,但不能把一个字符串赋予一个字符型变量。4)字符占一个字节的内存空间。二者的区别:转义字符一种特殊形式的字符型常量,就是以一个字符“\”开头的字符序列,如\n(换行),\t(制表),\\(反斜杠)。转义字符具有特定的含义,不同于字符原有的意义,故称转义字符。转义字符主要用来表示那些用一般字符不便于表示的控制代码。常用的转义字符及其含义见右表。转义字符转义字符的含义+ASCII代码\n回车换行10\t横向跳到下一制表位置9\b退格8\r回车13\f走纸换页12\\反斜线符“\”92\'单引号符39\"双引号符34\a鸣铃7\ddd1~3位八进制数所代表的字符
\xhh1~2位十六进制数所代表的字符实例体验#include<stdio.h>main(){putchar('c');putchar('h');putchar('a');putchar('r');putchar('\n');putchar('i');putchar('n');putchar('t');}例2-3符号常量的使用#definePI3.14//定义符号常量PI#include<stdio.h>main(){floatarea,len,r;printf("请输入半径的值:");scanf("%f",&r);area=PI*r*r;len=2*PI*r;printf("半径R=%f,面积S=%f,周长L=%f\n",r,area,len);}例2-4单个字符常量的输出实例体验例2-5转义字符的使用#include<stdio.h>main(){inta,b,c;a=5;b=6;c=7;printf("abc\tde\rf\n");printf("hijk\tL\bM\n");}2.3变量程序运行中值可以改变的量变量的定义与初始化定义格式与示例格式:类型说明符变量表;inta,b,c;//定义三个整型变量floatx;//定义一个实型变量charch;//定义一个字符型变量变量的定义需要注意以下几点:1)每个变量定义语句都必须以分号结尾。2)每一个变量一经定义,就有一种确定的类型,在编译时就能为其分配相应的存储单元。3)每一个变量都有一个名字,在内存中占据一定的存储单元。变量的定义与初始化先定义后初始化先定义变量,然后再进行赋值或是等到需要赋值的时候再赋值。inta,b,c;a=3;b=c=5;注意:1)变量的初始化实际上是一个赋值语句。2)在定义变量的时候,可以只给部分变量赋值。3)
如果同时对几个变量赋相同的初值,应该注意书写格式。在定义变量时,不能给多个变量用连续赋值的方法赋相同的值,如在上面的例子中,不能改写成“inta,b=c=5;”,但可以改写成“inta,b=5,c=5;”。定义初始化定义变量的同时赋值。inta=3;intb.c=5;整型变量类型分类1)基本整型,用int表示。2)短整型,用shortint表示,或用short表示。3)长整型,用longint表示,或用long表示。以上3类数据都可以加上修饰符unsigned,来指定是“无符号数”。如果加上修饰符signed,则指定是“有符号数”。如果既不指定为signed,也不指定为unsigned,则隐含为有符号的(signed)。存储形式数据在内存中是以二进制形式存放的,如果定义了一个初始值为10的短整型变量i,shortinti=10;它以下面的形式存放在内存中:0000000000001010实型变量类型分类float(单精度):占用4字节,只能提供7位有效数字。double(双精度):占用8字节,可提供16位有效数字。floatprice=9.9f;//建议加f后缀doublepi=3.1415926;存放形式按指数形式存储,系统把一个实型数据分为小数部分和指数部分分别存放。实数3.14159在内存中的存放形式如下:小贴士
小数部分占的位(bit)
数越多,数的有效数字越多,精度越高。指数部分占的位数越多,则能表示的数值范围越大。注意:1)两个实型数据之间不能进行相等比较。2)实数范围内,应当避免将一个很大的数和一个很小的数直接相加或相减,否则可能表达不准确,“丢失”小的数。因为数据位数超出有效数字个数时,超出部分将舍弃,因此会产生一定的误差。字符型变量定义与赋值示例字符型变量本质存储的是ASCII码值。可以直接赋值字符或对应的整数。charch1='a';//存储字符'a'的ASCII码值97charch2=98;//等价于ch2='b'charch3='\n';//存储换行符的ASCII码值10存储形式字符x的ASCII码值是120(十进制表示),y的ASCII码值是121。将字符型变量'x'和'y'赋值给a、b,即“a='x';b='y';”,那么它们在内存中的存储形式为:实例体验#include<stdio.h>main(){shortinta,b;a=32767;b=a+1;printf("%d,%d\n",a,b);}例2-6变量的定义与使用#include<stdio.h>main(){inta=12,b=-24,u;/*定义整型变量a,b,u*/floatd=2.34;/*定义浮点型变量d*/charc='A';/*定义字符型变量c*/u=a+b;/*给变量u赋值*/printf("%d,%c,%f\n",u,c+32,d+3.5);}例2-7整型数据的溢出实例体验#include<stdio.h>main(){chara,b;a='a';b='b';a=a-32;b=b-32;printf("%c,%c\n",a,b);}例2-8实数的四舍五入#include<stdio.h>main(){floata,b;a=123456.789e5;b=a+20;printf("a=%f\n",a);printf("b=%f\n",b);}例2-9大小写字母的转换2.4运算符和表达式程序的运算与逻辑的核心算术运算符注意运算符的优先级共分为15级。1级最高,15级最低;算术运算符两边均为整数时,运算结果仍为整数;若参与运算的两个数中有一个为实数,则结果为double型;若参与运算的运算符优先级相同,则按照规定的结合方向处理。强制类型转换符可以利用强制类型转换符将表达式的运算结果转换成所需类型。一般形式
:
(类型说明符)(表达式)(float)a;//把a转换为实型(int)(x+y);//把x+y的结果转换为整型赋值运算符和赋值表达式简单赋值“=”将赋值号右边表达式的值赋给左边的变量。a=10;b=a+5;复合赋值运算符结合赋值与算术运算,简化代码书写。a+=5;等价于a=a+5;x*=y+7;等价于x=x*(y+7);r%=p;等价于r=r%p;如果赋值运算符两边的数据类型不相同,系统将自动进行类型转换,即把赋值号右边的类型换成左边的类型。具体规定如下:1)实型赋予整型,舍去小数部分。2)整型赋予实型,数值不变,但将以浮点形式存放。3)字符型赋予整型,由于字符型为一个字节,而整型为两个字节,故将字符的ASCII码值放到整型量的低8位中,高8位为0。4)整型赋予字符型,只把低8位赋予字符型变量。小贴士自增自减运算符及表达式自增运算(i++/i++)其功能是使变量的值增加1。++i;//i增加1后再参与其他运算i++;//i参与运算后再增加1自减运算(--i/i--)--i;//i减少1后再参与其他运算i--;//i参与运算后再减少1其功能是使变量的值减少1。逗号运算符及表达式C语言中逗号“,”也是一种运算符,称为逗号运算符。其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式,如“3+5,6+8”是一个逗号表达式。一般形式:
表达式1,表达式2其求值过程是分别求两个表达式的值,并以“表达式2”的值作为整个逗号表达式的值。例如
上面的逗号表达式“3+5,6+8”的值为14。除了上述几个运算符和表达式外,还有逻辑运算符、关系运算符以及相应的逻辑表达式和关系表达式,这些内容将在第4章介绍。实例体验#include<stdio.h>main(){floatx;inti;x=3.6;i=(int)x;printf("x=%f,i=%d\n",x,i);}例2-10算术运算符的计算#include<stdio.h>main(){intx,y;x=7;y=3;printf("x+y=%d,x-y=%d\n",x+y,x-y);printf("x*y=%d,x/y=%d\n",x*y,x/y);printf("x%y=%d\n",x%y);}例2-11强制类型转换实例体验#include<stdio.h>main(){inta,c,b=322;floatx,y=8.88;charc1='k',c2;a=y;x=b;c=c1;c2=b;printf("a=%d,x=%f,c=%d,c2=%c\n",a,x,c,c2);}例2-12赋值运算符的使用#include<stdio.h>main(){floatk,x,y;x=(k=9.8)+7;printf("k=%f,x=%f\n",k,x);y=k=9.8+7;printf("k=%f,y=%f\n",k,y);}例2-13赋值运算中的类型转换实例体验#include<stdio.h>main(){ inta=2,b=4,c=6,x,y;x=a+b,y=b+c;printf("y=%d,x=%d",y,x);}例2-14自增/自减运算符和表达式#include<stdio.h>main(){inti=8;printf("%d\n",++i);printf("%d\n",--i);printf("%d\n",i++);printf("%d\n",i--);printf("%d\n",-i++);printf("%d\n",-i--);}例2-15逗号表达式的使用2.5常用的数学函数利用库函数简化数学运算常用数学函数(一)使用前请包含头文件:#include<math.h>函数原型功能说明调用示例fabs(x)计算x的绝对值,x为实型数据fabs(-3.5)→3.5sqrt(x)计算x的平方根(x≥0)sqrt(16)→4.0pow(x,y)计算x的y次方pow(2,3)→8.0exp(x)计算自然指数e的x次方exp(1)→2.71828...log(x)计算x的对数,以e为底(x>0)log(2.71828)→1.0log10(x)计算x的对数,以10为底(x>0)log10(100)→2.0常用数学函数(二)函数原型功能说明示例sin(x)计算x的正弦值(x为弧度)sin(π/2)→1.0cos(x)计算x的余弦值(x为弧度)cos(0)→1.0tan(x)计算x的正切值(x为弧度)tan(0)→0.0abs(x)计算int型整数x的绝对值abs(-5)→5rand()产生0~32767范围内的随机整数注意:三角函数参数为弧度值。如需计算角度,请先转换(弧度=角度×π/180)。实例体验#include<stdio.h>#include<math.h>#definePI3.14main(){floatk;//定义角度变量kk=30;printf("%7.1f\n",sin(k*PI/180));//求角度k的正弦值}例2-16输入一个正数x,求x的二次方根#include<stdio.h>#include<math.h>main(){floatx,y;printf("inputx:");//提示输入xscanf("%f",&x);//从键盘输入xy=sqrt(x);//使用函数求x的二次方根
printf("%f的二次方根是%f\n",x,y);}例2-17三角函数的使用2.6趣味实例—验证表达式综合运用本章知识解决实际问题趣味实例实训目的1.掌握C语言中数据类型的声明、定义、赋值和引用。2.掌握算术运算符、赋值运算符、自增/自减运算符及逗号运算符的使用,学会在C语言环境下用表达式进行计算。3.掌握不同类型数据之间的转换和赋值方法。实训内容
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中南大学道路工程课件四
- 零碳园区申报全流程解析
- 中药保健常识第6讲过敏性鼻炎
- 中小企业人力资源管理学员
- 2026年秋季学期小升初学生新学期收心启航课件:新学期做最好的自己
- 第二十九课 经济全球化
- 汽车专车专用脚垫教学提纲
- 第四讲生命周期成本管理会计
- 2026年秋季高中生自然灾害科学认知与防范课件
- 2型糖尿病患者健康管理培训
- 《教师职业道德》师范与学前教育专业全套教学课件
- Q-SY 02660-2024 煤层气水平井远距离穿针钻井作业规范
- 船舶管系基础知识
- 全套电子课件:管理会计(第三版)
- DL∕T 1917-2018 电力用户业扩报装技术规范
- 九宫数独200题(附答案全)
- 再见深海合唱简谱【珠海童年树合唱团】
- 双红活血胶囊作用机制的网络药理学研究
- 穴位埋线疗法调节内分泌与激素平衡
- 退费账户确认书
- 供料站分析-传感器特点与装配 课件
评论
0/150
提交评论