当前位置: 首页 > 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;不是必须…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

AI语音助手的Python实现

引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...

【SpringBoot自动化部署】

SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一&#xff0c;能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时&#xff0c;需要添加Git仓库地址和凭证&#xff0c;设置构建触发器&#xff08;如GitHub…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

Python竞赛环境搭建全攻略

Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型&#xff08;算法、数据分析、机器学习等&#xff09;不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...

麒麟系统使用-进行.NET开发

文章目录 前言一、搭建dotnet环境1.获取相关资源2.配置dotnet 二、使用dotnet三、其他说明总结 前言 麒麟系统的内核是基于linux的&#xff0c;如果需要进行.NET开发&#xff0c;则需要安装特定的应用。由于NET Framework 是仅适用于 Windows 版本的 .NET&#xff0c;所以要进…...

免费批量Markdown转Word工具

免费批量Markdown转Word工具 一款简单易用的批量Markdown文档转换工具&#xff0c;支持将多个Markdown文件一键转换为Word文档。完全免费&#xff0c;无需安装&#xff0c;解压即用&#xff01; 官方网站 访问官方展示页面了解更多信息&#xff1a;http://mutou888.com/pro…...

智能照明系统:具备认知能力的“光神经网络”

智能照明系统是物联网技术与传统照明深度融合的产物&#xff0c;其本质是通过感知环境、解析需求、自主决策的闭环控制&#xff0c;重构光与人、空间、环境的关系。这一系统由智能光源、多维传感器、边缘计算单元及云端管理平台构成&#xff0c;形成具备认知能力的“光神经网络…...