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

2.C语言——输入输出

1.字符输入输出函数

1.输入:getchar()

字面意思,接收单个字符,使用方法

char a;
a = getchar();实际上效果等同于char a;
scanf("%c",&a);

2.输出:putchar()
在这里插入图片描述
在这里插入图片描述

2.格式化输入输出函数

1.输入:scanf()

格式: scanf(“格式控制字符串”,地址列表);

如果格式符之间添加了空格,那么按照规则,会忽略掉全部的空白符直到遇到下一个不是空白符的字符

格式说明符意义
%d输入有符号的十进制数
%u输入无符号的十进制数
%o输入无符号的八进制数
%x/X输入无符号的十六进制数
%i输入八进制,十进制,十六进制数 (更通用)
%c输入单个字符
%s输入字符串,将字符串送到一个字符组中,在输入时以非空白字符开始以第一个空白字符结束
%f输入实数,可以用小数形式或指数形式输入
%e,E,g,G与f作用相同,e与f,g可以相互替换

附加格式符(也称修饰符)

字符说明
h输入短整型数据(可用到%hd,%ho,%hx)
l输入长整型数据(可用到%ld,%1o,%lx.%lu)以及double型数据%lf,%le)
域宽指定输入数据所占的宽度(列数),域宽应为正整数
*本输入项在读入后不赋给相应的变量

举例
读入整数

读入一个整数:
int a;
scanf("%d",&a);读入多个整数  输入12 1 3
int a,b,c;
scanf("%d %d %d,&a,&b,&c);读入以逗号分隔的多个整数:  输入1,2,3
int a,b,c;
scanf("%d,%d,%d",&a,&b,&c);总之一句话,按照格式输入进行读取整数

读入其他类型的数字
参考读入整数,其他类型的数字使用方式相同,要注意的是
为了读取长整数,可以将 l 放在格式说明符的前面(如%ld,%lu);
为了读取短整数,可以将 h 放在格式说明符的前面(如%hd),
如果要强调。这些修饰符可以与 d、i、o、u 和 x 格式代码一起使用。

读入单个字符
在用%c格式声明输入字符时,空格“转义字符”中的字符都会作为有效字符输入!所以如果要连续赋给变量

scanf(”%c%c%c",&a,&b,&c),此时应该连续输入abc,而不是a b c。int i;
char k;
scanf("%d %c",&i,&k);
/**
* 这个时候输入"1\na"和"1a"的效果是一样的,因为无论怎么换行,都属于空白符,会被忽略
*/
scanf("%d%c",&i,&k);
/**
* 这个时候输入"1\na",运行后k会接收到换行符,而不是"a",因为空白符没有被忽略,而%c对所有字符一视同仁。
*/

读入字符串
始终要注意的是读入字符串是scanf()方法的功能,而该方法是属于c的,因此它不支持c++新增的string类型

char str[80];
scanf("%s",str);//注意这里不需要&,因为str是数组,传入的已经是指针了

要注意%s虽然是读入字符串,但它也会忽略空白符,下面例子中的两行scanf()方法是等价的,因为%s本身就有忽略空白符的功能。

char stra[80];
char strb[80];
scanf("%s %s",stra,strb);
scanf("%s%s",stra,strb);
以非空白字符开始,以第一个空白字符结束为第一个字符串

虽然会忽略空白符,但是会主动的在最后一个字符后添加"\0"表示字符串结束(也因此,char数组不需要初始化就可以接受字符串,一般情况下不影响操作),因此在设置char数组长度时候,最好要比理论中的最大长度多预留一个长度

char str[5];//如果题目接受的最大字符串长度是4,那么设置的数组长度最好大于等于5
scanf("%s",str);

要注意的是,方法对空白符的忽略不是抛弃了空白符,如果没有继续读下去的话,接受字符串后的空白符是会保留在缓冲区的,这个时候使用%c接收是可以接收到,这个可能困扰了很多人,一定要注意。

char k;
char str[10];
scanf("%s%c",str,&k);
/**
* 如果输入"abcd",那么会直接运行结束,str="abcd",k='\n'
*/

输出

1.输出:printf()

printf函数一般格式:printf(格式控制,输出列表)

格式说明部分由“%”和“格式字符串”组成。它表示按规定的格式输出数据。

格式说明的形式为:%[flags][width][. prec][h|L]type
各部分说明如下。

  • flags

    — 左对齐输出;默认为右对齐输出。
    + 正数输出加号(+),负数输出减号(一)。
    空格 正数输出空格代替加号(+),负数输出减号(一)。

  • width

    为可选择的宽度指示符。十进制正整数表示,用来设置输出值的最少字符个数。不足则补空格;多出则按实际输出。默认则按实际输出。

    例如:

    printf("%8d\n", 100);
    printf("%6d\n", 100);
    printf("%-8d n", 100);
    printf("%+8d\n", 100);
    

    输出结果:

    □□□□□100
    □□□100
    100□□□□□
    □□□□+100
    
  • [.prec]

    为可选的精度指示符,“小数点”加“十进制正整数”表示,对“整数”、“实数*“字符串”的输出有如下功能:对“整数”,表示至少要输出的数字个数,不足补数字0,多则原样输出;对“实数”,表示小数点后至多输出的数字个数,不足则补数字0,多则作舍入处理;对“零符串”,表示最多输出的字符个数,不足补空格,多则丢弃。

    printf("%8.2f\n",3.14159); 
    printf(%8.5f\n”,3.14159);
    

    输出结果:

    □□□□3. 143. 14159
    
  • 格式字符

    在这里插入图片描述

*号的用法

*在printf里可以代表一个泛整数,可以代表任何整数。它可以出现在位宽的位置,也可以出现在小数位数的位置。但在printf的双引号外面,必须要有*对应的数值

比如我的位宽不确定,想用整数a表示,则可以写成:
在这里插入图片描述

相关文章:

2.C语言——输入输出

1.字符输入输出函数 1.输入:getchar() 字面意思,接收单个字符,使用方法 char a; a getchar();实际上效果等同于char a; scanf("%c",&a);2.输出:putchar() 2.格式化输入输出函数 1.输入:scanf() 格式: scanf(“格式控制…...

MySQL篇之SQL优化

一、表的设计优化 表的设计优化(参考阿里开发手册《嵩山版》): 1. 比如设置合适的数值(tinyint int bigint),要根据实际情况选择。 2. 比如设置合适的字符串类型(char和varchar&#xff09…...

QGis —— 1、Windows10下载安装QGis及插件

QGis官网 QGIS(自由开源的地理信息系统)是一个专业的GIS应用程序,它建立在免费和开源软件(FOSS)之上,并为此而自豪。QGIS 是一个方便使用的开源地理信息系统 (GIS),根据 GNU 通用公共许可授权。…...

【打工日常】使用docker部署Dashdot工具箱

一、Dashdot介绍 dashdot是一个简洁清晰的服务器数据仪表板,基于React实现 ,主要是显示操作系统、进程、存储、内存、网络这五个的数据。 二、本次实践介绍 1. 本次实践简介 本次实践部署环境为个人测试环境 2. 本地环境规划 本次实践环境规划&#xf…...

使用client-only 解决组件不兼容SSR问题

目录 前言 一、解决方案 1.基于Nuxt 框架的SSR应用 2.基于vue2框架的应用 3.基于vue3框架的应用 二、总结 往期回顾 前言 最近在我的单页面SSR应用上开发JSON编辑器功能,在引入组件后直接客户端跳转OK,但是在直接加载服务端渲染的时候一直报这…...

基于Java SSM框架实现网上报名系统项目【项目源码+论文说明】

基于java的SSM框架实现网上报名系统演示 摘要 随着互联网时代的到来,同时计算机网络技术高速发展,网络管理运用也变得越来越广泛。因此,建立一个B/S结构的网上报名系统,会使网上报名系统工作系统化、规范化,也会提高网…...

7.1 Qt 中输入行与按钮

目录 前言: 技能: 内容: 参考: 前言: line edit 与pushbotton的一点联动 当输入行有内容时,按钮才能使用,并能读出输入行的内容 技能: pushButton->setEnabled(false) 按钮不…...

云计算基础-网络虚拟化

虚拟交换机 什么是虚拟交换机 虚拟交换机是一种运行在虚拟化环境中的网络设备,其运行在宿主机的内存中,通过软件方式在宿主机内部实现了部分物理交换机的功能,如 VLAN 划分、流量控制、QoS 支持和安全功能等网络管理特性 虚拟交换机在云平…...

166基于matlab的通过峭度指标与互相关系数筛选IMF进行SVD分解去噪

基于matlab的通过峭度指标与互相关系数筛选IMF进行SVD分解去噪,分辨虚假imf,提取最大峭度imf图。输出去噪前后时域及其包络谱结果。程序已调通,可直接运行。 166 matlab SVD去噪 IMF筛选 包络谱 (xiaohongshu.com)...

第六十三天 服务攻防-框架安全CVE复现DjangoFlaskNode.JSJQuery

第六十三天 服务攻防-框架安全&CVE复现&Django&Flask&Node.JS&JQuery 知识点: 中间件及框架列表: IIS,Apache,Nginx,Tomcat,Docker,K8s,Weblogic.JBoos,WebSphere, Jenkins,GlassFish,Jetty,Jira,Struts2,Laravel,Solr,Shiro,Thin…...

最大子序和+旅行问题——单调队列

一、最大子序和 输入一个长度为 n 的整数序列,从中找出一段长度不超过 m 的连续子序列,使得子序列中所有数的和最大。 注意: 子序列的长度至少是 1。 输入 第一行输入两个整数 n,m (1 ≤ n,m ≤ 300000)。 第二行输入 n 个数,代…...

Unity设备分级策略

Unity设备分级策略 前言 之前自己做的设备分级策略,在此做一个简单的记录和思路分享。希望能给大家带来帮助。 分级策略 根据拟定的评分标准,预生成部分已知机型的分级信息,且保存在包内;如果设备没有被评级过,则优…...

自己在开发AI应用的过程总结的 Prompt - 持续更新

自己在开发AI应用的过程总结的 Prompt - 持续更新 0. 引言1. 让模型以"中文"进行回复2. 控制模型仅输出"hi"3. 让模型"提供简单、清晰而具体的回答"4. 让模型"在最后说谢谢" 0. 引言 我想,我们多半有着相似的经历&#xf…...

STM32——OLED菜单

文章目录 一.补充二. 二级菜单代码 简介:首先在我的51 I2C里面有OLED详细讲解,本期代码从51OLED基础上移植过来的,可以先看完那篇文章,在看这个,然后按键我是用的定时器扫描不会堵塞程序,可以翻开我的文章有单独的定时…...

Open CASCADE学习|布尔运算后消除内部拓扑

在CAD建模中,布尔运算是一种逻辑运算方法,通过这种方法,可以创建、修改或组合几何对象。布尔运算主要包括并集(UNION)、交集(INTERSECT)和差集(SUBTRACT)三种运算。 并集…...

【数据仓库】主题域和数据域

数据域与主题域区别 https://www.cnblogs.com/datadance/p/16898254.html 数据域是自下而上,以业务数据视角来划分数据,一般进行完业务系统数据调研之后就可以进行数据域的划分。针对公共明细层(DWD)进行主题划分。主题域则自上而…...

C#,二分法(Bisection Method)求解方程的算法与源代码

1 二分法 二分法是一种分治算法&#xff0c;是一种数学思维。 对于区间[a&#xff0c;b]上连续不断且f&#xff08;a&#xff09;f&#xff08;b&#xff09;<0的函数yf&#xff08;x&#xff09;&#xff0c;通过不断地把函数f&#xff08;x&#xff09;的零点所在的区间…...

Portainer安装/快速上手

前置&#xff1a; 管理docker容器的工具 Portainer: Container Management Software for Kubernetes and Docker https://docs.portainer.io/v/ce-2.9/start/install/server/docker/linux 官网安装教程 Install Portainer CE with Docker on Linux - Portainer Documentat…...

恢复被.target勒索病毒加密的数据文件:拒绝向.target勒索病毒支付赎金

引言&#xff1a; 在当今数字时代&#xff0c;勒索病毒已成为网络安全领域的一大威胁&#xff0c;而.target勒索病毒是其中引起广泛关注的一种变种。本文将深入探讨.target勒索病毒的特点以及被其加密的数据文件恢复方法。数据的重要性不容小觑&#xff0c;您可添加我们的技术…...

【Linux网络编程六】服务器守护进程化Daemon

【Linux网络编程六】服务器守护进程化Daemon 一.背景知识&#xff1a;前台与后台二.相关操作三.Linux的进程间关系四.自成会话五.守护进程四步骤六.服务器守护进程化 一.背景知识&#xff1a;前台与后台 核心知识就是一个用户在启动Linux时&#xff0c;都会给一个session会话&a…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

Linux中《基础IO》详细介绍

目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改&#xff0c;实现简单cat命令 输出信息到显示器&#xff0c;你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...