考研前所学c语言02(2024/10/16)

1.一个十进制的数转化为二进制的就是不断除二取余,得到的余数从下到上取

比如123:

结果为:

同理其他的十进制转八进制,十六进制就除八,除十六即可

再比如123转十六进制:

因为余数是11,十六进制中a是十,b是十一,所以为7b

再举个二进制转16进制的数(4个4个为一位)

比如0111 1011

0111是2的0次幂+2的1次幂+2的2次幂,为1+2+4=7;

1011是2的0次幂+2的1次幂+2的3次幂,为1+2+8=11,因为十六进制只有0-9,a-f,a为10,b就为11,所以该二进制转十六进制为7b;

二进制转8进制(三个三个为一位)

结果为:,方法同上

若想将八进制转十进制,即用1乘8的二次幂+7乘八的1次幂+3乘八的零次幂为 8*8+7*8+3*1=123

总结:十进制转其他进制,转什么就除什么然后取余加起来

二进制转其它,转十进制、十六进制都是四个为一位,法则相同出来十六进制的10为a外

转八进制为三个一位

十六进制:

十进制0-9有十个数,八进制0-7有八个数

3.用printf打印进制

4.简单调试

得到的都是16进制的,且用什么变量就用取地址时用什么变量,那为什么7b在前面呢,本来应该在后面的,如下图

反过来是因为英特尔的 CPU 采用了小端方式进行数据存储,因此低位在前、高位在后(考研需知)。

5.scanf用法

scanf 函数中使用格式字符串时,通常不建议在格式说明符(如 %d)之后添加换行符 \n。原因如下:输入缓冲区的问题

6.

这个例子有个问题,就是在打印完整数后若还想要接着输入字符且输出时,缓冲区还存在着\n,

字符无法识别所以只能借助fflush(stdin)来清空缓冲区

详解:scanf 函数匹配一个字符时,会在缓冲区删除对应的字符。因为在执行scanf("名c",&c)语句时,不会忽略任何字符,所以 scanf("号c",&c)读取了还在缓冲区中残留的'\n'。

7.多种数据类型混合输入

当我们让 scanf 函数一次读取多种类型的数据时,对于字符型数据要格外小心,因为当一行数据中存在字符型数据读取时,读取的字符并不会忽略空格和'n'(回车符),所以使用方法如下例所示。编写代码时,我们需要在d 与%c之间加入一个空格。(如第7行所示)

切记切记,scanf除了遇到字符要空格外其他不用空格也不要给逗号,不然都会出错

相关推荐
quikai19812 分钟前
python练习第三组
开发语言·python
JIngJaneIL18 分钟前
基于Java非遗传承文化管理系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot
吃西瓜的年年43 分钟前
1. 初识C语言
c语言·开发语言
CHANG_THE_WORLD1 小时前
Python 字符串全面解析
开发语言·python
不会c嘎嘎1 小时前
深入理解 C++ 异常机制:从原理到工程实践
开发语言·c++
永远都不秃头的程序员(互关)2 小时前
C语言 基本语法
c语言·开发语言
永远都不秃头的程序员(互关)2 小时前
Java核心技术精要:高效实践指南
java·开发语言·性能优化
是Dream呀2 小时前
Python圣诞特辑:打造一棵会唱歌、会下雪的魔法圣诞树
开发语言·python·pygame
未来之窗软件服务2 小时前
幽冥大陆(四十一)美萍V10酒店门锁SDK C#语言仙盟插件——东方仙盟筑基期
开发语言·c#·仙盟创梦ide·东方仙盟·东方仙盟sdk·酒店智能门锁·东方仙盟 vos 智能浏览器
赖small强3 小时前
【Linux C/C++开发】Linux 平台 Stack Protector 机制深度解析
linux·c语言·c++·stack protector·stack-protector·金丝雀机制