一、数据类型
类型 类型标识符 字节数 范围
带符号字符型 [signed] char 1 -128---127
无符号字符型 unsigned char 1 0---255
带符号短整型 [signed] short [int] 4 -32768---32767 []里面的可以省略
无符号短整型 unsignedshort [int] 4 0---65535 带符号整型一般简称整型
带符号整型 [signed] int 4 -2147483648---2147483647
无符号整型 unsigned [int] 4 0---4294967295
带符号长整型 [signed] long [int] 4 -2147483648---2147483647
无符号长整型 unsigned long [int] 4 0---4294967295
单精度实型 float 4 6-7位有效数字,约1.0e-38---1.0e+38
双精度实型 double 8 14-15位有效数字,约1.0e-308---1.0e+308
敲了半天,其实也没什么用,平时经常用到的就是int,double。
再就是常量了==>1.整型常量 数字前面加0是八进制数,加0X/0x是十六进制数
2.实型常量 数字后面加后缀U\u是无符号类型,L\l是长整数
然后是变量
1.变量命名
规定:第一个符号一定要是字母或者下划线
大小写都是不一样的命名,再就是C语言的关键字不能作为命名,emmmm这个关键字也不用记,后面陆陆续续会接触到,命名可以背一句口诀“字母开头的字母数字串”(把下划线当作字母)。
2.定义变量
类型 变量名 int x; double y; float z; 一定要先定义变量再去使用,如果没有定义系统会报错,如果有的变量定义了没有使用,有的运行环境会提示你该变量没有使用
3.访问变量和赋值语句
赋值通常就是 变量名=表达式; 这里特别提醒跟我一样的人后面会遇到一个符号----> == 因为C语言将=作为赋值符号,所以用==代表比较大小关系的等于,在一开始做题时贼容易把等于打成= !!!
4.算术运算符
+、-、*就不说了和数学运算一样,/就不太一样,比如 6/4等于1 , 2/3等于0,这个符号只能用来整数除以整数求商(无小数部分),或者实数除以实数例如 6.0/4.0等于1.5 另外一个就是特殊的% 他代表整数除以整数求余数(只能用于整数运算),比如 5%2=2.....1算出来结果是余下的1。
5.运算符的优先级和结合性
emmmm这个东西就自己翻书吧,括号改变计算次序。
6.数据类型自动转换
这个东西简单来说就是把数据由占用字节较少的类型转换成占用字节多的类型,比如把整型换成实型;好像是因为CPU的原因,不支持float类型数据,会转换成double类型,所以前面说也没怎么用到float。
在赋值操作中还有一个“截断式”自动类型转换,这个东西在赋值时要注意,可能会导致数值与原数值不相等(数据类型不一样)
7.强制转化
例如 int a=355,b=113; p=(double)a/b先把a,b换成双精度的,结果约为3.1415xxxx;但是p=(double)(a/b)又不一样,他会先计算335/113得到3,再把3换成3.0.
二、常用的数学函数
函数 作用 举例
abs(x) 求整数的绝对值 x=abs(-2)=2
fabs(x) 求实数的绝对值 x=fabs(-7.2)=7.2
pow(a,x) 求a的x次方 y=pow(2,2)=4
sqrt(x) 求平方根 y=sqrt(9)=3
exp(x) 求e的x次方 y=exp(-1.5)=0.22313
log(x) 求以e为底的对数 y=log(1.0)=0.00000
log10(x) 求以10为底的对数 y=log10(10)=1.00000
sin(x)
cos(x)
tan(x) 引用这些函数时#include<stdio.h>下面接一个
asin(x) #include<math.h>
acos(x) 反三角函数 可能现在的做的题还简单这些常用函数有的还没有用过,下面贴几道题
atan(x)
都是一些简单的加减乘除计算,就是注意一下子输入输出的格式问题,这个地方想提一下scanf输入时可能会碰到输入输出不符合自己要求的可能原因, 就是scanf 的缓冲区:
缓冲区里保留所有从键盘打入的键,包括空格,空白键,回车。 输入语句 scanf(),gets(), ...都是到缓冲区里按语法规则读东西,转换内容。当缓冲区里内容用完了,或不够输入语句用时,输入语句等待....。从键盘打入的东西,只有当遇到 Enter键时,才通过操作系统进缓冲区,没遇到 Enter键不进(或者说scanf(),gets(), 等语句,没遇到 Enter 键输入事件发生时,不开始工作)。空白和回车何时被用掉与读语句种类和读法读的格式有关。 gets() 是读一行字符串,包括在前在后在半当中的空格,空白,.... scanf("%d",&k); 和 scanf("%d\n",&k); 不同。后者可以吃掉一个 Enter 键。 简单保险的办法是用 fflush(stdin); 清除输入缓冲区。你就不用担心输入行残留的数字,字符,空白和Enter键:scanf(。。。);fflush(stdin); 再 gets()