C语言字符学习初级优先看这个就够了
1. 字符的基本概念
在C语言中,字符(char)是一个基本的数据类型,用来表示单个字符。字符用单引号(' ')括起来,例如 'a'、'1' 等。字符在内存中实际上是以整数的形式存储的,即 ASCII 码。例如,字符 '0' 的 ASCII 码值为 48,字符 'A' 的 ASCII 码值为 65,字符 'a' 的 ASCII 码值为 97。
2. 使用 scanf 读取字符
scanf 是用于从标准输入读取数据的函数,你可以用它来读取字符。对于字符输入,你可以使用 %c 来指定读取单个字符。
示例代码:
#include <stdio.h>int main() {char ch;printf("请输入一个字符: ");scanf("%c", &ch); // 使用 %c 读取一个字符printf("你输入的字符是: %c\n", ch); // 输出读取的字符return 0;
}
在这个例子中,scanf 从用户输入中读取一个字符并存储到 ch 变量中,然后通过 printf 输出这个字符。
3. 判断字符是否为数字
为了判断字符是否为数字,你可以通过比较字符的 ASCII 码值来实现。数字字符的 ASCII 码值是连续的,从 '0' 到 '9' 分别对应 ASCII 值 48 到 57。我们可以通过检查字符是否在 '0' 和 '9' 之间来判断它是否是数字。
手动实现判断是否为数字:
#include <stdio.h>int main() {char ch;printf("请输入一个字符: ");scanf("%c", &ch);// 判断字符是否为数字if (ch >= '0' && ch <= '9') {printf("字符 '%c' 是一个数字。\n", ch);} else {printf("字符 '%c' 不是数字。\n", ch);}return 0;
}
在这个例子中,我们通过比较字符 ch 是否在 '0' 和 '9' 之间来判断它是否为数字。
4. 判断字符是否为字母
字母的 ASCII 码值也可以分段判断:大写字母 'A' 到 'Z' 的 ASCII 值范围是 65 到 90,小写字母 'a' 到 'z' 的 ASCII 值范围是 97 到 122。因此,我们可以通过检查字符是否在这两个范围内来判断它是否为字母。
手动实现判断是否为字母:
#include <stdio.h>int main() {char ch;printf("请输入一个字符: ");scanf("%c", &ch);// 判断字符是否为字母if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z')) {printf("字符 '%c' 是一个字母。\n", ch);} else {printf("字符 '%c' 不是字母。\n", ch);}return 0;
}
5. 完整的字符判断程序
现在你已经学会了如何判断字符是数字还是字母,接下来我们可以写一个完整的程序,判断输入的字符是数字、字母,还是其他字符。
示例代码:
#include <stdio.h>int main() {char ch;printf("请输入一个字符: ");scanf("%c", &ch);// 判断字符是否为数字if (ch >= '0' && ch <= '9') {printf("字符 '%c' 是一个数字。\n", ch);}// 判断字符是否为字母else if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z')) {printf("字符 '%c' 是一个字母。\n", ch);}// 如果不是数字也不是字母else {printf("字符 '%c' 是其他字符。\n", ch);}return 0;
}
6. 使用 scanf 读取一行字符
如果你想要一次读取一行字符而不是单个字符,可以使用 scanf 的格式控制符 %s 来读取字符串。不过,%s 只会读取到空白字符(如空格、换行符)之前的输入。如果你想要读取整行输入,可以使用如下方式。
读取一行字符串:
#include <stdio.h>int main() {char str[100];printf("请输入一行字符: ");scanf("%s", str); // 读取输入直到遇到空格printf("你输入的是: %s\n", str);return 0;
}
但是如果需要读取整行输入,包括空格,可以使用 fgets()(以后你可以学习)。
7. 完整练习
你可以编写一个程序,循环读取用户输入的字符,判断每个字符是数字、字母,还是其他字符,直到用户输入某个特定的字符(如 q)来退出程序。
示例代码:
#include <stdio.h>int main() {char ch;while (1) {printf("请输入一个字符(输入 'q' 退出程序): ");scanf(" %c", &ch); // 注意:这里的空格是为了忽略之前输入的换行符if (ch == 'q') {break; // 如果输入 'q',则退出循环}// 判断字符是否为数字if (ch >= '0' && ch <= '9') {printf("字符 '%c' 是一个数字。\n", ch);}// 判断字符是否为字母else if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z')) {printf("字符 '%c' 是一个字母。\n", ch);}// 如果不是数字也不是字母else {printf("字符 '%c' 是其他字符。\n", ch);}}return 0;
}
总结
- 字符读取:使用
scanf("%c", &ch)来读取单个字符。 - 手动字符判断:通过字符的 ASCII 码值范围来判断是否为数字或字母。
- 逻辑判断:使用
if-else结构进行字符的分类判断。
这些基本操作能帮助你理解字符的处理方式。以后你可以逐渐过渡到使用更高级的库函数来处理字符,例如 isdigit() 和 isalpha(),它们能简化判断过程。
相关文章:
C语言字符学习初级优先看这个就够了
1. 字符的基本概念 在C语言中,字符(char)是一个基本的数据类型,用来表示单个字符。字符用单引号( )括起来,例如 a、1 等。字符在内存中实际上是以整数的形式存储的,即 ASCII 码。例…...
Python JSON
JSON 函数 json.dumps 语法 实例 json.loads 语法 实例 使用第三方库:Demjson 环境配置 JSON 函数 encode 语法 实例 decode 语法 实例 JSON 函数 使用 JSON 函数需要导入 json 库:import json。 函数描述json.dumps将 Python 对象编码…...
【华为杯】2024华为杯数模研赛F题 解题思路
题目 X射线脉冲星光子到达时间建模 问题背景 高速公路拥堵现象的原因众多,除了交通事故外,最典型的就是部分路段出现瓶颈现象,主要原因是车辆汇聚,而拥堵后又容易蔓延。高速公路一些特定的路段容易形成堵点,如匝道出…...
Object Pascal 结构化程序设计
Object Pascal 关系运算符 运算符名称等于<>不等于>大于<小于>大于等于<小于等于< (属于元素的)包含于> (属于元素的)包含in (属于元素的)属于 # Object Pascal 逻辑运算符 运算符名称含义Not逻辑非单目运算符,进行取反操作,由T…...
机器学习算法与实践_03概率论与贝叶斯算法笔记
1、概率论基础知识介绍 人工智能项目本质上是一个统计学项目,是通过对 样本 的分析,来评估/估计 总体 的情况,与数学知识相关联 高等数学 ——> 模型优化 概率论与数理统计 ——> 建模思想 线性代数 ——> 高性能计算 在机器学…...
如何使用Privoxy将SOCKS5代理转换为HTTP代理?
在这篇博客中,我将介绍如何使用Privoxy将SOCKS5代理转换为HTTP代理。我们将从下载和安装Privoxy开始,接着配置Privoxy,最后配置Windows以便浏览器使用该代理。 1. 下载并安装Privoxy 首先,您需要下载并安装Privoxy。您可以从Pri…...
AJAX(一)HTTP协议(请求响应报文),AJAX发送请求,请求问题处理
文章目录 一、AJAX二、HTTP协议1. 请求报文2. 响应报文 三、AJAX案例准备1. 安装node2. Express搭建服务器3. 安装nodemon实现自动重启 四、AJAX发送请求1. GET请求2. POST请求(1) 配置请求体(2) 配置请求头 3. 响应JSON数据的两种方式(1) 手动,JSON.parse()(2) 设置…...
Git进阶(十五):Git LFS 使用详解
文章目录 一、介绍二、Git LFS 使用步骤三、场景示例四、拓展阅读 一、介绍 Git LFS (Large File Storage) 是一个 Git 扩展,它使 Git 更适合处理大型文件,如音频、视频、图像或任何其他二进制大文件。Git LFS 替换仓库中的大文件为文本指针文件&#x…...
操作系统 | 学习笔记 | | 王道 | 5.1 I/O管理概述
5.1 I/O管理概述 5.1.1 I/O设备 注:块设备可以寻址,但是字符设备是不可寻址的 I/O设备是将数据输入到计算机中,或者可以接收计算机输出数据的外部设备,属于计算机中的硬件部件; 设备的分类 按使用特性分类ÿ…...
关于es的一个多集群、多索引切换的实现
首先是封装了一个类里定义了关于集群名称和集群节点;以及关于索引的名称和集群的名称做一个关联;将多个集群封装存储得到类中 /*** es集群类*/ Data public class EsClusterConfig implements Serializable {/*** 集群名称*/private String name;/*** 集…...
Linux系统编程(基础指令)上
1.Linux常见目录介绍 Linux目录为树形结构 /:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录&…...
【STM32 Blue Pill编程】-定时器PWM模式
定时器PWM模式 文章目录 定时器PWM模式1、定时器PWM模式介绍2、硬件准备及接线3、模块配置4、代码实现在文中,我们将介绍如何使用 STM32 Blue Pill 定时器的PWM模式以及如何配置它们以生成具有不同占空比和频率的信号。 我们将使用 LED调光器示例来演示如何使用 STM32Cube IDE…...
数字英文验证码识别 API 对接说明
数字英文验证码识别 API 对接说明 本文将介绍一种 数字英文验证码识别 API 对接说明,它是基于深度学习技术,可用于识别变长英文数字验证码。输入验证码图像的内容,输出验证码结果。 接下来介绍下 数字英文验证码识别 API 的对接说明。 注册…...
稳了,搭建Docker国内源图文教程
大家好,之前分享了我的开源作品 Cloudflare Workers Proxy,它的作用是代理被屏蔽的地址,理论上支持代理任何被屏蔽的域名,使用方式也很简单,只需要设置环境变量 PROXY_HOSTNAME 为被屏蔽的域名,最后通过你的…...
零工市场小程序:推动零工市场建设
人力资源和社会保障部在2024年4月发布了标题为《地方推进零工市场建设经验做法》的文章。 零工市场小程序的功能 信息登记与发布 精准匹配、推送 在线沟通 权益保障 零工市场小程序作为一个找零工的渠道,在往后随着技术的发展和政策的支持下,功能必然…...
回归预测 | Matlab实现SSA-HKELM麻雀算法优化混合核极限学习机多变量回归预测
回归预测 | Matlab实现SSA-HKELM麻雀算法优化混合核极限学习机多变量回归预测 目录 回归预测 | Matlab实现SSA-HKELM麻雀算法优化混合核极限学习机多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现SSA-HKELM麻雀算法优化混合核极限学习机多变量…...
VCNet论文阅读笔记
VCNet论文阅读笔记 0、基本信息 信息细节英文题目VCNet and Functional Targeted Regularization For Learning Causal Effects of Continuous Treatments翻译VCNet和功能目标正则化用于学习连续处理的因果效应单位芝加哥大学年份2021论文链接[2103.07861] VCNet和功能定向正…...
Python 装饰器使用详解
文章目录 0. 引言1. 什么是装饰器?2. 装饰器的基本语法3. 装饰器的工作原理4. 常见装饰器应用场景4.1. 日志记录4.2. 权限校验4.3. 缓存 5. 多重装饰器的执行顺序6. 装饰器的高级用法6.1. 带参数的装饰器6.2. 使用 functools.wraps6.3. 类装饰器 7. 图示说明7.1. 单…...
Vue使用qrcodejs2-fix生成网页二维码
安装qrcodejs2-fix npm install qrcodejs2-fix核心代码 在指定父view中生成一个二维码通过id找到父布局 //通过id找到父布局let codeView document.getElementById("qrcode")new QRCode(codeView, {text: "测试",width: 128,height: 128,colorDark: #00…...
兼容多个AI应用接口,支持用户自定义切换AI接口
项目背景 2023年ChatGPT横空出世,给IT行业造成了巨大的反响。我第一次发现这个ChatGPT有着如此神奇的功能(智能对话,知识问答,代码生成,逻辑推理等),我感到非常吃惊!经过一番学习和…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
