当前位置: 首页 > 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;经过一番学习和…...

[docker]入门

本文章主要讲述的是&#xff0c;docker基本实现原理&#xff0c;docker概念的解释&#xff0c;docker的使用场景以及docker打包与部署的应用。 文章中docker所运行的系统&#xff1a;CentOS Linux release 7.9.2009 (Core) 目录 docker是什么&#xff0c;什么时候需要去使用 …...

《让手机秒变超级电脑!ToDesk云电脑、易腾云、青椒云移动端评测》

前言 科技发展到如今2024年&#xff0c;可以说每一年都在发生翻天覆地的变化。而云上这个词时常都被大家提起&#xff0c;从个人设备连接到云端在如今在也不是梦了。而云电脑这个市场近年来迅速发展&#xff0c;无需购买和维护额外的硬件就可以体验到电脑端顶配的性能和体验&am…...

Nginx处理带有分号“;“的路径

一、背景 安全渗透测试发现springboot 未授权访问的actuator和Swagger-ui 信息泄露的漏洞&#xff0c;需要规避。解决方案中较简单的就是通过Nginx将相关的接口转发到403页面。 在配置的过程当中&#xff0c;遇到了带有…;的路径&#xff1a;http://{ip:port}/{path}/…;/actu…...

Spring Boot框架下的心理教育辅导系统开发

1绪 论 1.1研究背景 随着计算机和网络技术的不断发展&#xff0c;计算机网络已经逐渐深入人们的生活&#xff0c;网络已经能够覆盖我们生活的每一个角落&#xff0c;给用户的网上交流和学习提供了巨大的方便。 当今社会处在一个高速发展的信息时代&#xff0c;计算机网络的发展…...

PyTorch 图像分割模型教程

PyTorch 图像分割模型教程 在图像分割任务中&#xff0c;目标是将图像的每个像素归类为某一类&#xff0c;以分割出特定的物体。PyTorch 提供了非常灵活的工具&#xff0c;可以用于构建和训练图像分割模型。我们将使用 PyTorch 的经典网络架构&#xff0c;如 UNet 和 DeepLabV…...

物联网——USART协议

接口 串口通信 硬件电路 电平标准 串口参数、时序 USART USART主要框图 TXE: 判断发送寄存器是否为空 RXNE: 判断接收寄存器是否非空 RTS为输出信号&#xff0c;用于表示MCU串口是否准备好接收数据&#xff0c;若输出信号为低电平&#xff0c;则说明MCU串口可以接收数据&#…...

前端框架对比与选择:如何在现代Web开发中做出最佳决策

随着互联网技术的迅速发展&#xff0c;前端开发在现代Web应用开发中扮演了至关重要的角色。对于开发者来说&#xff0c;选择合适的前端框架不仅能够提高开发效率&#xff0c;还能确保项目的可维护性和可扩展性。目前市面上有多种主流的前端框架和库&#xff0c;每一种都有其独特…...

【浅水模型MATLAB】尝试复刻SCI论文中的溃坝流算例

【浅水模型MATLAB】尝试复刻SCI论文中的溃坝流算例 前言问题描述控制方程及数值方法浅水方程及其数值计算方法边界条件的实现 代码框架与关键代码模拟结果 更新于2024年9月17日 前言 这篇博客算是学习浅水方程&#xff0c;并利用MATLAB复刻Liang (2004)1中溃坝流算例的一个记录…...

探索云计算:IT行业的未来趋势

探索云计算&#xff1a;IT行业的未来趋势 在当今快速发展的科技世界&#xff0c;云计算已成为IT行业的核心趋势之一。无论是大企业还是初创公司&#xff0c;越来越多的组织正在转向云计算&#xff0c;以实现更高效的运营和更快的创新。在这篇博文中&#xff0c;我们将探讨云计算…...

[PICO VR眼镜]眼动追踪串流Unity开发与使用方法,眼动追踪打包报错问题解决(Eye Tracking/手势跟踪)

前言 最近在做一个工作需要用到PICO4 Enterprise VR头盔里的眼动追踪功能&#xff0c;但是遇到了如下问题&#xff1a; 在Unity里面没法串流调试眼动追踪功能&#xff0c;根本获取不到Device&#xff0c;只能将整个场景build成APK&#xff0c;安装到头盔里&#xff0c;才能在…...