从键盘到屏幕:C语言中输入输出探秘

        在编程中,输入和输出是我们与计算机交流的关键。无论是键盘输入还是屏幕输出,它们贯穿了我们每一行代码的编写。本文将带你深入探索C语言中输入输出的精彩世界,解锁其中的奥秘,助你轻松驾驭键盘和屏幕!(最后附上2题练习题)

一、输出

        当你写完一段程序,你必然需要让程序输出一些结果,这时就要用到printf、putchar、puts。下面我们来对这三个一一介绍。

  •   printf打印:

        先来举个例子帮助我们理解一下意思,eg:我现在有一个数a等于999,我要把a等于多少用一段程序告诉别人。
        第一步:按照我们前一篇文章说的c语言基础框架,先新建一个文件,搭建好我们的简单框架。
        

        第二步: 开始写入我们的内容,即我们告诉计算机我们的a等于999,再让计算机告诉别人a等于999。
        

        第三步: 打开cmd,cd指令跳到代码文件夹,对这个程序进行编译和运行并生成结果
        

         看到这边,大家应该有点清晰了吧,不懂的话就按照我们上面的图文一步一步操作一遍!
         OK,接下来让我们具体了解一下printf。
        
         printf的格式:
        printf(格式控制,输出表列),例如printf("%d",a),printf("%c",y)。

        括号内包含了两部分:

        (1)格式控制是用双撇号”“括起来的一个字符串。它包括两个信息:
                a、格式声明。格式声明由”%“和格式字符组成,如上面的%d,%c等。它的作用是将输出的数据转换为指定的格式,然后输出。比如:
1. %d为输出十进制整型数int;
2. %c为输出单个字符char;
3. %s为输出多个字符;
4. %f为输出小数float;
5. %x为输出16进制格式的整数;
6. %p一般为打印内存地址,也是16进制格式输出。取出地址(变量的存储位置)的运算符号&。
(c语言中字符串格式有许多,我们先记住最常用的几个就行,步步为营,从简到繁)

                b、普通字符。普通字符就是在输出结果时,需要原样输出的字符。比如,printf("我怎么那么帅呀"),那么结果就会输出:我怎么那么帅呀
                         

        如果将格式声明和普通字符结合起来用,比如:printf("a等于:%d", a )就会是类似于这样的形式:
         

  •  关于%f,再补充一点:

用%f输出实数,只能得到6位小数。如果要指定数据宽度和小数位数,用%m.nf,如%5.2f,指定了输出的数据占5列,其中包括两位小数,此时我们会发现数据像右靠了一些。如果要让输出的数据像左靠,则用%-m.nf。就像下面展示的这样:

 怎么样,应该都挺好理解的吧。还剩下puts和putchar。

  • puts

    输出字符串。和printf的区别在于:1.用puts函数输出字符串时会自动换行,不用使用换行符”\n“;2.puts只能原样输出,不能格式声明。
  • putchar

    输出字符。如:putchar(c);

 二、输入

当你写完一段程序,你可能需要让用户输入一些字符来让你的程序继续运行,这时就要用到scanf和getchar。下面我们来对这俩个一一介绍。

  • scanf扫描键盘

        scanf和printf有异曲同工之妙,scanf的一般形式为:scanf(格式控制,地址表列),格式控制和printf一致,地址表列可以是变量的地址,也可以是字符串的首地址,总之就是地址。如:scanf("%d", &a );
        需要注意的问题:
        1.地址符号:有些新手朋友们容易忘记取地址符号——&,因而写成scanf("%d", a ),这样是不对的;

        2.原样输入:在格式控制的位置,如果除了格式声明外,还有别的字符,如:scanf("地址是:%d",&a),那么用户在输入时,也应该将别的字符一起输进去,像这样:

        3. 注意字符:用”%c“格式声明输入字符时,空格字符和转义字符都会被作为有效字符被扫描到。例如:scanf("%c%c%c",&a.&b.&c),在执行此函数时,应在对应的位置上输入连续的3格字符,中间不能有空格,如:abc
        

  •  getchar

        getchar是用来获取字符的,也可以用来吸收多次使用scanf时留下的回车符,多次使用scanf时,前一次使用scanf留下的回车会影响下一次的scanf,导致下一次的scanf扫描到了回车,会导致程序输出结果出错。

 

三、练习题

1.输入两个数,获得两个数加减乘除的值

#include<stdio.h> 

int main()		
{				
	int a;
	int b;
	
	puts("请输入两个整数");
	scanf("%d%d",&a,&b);
	
	//两个数加
	printf("两个数的和是%d\n",a+b);
	//两个数减
	printf("两个数的差是%d\n",a-b);
	//两个数乘
	printf("两个数的积是%d\n",a*b);
	//两个数除
	printf("两个数的商是%.2f\n",(float)a/b);
	
	return 0;	
}	

2.请编程序将”China“译成密码,密码规律是用原来的字母后面第4个字母代替原来的字母。

 (分别用printf和putchar输出字符)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

模型部署 - onnx的导出和分析 - onnx 的架构和 onnx helper 的使用 - 学习记录

onnx 的架构和 onnx helper 的使用 简介一、onnx 的架构二、onnx 实践2.1、 create - linear.onnx2.1.1、要点一&#xff1a;创建节点2.1.2、要点二&#xff1a;创建张量2.1.3、要点三&#xff1a;创建图 2.2、 create - onnx.convnet2.3、使用 onnx helper 导出的基本流程总结…

Docker-镜像仓库

Docker ⛅Docker-Registry&#x1f320;分类&#x1f320;镜像仓库工作机制&#x1f320;常用的镜像仓库&#x1f320;镜像仓库命令☃️docker login☃️docker pull☃️docker push☃️docker search☃️docker logout &#x1f320;镜像命令[部分]☃️docker images☃️docke…

电源配小了,是不是容易烧?是的!

电源小的话会不会容易烧毁&#xff1f; 是的。 功率电压*电流。 随着功率增大&#xff0c;电压不变&#xff0c;电流增大&#xff0c;发热量增大&#xff0c;可能会烧毁。 今天给大家推荐一款650w的电脑电源&#xff0c;不过在推荐之前&#xff0c;首先要确认自己的电脑功耗…

【Internet结构和ISP,分组延时、丢失和吞吐量】

文章目录 一、Internet结构和ISP1.互联网络结构&#xff1a;网络的网络2.Internet 结构&#xff1a;network of networks 二、分组延时、丢失和吞吐量1.分组丢失和延时是怎样发生的&#xff1f;2.四种分组延时3.分组丢失4.吞吐量 一、Internet结构和ISP 1.互联网络结构&#x…

流畅的 Python 第二版(GPT 重译)(十二)

第五部分&#xff1a;元编程 第二十二章&#xff1a;动态属性和属性 属性的关键重要性在于&#xff0c;它们的存在使得将公共数据属性作为类的公共接口的一部分完全安全且确实可取。 Martelli、Ravenscroft 和 Holden&#xff0c;“为什么属性很重要” 在 Python 中&#xff0…

鲁棒的基于表面势的GaN HEMT集成电路紧凑模型

来源&#xff1a;Robust Surface-Potential-Based Compact Model forGaN HEMT IC Design&#xff08;TED 13年&#xff09; 摘要 我们提出了一种精确且稳健的基于表面势的紧凑模型&#xff0c;用于模拟采用氮化镓高电子迁移率晶体管&#xff08;GaN HEMT&#xff09;设计的电…

利用 Claude 3 on Amazon Bedrock 和 Streamlit 的“终极组合”,开发智能对话体验

概述 通过本文&#xff0c;您将学会如何利用 Streamlit 框架快速搭建前端交互界面。该界面将集成图像上传功能&#xff0c;让用户可以方便地提交待处理图片。在后端&#xff0c;我们将借助 Amazon Bedrock 的 Message API&#xff0c;调用 Claude 3 家族中的 Sonnet 模型对图像…

java系统部署到Linux

1、安装java 1.8JDK 卸载Open JDK 首先&#xff0c;我们先检查系统是否自带了 JDK。输入命令 java -verison批量删除 rpm -qa | grep java | xargs rpm -e --nodeps下载并安装JDK 我们在 user 目录下建立一个新的 java文件夹&#xff0c;用来存放 JDK文件。 jdk下载地址 …

上位机图像处理和嵌入式模块部署(qmacvisual拟合直线)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 测量是图像处理的一个基本技能。那么测量的前提&#xff0c;就是我们需要在图像中找出特定的集合图形&#xff0c;比如说直线。当然&#xff0c;发…

lsn和redo

瀚高数据库 目录 文档用途 详细信息 相关文档 记录lsn三种记录形式&#xff0c;以及redo对lsn的操作。 详细信息 一、lsn的三种形式 1. pg_controldata中可以看到这样的lsn表示&#xff1a; Latest checkpoint location: 0/1548018Latest checkpoint’s REDO location: 0/…

智慧公园:AI智能分析网关V4城市公园视频智能监管方案

一、背景分析 随着天气渐渐转暖&#xff0c;城市公园的花卉也逐渐盛开&#xff0c;春暖花开时节&#xff0c;前往公园赏花游玩的城市居民也渐渐多起来&#xff0c;因此安全问题也成为相关监管部门的重要管理任务之一。随着科技的不断进步&#xff0c;智能监控技术已经成为现代…

Python将字符串转换为datetime

有这样一些字符串&#xff1a; 1710903685 20240320110125 2024-03-20 11:01:25 要转换成Python的datetime 代码如下&#xff1a; import functools import re from datetime import datetime, timedelta from typing import Union# pip install python-dateutil from date…

关于Rust的项目结构的笔记

层级 PackageCrateModulePath Package cargo的特性, 构建、测试、共享Crate 组成: 一个 Cargo.toml 文件, 描述了如何构建这些 Crates至少包含一个 crate最多只能包含一个 library crate可以包含任意个 binary crate cargo new demo-pro 会产生一个名为 demo-pro 的 Packa…

Python 深度学习第二版(GPT 重译)(一)

前言 序言 如果你拿起这本书&#xff0c;你可能已经意识到深度学习在最近对人工智能领域所代表的非凡进步。我们从几乎无法使用的计算机视觉和自然语言处理发展到了在你每天使用的产品中大规模部署的高性能系统。这一突然进步的后果几乎影响到了每一个行业。我们已经将深度学…

MATLAB三维图形的绘制

1&#xff0c;三维曲线 plot3(x,y,z)通过描点连线画出曲图&#xff0c;这里x,y,z都是n维向量&#xff0c;分别表示该曲线上点集的横坐标&#xff0c;纵坐标&#xff0c;竖坐标。 t0:pi/50:10*pi; subplot(121),plot3(sin(t),cos(t),t); subplot(122),fplot3((t)sin(t),(t)cos…

Linux集群

前言&#xff1a; 环境准备&#xff1a;虚拟机&#xff0c;xshell&#xff0c;mysql&#xff0c;tomcat&#xff0c;jdk&#xff0c;centos 虚拟机安装centos可以参考博客&#xff1a;虚拟机安装centos 一&#xff0c;安装jdk 打开xshell 点击cftp&#xff0c;如果没有安装…

HarmonyOS(鸿蒙)应用开发——(一)

目录 1 创建hellopro项目 2 了解ArkTS 3 了解ArkTS的组件 4 组件介绍 4.1 常用基础组件&#xff1a; 4.1.1 Text 4.1.2 Button 4.1.3 TextInput 4.2 容器组件 4.2.1 Column 4.2.2 Row 5 案例——实现一个简易登录页面 5.1 在实现预览效果之前&#xff0c;我们…

记录开发STM32遇到的卡死问题-串口

背景&#xff1a;以STM32作为主控&#xff0c;广州大彩显示屏显示&#xff0c;主控实时采集数据&#xff0c;串口波特率115200.设置收发频率为50Hz&#xff0c;即单片机每秒发送50帧数据&#xff0c;每秒接收50帧数据&#xff0c;每帧数据大概14字节。 问题&#xff1a;系统长…

Cronos zkEVM 基于 Covalent Network(CQT)数据可用性 API,推动其 Layer2 DeFi 生态更好地发展

在一项旨在显著改善 DeFi 生态的战略举措中&#xff0c;Cronos 与 Covalent Network&#xff08;CQT&#xff09;携手合作&#xff0c;以期待 Cronos zkEVM 的推出。这一整合&#xff0c;预计将进一步降低以太坊生态系统的交易成本、提升交易速度&#xff0c;并带来更好的交易体…

ZnO非线性电阻片功率损耗的频率特性

对不同频率正弦交流电压作用下直流氧化锌阀片的功率损耗进行了测量。图3.16(a)和(b)分别为试品类型A和试品类型B两种直流ZnO阀片在不同频率电压作用下的功率损耗随荷电率变化的特性。两种阀片的功率损耗都随频率和荷电率的增加而增加。当频率达到1kHz或以上时,阀片的功率损耗增…