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

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语言中&#xff0c;字符&#xff08;char&#xff09;是一个基本的数据类型&#xff0c;用来表示单个字符。字符用单引号&#xff08; &#xff09;括起来&#xff0c;例如 a、1 等。字符在内存中实际上是以整数的形式存储的&#xff0c;即 ASCII 码。例…...

Python JSON

JSON 函数 json.dumps 语法 实例 json.loads 语法 实例 使用第三方库&#xff1a;Demjson 环境配置 JSON 函数 encode 语法 实例 decode 语法 实例 JSON 函数 使用 JSON 函数需要导入 json 库&#xff1a;import json。 函数描述json.dumps将 Python 对象编码…...

【华为杯】2024华为杯数模研赛F题 解题思路

题目 X射线脉冲星光子到达时间建模 问题背景 高速公路拥堵现象的原因众多&#xff0c;除了交通事故外&#xff0c;最典型的就是部分路段出现瓶颈现象&#xff0c;主要原因是车辆汇聚&#xff0c;而拥堵后又容易蔓延。高速公路一些特定的路段容易形成堵点&#xff0c;如匝道出…...

Object Pascal 结构化程序设计

Object Pascal 关系运算符 运算符名称等于<>不等于>大于<小于>大于等于<小于等于< (属于元素的)包含于> (属于元素的)包含in (属于元素的)属于 # Object Pascal 逻辑运算符 运算符名称含义Not逻辑非单目运算符&#xff0c;进行取反操作&#xff0c;由T…...

机器学习算法与实践_03概率论与贝叶斯算法笔记

1、概率论基础知识介绍 人工智能项目本质上是一个统计学项目&#xff0c;是通过对 样本 的分析&#xff0c;来评估/估计 总体 的情况&#xff0c;与数学知识相关联 高等数学 ——> 模型优化 概率论与数理统计 ——> 建模思想 线性代数 ——> 高性能计算 在机器学…...

如何使用Privoxy将SOCKS5代理转换为HTTP代理?

在这篇博客中&#xff0c;我将介绍如何使用Privoxy将SOCKS5代理转换为HTTP代理。我们将从下载和安装Privoxy开始&#xff0c;接着配置Privoxy&#xff0c;最后配置Windows以便浏览器使用该代理。 1. 下载并安装Privoxy 首先&#xff0c;您需要下载并安装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) 手动&#xff0c;JSON.parse()(2) 设置…...

Git进阶(十五):Git LFS 使用详解

文章目录 一、介绍二、Git LFS 使用步骤三、场景示例四、拓展阅读 一、介绍 Git LFS (Large File Storage) 是一个 Git 扩展&#xff0c;它使 Git 更适合处理大型文件&#xff0c;如音频、视频、图像或任何其他二进制大文件。Git LFS 替换仓库中的大文件为文本指针文件&#x…...

操作系统 | 学习笔记 | | 王道 | 5.1 I/O管理概述

5.1 I/O管理概述 5.1.1 I/O设备 注&#xff1a;块设备可以寻址&#xff0c;但是字符设备是不可寻址的 I/O设备是将数据输入到计算机中&#xff0c;或者可以接收计算机输出数据的外部设备&#xff0c;属于计算机中的硬件部件&#xff1b; 设备的分类 按使用特性分类&#xff…...

关于es的一个多集群、多索引切换的实现

首先是封装了一个类里定义了关于集群名称和集群节点&#xff1b;以及关于索引的名称和集群的名称做一个关联&#xff1b;将多个集群封装存储得到类中 /*** es集群类*/ Data public class EsClusterConfig implements Serializable {/*** 集群名称*/private String name;/*** 集…...

Linux系统编程(基础指令)上

1.Linux常见目录介绍 Linux目录为树形结构 /&#xff1a;根目录&#xff0c;一般根目录下只存放目录&#xff0c;在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入“/home”&#xff0c;你其实是在告诉电脑&#xff0c;先从/&#xff08;根目录&…...

【STM32 Blue Pill编程】-定时器PWM模式

定时器PWM模式 文章目录 定时器PWM模式1、定时器PWM模式介绍2、硬件准备及接线3、模块配置4、代码实现在文中,我们将介绍如何使用 STM32 Blue Pill 定时器的PWM模式以及如何配置它们以生成具有不同占空比和频率的信号。 我们将使用 LED调光器示例来演示如何使用 STM32Cube IDE…...

数字英文验证码识别 API 对接说明

数字英文验证码识别 API 对接说明 本文将介绍一种 数字英文验证码识别 API 对接说明&#xff0c;它是基于深度学习技术&#xff0c;可用于识别变长英文数字验证码。输入验证码图像的内容&#xff0c;输出验证码结果。 接下来介绍下 数字英文验证码识别 API 的对接说明。 注册…...

稳了,搭建Docker国内源图文教程

大家好&#xff0c;之前分享了我的开源作品 Cloudflare Workers Proxy&#xff0c;它的作用是代理被屏蔽的地址&#xff0c;理论上支持代理任何被屏蔽的域名&#xff0c;使用方式也很简单&#xff0c;只需要设置环境变量 PROXY_HOSTNAME 为被屏蔽的域名&#xff0c;最后通过你的…...

零工市场小程序:推动零工市场建设

人力资源和社会保障部在2024年4月发布了标题为《地方推进零工市场建设经验做法》的文章。 零工市场小程序的功能 信息登记与发布 精准匹配、推送 在线沟通 权益保障 零工市场小程序作为一个找零工的渠道&#xff0c;在往后随着技术的发展和政策的支持下&#xff0c;功能必然…...

回归预测 | 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. 什么是装饰器&#xff1f;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横空出世&#xff0c;给IT行业造成了巨大的反响。我第一次发现这个ChatGPT有着如此神奇的功能&#xff08;智能对话&#xff0c;知识问答&#xff0c;代码生成&#xff0c;逻辑推理等&#xff09;&#xff0c;我感到非常吃惊&#xff01;经过一番学习和…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...