【C语言督学训练营 第二天】C语言中的数据类型及标准输入输出

news2024/7/6 20:46:43

文章目录

  • 一、前言
  • 二、数据类型
    • 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
      在这里插入图片描述
  • 不按格式化输入输出

    • 不按格式化输入输出(数据异常)
      在这里插入图片描述

    • 按照格式化输入输出(正常)
      在这里插入图片描述

  • 吞掉回车(缓冲区原因)

    • 异常情况(可以看出,输完两个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上一个开源项目搭建的,我也尝试搭建了一下,搭建成功但是只进行了测试,判题机也可以使用,希望后期我可以有测试用例,然后供大家使用,大家感兴趣的话也可以去试试。传送门
在这里插入图片描述


如果大家有什么疑问,欢迎评论区留言或者私信博主!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/393921.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

公安室内射击场设计

公安室内射击场是为了训练和提高警察、特警、部队等职业人士的射击技能而设计的。其设计需要考虑的因素包括安全性、实用性、灵活性、耐久性等多个方面。下面将详细介绍公安室内射击场的设计要点。 首先&#xff0c;安全性是设计公安室内射击场的最重要因素之一。射击场应该具备…

杂记——19.git上传时出现the remote end hung up unexpectedly错误

git是大家常用的项目版本控制工具&#xff0c;熟练地使用git可以提高开发效率&#xff0c;但是有时在使用git推送代码时&#xff0c;会提示“the remote end hung up unexpectedly”的问题&#xff0c;那么git推送代码提示“the remote end hung up unexpectedly”怎么解决呢&a…

Java多线程还不会的进来吧,为你量身打造

&#x1f497;推荐阅读文章&#x1f497; &#x1f338;JavaSE系列&#x1f338;&#x1f449;1️⃣《JavaSE系列教程》&#x1f33a;MySQL系列&#x1f33a;&#x1f449;2️⃣《MySQL系列教程》&#x1f340;JavaWeb系列&#x1f340;&#x1f449;3️⃣《JavaWeb系列教程》…

Anaconda的安装及使用

Anaconda集成了常用的扩展包&#xff0c;能够方便地对这些扩展包进行管理&#xff0c;比如安装和卸载包&#xff0c;这些操作都需要依赖conda。conda是一个在Windows、Mac OS和Linux上运行的开源软件包管理系统和环境管理系统&#xff0c;可以快速地安装、运行和更新软件包及其…

升压模块直流隔离低压转高压稳压电源5v12v24v转50V100V110V150V200V250V400V500V600V800V1000V

特点效率高达80%以上1*2英寸标准封装单电压输出价格低稳压输出工作温度: -40℃~85℃阻燃封装&#xff0c;满足UL94-V0 要求温度特性好可直接焊在PCB 上应用HRB W2~40W 系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为&#xff1a;4.5~9V、9~18V、及18~36VDC标准&…

计算机网络--网络基础

目录 一.互联网的组成 ​编辑 1.互联网的边缘部分 1.1客户-服务器方式 1.2对等连接方式 ​编辑 2.互联网的核心部分 2.1电路交换 2.2分组交换 2.3报文交换 二.计算机网络的类别 1.按网络的作用范围进行分类 2.按网络的使用者进行分类 3.用来把用户接入互联…

I.MX6ULL_Linux_系统篇(23) busybox文件系统构建

Linux“三巨头”已经完成了 2 个了&#xff0c;就剩最后一个 rootfs(根文件系统)了&#xff0c;本章我们就来学习一下根文件系统的组成以及如何构建根文件系统。这是 Linux 移植的最后一步&#xff0c;根文件系统构建好以后就意味着我们已经拥有了一个完整的、可以运行的最小系…

零代码工具我推荐Oracle APEX

云原生时代零代码工具我推荐Oracle APEX 国内的低码开发平台我也看了很多&#xff0c;感觉还是不太适合我这个被WEB抛弃的老炮。自从看了Oracle APEX就不打算看其它的了。太强大了&#xff0c;WEB服务器都省了&#xff0c;直接数据库到WEB页面。功能很强大&#xff0c;震撼到我…

快速将小程序生成APP八步走!

在开始之前&#xff0c;让我们一起来了解一下Finclip吧&#xff01; Finclip是凡泰极客公司研发的一款在开发体验、学习门槛、应用场景、生态能力等方面都体现巨大优势的小程序容器。不论是移动APP&#xff0c;还是电脑、电视、车载主机等设备&#xff0c;在集成Finclip小程序…

代码随想录算法训练营day52 | 动态规划之子序列 300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组

day52300.最长递增子序列1.dp[i]的定义2.状态转移方程3.dp[i]的初始化4.确定遍历顺序5.举例推导dp数组674. 最长连续递增序列1.确定dp数组&#xff08;dp table&#xff09;以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例推导dp数组718. 最长重复子数组1…

Linux驱动交叉编译把驱动文件放入开发板,以及printk函数打印级别

上一篇介绍了一个最简单的驱动程序和驱动程序大体结构&#xff0c;但那还是用本地编译只能在Ubuntu上运行&#xff0c;我们该怎么编译一个能加载到开发板上呢&#xff0c;就需要交叉编译&#xff0c;交叉编译通常都是在嵌入式开发中使用到的。 交叉编译 理解交叉编译前先了解…

TypeScirpt 入门与实战 学习笔记

文章目录求一键三连前言了解TS的前世今生基本实现数据类型枚举类型 enum&#xff08;用的少&#xff09;顶端类型&#xff08;通用类型&#xff09;anyunknown对比never数组只读 &#xff1a;readonly元组 类型objectObject和Object&#xff08;&#xff09;区分命名空间&#…

论文阅读 :Masked Autoencoders As Spatiotemporal Learners

NeurIPS2022——Masked Autoencoders As Spatiotemporal Learners Keywords&#xff1a; Videos&#xff1b;object detection&#xff1b; 文章目录NeurIPS2022——Masked Autoencoders As Spatiotemporal Learners研究动机本文贡献Introduction & Related work整体架构&…

redis进阶:mysql,redis双写一致性,数据库更新后再删除缓存就够了吗?

0. 引言 最近线上的一个状态修改功能出现了问题&#xff0c;一开始是运营找了过来&#xff0c;运营告知某条数据的状态已经开启了的&#xff0c;但是实际使用起来还是没有生效&#xff0c;于是拿到这个问题后&#xff0c;首先就去数据库查了这条数据&#xff0c;发现确实如他所…

深入了解字典树

字典树&#xff08;Trie&#xff09; 目录字典树&#xff08;Trie&#xff09;一、问题引入二、字典树介绍3、字典树的实现4、存储与查询一、问题引入 现有长度为n的字符串数组&#xff0c;[“go”&#xff0c;“goog”&#xff0c;“google”&#xff0c;“golang”&#xff0…

【数据结构入门】-链表之双向循环链表

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【数据结构初阶&#xff08;C实现&#xff09;】 文章目录链表初始化打印链表尾插尾删新建一个节点头插头删查找在pos之前插入*删除pos位…

CSS中的伪元素和伪类

一直被伪类和伪元素所迷惑&#xff0c;以为是同一个属性名称&#xff0c;根据CSS动画&#xff0c;索性开始研究a:hover:after&#xff0c;a.hover:after的用法。 伪元素 是HTML中并不存在的元素&#xff0c;用于将特殊的效果添加到某些选择器。 对伪元素的描述 伪元素有两…

【Verilog】握手信号实现跨时钟域数据传输-handshake

文章目录handshake握手电路使用握手信号实现跨时钟域数据传输接口信号图题目描述解题思路代码设计数据发送模块data_driver数据接收模块data_receivertestbench波形handshake握手电路 跨时钟域处理是个很庞大并且在设计中很常出现的问题握手(handshake)是用来处理信号跨时钟域…

数字化引领乡村振兴,VR全景助力数字乡村建设

一、数字乡村建设加速经济发展随着数字化建设的推进&#xff0c;数字化农业产业正在成为农业产业发展的主导力量&#xff0c;因此数字化技术赋予农业产业竞争力的能力不可小觑。数字化乡村建设背景下&#xff0c;数字化信息技术将全面改造升级农村产业&#xff0c;从农业、养殖…

new set数组对象去重失败

我们知道Set是JS的一个种新的数据结构&#xff0c;和数组类似&#xff0c;和数组不同的是它可以去重&#xff0c;比如存入两个1或两个"123"&#xff0c;只有1条数据会存入成功&#xff0c;但有个特殊情况&#xff0c;如果添加到set的值是引用类型&#xff0c;比如数组…