寒假C语言基础查漏补缺笔记(一)

本系列文章是基于自身的编程基础而编写的,其内容并非适用于所有人,请海涵~

不过内容应该包括了所有的考点、用法,初学C/C++的大学生或者noip入门级选手可以以此作为参考。

主要内容大致分为四个方面:计算机概念、简述编程中所需要的掌握的知识点(高亮显示即是知识点)、强调记忆C/C++基础语法中的不常用的特殊语法概念
以及

在学习过程中我的感悟和我从初中编程到现在所积累的经验(引用处即是)。

看完这系列文章,你可以快速地入门C/C++,而且我的文章也可成为你的复习笔记。

愿你的智慧加上我的,能完美解决你的问题。

需要下载Dev-C++ 5.11 可以关注微信公众号:MathsCode
回复:编译器,免费获得。

此文是基于中国大学MOOC北京大学郭炜老师的程序设计与算法(一)C语言程序设计(国家精品课程)而撰写的。

点击进入程序设计与算法(一)C语言程序设计——北京大学郭炜

非常厉害的老师!!!

看完觉得内容对您有帮助的,可以点个赞加个关注哦!

---------------------------笔记分割线------------------------------

1.1信息在计算机中的表示

计算机的电路由逻辑门电路组成,一个逻辑电路可以看成一个开关,每个开关的状态是“开”(高电位)或“关”(低电位),及对应1和0。

突然想起一句话:
一个优秀的计算机修理工可能不是一个成功的程序员,但我相信一个成功的程序员一定是一个优秀的电脑修理工
一个优秀的码农一定要会修电脑。(可能头秃了,女朋友还没找到)。

bit(b) 与 byte(B)的含义以及关系
一个字节(byte)是8个比特(bit),一个bit即是一个二进制位。

了解ASCII编码的内容(下图),以后将会成为帮助理解

点击查看ASCII最权威解释

K进制数到十进制数的转换,以及十进制数到K进制数的转换 十六进制最复杂哦!

1.2为什么是C++而不是C语言

目前我们学习的是C语言+STL库(STL库后面会提到)并不是纯粹的C++,因为C++的最神通之处是他是面向对象的功能。
C++是面向对象的编程语言。

C++程序的基本编写框架以及编写基本要求

程序的注释:多行注释、单行注释

1.3变量和数据类型

变量是什么、变量如何定义、变量的命名规则(C++的保留字、关键字)

C++的基本数据类型

就本人经验而言
打Noip、ACM对数据没有要求
一般整数用int
实数一般用double
因为整形数组开longlong题给内存会爆,
实数开float在某些情况下(如经过大量运算)会出问题,精度小误差大。

用sizeof运算符求变量占用字节数

sizeof(变量名)
sizeof(类型名)
//能够得到某个变量或某一类型占用的字节数

变量的初始化

有符号整数的表示方式(这我还没真心去想过)
最左边的位(最高位)看做“符号位”:
0—>非负数,那么数值就是除符号位以外的部分;
1—>负数,那么其绝对值是除符号位以外的部分取反(0变1,1变0)后再加1

这个其实可以看成将一个有符号整数的二进制数表示成其代表的十进制数的方法。

那么问题就来了

如何将一个负整数表示成二进制呢

(1)设置符号位为1
(2)其余位等于绝对值取反再加1

举例:

二进制转(2^k)进制数,只需要从低位每K位一转,如上题转十六进制,即将二进制从低位每四位转成相应的十六进制数

我突然想到一个问题:按照上文中的将负整数的二进制数表示成十进制数值的方法,那么他的逆做法不就是将负整数的十进制数表示成二进制么?
那么做法不就应该是:将负整数的绝对值转化成二进制后减一,再将每一位取反,最后再最前面(即最高位)写上1,代表负数,即可。
可是这与上问将一个负整数表示成二进制的方法为啥不一样呢?
比如举个例子-32768
按照逆作法应该是:绝对值32768二进制为1000 0000 0000 0000,减一为0111 1111 1111 1111,再除符号位各位取反为0000 0000 0000 0000,再将符号位改为1,则为1000 0000 0000 0000,结果正确。
按照上文做法:符号位为1,其余位等于绝对值32768二进制1000 0000 0000 0000取反 0111 1111 1111 1111 1111,再加一为1000 0000 0000 0000,去后15位(第一位为符号位不算),所以结果为1000 0000 0000 0000,结果正确。
所以其实这两种方法理论上都是正确的,在二进制的世界里,这两个做法是等价的。

数据类型之间的自动转换

int a = 11.34;   //a的值是11
int b = 30;
double d = b;      //d的值是30.0

这里的a初始化时不管是11.99还是11.01,a的值始终为11,整形变实数不是四舍五入,而是去掉小数部分

那么非得要四舍五入怎么办?
double b; //已知实数b,实现b的四舍五入;
int a = (b+0.5); //即可实现

字符类型到整形的互相转换
字符转整形:字符对应的是相应的ASCII码,即变为ASCII值。
整形转字符:因为一个整形数据可以大于一个字节,而字符型最多一个字节,所以转化时只会留下最右边的一个字节,其他字节丢弃

1.4常量

1.4.1 整形常量

常用的有十进制和十六进制整形常量,十六进制常量以“0x”或者“0X”打头,A(a)表示10,B(b)表示11,…F(f)
表示15.

1.4.2 字符型常量

转义字符

1.4.3 字符串常量

"" 也是一个字符串常量,它代表一个空串,即不包含任何字符的字符串
字符串常量可以包含转义字符

1.4.4 符号常量

#define 常量名 常量值

定义之后,程序中所有出现“常量名”的地方就等价于出现的“常量值”。

尽量少使用数值常量,而用符号常量替代它,这样便于修改。

1.5 DEV-C++ 5.11的使用

如果需要下载的同学可以扫码关注我的公众号:MathsCode,回复:编译器,免费获得。

码字不易,喜欢这篇文章的话,关注我的CSDN吧,
我的高中数理化学习干货
Noip竞赛经验
自招笔试小窍门、面试小套路
大学理工科学习规划
均在我的公众号中
扫码关注吧!

结语

感谢你的耐心阅读,码字不易,阅读不易。

愿你的努力加上我的,能完美解决你的问题。

居家防控疫情,也不能放松了学习,可以充分利用互联网线上学习的功能,让自己过一个充实的寒假。

武汉加油,中国加油。

C/C++基础查漏补缺(一)----------寒假学习笔记(一)相关推荐

  1. C/C++基础查漏补缺(八)----------寒假学习笔记(八)

    寒假C语言基础查漏补缺笔记(八) 本系列文章是基于自身的编程基础而编写的,其内容并非适用于所有人,请海涵~ 不过内容应该包括了所有的考点.用法,初学C/C++的大学生或者noip入门级选手可以以此作为 ...

  2. Java基础查漏补缺(2)

    Java基础查漏补缺(2) apache和spring都提供了BeanUtils的深度拷贝工具包 +=具有隐形的强制转换 object类的equals()方法容易抛出空指针异常 String a=nu ...

  3. java怎么快速补缺_Java基础查漏补缺(1)

    Java基础查漏补缺 String str2 = "hello"; String str3 = "hello"; System.out.println(str3 ...

  4. C语言——基础查漏补缺(三):谭浩强红书刷题笔记大杂烩

    相关文章: C语言--基础查漏补缺(一):超长文帮你理清一些概念 C语言--基础查漏补缺(二):<C程序设计试题汇编>应试概念总结 C语言--基础查漏补缺(四):利用<挑战程序设计竞 ...

  5. Linux基础查漏补缺

    文章目录 第二遍重新回顾Linux基础 查看主机名 修改主机名 查看IP地址 Linux的 "--"和"-" 根目录文件的意义和作用 alias 直接在命令行界 ...

  6. Java基础查漏补缺(个人向)

    关键字 不熟悉的关键字 instanceof throw(手动的生成一个异常) throws(处理异常的方式) native strictfp transient volatile assert th ...

  7. MySQL基础查漏补缺

    1. char 与 varchar ? char 定义的是定长的字符串类型,比如电话号码.性别等字段,如果插入的数据长度小于定长就会以unicode编码补缺'\u0000'(我们看着是空格),大于定长 ...

  8. 前端基础查漏补缺知识

    一.JS基础 1. 如何在ES5环境下实现let 对于这个问题,我们可以直接查看babel转换前后的结果,看一下在循环中通过let定义的变量是如何解决变量提升的问题 babel在let定义的变量前加了 ...

  9. Java基础查漏补缺:(String篇)一个面试题问倒了我,原来String并不简单

    先来一道java面试题: String s = new String("zsx"); 问:创建了几个String Object? 先别往下看,想想答案 先上一个图: 如图所示,问题 ...

最新文章

  1. bash: 无法为立即文档创建临时文件: 权限不够_世界顶级Linux大牛耗时三年总结出3000页Linux文档...
  2. java工单自动化流程控件,一种工单审批的自动化处理方法及系统与流程
  3. python经典案例-Python3经典100例(①)
  4. DPDK 初识DPDK(十五)
  5. MySIAM与Innodb引擎
  6. [翻译]Protocol Buffer 基础: C++
  7. SpringBoot_web开发-扩展与全面接管SpringMVC
  8. 低学历程序员的红利来了,这个政策来的太惊喜!
  9. dcase_util教程(二)——各单元介绍
  10. 听云支持.NET Core的应用性能监控
  11. 比特币开发者:BSC可能会超越以太坊成为顶级智能合约平台
  12. 建议收藏,10个Windows系统装机必备软件,相见恨晚!
  13. 【control】模型预测控制(MPC)
  14. 糗百网站服务器正在升级中,网站紧急升级中
  15. 硬盘显示驱动器中的光盘未被格式化的解决方法
  16. 瀚高数据库命令备份还原
  17. Unbuntu下U盘突然权限只读,无法重命名和复制粘贴文件的问题修复
  18. P1357 花园(状压dp + 矩阵快速幂)
  19. matlab 在2k屏幕,如何将4k显示器的分辨率调整为2k,并将2k分辨率用于4k显示器
  20. 双屏显示html vga,官方数据:一台计算机连接到两台显示器,双屏显示(VGA,HDMI)指南...

热门文章

  1. 情商高的人的特点以及提高情商要做的事——《应该给孩子的50堂情商课》读后有感
  2. 程序员晒工资,工作 3 年被应届生倒挂!网友:工作 8 年被你倒挂!
  3. 基因组注释1. 重复序列repeatmasker, trf
  4. Spring Boot 接口幂等性实现的 4 种方案!
  5. 「兔了个兔」龟兔赛跑——乌龟和兔子能否相遇?
  6. dsoframer-在线编辑office文档,一款开源的由微软提供
  7. jsonp无X-Requested-With 及其深扒
  8. 北航计算机学院直博多少年,北航硕博连读需要几年
  9. PHP退休了吗,年底退休和年初退休也有区别?
  10. 很实用的一本书-《微软Office技巧大赛优秀作品--Office技巧1000例》