嵌入式全栈开发学习笔记---C语言笔试复习大全4

上一篇介绍了三道非常经典的考数据类型长度、数据范围和数据类型转换的笔试题。这一篇开始复习常量和变量,输入和输出。

说明:我们学过单片机的一般都是有C语言基础的了,网上关于C语言的资料有很多,大家如果对C语言不熟悉的话可以先去详细学一下,再以这篇博文作为复习资料学习。

这篇博文的目的是复习C语言,以30多个编程题作为复习要点,这30多个编程题基本涵盖了C语言所有的内容了,只要你掌握了这30多个编程题,那么你的C语言基本就没什么问题了。

注意:由于本专栏是嵌入式全栈开发专栏,为了我们能熟悉以后实际工作中的开发环境,我们写C语言全部在Linux中的vim编辑器中写,这么做事为了我们能够熟练掌握Linux系统的常用命令以及Linux上的vim编辑器的常用工作命令,以达到对口训练的目的!

vim编辑器的一些工作命令在上一篇博文中已经详细介绍过了,如果不了解可以先去看看。

我们正式开始:

常量

数据的表现形式有两种:常量 变量

常量 是一种在程序中保持固定类型和固定值的数据。编译系统从数据形式上可以区分(除枚举类型外)

比如宏常量:

常量的种类

常量分为:

a、整型常量

b、实型常量

c、字符常量

d、字符串常量

e、枚举常量(后面再讲)

有时候我们看代码我们会看到这样的一些标志:

常量标志

1、整型常量

十进制常量:18、-31,

long int型常量:123l、123L、123456l、123456L;(这个l或者L只是说明这个数是long类型的常量,写不写都没关系)

unsigned int型常量:123u、 123U(这个u或者U只是说明这个数是unsisgned类型的常量,写不写都没关系);

根据实际数据大小确定int型还是long型。

2、以数字"0"开始的整型常量是八进制数

比如022、-037。注意010(八进制)和10(十进制)大小不一样。因为八进制并不常用,所以此种表示法比较少见。

3、以"0x"或者"0X"开始的整型常量是十六进制

A~F和a~f用来表示十进制的10~15,十六进制的形式比较常用:0x12、-0x1F, -0x1f...

4、实型常量

十进制小数形式:123.45、456.78;

指数形式:1e-2、4.5e3(4.5乘以10的3次方);

float型常量 123.45f、 456.78F、1e-2f、4.5e3F;

long double型常量 123.45l、 456.78L;缺省为double

5、字符常量的表示方法

比如:'a'、'A'、'5'、'%'、'$';单引号内只能有一个字符,除非用"\"开头

注意:'5'和5的区别

字符在内存中是以ASCII码存储的,比如'a'它其实也是以数字的形式在内存中存储的,我们想要查它对应的这个数值,我们就可以去查找ASCII码表,可以看到'a'对应的数值是97,那它在内存中是以97的二进制数值存储的。

6、用'\'开头的字符为转义字符

例如,'\n',代表1个字符

7、字符串常量

字符串常量是一对双引号括起来的字符序列;

合法的字符串常量:"How do you do."、"CHINA"、"a"、"$123.45";

可以用printf直接输出一个字符串,如printf("How do you do.");

C规定:在每一个字符串常量的结尾加一个"字符串结束标志",以便系统据此判断字符串是否结束。C规定以字符'\0'作为字符串结束标志,用sizeof求字符串长度的时候不计算"\0",但是字符串数组大小要计算"\0"

如:如果有一个字符串常量"CHINA" ,实际上在内存中是:

|---|---|---|---|---|-----|
| C | H | I | N | A | \0 |

它占内存单元不是5个字符,而是6个字符,最后一个字符为'\0'。但在输出时不输出'\0'。

变量

变量 是在程序执行过程中可以改变

const关键字(笔试重点)

上一次我们复习了一个非常重要的关键字sizeof,这次我们再复习一个关键字const。

const这个关键字是介于常量和变量之间的,很多人把它理解为是将变量定义为常量 ,但其实它是用来把变量定义为只读变量。

将变量num定义成了只读变量,那就不能再直接通过num这个变量名来修改对应内存的值,如果硬改就会报错

硬方法不行,那就来软办法:

我们可以通过地址(指针)来间接修改num对应内存的值。

我们先取出num的地址

然后修改并打印出来看看

这样我们就把它修改成1000了

后面我们复习指针的时候还会继续剖析这个const

输入和输出

1、格式输入函数

scanf(格式控制字符串, 地址表列);

scanf("%d %f", &a,&b);

注:&取a第一个字节的地址;%表示获取的意思

2、格式输出函数

printf(格式控制字符串, 输出项表列);

函数原型:int printf(const char *format, ...);

注:"..."表示可变参数。

注意:scanf 不能加"\n"!输出printf可以加"\0"

格式输出的占位符

%d或%i按十进制有符号整数输出,正数的符号省略

%u按十进制无符号整数输出

%o按八进制无符号整数输出(不输出前导0)

%x或X按十六进制无符号整数输出(不输出前导符0x)

%c按字符型数据输出

%s按字符串数据输出

%f按小数形式输出(6位小数)

%e或E按指数形式输出实数

%%输出%本身

%g或G选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0

%p以十六进制输出(输出带有0x)

以上这些常用的占位符要记忆!

以上就是这篇内容,如想了解更多,欢迎订阅本专栏!

如有问题可评论区或者私信留言,如果想要进交流群请私信!

相关推荐
m0_74825409几秒前
STM32--超声波模块(HC—SR04)(标准库+HAL库)
stm32·单片机·嵌入式硬件
cdut_suye2 分钟前
Linux工具使用指南:从apt管理、gcc编译到makefile构建与gdb调试
java·linux·运维·服务器·c++·人工智能·python
qq_433618446 分钟前
shell 编程(三)
linux·运维·服务器
南城花随雪。9 分钟前
单片机:实现FFT快速傅里叶变换算法(附带源码)
单片机·嵌入式硬件·算法
逝灮23 分钟前
【蓝桥杯——物联网设计与开发】基础模块8 - RTC
stm32·单片机·嵌入式硬件·mcu·物联网·蓝桥杯·rtc
Tlzns27 分钟前
Linux网络——UDP的运用
linux·网络·udp
码农土豆33 分钟前
PaddlePaddle飞桨Linux系统Docker版安装
linux·docker·paddlepaddle
Hacker_xingchen38 分钟前
天融信Linux系统安全问题
linux·运维·系统安全
矛取矛求43 分钟前
QT的前景与互联网岗位发展
开发语言·qt
Leventure_轩先生43 分钟前
[WASAPI]从Qt MultipleMedia来看WASAPI
开发语言·qt