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

C/C++输入输出(1)

1.getchar和putchar

1.1getchar()

函数原型:

1  int getchar(void);

 getchar()函数返回用户从键盘输入的字符,使用时不带有任何参数。

程序运行到这个命令就会暂停,等待用户从键盘输入,等同于使用cin或scanf()方法读取一个字符。

getchar()函数原型定义在头文件<cstdio>。

#include"cstdio"
#include"iostream"
using namespace std;int main()
{int ch;ch=getchar();cout << ch << endl;cout << (char)ch << endl;return 0;
}

因为getchar()返回的是字符类型,所以不会忽略起首的空白字符,总是返回当前读取的第一个字符。

如果读取失败,返回常量EOF,由于EOF通常是-1,所以返回值的类型要设为int,而不是char。

我们可以直接按Ctrl+z来实现读取失败。

1.2putchar()

函数原型:

1  int putchar(int character);

putchar()函数将它的参数字符输出到屏幕,它的原型定义在头文件<cstdio>。

#include"cstdio"int main()
{int ch=0;ch=getchar();putchar(ch);return 0;
}

当操作成功时,putchar()返回输出的字符,否则返回EOF。

2.scanf和printf

2.1printf

printf()函数原型:

1  int printf(const char* format,……);

2.1.1基本用法

printf()的作用是将参数文本输出到屏幕上。

#include <cstdio>int main() 
{printf("Hello World");return 0;
}

printf()本身是不会在结尾处换行的,所以我们可以在结尾处增加一个\n,从而实现换行。

2.1.2占位符

printf()可以在输出文本中指定占位符。

#include <cstdio>int main()
{printf("There are %d apples\n", 3);return 0;
}

在上面我们能够看出%d就是占位符,表示这个位置要用其他值来替换。

同时在使用中,我们也可以使用多个占位符,使用顺序也是和占位符的顺序是一致的。

常见的占位符:

占位符介绍
%d十进制整数
%lld十进制long long int类型
%f小数(包含float和double)
%Lflong double类型浮点数
%c字符
%s字符串

2.1.3格式化输出

2.1.3.1限定宽度

printf()允许限定占位符的最小宽度。

#include"cstdio"int main()
{printf("%5d",123);return 0;
}

上面示例中,%5d表示这个占位符的宽度至少为5位。如果不满5位,对应的值的前面会添加空格。

输出端值默认是右对齐,即输出内容前面会有空格;如果希望改成左对齐,在输出内容后面添加空格,我们可以在%后面插入一个-号。

2.1.3.2限定小数位数

输出小数时,有时希望限定小数位数。

#include"cstdio"int main(){printf("%.2f",12.345);return 0;
}

当我们希望小数点后面只保留两位,占位符可以写成%.2f。

最小宽度和小数位数这两个限定值,都可以用*代替,通过printf()的参数传入。

#include"cstdio"int main(){printf("%*.*f",6,2,12.345);return 0;
}

上面%*.*f的两个星号通过printf()的两个参数6和2传入。

2.2scanf

scanf()函数原型:

1  int scanf( const char* format,……);

2.2.1基本用法

scanf()函数用于读取用户的键盘输入。

程序运行到scanf()这个语句时,会停下来,等待用户从键盘输入。

#include"cstdio"int main()
{int i=0;scanf("%d",&i);printf("%d\n",i);return 0;
}

注:

  1. scanf函数的占位符后面一般不会加\n,\n是换行,一般在输出的时候才使用。 
  2. scanf函数中存储数据的变量前面必须加上&运算符,因为scanf()需要的是地址,必须将变量的地址取出来传给scanf函数。
  3. scanf函数中指定的格式和给程序输入的数据格式要严格的匹配,否则可能不能得到想要的值。
  4. scanf()处理数值占位符时,会自动过滤空白字符,包括空格、制表符、换行符等。

2.2.2scanf的返回值

scanf()的返回是一个整数,表示成功读取的变量个数。

如果没有读取任何项,或者匹配失败,则返回0.如果在成功读取任何数据之前,发生了读取错误或者读取到文件结尾,则返回常量EOF(-1)。

#include"cstdio"int main()
{int a=0,b=0;float f=0;int r=scanf("%d %d %f",&a,&b,&f);printf("a=%d,b=%d,f=%f\n",a,b,f);printf("%d\n",r);return 0;
}

如果输入两个数后,按ctrl+z,提前结束输入。

如果输入的数据都不能匹配成功的话,则输出的r是0。

如果一个数字都不输入,直接按ctrl+z,输出的r是-1,也就是EOF。

2.3练习

练习1:浮点除法

#include"cstdio"
#include"iostream"
using namespace std;int main()
{int a=0;int b=0;cin >> a >> b;printf("%.3f",a*1.0/b);return 0;
}

 练习2:B2012 甲流疫情死亡率 - 洛谷

#include"cstdio"int main()
{int a=0,b=0;scanf("%d %d",&a,&b);printf("%.3f%%\n",b*100.0/a);return 0;
}

练习3: B2013 温度表达转化 - 洛谷

#include"cstdio"int main()
{double F=0;scanf("%lf",&F);double C=5*(F-32)/9.0;printf("%.5lf",C);return 0;
}

练习4:B2015 计算并联电阻的阻值 - 洛谷 

#include"cstdio"int main()
{float r1=0,r2=0;scanf("%f %f",&r1,&r2);printf("%.2f",r1*r2*1.0/(r1+r2));return 0;
}

练习5:B2014 与圆相关的计算 - 洛谷 

#include"cstdio"
#include"iostream"
using namespace std;double p=3.14159;
double r;int main()
{cin >> r ;printf("%.4lf %.4lf %.4lf",r*2,r*2*p,r*r*p);return 0;
}

练习6:B2004 对齐输出 - 洛谷 

#include"cstdio"int main()
{int a=0,b=0,c=0;scanf("%d %d %d",&a,&b,&c);printf("%8d %8d %8d",a,b,c);return 0;
}

练习7:信息学奥赛一本通(C++版)在线评测系统 

#include"iostream"
#include"cstdio"
using namespace std;int a,b,c,d,e;int main()
{cin >> a >> b >> c >> d >> e;a/=3;e+=a;b+=a;b/=3;a+=b;c+=b;c/=3;b+=c;d+=c;d/=3;c+=d;e+=d;e/=3;d+=e;a+=e;printf("%5d%5d%5d%5d%5d",a,b,c,d,e);return 0;
}

3.cin和cout

  • cin是C++中提供的标准输入流对象
  • cout是C++中提供的标准输出流对象
  • cin和cout的输入输出非常方便,不需手动控制格式,能够自动识别变量类型

3.1基本用法 

#include <iostream>
using namespace std;int main()
{int a;char c;float f;cin >> a; // 读取⼀个整数cin >> c; // 读取⼀个字符cin >> f; // 读取取⼀个浮点数cout << "打印结果:"<<endl;cout << a << endl;cout << c << endl;cout << f << endl;return 0;
}

练习:

练习1:P5705 【深基2.例7】数字反转 - 洛谷

#include"iostream"
using namespace std;int main()
{char a,b,c,d,e;cin >> a >> b >> c >> d >> e;cout << e << d << c << b << a << endl;return 0;
}

练习2:P5708 【深基2.习2】三角形面积 - 洛谷

#include"cstdio"
#include"cmath"
#include"iostream"
using namespace std;int main()
{double a,b,c;cin >> a >> b >> c;double p=(a+b+c)/2;printf("%.1f",sqrt(p*(p-a)*(p-b)*(p-c)));return 0;
}

相关文章:

C/C++输入输出(1)

1.getchar和putchar 1.1getchar() 函数原型&#xff1a; 1 int getchar(void); getchar()函数返回用户从键盘输入的字符&#xff0c;使用时不带有任何参数。 程序运行到这个命令就会暂停&#xff0c;等待用户从键盘输入&#xff0c;等同于使用cin或scanf()方法读取一个字符…...

前端面试场景题葵花宝典之四

87.场景面试之大数运算&#xff1a;超过js中number最大值的数怎么处理 在 JavaScript 中&#xff0c;Number.MAX_SAFE_INTEGER&#xff08;即 2^53 - 1&#xff0c;即 9007199254740991&#xff09;是能被安全表示的最大整数。超过此值时&#xff0c;普通的 Number 类型会出现…...

探索Elasticsearch:索引的CRUD

在企业环境中&#xff0c;Elasticsearch的索引CRUD&#xff08;创建Create、读取Read、更新Update、删除Delete&#xff09;操作是非常基础且频繁使用的功能。这些操作对于管理和维护数据至关重要&#xff0c;尤其是在处理大规模数据集和需要实时搜索与分析的应用场景中。 目录…...

Java数据结构第十六期:走进二叉树的奇妙世界(五)

专栏&#xff1a;Java数据结构秘籍 个人主页&#xff1a;手握风云 目录 一、非递归实现遍历二叉树 1.1. 二叉树的前序遍历 1.2. 二叉树的中序遍历 1.3. 二叉树的后序遍历 一、非递归实现遍历二叉树 1.1. 二叉树的前序遍历 我们这里要使用栈来进行实现。我们反向思考一下为…...

【开源免费】基于SpringBoot+Vue.JS疫情管理系统(JAVA毕业设计)

本文项目编号 T 227 &#xff0c;文末自助获取源码 \color{red}{T227&#xff0c;文末自助获取源码} T227&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...

有关Java中的集合(1):List<T>和Set<T>

学习目标 核心掌握List集合了解Set集合 1.List<T> ● java.util.List。有序列表。 ● List集合元素的特点&#xff1a;有序表示存取有序&#xff08;因为有索引&#xff09;而且可以重复 ● List常用实现类&#xff1a; ArrayList、LinkedList、Vector等 1.1 常用方法…...

使用 Spring Boot 实现前后端分离的海康威视 SDK 视频监控

使用 Spring Boot 实现前后端分离的海康威视 SDK 视频监控系统&#xff0c;可以分为以下几个步骤&#xff1a; 1. 系统架构设计 前端&#xff1a;使用 Vue.js、React 或 Angular 等前端框架实现用户界面。后端&#xff1a;使用 Spring Boot 提供 RESTful API&#xff0c;负责与…...

在 Apache Tomcat 中,部署和删除项目

在 Apache Tomcat 中&#xff0c;部署和删除 WAR 文件是常见的操作。以下是详细步骤&#xff1a; 1. 删除 WAR 文件 (1) 停止应用 进入 Tomcat 的管理界面&#xff08;默认地址&#xff1a;http://localhost:8080/manager/html&#xff09;。 找到需要删除的应用&#xff0c;…...

宇树科技G1人形机器人:从炫技到实用,AI驱动下的进化跃迁‌

‌ 宇树科技的G1人形机器人近期凭借“720度回旋踢”“走梅花桩”等高难度动作频频出圈&#xff0c;成为人形机器人领域的现象级产品。 G1人形机器人看似炫技的表演背后&#xff0c;实则暗含了技术突破的深意。G1的每一次技能升级&#xff0c;都是对机器人运动控制、平衡算法和A…...

给定计算预算下的最佳LLM模型尺寸与预训练数据量分配

给定计算预算下的最佳LLM模型尺寸与预训练数据量分配 FesianXu 20250304 at Wechat Search Team 前言 如果给定了计算预算 C C C&#xff0c;如何分配LLM的模型尺寸 N N N和训练的数据量 D D D&#xff0c;才能使得模型的效果 L L L最好呢&#xff1f;笔者在此介绍一篇经典的文…...

H5DS编辑器是如何让企业快速构建动态页面

H5DS编辑器核心亮点&#xff1a; 1.拖拽式操作&#xff0c;小白友好&#xff1a;无需设计与代码基础&#xff01;通过简单拖拽元素、调整文字和动画&#xff0c;即可生成交互式H5页面。内置海量模板和素材库&#xff0c;支持自定义设计风格&#xff0c;轻松适配企业品牌需求。…...

面试题汇总(一)

熙牛医疗面经 1.平衡二叉树的概念 平衡二叉树是一种二叉搜索树&#xff0c;他的左右两个字数的高度差绝对值不超过1&#xff0c;并且左右两个子树都是一颗平衡二叉树&#xff0c;通过左旋&#xff0c;右旋&#xff0c;左右双旋&#xff0c;右左双旋&#xff0c;来保持平衡&…...

论坛系统测试报告

目录 一、项目背景二、论坛系统测试用例思维导图三、论坛系统测试3.1界面测试3.2登陆测试3.3主页测试3.4个人中心测试 四、自动化测试脚本4.1配置驱动4.2创建浏览器类4.3功能测试4.3.1登陆测试4.3.2注册测试4.3.3主页测试4.3.4帖子编辑4.3.5运行主代码 五、BUG分析六、测试总结…...

算法比赛中处理输入和输出

在算法比赛中&#xff0c;不推荐使用 Scanner 和 System.out.println()。Scanner 线程安全&#xff0c;有大量同步操作&#xff0c;读取输入时每次都要解析数据类型&#xff0c;处理大数据量时性能开销大、效率低&#xff0c;易使程序超时间限制。System.out.println() 每次调用…...

llama.cpp: GGUF格式及模型量化参数介绍

GGUF格式介绍 GGUF&#xff08;GPT-Generated Unified Format&#xff09;是推理框架llama.cpp 中使用的一种专为大语言模型设计的二进制文件格式&#xff0c;旨在实现模型的快速加载和保存&#xff0c;同时易于读取。GGUF格式的特点&#xff1a; 单文件部署&#xff1a;模型…...

PGlite:浏览器中运行的PostgreSQL

PGlite 是一款基于 WebAssembly&#xff08;WASM&#xff09;构建的轻量级 PostgreSQL 数据库引擎&#xff0c;旨在简化开发者在浏览器、Node.js、Bun 或 Deno 环境中运行 PostgreSQL。PGlite 无需复杂的安装或配置&#xff0c;特别适合开发测试、本地化应用及快速原型设计。 一…...

【C++】vector(上):vector的常用接口介绍

文章目录 前言一、vector的介绍二、vector的常用接口介绍1.vector类对象的常见构造2.vector iterator 的使用3.vector类对象的容量操作3.1 size、capacity 和 empty的使用3.2 reserve的使用3.3 resize的使用 4.vector类对象的访问&#xff08;包含data&#xff1a;返回底层数组…...

【算法】二分查找(上)

目录 一、写好二分查找的四个步骤 二、在排序数组中查找元素的第一个和最后一个位置 三、搜索插入位置 四、x的平方根 通过上篇文章【手撕二分查找】&#xff0c;我们知道了二分查找的【四要素】&#xff1a;初始值、循环条件、mid的计算方式、左右边界更新语句。 循环条件…...

【人工智能】GPT-4 vs DeepSeek-R1:谁主导了2025年的AI技术竞争?

前言 2025年&#xff0c;人工智能技术将迎来更加激烈的竞争。随着OpenAI的GPT-4和中国初创公司DeepSeek的DeepSeek-R1在全球范围内崭露头角&#xff0c;AI技术的竞争格局开始发生变化。这篇文章将详细对比这两款AI模型&#xff0c;从技术背景、应用领域、性能、成本效益等多个方…...

linux nginx 安装后,发现SSL模块未安装,如何处理?

?? 主页&#xff1a; ?? 感谢各位大佬 点赞?? 收藏 留言?? 加关注! ?? 收录于专栏&#xff1a;运维工程师 文章目录 前言SSL模块安装 前言 nginx 安装后&#xff0c;发现SSL模块未安装&#xff0c;如果不需要配置SSL域名&#xff0c;就无关紧要。但是很多时候客户后…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...