当前位置: 首页 > news >正文

【C++】 基础复习 | 数据类型,输入,输出流 scanf printf

文章目录

  • 1 基本数据类型
    • 1.1 基本数据类型
    • 1.2 构造类型
    • 1.3 指针类型(Pointers)
  • 2 基础输入输出
    • 2.1 通过输入输出操作符>> <<
    • 2.2 通过scanf和printf输入和输出
      • 2.2.1 输出`printf` 函数
      • 2.2.2 输出`scanf` 函数
      • 2.2.3 注意事项

1 基本数据类型

了解数据类型有什么用?

首先就是知道存储的大致的范围,避免超过越界

再者方便输入输出

1.1 基本数据类型

  1. 整型(Integral types)
    • int:标准整数类型。通常占用 4 个字节,范围通常是 -2,147,483,648 到 2,147,483,647。
    • short:短整数类型。通常占用 2 个字节,范围通常是 -32,768 到 32,767。
    • long:长整数类型。通常占用 4 个或 8 个字节,范围取决于具体实现。
    • long long:更长的整数类型。通常占用 8 个字节,范围是 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。
    • unsigned 版本:可以用于上述所有类型,表示无符号整数(例如 unsigned intunsigned short 等)。
  2. 字符型(Character types)
    • char:字符类型。通常占用 1 个字节,范围是 -128 到 127 或 0 到 255(取决于是否为有符号类型)。
    • unsigned char:无符号字符类型。范围是 0 到 255。
    • signed char:有符号字符类型。范围是 -128 到 127。
  3. 浮点型(Floating-point types)
    • float:单精度浮点数。通常占用 4 个字节,范围大约是 1.2E-38 到 3.4E+38,精度大约为 6 位小数。
    • double:双精度浮点数。通常占用 8 个字节,范围大约是 2.3E-308 到 1.7E+308,精度大约为 15 位小数。
    • long double:扩展精度浮点数。通常占用 12 或 16 个字节,范围和精度取决于具体实现。
  4. 布尔型(Boolean type)
    • bool:布尔类型。只有两个值:truefalse

1.2 构造类型

  1. 数组(Arrays)

    • 用于存储相同类型元素的集合。例如,int arr[10]; 定义了一个包含 10 个整数的数组。
  2. 结构体(Structures)

    • 用户定义的复合数据类型,用于将不同类型的数据组合在一起。例如:

      struct Person {std::string name;int age;float height;
      };
      
  3. 联合体(Unions)

    • 类似于结构体,但所有成员共享同一块内存。例如:

      union Data {int i;float f;char c;
      };
      
  4. 枚举(Enumerations)

    • 定义一组命名的整型常量。例如:

      enum Color { RED, GREEN, BLUE };
      

1.3 指针类型(Pointers)

  • 存储内存地址的变量。指针类型包括指向基本类型、构造类型和函数的指针。例如:

    int *ptr;
    

还有空类型

  • void:用于表示没有类型。通常用于函数返回类型,表示函数不返回任何值。

类型别名

  • 使用 typedef 定义类型别名。例如:

    typedef unsigned int uint;
    

示例代码:

#include <iostream>
#include <string>int main() {int a = 10;float b = 3.14f;double c = 2.718281828;char d = 'A';bool e = true;std::string str = "Hello, World!";int arr[5] = {1, 2, 3, 4, 5};struct Person {std::string name;int age;};Person p = {"Alice", 30};std::cout << "int: " << a << std::endl;std::cout << "float: " << b << std::endl;std::cout << "double: " << c << std::endl;std::cout << "char: " << d << std::endl;std::cout << "bool: " << e << std::endl;std::cout << "string: " << str << std::endl;for(int i = 0; i < 5; i++) {std::cout << "arr[" << i << "]: " << arr[i] << std::endl;}std::cout << "Person name: " << p.name << ", age: " << p.age << std::endl;return 0;
}

2 基础输入输出

2.1 通过输入输出操作符>> <<

  • 输入操作符 >> 用于从输入流中提取数据并将其存储到变量中。

  • 语法:变量名 >> 输入数据

  • 输出操作符 << 用于将数据输出到输出流中。

  • 语法:输出流对象 << 数据

例子:

int age;
cout << "请输入您的年龄: ";
cin >> age;
cout << "您的年龄是: " << age << endl;

这个其实很好理解,也是很多人上来去学习C++输入输出的第一件事情。

称做流式输入输出,<< 其实指明了流动的方向,所以非常亲民

在这种情况下如果想控制输出,即满足一定格式输出,比如保留几位小数什么的,就要用manipulator了

  • 常用的 manipulator 包括:
    • setw(n):设置输出宽度,不足部分用空格填充。
    • setprecision(n):设置精度,控制小数点后显示的位数。
    • left:左对齐。
    • right:右对齐。
    • fixed:固定格式输出小数。
    • scientific:科学计数法输出。

2.2 通过scanf和printf输入和输出

scanfprintf 是 C 语言中两个非常重要的标准输入输出函数,它们分别用于从标准输入(通常是键盘)读取数据和向标准输出(通常是屏幕)打印数据。

相比较cin和cout,scanf和printf往往会更加的高效

2.2.1 输出printf 函数

printf 函数用于格式化输出数据。它的基本语法如下:

int printf(const char *format, ...);
  • format 是一个格式字符串,指定了输出的格式。这里的格式指定,可以添加其他字符,增加空格什么的,非常强大
  • ... 是可变参数列表,指定了要输出的数据。

format 字符串可以包含以下几种内容:

  • 普通字符,会原样输出。
  • 格式说明符,用于指定如何输出变量的值。

常见的格式说明符有:

  • %d:输出整数
  • %f:输出浮点数
  • %c:输出单个字符
  • %s:输出字符串
  • %x:输出十六进制整数

示例:

#include <stdio.h>int main() {int num = 10;float pi = 3.1415926;char letter = 'A';char str[] = "Hello, World!";printf("整数: %d\n", num);printf("浮点数: %.2f\n", pi);printf("字符: %c\n", letter);printf("字符串: %s\n", str);return 0;
}

输出

整数: 10
浮点数: 3.14
字符: A
字符串: Hello, World!

重要知识点

1 可以看到如果想要保留两位小数,则直接%.2f就可以了

2 会看到有\n 代表换行,这是一种特殊的字符

3 多个变量输出

#include<iostream>
using namespace std;
int main(){int a=3;int b=5;printf("%d %d",a,b);
}

2.2.2 输出scanf 函数

scanf 函数用于从标准输入读取数据,并根据格式字符串解析这些数据。它的基本语法如下:

int scanf(const char *format, ...);
  • format 是一个格式字符串,指定了输入数据的格式。
  • ... 是指向变量的指针,用于存储读取到的数据。

format 字符串可以包含格式说明符,这些说明符与 printf 中的类似,但需要注意的是,scanf 需要变量的地址 ,即前面需要加一个&。注意字符串的话则不需要,具体看下面的例子

常见的格式说明符有:

  • %d:读取整数
  • %f:读取浮点数
  • %c:读取单个字符
  • %s:读取字符串

示例:

#include <stdio.h>int main() {int num;float pi;char letter;char str[50];printf("请输入一个整数: ");scanf("%d", &num);printf("请输入一个浮点数: ");scanf("%f", &pi);printf("请输入一个字符: ");scanf(" %c", &letter);printf("请输入一个字符串: ");scanf("%s", str);printf("你输入的整数是: %d\n", num);printf("你输入的浮点数是: %.2f\n", pi);printf("你输入的字符是: %c\n", letter);printf("你输入的字符串是: %s\n", str);return 0;
}

2.2.3 注意事项

  1. scanf 的格式说明符前必须带上变量的地址符 &,但对字符数组(字符串)不需要。
  2. printfscanf 的格式说明符要严格匹配变量类型,否则可能导致未定义行为。
  3. scanf 读取字符串时,遇到空格会停止,可以使用 fgets 代替,以读取整行输入。

相关文章:

【C++】 基础复习 | 数据类型,输入,输出流 scanf printf

文章目录 1 基本数据类型1.1 基本数据类型1.2 构造类型1.3 指针类型&#xff08;Pointers&#xff09; 2 基础输入输出2.1 通过输入输出操作符>> <<2.2 通过scanf和printf输入和输出2.2.1 输出printf 函数2.2.2 输出scanf 函数2.2.3 注意事项 1 基本数据类型 了解…...

linux pxe和无人值守

一 PXE和无人值守 pxe c/s模式 允许客户端通过网络从远程服务器&#xff08;服务端&#xff09;下载引导镜像 加载安装文件 实现自动化安装操作系统 无人值守 就是安装选项不需要认为干预 可以自动化实现 pxe的优点 1 规模化 同时装配多台服务器 20多 30台 2 自动化 …...

Questflow借助MongoDB Atlas以AI重新定义未来工作方式

MongoDB客户案例导读 Questflow借助MongoDB Atlas赋能AI员工&#xff0c;助力中小型初创企业自动化工作流程&#xff0c;简化数据分析&#xff0c;提升客户体验&#xff0c;推动AI与员工的协作&#xff0c;重新定义未来工作方式。 协作式AI自动化平台 无需编码即可拥有自己的…...

数值计算精度问题(浮点型和双整型累加精度测试)

这篇博客介绍双整型和浮点数累加精度问题,运动控制轨迹规划公式有大量对时间轴的周期累加过程,如果我们采用浮点数进行累加,势必会影响计算精度。速度的不同 进一步影响位置积分运算。轨迹规划相关问题请参考下面系列文章,这里不再赘述: 1、博途PLC 1200/1500PLC S型速度曲…...

算法训练营day56

题目1&#xff1a;300. 最长递增子序列 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int lengthOfLIS(vector<int>& nums) {// dp数组含义是第i个数的严格递增子序列的长度// 内层的递推公式就是 取 0 到 i - 1之间最大的dp数组 然后 1vector…...

基于STM32的智能水产养殖系统(二)

TPS5433IDR TPS5433IDR 是一款由德州仪器 (Texas Instruments) 生产的高效降压转换器&#xff08;Buck Converter&#xff09;。它能够将较高的输入电压转换为较低的输出电压&#xff0c;适用于各种电源管理应用。 主要特性 输入电压范围: 5.5V 至 36V输出电压范围: 0.9V 至 …...

[工具探索]富士mini90拍立得使用指南

文章目录 1. 基本功能介绍1.1 相机外观1.2 电池与胶片 2. 设置相机2.1 装入电池2.2 装入胶片 3. 拍摄模式3.1 标准模式3.2 儿童模式3.3 远景模式3.4 双重曝光模式3.5 Bulb&#xff08;B&#xff09;模式3.6 **派对模式**3.7 微距模式3.8 **亮度模式**3.9 **定时拍摄模式**3.10 …...

VMware导入小白分享的MacOS版本之后,无法开机的解决方案

前言 这段时间陆续有小伙伴找到小白&#xff0c;说&#xff1a;导入小白分享的MacOS版本之后&#xff0c;出现无法开机的问题。 遇到这个问题&#xff0c;并不是说明分享版本有问题&#xff0c;因为大部分小伙伴导入之后都没有出现类似的问题&#xff0c;都是导入之后开机&…...

【CSAPP导读】导论

目录 &#x1f308; 前言&#x1f308; &#x1f4c1; 书籍介绍 &#x1f4c1; 阅读路线 &#x1f4c1; 总结 &#x1f308; 前言&#x1f308; 《深入理解计算机系统》书籍是由布赖恩特(Bryant,R.E.)著的一本经典计算机科学教材&#xff0c;常被简称为"CSAPP"&a…...

“新E代弯道王”MAZDA EZ-6亮相2024重庆国际车展

6月7日-6月16日&#xff0c;第二十六届重庆国际车展隆重开幕&#xff0c;合资品牌首款基于纯电平台的新能源轿车MAZDA EZ-6&#xff08;以下称EZ-6&#xff09;领衔长安马自达全系车型亮相N8馆T01展台。车展期间&#xff0c;重庆及周边地区的马自达用户、粉丝、车友可前往长安马…...

【lesson11】客户端backUp类的实现

文章目录 成员变量成员函数backUpgetFileIdentifierisNeedUploadupLoadRunMoudle 成员变量 private:std::string _back_dir;//备份文件夹路径名dataManager* _data;//dataManager指针对象成员函数 backUp backUp(const std::string& back_dir, const std::string& b…...

数据结构--关键路径

事件v1-表示整个工程开始&#xff08;源点&#xff1a;入度为0的顶点&#xff09; 事件v9-表示整个工程结束&#xff08;汇点&#xff1a;出度为0的顶点&#xff09; 关键路径&#xff1a;路径长度最长的路径 求解关键路径问题&#xff08;AOE网&#xff09; 定义四个描述量 …...

SSTI注入漏洞

SSTI注入漏洞 1.SSTI注入概述2.SSTI检测工具3.SSTI利用方法Java基本FreeMarker (Java)ThymeleafSpring Framework (Java)Spring视图操作&#xff08;Java&#xff09;Smarty (PHP)Twig (PHP)Jade (NodeJS)NUNJUCKS (NodeJS)ERB (Ruby)Jinja2 (Python)Mako (Python)ASP 1.SSTI注…...

Day11 - Day15

Day11 - Day15 Day11&#xff08;1998年Text1&#xff09; Perhaps it is humankind’s long suffering at the mercy of flood and drought that makes the idea of forcing the waters to do our bidding so fascinating. 也许正是人类长期在洪水和干旱支配下所遭受的苦难&a…...

启航信息学奥林匹克:青少年NOI学习路线与策略指南

在全球范围内&#xff0c;信息学奥林匹克竞赛&#xff08;NOI&#xff09;不仅是青少年展示编程和算法能力的舞台&#xff0c;更是未来计算机科学家和工程师的摇篮。本文将为志在参加NOI的青少年们提供一条清晰的学习路线和实用的建议&#xff0c;帮助你们在这条充满挑战与机遇…...

易舟云财务软件:数字化时代的财务管家

在数字化浪潮的推动下&#xff0c;财务软件成为了企业提升财务管理效率、实现数字化转型的关键工具。易舟云财务软件&#xff0c;正是这样一款深受企业喜爱的财务管理系统。本文将带你详细了解易舟云财务软件的特点、版本区别以及如何使用它来优化财务工作。 易舟云财务软件的特…...

catia零件装配中通过指南针移动零件

1 将零件导入进来后 2 把指南针移动到零件上 具体移动哪个可以通过模型树点击选中&#xff0c;选中那个就可以移动那个。 这种情况需要注意的是 需要双击选择要移动零件的父节点 如下图&#xff0c;Product2蓝色表示是激活的&#xff0c;这样才可以单击选中下面的零件后通过…...

如何使用免费的 Instant Data Scraper快速抓取网页数据

Instant Data Scraper 是一款非常简单易用的网页数据爬虫工具&#xff0c;你不需要任何代码知识&#xff0c;只需要点几下鼠标&#xff0c;就可以把你想要的数据下载到表格里面。以下是详细的使用步骤&#xff1a; 第一步&#xff1a;安装 Instant Data Scraper 打开谷歌浏览…...

【仿真建模-anylogic】事件之手动定时触发

Author&#xff1a;赵志乾 Date&#xff1a;2024-06-11 Declaration&#xff1a;All Right Reserved&#xff01;&#xff01;&#xff01; 问题&#xff1a;建模过程中经常遇到需要临时规划特定逻辑执行时机的场景&#xff1b; 解决方案&#xff1a;在Event的User Control模…...

ElasticSearch学习笔记之三:Logstash数据分析

第3章 Logstash数据分析 Logstash使用管道方式进行日志的搜集处理和输出。有点类似*NIX系统的管道命令 xxx | ccc | ddd&#xff0c;xxx执行完了会执行ccc&#xff0c;然后执行ddd。 在logstash中&#xff0c;包括了三个阶段: 输入input --> 处理filter&#xff08;不是必须…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

nnUNet V2修改网络——暴力替换网络为UNet++

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...

shell脚本质数判断

shell脚本质数判断 shell输入一个正整数,判断是否为质数(素数&#xff09;shell求1-100内的质数shell求给定数组输出其中的质数 shell输入一个正整数,判断是否为质数(素数&#xff09; 思路&#xff1a; 1:1 2:1 2 3:1 2 3 4:1 2 3 4 5:1 2 3 4 5-------> 3:2 4:2 3 5:2 3…...

Qt Quick Controls模块功能及架构

Qt Quick Controls是Qt Quick的一个附加模块&#xff0c;提供了一套用于构建完整用户界面的UI控件。在Qt 6.0中&#xff0c;这个模块经历了重大重构和改进。 一、主要功能和特点 1. 架构重构 完全重写了底层架构&#xff0c;与Qt Quick更紧密集成 移除了对Qt Widgets的依赖&…...

无需布线的革命:电力载波技术赋能楼宇自控系统-亚川科技

无需布线的革命&#xff1a;电力载波技术赋能楼宇自控系统 在楼宇自动化领域&#xff0c;传统控制系统依赖复杂的专用通信线路&#xff0c;不仅施工成本高昂&#xff0c;后期维护和扩展也极为不便。电力载波技术&#xff08;PLC&#xff09;的突破性应用&#xff0c;彻底改变了…...

ABAP设计模式之---“Tell, Don’t Ask原则”

“Tell, Don’t Ask”是一种重要的面向对象编程设计原则&#xff0c;它强调的是对象之间如何有效地交流和协作。 1. 什么是 Tell, Don’t Ask 原则&#xff1f; 这个原则的核心思想是&#xff1a; “告诉一个对象该做什么&#xff0c;而不是询问一个对象的状态再对它作出决策。…...

数据可视化交互

目录 【实验目的】 【实验原理】 【实验环境】 【实验步骤】 一、安装 pyecharts 二、下载数据 三、实验任务 实验 1&#xff1a;AQI 横向对比条形图 代码说明&#xff1a; 运行结果&#xff1a; 实验 2&#xff1a;AQI 等级分布饼图 实验 3&#xff1a;多城市 AQI…...