C语言基础篇(4):输入输出、格式控制与条件表达
一、语句概述在 C 语言中语句是完成一定任务操作的代码。C 语言的语句分为以下五种类型说明控制语句控制程序流程如if、for、while函数调用语句调用一个函数表达式语句表达式后加分号构成语句空语句只有一个分号;复合语句用{}括起来的多条语句二、输入输出的基本概念输入 → [内存] → 输出C 语言本身不提供输入输出语句输入和输出操作是由函数库中的标准输入输出函数来实现的。这些函数以标准的输入输出设备一般为终端即键盘和屏幕为对象。常用的标准输入输出函数函数功能getchar()输入一个字符putchar()输出一个字符scanf()格式化输入printf()格式化输出gets()输入字符串puts()输出字符串三、单字符输入输出getchar与putchar3.1getchar— 从键盘读入一个字符int getchar(void);功能从标准输入键盘获得一个字符。参数void不需要参数。返回值读到的字符的 ASCII 编码值。3.2putchar— 向屏幕输出一个字符int putchar(int c);功能将字符c输出到屏幕上终端。参数c要输出的字符。返回值输出的字符的 ASCII 编码值。3.3 使用示例char c1; c1 getchar(); // 从键盘读入一个字符 // 做一些处理比如转大写 putchar(c1); // 输出该字符3.4 关于 man 手册查阅函数信息时可使用man手册结构如下字段含义NAME函数名及功能简短说明SYNOPSIS函数需要的头文件及函数原型DESCRIPTION函数的使用细节RETURN VALUE返回值四、格式化输出printfint printf(const char *format, ...);功能格式化输出。参数format— 格式化字符串包含占位符和普通字符。...— 可变参数数量根据格式化字符串中的占位符决定。返回值成功时返回打印了的字符数量。4.1 可变参数printf(hello world!\n); // 无参数 printf(a %d\n, a); // 一个参数 printf(a %d b %d\n, a, b); // 两个参数4.2 格式化字符串的组成格式化字符串由两部分组成普通字符原样输出如字母、空格、标点等。占位符需要把对应的数据转换为指定的格式。4.3 常用占位符整型数据占位符说明%d有符号十进制形式%u无符号十进制形式%o八进制形式%x十六进制形式小写字母%X十六进制形式大写字母浮点型数据占位符说明%f十进制小数形式默认保留 6 位小数%e科学计数法形式默认保留 6 位小数%g更简洁的方式输出不会有无意义的 0字符型数据占位符说明%c转换为对应的字符形式%s转换为字符串多个字符4.4 辅助控制符在%和格式字符之间可以添加辅助控制符来精确控制输出格式宽度控制n整数%nd // n 为整数指定数据宽度当n 实际数据宽度时默认右对齐左边补空格。当n 实际数据宽度时按实际宽度输出。printf(%5d, 12); // 输出 12左边补3个空格 printf(%-5d, 12); // 输出12 加 - 号左对齐右边补空格 printf(%05d, 12); // 输出00012加 0左补零精度控制.n%.nf // 用于 %f 和 %e表示保留 n 位小数 %.ns // 用于 %s表示保留前 n 个字符printf(%.2f, 3.14159); // 输出3.14 printf(%.3s, hello); // 输出hel长度修饰符修饰符整型占位符含义浮点型占位符含义l转换long类型—ll或L转换long long类型转换long double类型printf(%ld, 100L); // 输出 long 型整数 printf(%lld, 100LL); // 输出 long long 型整数输出%本身printf(%%); // 输出一个 %4.5 printf 的用途1.日常输出。2.输出菜单程序界面。3.进行输出结果的格式控制。4.6 注意事项占位符和输出参数必须一一对应否则输出结果会出错。五、格式化输入scanfint scanf(const char *format, ...);功能格式化输入。参数format— 格式化字符串。...— 可变参数需要的是地址列表不是值。返回值成功匹配到的数据项个数。5.1 核心注意点1参数必须是地址scanf需要的是变量的地址普通变量前必须加int a; scanf(%d, a); // ✅ 正确传入地址 scanf(%d, a); // ❌ 错误传入的是值如果不加会导致段错误Segmentation fault因为程序试图操作不能访问的内存空间。计算机中 0 号地址一般不能直接访问操作系统自身需要占用低地址处0~1G的内存空间。2占位符和地址参数一一对应int a, b; scanf(%d %d, a, b); // ✅ 两个占位符对应两个地址3多个数据默认以空白符分隔scanf输入多个数据时默认以空白符空格、Tab、回车作为分隔符。4占位符和类型要严格匹配int a; scanf(%d, a); // ✅ 整型用 %d float f; scanf(%f, f); // ✅ 浮点型用 %f char c; scanf(%c, c); // ✅ 字符型用 %c5匹配结束条件scanf的输入匹配在以下三种情况下结束1.遇到空白符。2.遇到非法字符。3.达到指定宽度。6%c与空白符的特殊情况空白符也是字符数据。当连续输入中包含%c时需要特别注意空白符的处理// 方法一在 %c 前加空格跳过输入中的空白符 scanf(%d %c %f, a, b, c); // 方法二%*c 表示跳过一个数据项 scanf(%d%*c%c%f, a, b, c);7scanf最后不要写\nscanf(%d\n, a); // ❌ 会导致输入结束不了格式控制字符串中如果出现了空白符则表示匹配任意多个空白符直到输入一个非空白符。六、数学函数示例sqrt#include math.h double sqrt(double x); // 开根号使用数学库时编译时需要链接数学库bashgcc sqrt.c -lm # -l 表示链接m 表示 math 库 ./a.out七、流程控制概述C 语言的程序流程由三种基本结构控制结构说明顺序结构按代码书写顺序从上到下依次执行选择结构在多种情况中选择其中一种执行循环结构满足条件时重复执行某段代码选择结构的核心思想看看符合哪种情况的条件符合条件就选择这种情况。而构造条件的方式主要依赖于关系运算和逻辑运算。八、关系运算关系运算就是做大小判断结果为真1或假0。8.1 关系运算符运算符含义大于大于等于小于小于等于等于!不等于8.2 关系运算表达式3 5 // 关系不成立 → 假0 c (a b) // 关系运算表达式 a (b c) // 先执行 b c再判断 a b a (b c) // 先判断 b c结果为 0 或 1再赋值给 a重点关系运算表达式也是有值、有类型的。C 语言中没有布尔类型使用整型int来处理关系判断的结果——真为 1假为 0。九、逻辑运算逻辑运算用于处理多个条件之间的关系。9.1 三种逻辑运算符运算符名称运算规则逻辑与一假则假两个条件都为真结果才为真||逻辑或一真则真只要有一个条件为真结果就为真!逻辑非真假相对真变假假变真9.2 使用示例// 判断 score 是否在 90~100 之间 score 95; (90 score) (score 100) // 两个条件都满足 → 真1 // 条件1 或 条件2 条件1 || 条件2 // 任一为真 → 真十、C 语言中真与假的判断规则C 语言中没有专门的布尔类型判断一个量是真还是假的规则非常简单0 为假非 0 为真。这意味着不仅仅是1代表真-1、95、字符的编码值、指针的地址值等只要不是0都是真。int i 95; 95 → 真非 0 char ch a; a 的编码值 97 → 真非 0 char *p a; // 假设地址为 0x1000 0x1000 → 真非 0 char *p NULL; // NULL 就是 0 号地址 0 → 假十一、短路特性重要11.1的短路特性i 95; (100 i) (i)解析100 i→100 95→假0左边已经是假整个表达式必定为假右边的i不再执行。短路规则左边为假时右边不执行。11.2||的短路特性a || (b c) (b - c)如果a为真非 0||左边已经为真整个表达式必定为真右边不再执行。||短路规则左边为真时右边不执行。11.3 核心规则和||运算都要求先算最左边的式子。这意味着如果最左边的值已经能确定整个表达式的结果右边就不算了。右边表达式中的副作用如i可能不会执行。

相关新闻

Android LinearLayout布局详解与实战技巧

Android LinearLayout布局详解与实战技巧

1. Android UI布局基础与LinearLayout解析在移动应用开发中,用户界面(UI)设计是连接用户与功能的核心桥梁。Android系统提供了多种布局方式,其中LinearLayout作为最基础且使用频率最高的布局容器之一,几乎出现在每个Android应用的界面设计中。…

2026/7/21 20:17:19 阅读更多 →
PXE + Kickstart 无人值守批量部署系统(legacy启动)

PXE + Kickstart 无人值守批量部署系统(legacy启动)

先认识两台机器 整个部署过程涉及两台机器: 角色 它是谁 它有什么 PXE 服务器 我们搭建的那台 CentOS 7,IP 固定为 192.168.145.21 上面跑了三个服务(DHCP、TFTP、HTTP),还存着 CentOS 的 ISO 安装镜像和一份 ks.cfg 应…

2026/7/23 16:19:36 阅读更多 →
Mac Mouse Fix终极指南:让普通鼠标在macOS上媲美触控板的完整方案

Mac Mouse Fix终极指南:让普通鼠标在macOS上媲美触控板的完整方案

Mac Mouse Fix终极指南:让普通鼠标在macOS上媲美触控板的完整方案 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 你是否曾经在macO…

2026/7/21 20:17:20 阅读更多 →

最新新闻

【Springboot毕设全套源码+文档】基于springboot林业资源管理系统设计与实现(丰富项目+远程调试+讲解+定制)

【Springboot毕设全套源码+文档】基于springboot林业资源管理系统设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/23 21:54:07 阅读更多 →
山东枣庄大跨距电缆桥架测评:悦尚电气质量优但价格略高,适用

山东枣庄大跨距电缆桥架测评:悦尚电气质量优但价格略高,适用

在当今电力系统和建筑工程中,大跨距电缆桥架的应用日益广泛。对于山东枣庄地区而言,选择合适的大跨距电缆桥架供应商至关重要。本次测评旨在为对山东枣庄大跨距电缆桥架供应商感兴趣的人群,提供客观、真实的数据和信息,以便做出合…

2026/7/23 21:54:07 阅读更多 →
【单片机毕业设计推荐】 基于 STM32 的智能恒温出水控制系统设计与实现 ,基于 STM32 的带儿童锁智能饮水装置控制系统开发(012103)

【单片机毕业设计推荐】 基于 STM32 的智能恒温出水控制系统设计与实现 ,基于 STM32 的带儿童锁智能饮水装置控制系统开发(012103)

文章目录20 个相关毕业设计备选题目项目研究背景摘要总体方案核心功能一、基础监测功能二、人机交互与安全防护核心功能三、出水控制核心功能四、辅助安全报警功能技术路线项目演示关于我们项目案例源码获取博主介绍:✌️码农一枚 ,专注于大学生项目实战…

2026/7/23 21:54:07 阅读更多 →
跨设备影音浏览分享

跨设备影音浏览分享

平时看完正版影片会剪辑自制片段,全部存放在迅雷云端。多端自动同步,电视端也能预览自己剪辑的素材,只收纳原创影像,不分享版权影视资源。xunlei 伊伊日常收纳 ,baocunxiazai #影音收纳 #实用工具

2026/7/23 21:54:07 阅读更多 →
TVA驱动的具身智能迭代逻辑(10)

TVA驱动的具身智能迭代逻辑(10)

前沿技术探索:AI智能体视觉(TVA,Transformer-based Vision Agent)是依托Transformer架构与“因式智能体”理论所构建的颠覆性工业视觉技术,是集深度强化学习(DRL)、卷积神经网络(CNN…

2026/7/23 21:54:07 阅读更多 →
华为云高校公开课走进中山大学,聚焦智能体时代企业级开发能力建设

华为云高校公开课走进中山大学,聚焦智能体时代企业级开发能力建设

7月13日,华为云开发者发展与运营部部长林华鼎受邀走进中山大学深圳校区电子与通信工程学院,为30名学生带来《AI编程实战:重构学习生活,洞见企业级开发》专题授课,聚焦智能体时代产业真实需求,输出企业级AI开…

2026/7/23 21:53:06 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻