【C语言督学训练营 第二天】C语言中的数据类型及标准输入输出
文章目录
- 一、前言
- 二、数据类型
- 1.基本数据类型
- ①.整形
- ②.浮点型
- ③.字符型
- 2.高级数据类型
- 3.数据分类
- ①.常量
- ②.变量
- 三、标准输入输出
- 1.scanf
- 2.printf
- 四、进制转换
- 1.进制转换简介
- 2.十进制转其他进制
- 3.其他进制转换
- 五、OJ网站的使用
一、前言
王道2024考研408C语言督学营第二天,今天介绍的是C语言的基础语法,虽然是基础语法但还是值得我们的注意的,有些细节像我这种练习两年半的ikun都不知道,当然了基础知识也并不需要全部掌握,讲课的老师都给出了考与不考的提示。
二、数据类型
什么是数据类型呢?举个栗子裁缝做衣服时需要用到化纤、纯棉、丝绸等不同类型的布料,经过裁缝的巧织最终做出了一件非常完美的衣服,那么程序员在编写程序时也一样,数据类型就相当于做衣服用到的化纤、纯棉、丝绸等不同类型的布料,那么C语言中需要用到哪些数据类型呢?数据类型的分类如下图所示。
1.基本数据类型
①.整形
整形可以分为短整型、整形、长整形三类,定义时的关键字
分别是 short、int、long、long long 几种类型的区分最明显的特征就是占用的字节数
不同。那么说到这里什么是关键字呢?关键字就是C语言编译器已经占用了的英文单词,可以使用这些英文单词告诉编译器我们需要让他做什么。讲课的讲师也给出了详细的解释,C语言中的关键字有以下几种,考试不会考、写代码时集成开发环境会有提示(也就是不用记),大家只需了解即可。
说完关键字就要开始说整形的概念了:整形可以通俗的理解为整数,可以分为整形符号常量、整形变量。可以使用以下代码体会一下整形。
整形符号常量,仅仅做位置的替换,并不会直接参与运算,可以从以下一个例子体会到
#include <stdio.h>
#define PI 3+2
int main(){printf("Hello!PI*2=%d,2*PI=%d",PI*2,2*PI);return 0;
}
体会一下整形变量的使用:这里捎带介绍一下整除,两个整形相除会向下取整。体现在了下面例子
//
// Created by Zhu Shichong on 2023/1/9.
//#include "stdio.h"
int main(){int i=4;int j=3;printf("this num is %d,this 4/3=%d",i,i/j);}
要想得出正确的结果需要进行强制类型转换:
//
// Created by Zhu Shichong on 2023/1/9.
//#include "stdio.h"
int main(){int i=4;int j=3;float ans=(float)i/j;printf("this num is %d,this 4/3=%f",i,ans);}
②.浮点型
浮点型可以分为单精度浮点型与双精度浮点型,定义时使用的关键字是float、double。明显的区别是小数点后面位数不同(精度不同)。
-
浮点型常量
表示浮点型常量的形式有两种,如下表所示,其中e代表10的幂次,幂次可正可负.
注意:字母e之前必须有数字才是科学计数法,否则会报错!
-
浮点型变量
使用float、double声明的变量。
③.字符型
- 字符型常量
用单引号括起来的一个字符是字符型常量,且只能包含一个字符! 例如, ‘a’、‘A’、‘1’、’ ‘是正确的字符型常量,而’abc’. “a”、""是错误的字符型常量.下表中给出了各种转义字符及具作用。以“\”开头的特殊字符称为转义字符,转义字符用来表示回车、退格等功能键。
- 字符型变量
使用char关键字定义,占用一个字节大小的空间。常用的字符都会对应ASCII码表中的一个数值,ASCII (American Standard Code for Information Interchange)
:美国信息交换标准代码是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准 ISO/IEC 646。ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符,下图列明了ASCII码。说这个的目的是因为字符变量可以进行相应的代数运算,比如a+32=A。比较简单大家可以自行尝试!
- 字符串
C语言没有字符串类型,所以也就不存在字符串变量了!
2.高级数据类型
这几种数据类型是C语言的精髓,特别是指针,学会了指针可以用C语言走遍天下!后面会详细介绍,这里仅仅是提一嘴。
- ①.数组
- ②.结构体
- ③.指针
3.数据分类
这里就直接列概念了,不理解的评论区留言吧!
①.常量
②.变量
三、标准输入输出
这里的输入输出都是标准库中的格式化
输入输出,所以在使用的时候一定要着重注意格式化
三个字。
1.scanf
如下图所示,程序员可以给程序输入数据,程序处理后会返回一个输出,C语言通过函数库读取标准输人,然后通过对应函数处理将结果打印到屏幕上。
C语言未提供输入/输出关键字
,其输入和输出是通过标准函数库来实现的,C语言通过scanf函数读取键盘输入,键盘输入又被称为标准输入,当scanf 函数读取标准输入时,如果还没有输入任何内容,那么scanf函数会被卡住(专业用语为阻塞)。想要将缓冲区的内容读进变量,需要将变量的地址传进去,简单类型的变量要进行取地址,复杂的直接写变量名即可(需要自己后期注意)
,下面给一些使用的例子:
-
不写取地址符
- 没有取地址,输入之后并未返回0,程序异常退出。
- 取地址之后,返回值为0
- 没有取地址,输入之后并未返回0,程序异常退出。
-
不按格式化输入输出
-
不按格式化输入输出(数据异常)
-
按照格式化输入输出(正常)
-
-
吞掉回车(缓冲区原因)
-
异常情况(可以看出,输完两个1没有让那个我们对c进行数据输入)
-
修改之后(使用fflush清空缓冲区,或者使用scanf吞掉回车符)
-
原因分析:scanf在读取整形、浮点数、字符串时会忽略缓冲区的\n,但是在读取字符c时并不会忽略,所以在使用的时候尤其要注意%c的位置,以防因为格式或者缓冲区问题出错。本样例就是因为字符型在没有清空缓冲区情况下读取到了第一次输入到缓冲区的换行符。
先读取整形后读取字符串也会受换行符的影响!
-
小结:使用scanf一定要注意&取地址符、格式化输入、字符型数据的读取!
2.printf
printf函数可以输出各种类型的数据,包括整型、浮点型、字符型、字符串型等,
实际原理是printf函数将这些类型的数据格式化为字符串后,放入标准输出缓冲区,然后将结果显示到屏幕上。
函数原型:int printf(const char *format,...)
字符串格式(format)由两部分组成:显示到屏幕上的字符和定义printf函数显示的其他 参数.我们可以指定一个包含文本在内的format字符串,也可以是映射到printf的其他参数的 “特殊”字符,如下列代码所示:
//
// Created by Zhu Shichong on 2023/1/9.
//#include "stdio.h"
int main(){int age = 21;printf("Hello %s, you are %d years old\n", "Bob", age);
}
其中,%s表示在该位置插入首个参数(一个字符串),%0表示第二个参数(一个整数)应该 放在哪里.不同的%codes表示不同的变量类型,也可以限制变量的长度.printf函数的具体代 码格式如下表所示:
代码 | 格 式 |
---|---|
%c | 字符 |
%d | 整形 |
%f | 单精度浮点数,lf双精度浮点数 |
%s | 字符串 |
%u | 无符号整数 |
%x | 无符号十六进制数 |
%X | 无符号十六进制数 |
%p | 一个指针 |
%% | 一个%,符号 |
位于%和格式化命令之间的一个整数被称为最小字段宽度说明符,通常会加上空格来控制格式
使用方法如下:
其中负整数代表左对齐,正整数代表右对齐。
//
// Created by Zhu Shichong on 2023/1/9.
//#include <stdio.h>int main() {int i = 10;float f = 96.3;printf("student number=%-3d score=%5.2f\n", i+100, f);printf("student number=%-3d score=%5.2f\n", i, f);printf("%10s\n", "hello");
}
四、进制转换
1.进制转换简介
计算机只认识0与1,是因为我们编写的代码编译之后每一个操作都将会以高低电平的方式进行传输,这个高低电平并不是绝对的低电平相同,高电平相同,而是低电平处于一个范围,高电平处于一个范围。而只包含0与1的数据就是二进制所以在进行进制转换时常常与二进制脱不开关系。
2.十进制转其他进制
这里用到的是初中或者小学学到的知识好像。可以根据这个方法可以将十进制转换其余进制进行推广。
3.其他进制转换
- 二进制转其余进制(这里可以很方便的转向2的指数函数进制),思想是整体化局部
- 其余进制转10进制一般先转为二进制,再使用二进制转10进制的方法转换(一眼看出答案请忽略)。
五、OJ网站的使用
今天这节课,老师还分享了一个OJ网站,但是从老师的语气中听出并不是推荐大家在考研期间报蓝桥杯,所以我认为老师的OJ网站应该不会出太难的算法题,应该会以基础语法或者输入输出格式为主,这里我看到老师使用的OJ是通过Github上一个开源项目搭建的,我也尝试搭建了一下,搭建成功但是只进行了测试,判题机也可以使用,希望后期我可以有测试用例,然后供大家使用,大家感兴趣的话也可以去试试。传送门
如果大家有什么疑问,欢迎评论区留言或者私信博主!
相关文章:
【C语言督学训练营 第二天】C语言中的数据类型及标准输入输出
文章目录一、前言二、数据类型1.基本数据类型①.整形②.浮点型③.字符型2.高级数据类型3.数据分类①.常量②.变量三、标准输入输出1.scanf2.printf四、进制转换1.进制转换简介2.十进制转其他进制3.其他进制转换五、OJ网站的使用一、前言 王道2024考研408C语言督学营第二天&…...
重资产模式和物流网络将推动京东第四季度利润率增长
来源:猛兽财经 作者:猛兽财经 强劲的2022年第三季度财务业绩 2022年11月18日,京东(JD)公布了2022年第三季度财务业绩,净收入为2435亿元人民币,增长了11.4%。净服务收入为465亿元人民币…...
【新】EOS至MES的假捻报工数据导入-V2.0版本
假捻自动线的数据和MES没有进行对接,直接入库至EOS。 因此可信平台上缺少这部分的报工数据,需要把EOS的入库数据导出,整理成报工数据,导入到MES,然后通过定时任务集成到可信平台。 MES这边的报工数据整理,主要是添加订单明细ID,和完工单号。 订单明细ID(根据批次号和…...
python甜橙歌曲音乐网站平台源码
wx供重浩:创享日记 对话框发送:python音乐 获取完整源码源文件说明文档配置教程等 在虚拟环境下输入命令“python manage.py runserver”启动项目,启动成功后,访问“http://127.0.0.1:5000”进入甜橙音乐网首页,如图1所…...
docker imageID计算
Image ID是在本地由Docker根据镜像的描述文件计算的,并用于imagedb的目录名称 docker镜像id都保存在/var/lib/docker/image/overlay2/imagedb/content/sha256下面,都是一些以sha256sum计算文件内容得出的哈希值的文件。 #ls /var/lib/docker/image/ove…...
借助媛如意让ROS机器人turtlesim画出美丽的曲线-云课版本
首先安装并打开猿如意其次打开蓝桥云课ROS并加入课程在猿如意输入问题得到答案在蓝桥云课ROS验证如何通过turtlesim入门ROS机器人您可以通过以下步骤入门ROS机器人:安装ROS:您需要安装ROS,可以在ROS官网上找到安装指南。安装turtlesim&#x…...
小区业主入户安检小程序开发
小区业主入户安检小程序开发 可针对不同行业自定义安检项目,线下安检,线上留存(安检拍照/录像),提高安检人员安检效率 功能特性,为你介绍小区入户安检系统的功能特性。 小区管理;后台可添加需要安检的小区…...
【C++知识点】异常处理
✍个人博客:https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 📚专栏地址:C/C知识点 📣专栏定位:整理一下 C 相关的知识点,供大家学习参考~ ❤️如果有收获的话,欢迎点赞👍…...
【FATE联邦学习debug】 No module named ‘federatedml‘
直接pip install federatedml是无法找得到这个库的。 这个的原因是环境变量的事情,因为在部署文档中,本身提示我们要更新一些环境变量,如果不export那些变量,下面的fate_test其实也是无法测试成功的。 打开bin/init_env.sh&#x…...
【Git】P1 Git 基础
Git 基础Git 基本概念集中式版本控制工具 与 分布式版本控制工具Git 下载与安装Bash 初始设置创建本地仓库Git 三区概念一个简单的提交流程更改文件后再次提交git 实现版本切换查看提交日志设置 git 快捷键版本切换(一)版本切换(二࿰…...
智能交通数据集Rope3D(仅限科研使用)
Rope3D Dataset 官网:https://thudair.baai.ac.cn/index !!!如想要使用Rope3D数据集进行2D检测,最后有我们处理完的数据集链接。 !!! 介绍: DAIR-V2X数据集是首个用于…...
Java虚拟机JVM-面试题
1、Java 虚拟机是如何捕获异常的? 答: 在编译生成的字节码中,每个方法都附带一个异常表。异常表中的每一个条目代表一个异常处理器,并且由 from 指针、to 指针、target 指针以及所捕获的异常类型构成。这些指针的值是字节码索引…...
详细的说说Redis的数据类型
Redis是一个开源的内存数据库,它可以用作缓存、消息代理、实时数据处理和许多其他用途。Redis是一个key-value存储系统,其中数据存储在内存中,并通过网络进行访问。与传统的关系型数据库不同,Redis支持多种数据结构,包…...
798.差分矩阵
输入一个 n行 m列的整数矩阵,再输入 q个操作,每个操作包含五个整数 x1,y1,x2,y2,c,其中 (x1,y1)和 (x2,y2) 表示一个子矩阵的左上角坐标和右下角坐标。每个操作都要将选中的子矩阵中的每个元素的值加上 c。 请你将进行完所有操作后的矩阵输出…...
InfluxDB 2 介绍与使用 flux查询 数据可视化
一、关键概念 相比V1 移除了database 和 RP,增加了bucket。 V2具有以下几个概念: timestamp、field key、field value、field set、tag key、tag value、tag set、measurement、series、point、bucket、bucket schema、organization 新增的概念&…...
Qt QTreeView简单使用
QT-QTreeView使用方法 QTreeView: 用于显示树状结构数据,适用于树状结构数据的操作。 一、初始化 利用QStandardlternModel来初始化数据,标准的基于项数据的数据模型类, 每个项数据可以是任何数据类型。 // 初始化model QStandardItem…...
Wannacrypt蠕虫老树开花?又见Wannacrypt
Wannacrypt蠕虫是一个在2017年就出现的远古毒株,其利用永恒之蓝漏洞降维打击用户服务器,而后进行扩散勒索,曾经一度风靡全球,可谓是闻者伤心,听着落泪,因为这玩意解密是不可能 解密的。 而2023年的今天&am…...
结合基于规则和机器学习的方法构建强大的混合系统
经过这些年的发展,我们都确信ML即使不能表现得更好,至少也可以在几乎所有地方与前ML时代的解决方案相匹配。比如说一些规则约束,我们都会想到能否把它们替换为基于树的ml模型。但是世界并不总是黑白分明的,虽然机器学习在解决问题…...
Spring Security OAuth2实现多用户类型认证、刷新Token
原本的OAuth2登录支持用户名密码登录,现在还想支持另外用id号码和密码登录。但是OAuth2默认提供的UserDetailsService只允许传入一个参数:想要实现多种用户登录,是不是可以考虑loadUserByUsername方法携带多个参数呢?接下来记录一…...
云计算介绍,让你更了解云计算
同学们好! 第一次接触IT行业吗?没关系,看完这篇文章肯定会让你不再陌生。给自己几分钟时间,认真看完哦! 1、不知道什么是云计算? 网络计算云计算 官方定义是:通过网络提供可伸缩的分布式计算…...
阿里大佬翻遍全网Java面试文章,总结出这份1658页文档,GitHub收获25K+点赞
就目前大环境来看,跳槽成功的难度比往年高很多。一个明显的感受:今年的面试,无论一面还是二面,都很考验Java程序员的技术功底。这不又到了面试跳槽的黄金段,成功升职加薪,不成功饱受打击。当然也要注意&…...
【JDK1.8 新特性】Lambda表达式
1. 什么是Lambda表达式? Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。使用它可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达…...
【Vue.js】Vuex核心概念
文章目录全局状态管理模式Vuexvuex是什么?什么是“状态管理模式”?vuex的应用场景Vuex安装开始核心概念一、State1、单一状态树2、在 Vue 组件中获得 Vuex 状态3、mapState辅助函数二、Getter三、Mutation1、提交载荷(Payload)2、…...
react router零基础使用教程
安装既然学习 react router 就免不了运行 react安装 reactnpx create-react-app my-appcd my-appnpm start安装 react routernpm install react-router-dom如果一切正常,就让我们打开 index.js 文件。配置路由引入 react-router-dom 的 RouterProviderimport {Route…...
IOC三种依赖注入的方式,以及区别
目录构造方法注入(constructor injection)setter 方法注入(setter injection)接口注入(interface injection)三种方式比较构造方法注入(constructor injection) 构造方法中声明依赖…...
Ubuntu18安装新版本PCL-1.13,并和ROS自带PCL-1.8共存
文章目录1.安装新版本PCL-1.132.在工程中使用新版本的PCL-1.133.pcl-1.13误装到/usr/local/下如何卸载1.安装新版本PCL-1.13 下载PCL-1.13代码: 修改CMakeLists.txt文件,不编译vtk相关的代码:vtk的问题比较难解决,但是一般我们安…...
计算机图形学08:中点BH算法绘制抛物线(100x = y^2)
作者:非妃是公主 专栏:《计算机图形学》 博客地址:https://blog.csdn.net/myf_666 个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩 文章目录专栏推荐专栏系列文章序一、算法原理二、…...
基于java的高校辅导员工作管理系统
摘 要网络技术的快速发展给各行各业带来了很大的突破,也给各行各业提供了一种新的管理模块,对于高校辅导员工作管理将是又一个传统管理到智能化信息管理的改革,设计高校辅导员工作管理系统的目的就是借助计算机让复杂的班级信息、学籍信息等管…...
字节3次都没裁掉的7年老测试。掌握设计业务与技术方案,打开上升通道!
前言职场中的那些魔幻操作,研发最烦的是哪个?“面对业务需求的时候,可能都听过这样一句话:这个很简单,直接开发,三天内上线;”朋友说:“产品听了流泪,测试见了崩溃&#…...
详细介绍关于链表【数据结构】
文章目录链表单链表尾插头插尾删第一种方式删除第二种头删查找pos之前插入pos位置删除pos后面插入pos位置后面删除链表 顺序表缺点: 空间不够了 需要扩容,但是扩容是有消耗的头部或中间位置需要插入或删除,需要挪动 ,但是挪动是…...
两个网站链接如何做/国内最好的危机公关公司
1、什么是JavaScript 1.1、概述 JavaScript是一门世界上最流行的脚本语言。 Java与JavaScript关系:可以说除了名字,毫无关系 一个合格的后端人员,必须要精通JavaScript 1.2、 历史 https://blog.csdn.net/kese7952/article/details/793…...
直播网站建设重庆/seo网站关键词优化机构
3分钟学会,2种Wincc v14多语言组态,实现工控屏语言切换项目组态效果预览如下方动态图所示,挺好的吧!西门子WIncc V14项目多语言组态效果图一:必背技巧1.1:按钮事件组态系统函数修改显示语言(相比于利用VB脚…...
大连住房和城乡建设网站/企业关键词优化专业公司
1.flex-direction:设置伸缩项目的排列方式,即主轴的方向row 设置从左到右排列row-reverse 设置从右到左排列column 设置从上到下排列column-reverse 设置从下到上排列2.justify-content:调整主轴方向上的对齐方式,对于…...
wordpress设置静态访问不了/百度seo关键词排名优化
本文首发 http://zhaoda.net/2018/05/22/centos-php-nginx/转载请注明出处创建用户、组和目录 # web 用户和组 groupadd www useradd -g www www -s /sbin/nologin# 网站目录 mkdir -p /data/htdocs# 日志目录 mkdir -p /data/logs# 创建软件包下载和编译目录,后续软…...
北京城建建设工程有限公司网站/谷歌seo视频教程
一、group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。SELECT子句中的列名必须为分组列或列函数。列函数对于GROUP BY子句定义的每个组各返回一个结果。某个员工信息表结构和数据如下:[sql] view plaincopyprin…...
wordpress主题xiu/建立免费个人网站
fastai 学习笔记——lesson1 0-重要的参考网站 课程一详细笔记(https://github.com/hiromis/notes/blob/master/Lesson1.md) 课程一视频(https://www.bilibili.com/video/av41718196/?p1) 课程一源码(https://git…...