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表示,则可以写成:
在这里插入图片描述

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

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

相关文章

Axes属性汇总

Axes属性很多,主要起控制坐标区的外观和行为的作用,共涉及十三类。 第1类:字体 Font Name——字体名称,默认为’Helvetica’。 要使用在任何区域设置中都有较好显示效果的等宽字体,请使用 “FixedWidth”。等宽字体依…

系统测试计划(直接套用实际)

1测试目的 2测试范围 3资源要求 3.1人力资源 3.2指派干系人 3.3测试环境 3.4测试工具 4测试类型 5测试安排 5.1测试进度 5.2测试策略 5.2.1测试需求 5.2.2测试类型 6测试停止标准 7测试风险 8缺陷管理 8.1缺陷属性 8.2缺陷类型 8.3缺陷严重程度 8.4缺陷优先级 8.5缺陷状态 8.6缺…

C#上位机与三菱PLC的通信07--使用第3方通讯库读写数据

1、通讯库介绍 mcprotocol 是一个基于 Node.js 的三菱 PLC MC 协议通信库,具有以下特点: 支持多种三菱 PLC MC 协议的设备,如 FX3U、Q03UDECPU、QJ71E71 等。 支持多种功能码和数据类型,如读取线圈(M)、…

[AIGC] 利用 chatgpt 深入理解 Java 虚拟机(JVM)

Java 虚拟机(JVM)是 Java 编程语言的核心运行环境,它负责解释和执行 Java 字节码。它是 Java 程序能够跨平台运行的关键,因为不同的操作系统和硬件平台都有自己的指令集和体系结构,而 JVM 则提供了一个统一的运行环境&…

硬核!10分钟教你搭建一个本地版GPT4.0!

今天10分钟手把手教会你在自己电脑上搭建一个官方原版的GPT4.0。 不用ChatGPT账号,不用API,直接免费使用上官方原版的GPT4.0! 对!你没看错!不仅是正版GPT4.0,还完全免费! 而且整个部署流程极其简…

java根据前端所要格式返回树形3级层级数据

一、业务分析,根据前端需求返回如下数据格式 二、后端设计数据类型VO /*** author TTc* version 1.0* date 2024/2/15 16:47*/ Data AllArgsConstructor NoArgsConstructor public class Catalog2Vo {/*** 一级父分类的 id*/private String catalog1Id;/*** 三级子…

C# 12 中新增的八大功能你都知道吗?

一、主构造函数 在 Visual Studio 2022 版本 17.6 预览版 2 中引入。 从 C# 12 开始,可以在类和结构中声明主构造函数。主构造函数参数都在类的整个主体的范围内。为了确保显式分配所有主构造函数参数,所有显式声明的构造函数都必须使用 this() 语法调用…

SSL证书要钱吗?SSL证书一定要安装吗?

为了保护网站的数据安全和用户隐私,越来越多的网站开始采用SSL证书来加密数据传输。那么,SSL证书到底是否需要收费呢?又是否一定要安装呢?本文将从专业角度为您解答这些问题。 首先,我们来了解一下什么是SSL证书。SSL…

CPU是如何工作的?什么是冯·诺依曼架构和哈弗架构?

《嵌入式工程师自我修养/C语言》系列——CPU是如何工作的?什么是冯诺依曼架构和哈弗架构? 一、CPU内部结构及工作原理1.1 CPU的结构1.2 CPU工作流程举例 二、计算机体系结构2.1 冯诺依曼架构2.2 哈弗架构 三、总结 快速学习嵌入式开发其他基础知识&#…

《源代码》:穿越思考的时空之旅

计算机专业必看的几部电影 计算机专业必看的几部电影,就像一场精彩的编程盛宴!《黑客帝国》让你穿越虚拟世界,感受高科技的魅力;《社交网络》揭示了互联网巨头的创业之路,《源代码》带你穿越时间解救世界,…

error: src refspec main does not match any解决办法

一、问题描述: 用GitHub Actions自动部署Hexo,到了最关键的一步;突然报错:error: src refspec main does not match any 1、错误一: main分支应填写为master分支;但是只改这里也会报其他错误 2、错误二&a…

mqtt 协议的概念和理解

一、概述 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的”轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1…

【C项目】无头单向不循环链表

简介:本系列博客为C项目系列内容,通过代码来具体实现某个经典简单项目 适宜人群:已大体了解C语法同学 作者留言:本博客相关内容如需转载请注明出处,本人学疏才浅,难免存在些许错误,望留言指正 作…

Rabbitmq入门与应用(五)-延迟队列的设计与实现

延迟队列设计 在开发过程中涉及到延迟队列的应用,例如订单生成后有30分钟的付款时间,注册是有60秒的邮件或者短信的发送读取时间等。 常规使用rabbitmq设计延迟队列有两种方式 使用创建一个延迟队列阻塞消息使用延迟队列插件 Dead Letter Exchanges —…

Linux——信号(2)

在上一张博客我们介绍了Linux中信号的概念和信号是如何产生的,虽然信号 有多种产生方式,但是最终只能由操作系统给对应进程发送特定信号。现在 我将更加规范的介绍Linux中的信号。上一章的遗留问题 我们上一章中在观察信号的默认处理的时候发现终止信号…

canal监听binlog记录业务数据的变更;canalAdmin对instance做web配置

概述 平时在开发中会通过logback打印一些开发日志,有时也会需要记录一些业务日志,简单的就直接用log记录一下,但是系统中需要记录日志的地方越来越多时,不能每个地方都写一套log记录; 由于平常用的大多都是mysql&…

【论文阅读笔记】Contrastive Learning with Stronger Augmentations

Contrastive Learning with Stronger Augmentations 摘要 基于提供的摘要,该论文的核心焦点是在对比学习领域提出的一个新框架——利用强数据增强的对比学习(Contrastive Learning with Stronger Augmentations,简称CLSA)。以下…

【Jvm】性能调优(上)线上问题排查工具汇总

文章目录 一.互联网概念1.产品闭环和业务闭环2.软件设计中的上游和下游3.JDK运行时常量池 二.CPU相关概念1.查询CPU信息2.CPU利用率(CPU utilization)和 CPU负载(CPU load)2.1.如何理解CPU负载2.2.top命令查看CPU负载均值2.3.CPU负…

Pytorch 配置 GPU 环境

1、Pytorch 深度学习跑代码的时候,因为简单的操作不适合cpu运行,我们更习惯用GPU加速代码。 本章将介绍怎么安装pytorch的gpu环境,以及常见的问题 关于conda的安装,参考之前文章:深度学习环境配置:Anaco…

初始树莓派 + VMware17 安装树莓派(Raspberry Pi 4B/5)

文章目录 树莓派入门 VMware17 安装树莓派(Raspberry Pi 4/5B)前言一、树莓派入门指南:从零开始探索树莓派树莓派4B和5对比 二、在VMware Workstation 17上安装树莓派4B/5操作系统:实现强大性能与便捷模拟工具准备开始安装树莓派1.创建一个虚拟机2. 选择…