3.1数据的表现形式及其运算
3.1.1常量
在程序运行的过程中,其值是不能被改变的量称为常量。数值常量就是数学中的常数。
3.1.2整型常量:
如1000,12345,0,-345都是整型常量
3.1.3实型常量
有俩种表现形式:①十进制小数形式,由数字和小数点组成。如123.456,0.3456,-56.79等。②指数形式,如12.34e3(代表12.134×10的
三次方),-346.87e-25(代表-346.87×十的负二十五次方),0.145E-25(代表0.145×十的的负二十五次方)等等。由于计算机输入或输出时无法表示上角或下角,故规定以字母E或e代表以10为底的指数。但是应当注意:e或E之前必须有数字,且e或者E后面必须为整数。如不能写出e4,12e2.5等。
3.1.4字符常量
有两种形式的字符常量:①普通字符,用单撇号括起来一个字符,如’a’,‘Z’,‘3’,‘4’,‘?’,‘#’。不能写出’ab’或’12’。请注意:单撇号只是界限符,字符常量只能是一个字符,不包括单撇号。‘a’和’A’是不痛的字符常量
字符常量存储在计算机存储单元中时,并不是存储字符(a,z,#等)本身,而是其代码(一般采用ASCII代码)存储的,例如字符’a’的ASCII是97,因此,在存储单元中存放的是97(以二进制的形式存放)。ASCII字符与diamond对照表见下图。②转义字符,除了以上形式的字符常量以为,C语言还允许一种特殊形式的字符常量就是以“\”开头的字符序列。例如前面已经遇到过的,在printf函数中的’\n’代表一个换行符。‘\t’代表将输出位置跳到下一个Tab位置(制表位置),一个位置为8列。这是一种在屏幕上无法显示的"控制字符",在程序中无法用一个一般形式的字符来表示,只能采用这样的特殊形式来表示。常用的以’'开头的字符见下图。
ASCII
转义字符
3.1.5字符串常量
如"boy",“123”,等,用双撇号把若干个字符括起来,字符串常量是双撇号中的全部字符(不包括双撇号本身)。注意不能错写成’CHINA’,‘boy’,‘123’。单撇号内只能包含一个字符,双撇号内可以包含一个字符串。
3.1.6符号常量
用#define指令,指定一个符号名称代表一个常量。如: #define PI 3.1415 //注意末行没有分号
经过以上的指定后,本文件中从此行所有的PI都代表3.1416。在对程序进行编译前,预处理器先对PI进行处理,把所有PI全部置换为3.1415。这种一个符号名代表一个常量的,称为符号常量。
3.2.1变量
在C99中允许使用常变量,方法是在定义变量前加一个const如:const int a = 3; 定义a为一个整型变量,指定其值为3,而且在变量存在期间不能改变。常变量与常量异同的是:常变量具有变量的基本数学:有类型,占存储单元,只是不许改变其值。可以说,常变量就是有名字的不变量,而常量是没有名字的不变量。有名字就便于在程序中被引用。
请思考:常变量与符号常量有什么不同?如:
符号常量PI和常变量pi都代表3.1415926,在程序中能被使用。但是二者性质不同:定义符号常量用#define指令,他是预编译指令,它只是用符号常量代表一个字符串,在预编译时仅仅进行字符替换,在预编译后,符号常量就不存在了(全部置换成为了3.1415926),对符号常量的名字是不分配存储单元的。而常变量是要占用存储单元的,有变量值,只是该值不可以修改而已。
3.3.1数据类型
3.3.2数据的分类
详细讲解放在该链接感兴趣的朋友可以去看来链接:link
3.4.1运算符和表达式
C语言的运算符范围很宽广,把除控制语句和输入输出以为几乎所有的基本操作符都可以作为运算符来处理,例如"="作为赋值运算符、方括号作为下标运算符等。
3.4.2 C运算符
算术运算符 | + - * / % ++ – |
关系运算符 | > < == >= <= != |
逻辑运算符 | ! && |
位运算符 | << >> ^ & |
赋值运算符 | =及其扩展赋值运算符 |
条件运算符 | ?: |
逗号运算符 | , |
指针运算符 | *和 & |
求字节运算符 | sizeof |
强制类型转换运算符 | (类型) |
成员运算符 | 。 -> |
下标运算符 | [ ] |
其它 | 如函数调用运算符() |
本章先介绍算术运算符和赋值运算符,其余的在以后各个章节中陆续介绍
3.4.3 自增(++)、自减(- -)运算符
自增(++)、自增(- -)运算符的作用是使变量的值加1或减1
例如:
++i,--i(在使用i之前,先使i的值加(减)1) i++,i--
(在使用i之后,使i的值加(减)1)
3.4.4算术表达式和运算符的优先级和结合性
用算术符号和括号将运算对象(也称操作数)连接起来的、符合语法规则的式子称为C算术表达式。C语言规定了运算符的优先级(例如先乘除后加减),还规定了运算符的结合性具体优先级如下图:
3.5.1课后习题讲解:
例题1:
假如我国国民生产总值的年增长率为7%,计算10年后我国国民生产总值与现在比增长了多少百分比。计算公式为: p = (1 + r) ^ n
{(1 + r)的n次方
int main() { float r = 0.07; float year = 10; float p = 1;//第一年 int i = 0; for (i = 0; i < 10; i++) { p *= 1 + r; } printf("p = %f\n", p); return 0; }
方法二:
int main() { double p = 0; double r = 0.07; double n = 10.0; p = pow(1 + r, n);//调用pow库函数 printf("p = %lf\n", p); return 0; }
运行结果:
例题二:
购房从银行贷了一笔款d,准备每月还款额为p,月利息为r,计算多少月能还清。设d为300 000 元,p为6000元,r为1%。对求得的月份取小数点后一位,对第二位按四舍五入处理。
提示还清月数的公式如下:
m = (log p - log(p - d × r)) / log(1 + r)
##注:C的库函数中有求对数的函数log10,是求以10为底数的对数,log(p)表示log p
int main() { double p = 6000.0; double d = 300000.0; double r = 0.01; double m = 0.0; m = (log(p) - log(p - d * r)) / log(1 + r); printf("m = %4.1f\n", m); return 0; }
运行结果:
好了,今天的内容就到了这里了,如果有写的不好的地方和错误的地方希望各位多多包容,也可以指出作者都会努力改进的!