嵌入式开发-lesson9-顺序结构程序设计

简介: Lesson9-顺序程序设计 一、常量与变量 1、常量 在程序运行过程中,其值不能改变的量,叫做常量。 f(x) = 2x + 1 常用的常量有以下几种类型: 1)整型常量, 100, 0, -234 2)实型常量, 123.

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):

101,十进制的算法123 = 1x100 + 2x10 + 3x1,十进制中每一位都不超过10

二进制(binary):

21,二进制的算法(101)B = 1x4 + 0x2 + 1x1,二进制中每一位都不超过2

10010011b = 1*1+1*2+0+0+1*16+1*64

八进制(o):

81,八进制的算法(765)O = 7x64 + 6x8 + 5x1,八进制中每一位都不超过8

十六进制(hex):

161,十六进制的算法(765H = 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次方 + 2x81次方 + 1x82次方 + 4x83次方



二进制的技巧

任何一个正整数都可以表示为2N次方相加,你不信也得信。。。

10 = 8 + 2

100 = 64 + 32 + 4

1000 = 512 + 256 + 128 + 64 + 32 + 8

当然你需要熟练掌握210次方以内的所有结果,这是一个程序猿的要求。

789 = 512+256+16+4+1 =   1100010101

二进制转十六进制:四个一组,每一组都是20次方到23次方

(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='$';

字符其实也是以整数的形式存在,因为计算机只认识01。你可以查看ASCII码表,里面对每一个字符都进行的编码。需要记住‘a== 97

A==65   0== 48(不是整数0)

注意:并不是所有的字符都能被c语言识别。


3、    浮点型

浮点型:

单精度浮点(float):占4个字节

双精度浮点(double):占8个字节

其实浮点型就是我们说的小数,只不过floatdouble的精确度不一样

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/2c算术表达式的计算方法和数学是一样的


4、混合运算

 在实际运算的过程中,难免有不同类型的数据同时参加运算,鉴于此种情况,C语言有以下规则

 1)+-*/中有一个是float另一个是double,那么系统会将float转为double,因此结果是double

 2)intfloat或者double运算时,先将int转为float或者double

 3)字符数据与整型计算时,先将字符转为对应的ASCII码,然后计算;字符与float或者double运算时,将字符的ASCII码转为float或者double


5、强制转换

 c语言可以把一个数强制转换成其他类型,例如:

 (inta a强转为int类型

 (floatb 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的信息给外部


1printf

c语言最常用的输出语句是printf,这个一个格式输出的语句,用户必须指定数据的格式,printf(格式控制, 输出列表)例如

printf("sum = %d + %d", a, b);

%d就是指定数据的格式为int ab就是输出列表, 有两个%d,因此要有两个数据


2、格式控制

1)%d

 用来输出一个有符号的十进制整数,若是长整型用%ldlong long则使用%lld

2)%c

用来输出一个字符,如果对应的输出列表是一个整型,那么会转为字符型。例如

 int a = 65;

 printf(“%c”, a); 屏幕会输出一个字母A,因为AASCII码是65

同样的,如果使用%d的时候,对应的输出列表是一个char,那么会将char转为整数,例如:

 char a = ‘A’;

 printf(“%d”, a); 屏幕会输出一个字母A,因为AASCII码是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都可以

字符的输入与输出:

对于字符的输入和输出,可以使用其他函数putchargetchar

1)输出字符

 char a='m';

 putchar(a);

2) 字符出入

 char a;

 a=getchar();

 putchar(a);
相关文章
|
7月前
|
存储 编译器 C语言
【C语言必知必会 | 第三篇】顺序结构入门,这一篇就够了
【C语言必知必会 | 第三篇】顺序结构入门,这一篇就够了
457 0
|
7月前
|
存储 Java 数据处理
Java程序设计基础——顺序结构
Java程序设计基础——顺序结构
|
7月前
|
存储 移动开发
单片机----汇编语言入门知识点
单片机----汇编语言入门知识点
167 2
|
7月前
|
存储 算法 Serverless
【C语言程序设计】顺序结构程序设计
【C语言程序设计】顺序结构程序设计
192 0
|
7月前
第三章:顺序结构程序设计
第三章:顺序结构程序设计
60 0
|
7月前
|
C语言
第三章:顺序结构程序设计(练习题)
第三章:顺序结构程序设计(练习题)
92 0
|
7月前
|
算法 Java 程序员
第一章:程序设计与C语言
第一章:程序设计与C语言
76 0
|
自然语言处理 编译器 C语言
chapter 1 绪论 程序设计与C语言
chapter 1 绪论 程序设计与C语言
77 0
chapter 1 绪论 程序设计与C语言
|
机器学习/深度学习 人工智能 C语言
C语言第五章 循环结构程序设计习题(2)
C语言第五章 循环结构程序设计习题(2)
223 0
C语言第五章 循环结构程序设计习题(2)
|
算法
C程序设计语言第二版习题2-9
在求反码时,表达式 x &= (x - 1) 用于把x最右边的值为1的位删除掉。请解释一下这样做的道理。用这一方法重写bitcount函数 ,使之执行得更快一点
833 0