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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398916.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

odoo10学习笔记十四:mixin其他功能模块

原文地址:http://www.cnblogs.com/ygj0930/p/7153680.html odoo提供了许多有用的功能,比如:讨论、通知、网站等。我们可以在开发自己的模块时,引入这些功能。 一:消息系统 在模型中整合消息系统是很简单的,…

Git 历险记

Git历险记(一) 作为分布式版本控制系统的重要代表——Git已经为越来越多的人所认识,它相对于我们熟悉的CVS、SVN甚至同时分布式控制系统的Mercurial,有哪些优势和不足呢。这次InfoQ中文站有幸邀请到《Git Community Book》的译者刘…

怎样用c语言定义高幂整数,位操作运算的奇技淫巧!(附源码)

位运算百度百科如下:程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作位操作的优势位运算是一种底层的运算,往往比我们普通的运算要快上许多许多位运算是最高效而且占用内存最少的算法操作,执行效…

mysql--------命令来操作表

常用的通过mysql命令来更改表结构的一些sql语句,包括添加、删除、修改字段、调整字段顺序。 添加字段: alter table user_movement_log Add column GatewayId int not null default 0 AFTER Regionid; (在哪个字段后面添加) 删除字段: alter …

UIImageView01

//// ViewController.m// UIImageView01//// Created by cqy on 16/2/13.// Copyright © 2016年 程清杨. All rights reserved.//#import "ViewController.h"interface ViewController (){UIImageView *img;}endimplementation ViewController- (void)viewD…

android系统耗电量大待机,安卓手机耗电快有什么解决办法吗 安卓手机待机耗电量大怎么办...

虽然手机发展速度越来越快,技术也越来越高了,电池容量相对之前的900毫安1000毫安,都上升到了2000毫安到5000毫安,但是感觉待机的时间和正常的使用时间,却没有之前那么长了,难道手机电池容量是假的&#xff…

js 中null,undefined区别

首先摘自阮一峰先生的文章: 大多数计算机语言,有且仅有一个表示"无"的值,比如,C语言的NULL,Java语言的null,Python语言的None,Ruby语言的nil。 有点奇怪的是,JavaScript语…

集合中的遍历以及删除元素

package collection;import java.util.ArrayList; import java.util.Collection; import java.util.Iterator;/*** 遍历集合元素* Collection提供了统一的变量集合元素的方式;迭代器* 方法为:* Iterator iterator()* 该方法可以获…

Linux 关机命令详解 转自脚本之家

在linux下一些常用的关机/重启命令有shutdown、halt、reboot、及init,它们都可以达到重启系统的目的,但每个命令的内部工作过程是不同的。 Linux centos重启命令: 1、reboot 2、shutdown -r now 立刻重启(root用户使用) 3、shutdown -r 10 过…

六款值得推荐的Android开源框架简介

六款值得推荐的Android开源框架简介 技术不再多,知道一些常用的、不错的就够了。下面就是最近整理的“性价比”比较高的Android开源框架,应该是相对实用的。 1、volley 项目地址 https://github.com/smanikandan14/Volley-demo JSON,图像等的…

android应用程序的组件,Android基础之应用程序组件

Android应用程序由若干个不同类型的组件组合而成,每一个组件具有其特定的安全保护设计方式,它们的安全直接影响到应用程序的安全。Android应用程序组件的主要类型有:活动(Activity),服务(Service),广播接收者(Broadcast Receiver)…

数据库杂谈(一)——数据库基本概念

文章目录1 数据库基本概念1.1数据库和数据库管理系统1.2 数据库系统和文件系统1.3 数据模型1.4 数据库三级模式和两级独立性1.4.1 三级模式1.4.2 二级映像功能1.4.3 数据独立性1.5 数据库发展历史及分类1.6 数据库系统的组成和生命周期1.6.1 三个概念1.6.2 生命周期1.6.3 存储管…

【转】Java删除文件夹和文件

原文网址:http://kxjhlele.iteye.com/blog/323657 以前在javaeye看到过关于Java操作文件的一篇文章,写的很好,但找了半天也没找到,就把找到底几篇文章整理一下,做个总结,算是一个学习备份…… 1&#xff0c…

webapi返回字符串,解决自动加双引号或下划线的问题

返回类型改为HttpResponseMessage类型 [HttpGet] public HttpResponseMessage Test() {HttpResponseMessage responseMessage new HttpResponseMessage { Content new StringContent("你要返回的字符串", Encoding.GetEncoding("UTF-8"), "text/pla…

数据库杂谈(二)——数据模型

2 数据模型 摘要:数据模型(Data Model)是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表示与操作提供一个抽象的框架。数据模型所描述的内容有三部分,分别是…

android编译系统apk文件,VS2012中MonoForAndroid打包编译APK文件详细图文教程

本文用于介绍Visual Studio 2012中Xamarin Mono For Android 如何打包编译APK文件,从如何创建Android项目,到如何启动调试,都会逐个配图讲解。1 新建项目2 选择安卓3 选择安卓程序4 随便取名和设置存放路径5 确定1 创建完一个新的项目2 点击“…

判断程序是否已经运行

近段时间,需要写一个小功能,就是需要判断程序是否已经运行。某个程序安装后,也许被多个用户运行。那怎样判断当前用户已经运行了此程序了呢?下面是Insus.NET的做法,就是:《VB.NET WinForm获取运行程序用户名…

hyper虚拟机下对centos进行动态扩容

在关机状态下,可增加centos的磁盘空间,但是增加的这部分空间,还需在centos完成以下操作,才能使用1.查看现有的硬盘分区(现在空间没有变大)#df -h2.对新增的硬盘空间做新增分区(硬盘数没有增加&a…

浅谈缓存技术在ASP.NET中的运用

本篇文章虽不谈架构,但是Cache又是架构中不可或缺的部分,因此,在讲解Cache的同时,将会提及到部分架构知识,关于架构部分,读者可以不用理解,或者直接跳过, 你只需关心Cache即可&#…

Git快速入门+复习笔记

对于学习编程的同志来说,学习Git是必不可少的一项技术,如果你是第一次观看我的文章,欢迎关注我的频道,我会分享更多有趣的知识。 文章目录1 目标2 概述2.1 开发中的实际场景2.2 版本控制器的方式2.3 工作流程图3 Git安装和常用命令…