qq:78080458 学习交流群:150633458
分类: 嵌入式
2016-02-16 16:06:02
Lesson9-顺序程序设计
一、常量与变量
1、常量
在程序运行过程中,其值不能改变的量,叫做常量。
f(x) = 2x + 1
常用的常量有以下几种类型:
1)整型常量, 100, 0, -234
2)实型常量, 123.456, 123456e-3, 123e+3
3)字符型常量
普通字符, ‘a’ ‘#’
转义字符, ‘\n’ ‘\t’ '\b'
4)字符串常量, “123” "weijie"
5)符号常量 #define ABC 3.14 ABC就是一个符号常量
2、变量
在运行过程中值可以改变的量,叫做变量。变量必须先定义后使用,例如:int a;定义一个整数类型的变量
标识符:在高级语言中用来对变量、符号常量、函数等等起名字的有效字符,叫做标识符。
标识符的要求:只能包含字母、数字、下划线,并且只能以字母和下划线开头
int 2a 错
int a#b 错
二、进制转换
十进制(d):
逢10进1,十进制的算法123 = 1x100 + 2x10 + 3x1,十进制中每一位都不超过10
二进制(binary):
逢2进1,二进制的算法(101)B = 1x4 + 0x2 + 1x1,二进制中每一位都不超过2
(10010011)b = 1*1+1*2+0+0+1*16+1*64
八进制(o):
逢8进1,八进制的算法(765)O = 7x64 + 6x8 + 5x1,八进制中每一位都不超过8
十六进制(hex):
逢16进1,十六进制的算法(765)H = 7x256 + 6x16 + 5x1,十六进制中每一位都不超过16
十六进制中有超过10的数该怎么表示?用字母a,b,c,d,e,f
位:一个位里面只能放一个1位的二进制数
一个字节byte等于8位,一个字等于2个字节
十进制数num转为n进制的方法:
step1: n/(n+1) = 0....1
step2: num÷n = 商......余数1
step3: 如果商为0,跳转finish
step4: 商 ÷n = 商......余数2
step3: 如果商为0,跳转finish
step4: 商 ÷n = 商......余数3
step3: 如果商为0,跳转finish
step4: 商 ÷n = 商......余数4
。。。。。。
finish:将余数1到余数n从右到左写下来,这就是你的结果
n进制转十进制的方法:
给一个8进制4123,那么对应的十进制是:
3x8的0次方 + 2x8的1次方 + 1x8的2次方 + 4x8的3次方
二进制的技巧
任何一个正整数都可以表示为2的N次方相加,你不信也得信。。。
10 = 8 + 2
100 = 64 + 32 + 4
1000 = 512 + 256 + 128 + 64 + 32 + 8
当然你需要熟练掌握2的10次方以内的所有结果,这是一个程序猿的要求。
789 = 512+256+16+4+1 = 1100010101
二进制转十六进制:四个一组,每一组都是2的0次方到2的3次方
(1011 1100)B = (bc)H
三、基本数据类型
C语言基本数据类型:整型、浮点型
整型:基本整型、长整型、短整型、双长整型、字符型
浮点型:单精度浮点、双精度浮点
1、 整型
整型:integer
基本整型(int):占4个字节或者2个字节(分操作系统)
短整型(short int):占2个字节
长整型(long):占4个字节
双长整型(long long):占8个字节
在实际应用中有些数据只有正数,不能为负数,因此数据又可以分为有符号数据和无符号数据,所以c语言把整型变量又仔细划分为
unsigned int
[signed] int
unsigned short [int]
[signed] short [int]
unsigned long [int]
[signed] long [int]
unsigned long long [int]
[signed] long long [int]
1111 1111 = 255(无符号)
二进制的最高位是符号位,0代表+, 1代表-
1111 1111 = -127
定义一个整型变量:
int a; //定义变量
a = 100;//给变量赋值
也可以在定义变量的时候顺便给变量赋值,这叫变量的初始化
int a=100;
int a,b;
int a=10, b=100;
2、 字符型
字符型(char):占1个字节
字符型也可以分为有符号和无符号:
[signed] char
unsigned char
定义一个整型变量:
char a; //定义变量
a = ‘#';//给变量赋值
char a='$';
字符其实也是以整数的形式存在,因为计算机只认识0和1。你可以查看ASCII码表,里面对每一个字符都进行的编码。需要记住‘a’== 97
‘A’==65 ‘0’== 48(不是整数0)
注意:并不是所有的字符都能被c语言识别。
3、 浮点型
浮点型:
单精度浮点(float):占4个字节
双精度浮点(double):占8个字节
其实浮点型就是我们说的小数,只不过float和double的精确度不一样
float a=1.0;
4、 打印变量
打印常量
printf("hello\n");
打印变量
int a;
a = 10;
printf("num is %d", a); //num is 10
%d代表int %f代表float类型数据 %lf代表double类型数据
%ld代表long类型, %c打印char类型数据
如何打印多个变量:
int a,b,c;
a = 10;
b = 11;
c = 12;
printf("three num is %d %d %d\n", a,b,c);
四、运算符与表达式
1、四则运算
+ 加法
- 减法
* 乘法,因为没有×
/ 除法,因为没有÷
% 取余数(取模) 10%6 = 4
2、自增自减
int i = 10;
++i 使用之前i的值加1 ,而且会改变i的值
i++ 使用之后i的值加1
--i 使用之前i的值减1
i-- 使用之后i的值减1
3、表达式
用c语法写的式子就是c算术表达式,例如a+b*2-3+8/2,c算术表达式的计算方法和数学是一样的
4、混合运算
在实际运算的过程中,难免有不同类型的数据同时参加运算,鉴于此种情况,C语言有以下规则
1)+-*/中有一个是float另一个是double,那么系统会将float转为double,因此结果是double
2)int和float或者double运算时,先将int转为float或者double
3)字符数据与整型计算时,先将字符转为对应的ASCII码,然后计算;字符与float或者double运算时,将字符的ASCII码转为float或者double
5、强制转换
c语言可以把一个数强制转换成其他类型,例如:
(int)a 把a强转为int类型
(float)b 把b强制转换为float类型
注意:当一个小数转为整数的时候,只保留整数部分(不是四舍五入)
6、其他运算符
1)赋值运算 =,将"="右边的数值给等号左边
2)复合运算 += ,a+=3 ---> a=a+3
3)比较运算 > >= < <= == !=
4)条件运算 a = b>c?1:2
五、c语句
一个c程序就是由不同的c语言句子组成的,c语句可以分为5类
1、控制语句,控制程序的执行过程
1)if()...else... 条件判断
2)for()... 循环
3)while()... 循环
4)do...while()... 循环
5)continue... 结束本次循环
6)break... 中止循环或者switch
7)switch 分支
8)return 返回
2、函数调用语句,由一个函数调用加一个分号组成
printf(“hello”);
3、赋值语句,由一个复制表达式和分号组成
a = 6;
4、空语句,由一个分号构成
;
5、复合语句,可以用{ }把许多语句括起来,构成复合语句
{
int a=10,b=20;
int c=a+b;
printf("%d\", c);
}
六、数据输出
c语言有很多输入输出的语句,所谓输入就是从外部获取信息到cpu,输出就是将cpu的信息给外部
1、printf
c语言最常用的输出语句是printf,这个一个格式输出的语句,用户必须指定数据的格式,printf(格式控制, 输出列表),例如
printf("sum = %d + %d", a, b);
%d就是指定数据的格式为int, a和b就是输出列表, 有两个%d,因此要有两个数据
2、格式控制
1)%d
用来输出一个有符号的十进制整数,若是长整型用%ld,long long则使用%lld
2)%c
用来输出一个字符,如果对应的输出列表是一个整型,那么会转为字符型。例如
int a = 65;
printf(“%c”, a); 屏幕会输出一个字母A,因为A得ASCII码是65
同样的,如果使用%d的时候,对应的输出列表是一个char,那么会将char转为整数,例如:
char a = ‘A’;
printf(“%d”, a); 屏幕会输出一个字母A,因为A得ASCII码是65
3)%f
输出float类型,如果是double类型的,可以用%lf,默认6位小数。
使用%m.nf,指定输出的float格式m代表整数部分的位数,如果不够则左端补空格,如果整数部分超出指定范围,那么按实际操作,不可以影响它的大小;n指定小数部分的位数,如果不够右边补0,如果超出,四舍五入。
float num=11.234;
printf("%f", num); 11.234000
printf("%1.5f", num); 11.23400
printf("%3.1f", num); _11.2
4)其他格式
%e 以指数形式输出实数,例如:
int num=1234;
printf("%e", num); 1.234000e+003
int num=0.00123;
printf("%e", num); 1.23000e-003
%x 以十六进制输出整数
%o 以八进制输出整数
%u 输出无符号整数
%a 输出地址
七、数据输入
c语言的输入也有很多种方法,常见的是scanf函数。scanf函数的使用方法基本和printf差不多,我们来找找不一样的地方
scanf("a=%d,b=%d,c=%d", &a,&b,&c); 后面的列表多了个&
当然你需要在键盘上输入:a=1,b=1,c=3 或者其他的
scanf要注意:
1)格式控制的后面不是一个变量,而是变量的地址
2)如果使用%c,那么空格和转义字符都被认为是有效的字符
scanf("%c%c%c", &a,&b,&c)
输入abc三个字母,中间不能有空格
3)如果是输入数值,那么空格、tab、回车、等非法字符都被认为是数据结束,例如:
scanf("%d%d%d", &a,&b,&c)
输入10 12 13,或者10,12,13都可以
字符的输入与输出:
对于字符的输入和输出,可以使用其他函数putchar、getchar
1)输出字符
char a='m';
putchar(a);
2) 字符出入
char a;
a=getchar();
putchar(a);