查看: 90|回复: 2

【零基础学C语言】知识总结三:运算符、进制转换、输入 ...

[复制链接]

7

主题

13

帖子

28

积分

新手上路

Rank: 1

积分
28
发表于 2022-11-28 14:07:47 | 显示全部楼层 |阅读模式

进制之间的转换

其他进制转换为二进制

1、八转二:123.6,首先,将每一位数字,一分为三。1=001  2=010  3=011    0.6=110
然后合起来:0010 1001 1.110=1010 011.11(可将整数高位的零省略,小数低位的零不写)

2、十转二  方法一:整数除R取余法,小数乘E取整法:
如:14.875:整数部分除2取余,小数部分乘2取整
整数 14/2  商7余0  7/2 商3余1  3/2 商1余1  1/2  余0      除到商数零为止
小数 875 * 2=1.750  取1  . 075 * 2=1.50 取1  0.5 * 2=1.0  取1  乘到所需要的精度或者积为零为止
然后  :  整数从高位(后面)写,小数从低位(前面)写。
14.875十进制转为二进制等于  1110.111

  十转二  方法二:如  46 :他最大只能分配 32位字节,46-32=14,最大3
只能分配8个字节,14-8=6,最大只能分配4个字节,4-2=2。到此结束
它们分别是  2^5  2^3  2^2 2^1  然后分别在 第六位上填个1,第四位上填个1,第三位上填个1,第二位上填1  ,其他位均是零  :46 十转二 101110
3、十六转二:  84.cf  一分位为四,规则方法与八转二相同,  8=1000  4=0100  12=1100  16=1111
合起来:1000 0100 0100.1100 1111



其他进制转八进制

1、二转八 : 规则:整数部分 从低位到高位,每三位为一组,最高位不足三位时高位补零,小数从低位到高位,每三位一组,最低位不足三位时低位补零。
1011 1100 011.11=001 011 110 011.110
              =1  3  6  3 . 6

2、十进转八:(规则和十转二一致)除R取余法,乘E取整法
25.35 :整数  25/8  商3  余1  3/8  余3  除到商数零为止
      小数  0.35

2、十进转八:(规则和十转二一致)除R取余法,乘E取整法25.35 :整数  25/8  商3  余1  3/8  余3  除到商数零为止            小数  0.35 * 8=2.80  取2  0.8 * 8=6.4  取6  0.4 * 8=3.2 取3  0.2 * 8=1.6 取1 乘到所需要的精度或者积为零为止。25.35十转八31.2331

3、十六转八  一般的方法是先其他进制做为媒介,先转为其他进制再从其他进制转为八进制。
如 84.cf  先转为二进制:8=1000  4=0100 12=1100  16=1111  总:1000 0100.1100 1111
(按照二转八规则)010 000 100.110 011 110= 204.636

其他进制转为十进制

1、十六转十(5F):5 * 16^1+15 * 16^0=  95
2、八转十  (123.4):1 * 8^2+2 * 8^1+3 * 8^0+4 * 8^-1= 83.5
3、二转十  (1101.11):1 * 2^3+1* 2^2+0 * 2^1+1 * 2^0+1 * 2^ -1+1 * 2^-2=13.75
其他进制转为十六进制
1、二转十六,规则同二转八一样,只不过是四合一:
1010 1011 110.011=0101 0101 1110.0110=55E.6
2、八进制转十六进制,只能是用其他进制做为媒介,转为其他进之后再转为十六进制
3、十转十六,方法一: 用其他进制做媒介 先转为其他进制再转为十六进制。
方法二 :用整数除16取余法,小数用乘16取整法。

运算符

优先级运算符含义说明结合方向


说明:同一优先级时,运算方向按照结合方向决定。
自增(自减)i++与++i的不同
i++表示先使用i的值之后再+1
++i表示先+1
从上述表中可以大致归纳出各类运算符的优先级:
初等运算符(  )[  ] ->  .

单目运算符

算述运算符(先乘除,后加减)

关系运算符

逻辑运算符(不包括!)

条件运算符

逗号符



printf函数:

format -- 是格式控制字符串,其中两种类型的对象:普通字符和转换说明(加%那种)  。在输出时,普通字符将原样不动地复制到标准输出,转换说明并不直接输出而是用于控制 printf 中参数的转换和打印。每个转换说明都由一个百分号字符(%)开始,以转换说明结束,从而说明输出数据的类型、宽度、精度等
函数原形: %[flags][width][.precision][length]specifier,即:%[标志][最小宽度][.精度][类型长度]说明符    (其中如果加转换说明时,%和 说明符(格式符)不能省略,其他均可)
函数表示在format的控制下,将其参数进行格式化,然后再输出打印出来。
如果函数执行成功,则返回打印字符的数量,失败则返回负数。
printf 函数的返回值为其输出字符串常量的字符数(注意字符数与字数的区别),注意计数针对所有的打印字符,包括空格和不可见的换行字符(不包括字符串的空字符)。
printf函数输出方向是自右到左的。图解:











scanf函数

标准输入流stdin:它是从标准输入设备(键盘)获取数据,程序中的变量通过流提取符从流中提取数据,注意:只有在输入完数据再按回车键后,该行数据才被送入键盘缓存区(sell),形成输入流,提取运算符才能从中提取数据。需要注意保证从流中读取数据能正常运行
scanf函数是从stdin中读取内存的子程序。并将数据保存在变量的地址中。
scanf函数返回成功读入的数据项数。函数返回值为int型。
如果a和b都被成功读入,那么scanf的返回值就是2;
如果只有a被成功读入,返回值为1
如果a和b都未被成功读入,返回值为0;
如果遇到错误或遇到end of file,返回值为EOF。end of file为Ctrl+z 或者Ctrl+d。
函数原形: int scanf (const char * restrict format,...);(存储顺序由编译器决定)
**注意:
(1)在高版本的 Visual Studio 编译器中,scanf 被认为是不安全的,被弃用,应当使用scanf_s代替 scanf。
(2) 对于字符串数组或字符串指针变量,由于数组名可以转换为数组和指针变量名本身就是地址,因此使用scanf()函数时,不需要在它们前面加上"&"操作符。
(3) 可以在格式化字符串中的"%"各格式化规定符之间加入一个整数,表示任何读操作中的最大位数。
(4) scanf函数中没有类似printf的精度控制。如: scanf("%5.2f",&a); 是非法的。不能企图用此语句输入小数为2位的实数。
(5) scanf中要求给出变量地址,如给出变量名则会出错如 scanf("%d",a);是非法的,应改为scanf("%d",&a);才是合法的。
(6) 在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔,则可用空格,TAB或回车作间隔。C编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束。(7) 在输入字符数据(%c)时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。(scanf有一个明显的优点,速度比cin函数快)
图解:





作者:Mr_Li_
对啦对啦!另外的话为了帮助大家,轻松,高效学习C语言/C++,我给大家分享我收集的资源,从最零基础开始的教程到C语言项目案例,帮助大家在学习C语言的道路上披荆斩棘!可以来我粉丝群领取哦~
C语言C++编程学习视频分享:




整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)最重要的是你可以在群里面交流提问编程问题哦!
C语言/C++/数据结构与算法【共同学习群
回复

使用道具 举报

3

主题

13

帖子

22

积分

新手上路

Rank: 1

积分
22
发表于 2025-3-17 11:27:34 | 显示全部楼层
无论是不是沙发都得回复下
回复

使用道具 举报

2

主题

9

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2025-3-23 04:09:57 | 显示全部楼层
边撸边过
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表