【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 代替,以读取整行输入。

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

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

相关文章

list集合自定义排序

一、基本类型排序 1.list中只有数字或字符串 //升序排序 List<T> ,T为数字或字符串 Collections.sort(list); //降序排序 Collections.sort(list,Collections.reverseOrder());2.list中为对象 基于jdk.18 import lombok.Data;Data public class User {private int i…

Linux基础指令(二)(文件、权限等)

目录 普通文件的操作 touch cat 翻页 标准输出重定向&#xff1a; 标准输出重定向种类&#xff1a;​​​​​​​ 管道符&#xff1a;&#xff5c; 压缩指令&#xff1a; zip gzip tar Linux下最常见的打包指令 其他系统指令&#xff1a;​​​​​​​ 快捷…

mysql update sql语句常见错误

以下update语句得不到预期结果 update event_detail set step_status1 and impact_area222isss.jsjd.lemem.com and end_time2024-06-14 17:23:39 where event_id91 and stepother_group2; 多个字段改动&#xff0c;不能使用 and连接&#xff0c;使用逗号“&#xff0c;”分隔即…

【C语言】进程间通信之管道pipe

进程间通信之管道pipe 一、进程间通信管道pipe()管道的读写行为 最后 一、进程间通信 管道pipe() 管道pipe也称为匿名管道&#xff0c;只有在有血缘关系的进程间进行通信。管道的本质就是一块内核缓冲区。 进程间通过管道的一端写&#xff0c;通过管道的另一端读。管道的读端…

【Python高阶编程】如何模拟生成训练日志并记录到文件

Python综合练习&#xff1a;生成训练日志 任务描述 在机器学习模型训练过程中&#xff0c;我们经常会记录模型的训练日志&#xff0c;包括accuracy&#xff08;准确率&#xff09;和loss&#xff08;损失&#xff09;。这个综合练习的目标是编写一段Python代码&#xff0c;模…

Linux下Shell脚本基础知识

主要参考视频&#xff1a; 这可能是B站讲的最好的Linux Shell脚本教程&#xff0c;3h打通Linux-shell全套教程&#xff0c;从入门到精通完整版_哔哩哔哩_bilibili 主要参考文档&#xff1a; Shell 教程 | 菜鸟教程 (runoob.com) Bash Shell教程 (yiibai.com) 先用视频入门&…

写在前面的话

《CSS in Depth》第二版开篇词 A minute to learn … A lifetime to master. ——Othello 「学会只需一分钟&#xff0c;精通却要一辈子」——这是诞生于上世纪的经典游戏《黑白棋》中的一个标语。 不知道看到这句话的你&#xff0c;是否有过这样的经历&#xff1a;在自己人生…

adb简单使用命令

1. 查看当前连接的设备 adb devices 2. 文件路径 adb install apk 注意文件路径中不能有中文 3. adb shell ps Toplogcatlogcat可以结合greplogcat *:w 显示警告级别以上de 4. adb uninstall 软件名 1.软件名如何查看&#xff1f; 使用命令adb shell pm list packages会…

基于springboot实现火锅店管理系统项目【项目源码+论文说明】

基于springboot实现火锅店管理系统演示 摘要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装火锅店管理系统软件来…

编译一个叫:未来的IDE-Zed编辑器(Windows平台)

一、前言 截止到2024-6-15&#xff0c;Zed官方并未给出Windows的二进制安装包&#xff0c;如果想在Windows平台使用的话需要自己编译&#xff0c;我是如何编译的请随我道来&#xff0c;有兴趣的码友可以尝试下&#xff0c;在下可不敢保证各位码友按我这方法能100%编译出来&…

【JavaEE进阶】——利用框架完成功能全面的图书管理系统

目录 &#x1f6a9;项目所需要的技术栈 &#x1f6a9;项目准备工作 &#x1f388;环境准备 &#x1f388;数据库准备 &#x1f6a9;前后端交互分析 &#x1f388;登录 &#x1f4dd;前后端交互 &#x1f4dd;实现服务器代码 &#x1f4dd;测试前后端代码是否正确 &am…

使用python获取内存信息

#!/usr/bin/python # -*- coding:utf-8 -*- psutil模块是一个跨平台的获取进程和系统应用情况&#xff08;CPU&#xff0c;内存&#xff0c;磁盘&#xff0c;网络&#xff0c;传感器&#xff09;的库。 该模块用于系统监控、限制进程资源和运行进程的管理等方面。 内存信息&am…

一些硬件知识(十)

MOS管当开关控制时&#xff0c;一般用PMOS做上管&#xff0c;NMOS做下管 细说MOS管知识-MOS管高端驱动与低端驱动解析和原理及区别_高端功率 mos 管是什么意思-CSDN博客 PMOS管&#xff1a; PMOS管的源极&#xff08;Source&#xff09;通常连接到正电源&#xff08;Vcc&#…

c++中内存对齐练习题

C/C 内存对齐题目练习_41在32位机器上用gcc编译以上代码-CSDN博客

西门子学习笔记15 - 位逻辑操作的学习

1、点动操作&#xff08;按下按钮就启动松开就停止&#xff09; 2、自锁电路&#xff08;可以自己保持的状态除非常闭停止按下&#xff09; 3、取反操作&#xff08;顾名思义就是反过来1就变成0&#xff0c;0就变成1&#xff09; 4、置为复位&#xff08;置位之后如果不复位的话…

SpringBoot自定义Starter及原理分析

目录 1.前言2.环境3.准备Starter项目4.准备AutoConfigure项目4.1 准备类HelloProperties4.2 准备类HelloService4.3 准备类HelloServiceAutoConfiguration4.4 创建spring.factories文件并引用配置类HelloServiceAutoConfiguration4.5 安装到maven仓库 5.在其他项目中引入自定义…

创建你的第一个Windows程序

第一个 Windows 程序 * 纯净版 #include<Windows.h>int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int iShowCmd ) {MessageBox(NULL, TEXT("Hello, Windows!"), TEXT("HelloMsg"), 1);return 0; }* 注释版 #…

困惑度作为nlp指标的理解示例

为了更清晰地说明困惑度的计算过程以及如何通过困惑度判断模型的优劣&#xff0c;我们可以通过一个简单的例子来演示。假设我们有一个非常简单的文本语料库和两个基础的语言模型进行比较。 示例文本 假设我们的文本数据包括以下两个句子&#xff1a; “cat sits on the mat”…

计算机网络:网络层 - 路由选择协议

计算机网络&#xff1a;网络层 - 路由选择协议 路由器的结构路由选择协议概述自治系统 AS内部网关协议路由信息协议 RIP距离向量算法RIP报文格式收敛问题 开放最短路径优先 OSPF基本工作原理自治系统分区 外部网关协议BGP-4 路由器的结构 如图所示&#xff0c;路由器被分为路由…

形参被引用修饰导致实参传递没有发生拷贝的原理是什么,return一个变量的引用要返回拷贝的数据的原理是什么

在C中&#xff0c;当我们谈论形参&#xff08;函数参数&#xff09;被引用修饰以及返回引用时&#xff0c;我们需要理解引用和拷贝之间的区别&#xff0c;以及它们是如何影响内存和数据传递的。 形参被引用修饰导致实参传递没有发生拷贝的原理&#xff1a; 当函数参数是引用类…