首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

C语言数据类型、变量的输入和输出、进制转换

编程知识
2024年09月26日 16:51
  scanf标准函数可以从键盘得到数字并记录到存储区里,为了使用这个标准函数需要包含stdio.h这个头文件

在scanf函数调用语句里应该使用存储区的地址表示存储区;双引号里使用占位符表示存储区的类型,

在scanf函数调用语句里尽量不要写不是占位符的内容,如果用户输入的格式和程序要求的格式不同

程序就无法获得数字,可以在一条scanf函数调用语句里获得多个数字。

  一个字节可以分成八段,每段可以用来记录一个0或者1,

要想把一个数字记录到一个字节里就必须首先拆分成8个0或者1,用一组0或者1表示数字的方法叫二进制,

任何一个数字既可以用十进制方式标志也可以使用二进制方式表示,计算机里只能记录用二进制表示的数字

二进制数字中每个位置有一个编号,最右边位置的编号为0,向左依次递增

二进制数字中每个数位里的1单独代表一个数字,这个数字就是2的数位次方

二进制数字中如果两个相邻数位的内容一样,则左边数位的内容是右边数位内容的2倍

二进制表示的非负数符合以上规则,二进制数字加一的时候把编号为0位置开始的连续多个1变为0

把最右边的0变为1,任何数字除以2并保留整数部分的结果相当于去掉最右边二进制数位的内容

二进制表示的非负数转换成十进制的时候,只需要把每个数位的内容单独转换然后再把转换结果求和

`0000	0011=2的1次方+2的0次方=2+1=3`

十进制表示的非负数转换成二进制的方法,不停对原始数字进行除以2并保留整数部分的操作

得到一组数字,用每个数字除以2取余得到一个数位的内容,把所有数位的内容从后向前倒序书写就得到转换结果

负数的二进制和十进制之间不能直接转换,必须借助相反数,转换过程分三步,首先计算相反数,

然后把相反数进行转换最后再次计算相反数

把二进制数字每个数位的内容变成相反数字然后再加一得到相反数的二进制。比如:

`-14

14

0000	1110

1111	0001

1111	0010(-14的二进制)
`

有符号类型的二进制数字中最左边的数位叫做符号位,他的内容可以用来判断数字是负数还是非负数。

符号位内容是0表示非负数,符号位内容是1表示数字是负数。比如:

`1100	1011

0011	0100+1=0011	0101=-53`

把二进制的数字的 数位从右向左每三个分成一组,每组用一个0到7之间的数字替换

这个替换结果叫做数字的八进制表示方式。比如:

`0100	1010				01	101	010			1	5	2=152(八进制)`

可以在程序里直接使用八进制方式表示数字,这种数字必须以0做开头

可以在printf函数调用语句里使用%o做占位符把数字的八进制发表示方式显示在屏幕上

把二进制数字的数位从右向左每四个数位分成一组,每组用一个字符替换(用a到f之间的字母替换10到15之间的数字)

这个替换结果叫数字的十六进制表示方法

`1100	1011			cb(十六进制)
`

可以在程序里使用十六进制方式表示数字,这种数字必须以0x做开头

可以在printf函数调用语句里使用%x或%X做占位符把数字的十六进制表示方式显示在屏幕上

用%x做占位符的手数字里的所有字母都是小写的,用%X做占位符的时候数字里的所有字母都是大写的

操作符代表了对数字的计算规则,根据操作符所需要配合的数字个数可以把操作符分为

单目操作符、双目操作符和三目操作符。

C语言里使用+、-、*和/表示加减乘除四则运算

如果参与除法计算的两个数是整数;则计算结果只保留整数部分,C语言里用%表示取余数操作,

     赋值操作符用=表示,这个操作符可以把一个数字记录到一个存储区里

     赋值语句可以当作数字使用,这个数字就是复制完成后左边存储区里的数字

     可以在一条语句里使用多个赋值操作符,这个时候首先计算**右边**的赋值操作符

     大多数双目操作符可以和赋值操作符合并成为复合赋值操作符,如:+=,/=等

     复合赋值操作符也要求左边的内容可以代表存储区,右边的内容可以代表数字

     复合赋值操作符把双目操作符的计算结果记录到左边的存储区里

     复合赋值操作符的优先级和赋值操作符一样低

自增操作符(++)和自减操作符(--)都是单目操作符,**这两个操作符都必须和存储区配合使用**

    他们可以把存储区的内容加一或减一,他们都有两种使用方法。

    一种是前操作(操作符写在存储区的前面);另一种是后操作(操作符写在存储区的后面)

    使用这两个操作符编写的表达式可以当作数字使用,前操作当作数字使用的时候是

    修改后的数字,后操作当作数字使用的时候是修改前的数字

    不要在一条语句里对同一个变量多次进行自增或自减计算

逻辑操作符用来编写逻辑表达式,逻辑表达式的结果只能是布尔值

!是一个单目逻辑操作符,它用来计算一个布尔值的相反值,这个操作符使用的时候应该写在一个布尔值的前面

双目逻辑操作符包括==(等于)、!=(不等于)、<(小于)、 >(大于)>=(大于等于)和<=(小于等于)

最多包含一个双目逻辑操作符的表达式叫做简单逻辑表达式,

这种逻辑表达式在数学里的结果和在C语言里的结果一定相同

    在C语言里编写逻辑表达式的时候如果逻辑表达式里包含多个双目逻辑操作符

    就必须拆分成多个简单逻辑表达式然后再合并

    可以使用与(&&)和或(||)把两个逻辑表达式合并成一个如果两个逻辑表达式里有一个的结果是真

    则用或(||)连接以后结果就是真,如果两个表达式里有一个的结果是假则用与(&&)连接以后结果就是假

    与(&&)和或(||)都有短路特征

   (如果前一个逻辑表达式的结果可以决定合并后逻辑表达式的结果就可以忽略后一个逻辑表达式)

练习:
男人身高减体重小于105算超重
女人身高减体重小于110算超重
gender(0代表女人,1代表男人)
height	身高
weight	体重
编写逻辑表达式当超重的时候得到结果为真

```c
(gender &&(height-weight<105))||
(!gender &&(height-weight<110) )

练习:

编写程序从键盘得到一个数字,判断这个年份是不是闰年并把这个结果显示在屏幕上

如果年份数字可以被4整除但不能被100整除就是闰年

如果年份可以被400整除也是闰年

/*
 *
 *编写程序从键盘得到一个年份数字,判断这个年份
 *是不是闰年并把结果显示在屏幕上
 *如果年份数字可以被4整除但不能被100整除就是闰年
 *如果年份数字可以被400整除也是闰年
 *
 * */
#include<stdio.h>
int main(){
	int year=0;
	printf("请输入一个年份:\n");
	scanf("%d",&year);
	int tmp=0;
	tmp=(!(year%4) && year%100) || !(year%400);
	printf("判断结果是%d\n",tmp);
	return 0;
}

练习1:

点击查看代码
/*
 *
 * 编写程序从键盘得到一个浮点数
 * 把这个浮点数作为半经
 * 计算圆的周长
 * 并把结果显示在屏幕上
 *
 * */
#include<stdio.h>
int main(){
	float r=0.0f;
	printf("请输入一个圆的半经:\n");
	scanf("%g",&r);
	printf("圆的周长=%g\n",2*3.14*r);
	return 0;
}

练习2:

点击查看代码
/*
 * 二进制演示
 *
 * */
#include<stdio.h>
int main(){
	char ch=300;
	int num=ch;
	printf("num=%d\n",num);

	ch=128;
	num=ch;
	printf("num=%d\n",num);
	return 0;
}
练习3:
点击查看代码
/*
 *
 * 八进制和十六进制演示
 *
 * */
#include<stdio.h>
int main(){
	char ch=0;
	int num=0; 
	printf("%d  0%o\n",0152,0152);
	printf("0x%x  0X%X\n",0xcb,0xcb);
	num=ch=300;
	printf("num=%d\n",num);
	num +=6;
	printf("num=%d\n",num);
	num *=2+3;
	printf("num=%d\n",num);
	return 0;
}
练习4:
点击查看代码
/*
 *
 * 操作符演示
 *
 * */
#include<stdio.h>
int main(){
	int num=0,num1=0;
	num++;
	printf("num=%d\n",num);
	++num;
	printf("num=%d\n",num);
	num=10;
	num1=num++;
	printf("num=%d  num1=%d\n",num,num1);
	num1=++num;
	printf("num=%d  num1=%d\n",num,num1);
	return 0;
}
练习5:
点击查看代码
/*
 *
 * 逻辑操作符演示
 *
 * */
#include<stdio.h>
int main(){
	int num=0;
	printf("3<7<5=%d\n",3<7<5);
	printf("!8=%d\n",!8);
	printf("3<7 && 7<5=%d\n",3<7&&7<5);
	1 || ++num;
	printf("num=%d\n",num);
	0 && ++num;
	printf("num=%d\n",num);

	return 0;
}

From:https://www.cnblogs.com/GQH1000/p/18433883
本文地址: http://www.shuzixingkong.net/article/2323
0评论
提交 加载更多评论
其他文章 博客园终身会员小福利,送华为云服务器
最近我们和华为云总经销商浙江杭云网络科技有限公司达成了合作,准备从10月开始做一些华为云的代理业务,增加园子的收入来源。 在做这个业务之前,先给园子的终身会员送点华为云服务器作为小福利,这次只申请到100台,先到先得,送完为止。 赠送的云服务器配置如下: 终身VIP会员 :送1核2G1M华为云服务器
博客园终身会员小福利,送华为云服务器
仅需6步,实现虚拟物体在现实世界的精准放置
增强现实(AR)技术作为一种将数字信息和现实场景融合的创新技术,近年来得到了快速发展,并在多个应用领域展现出其独特的魅力。比如在教育行业,老师可以通过虚拟现实场景生动直观地帮助学生理解抽象概念;在旅游行业,AR技术还能虚拟历史文化场景、虚拟导航等,为游客提供更加沉浸的互动体验。 然而,对于应用来说,
仅需6步,实现虚拟物体在现实世界的精准放置 仅需6步,实现虚拟物体在现实世界的精准放置 仅需6步,实现虚拟物体在现实世界的精准放置
基础数据结构之递归
递归 1) 概述 定义 计算机科学中,递归是一种解决计算问题的方法,其中解决方案取决于同一类问题的更小子集 In computer science, recursion is a method of solving a computational problem where the solution
基础数据结构之递归 基础数据结构之递归 基础数据结构之递归
SimpleRAG-v1.0.3:增加文件对话功能
Kimi上有一个功能,就是增加文件之后对话,比如我有如下一个私有文档: 会议主题:《如何使用C#提升工作效率》 参会人员:张三、李四、王五 时间:2024.9.26 14:00-16:00 会议内容: 1. 自动化日常任务 许多日常任务可以自动化,从而节省时间和精力。例如,如果你需要定期处理大量数据
SimpleRAG-v1.0.3:增加文件对话功能 SimpleRAG-v1.0.3:增加文件对话功能 SimpleRAG-v1.0.3:增加文件对话功能
C# WebSocket Servers -- Fleck、SuperSocket、TouchSocke
最近在维护老项目,感觉内存一直都有问题,定位到问题是WebSocketServer的问题,了解了 Fleck、SuperSocket、TouchSocke 等开源项目 ,这里记录一下。可能今后都不会用些轮子了,.net5、.net6、.net7、.net8 项目已经集成了WebSocket,只要 a
前端使用 Konva 实现可视化设计器(23)- 绘制曲线、属性面板
本章分享一下如何使用 Konva 绘制基础图形:曲线,以及属性面板的基本实现思路,希望大家继续关注和支持哈(多求 5 个 Stars 谢谢)!
前端使用 Konva 实现可视化设计器(23)- 绘制曲线、属性面板 前端使用 Konva 实现可视化设计器(23)- 绘制曲线、属性面板 前端使用 Konva 实现可视化设计器(23)- 绘制曲线、属性面板
深度DFS 和 广度BFS搜索算法学习
目录广度优先的动态图深度优先的动态图广度和深度的具体步骤深度和广度的应用场景 图的两种遍历方式: 深度优先遍历(DFS——Depth First Search) 广度优先遍历(BFS——Breath First Search) 图的遍历算法里,处理临时数据,依赖两个抽象数据结构: 栈 队列 广度优先
深度DFS 和 广度BFS搜索算法学习 深度DFS 和 广度BFS搜索算法学习 深度DFS 和 广度BFS搜索算法学习
华为GaussDB数据库(单机版)在ARM环境下的安装指南
一、软件版本 机器配置:8核16G,CPU: Huawei Kunpeng 920 2.9GHz 操作系统:EulerOS 2.8 64bit with ARM 数据库版本:GaussDB Kernel 505.1.0 build 44f4fa53 二、部署流程 2.1 新建用户 ① 以omm用户为
华为GaussDB数据库(单机版)在ARM环境下的安装指南 华为GaussDB数据库(单机版)在ARM环境下的安装指南 华为GaussDB数据库(单机版)在ARM环境下的安装指南