C++系列-第1章顺序结构-9-字符类型char

news2024/12/28 10:26:41

在这里插入图片描述

在线练习:
http://noi.openjudge.cn/
https://www.luogu.com.cn/

总结

本文是C++系列博客,主要讲述字符类型char

字符类型char

在C++编程语言中,char是一种基本的数据类型,它用于存储单个字符。字符可以是字母、数字、标点符号或者是转义字符等。char类型通常占用一个字节(byte)的内存空间。

一个字节表示八位二进制数,8位无符号的二进制数可以表示为00000000-11111111,即0-255。
二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。
二进制转十进制:要从右到左用二进制的每个数去乘以2的相应次方
二进制的11111111=127+1*26+125+……1*20=128+64+32+16+8+4+2+1=255
所以一个字节表示无符号整数可以表示十进制的0-255共256个数,最大值为255。

在这里插入图片描述
在这里插入图片描述

基础知识

  1. 声明:声明一个char类型的变量,你可以这样做:
    char myChar = 'A';
    
    在这里,myChar是一个char类型的变量,并且它被赋予了字符A
  2. 字符表示:字符值需要用单引号(’ ')包围,比如'a''1''#'
  3. ASCII值:每个char类型的字符都对应一个ASCII码值。例如,字符'A'的ASCII码值是65。

案例:字符转换

下面是一个简单的案例,它演示了如何将小写字母转换为大写字母。这个程序会提示用户输入一个小写字母,然后程序将其转换为大写字母并显示结果。

#include <iostream>
using namespace std;
int main() {
    char lowercase, uppercase;
    cout << "请输入一个小写字母: ";
    cin >> lowercase;
    // 将小写字母转换为ASCII码值,然后减去32得到大写字母的ASCII码值
    uppercase = lowercase - 32;
    cout << "大写字母是: " << uppercase << endl;
    return 0;
}

输出为:
在这里插入图片描述

练习案例:字符判断

现在,你可以尝试一个练习案例。编写一个程序,让用户输入一个字符,然后判断它是大写字母、小写字母还是数字。
提示:

  • 大写字母的ASCII码范围是65到90。
  • 小写字母的ASCII码范围是97到122。
  • 数字字符的ASCII码范围是48到57。
    你可以在下面的代码框架中填充代码:
#include <iostream>
using namespace std;

int main() {
    char inputChar;

    cout << "请输入一个字符: ";
    cin >> inputChar;

    // 判断输入的字符类型
    if ((inputChar >= 'A') && (inputChar <= 'Z')) {
        cout << "你输入的是一个大写字母。" << endl;
    } else if ((inputChar >= 'a') && (inputChar <= 'z')) {
        cout << "你输入的是一个小写字母。" << endl;
    } else if ((inputChar >= '0') && (inputChar <= '9')) {
        cout << "你输入的是一个数字。" << endl;
    } else {
        cout << "你输入的字符不是字母也不是数字。" << endl;
    }

    return 0;
}

输出为:
在这里插入图片描述

案例 输出字符的ASCII值

#include <iostream>
using namespace std;

int main() {
    char myChar = 'A'; // 声明一个char类型的变量并初始化为'A'

    // 打印字符
    cout << "字符: " << myChar << endl;

    // 打印字符的ASCII码值
    cout << "ASCII码值: " << int(myChar) << endl;

    return 0;
}

输出为:
在这里插入图片描述

案例加密和解密简化版

下面是一个基本的例子,它演示了如何对单个字符进行加密和解密:

#include <iostream>
using namespace std;
int main() {
    char plainChar;
    int shift;
    cout << "请输入一个要加密的字符: ";
    cin >> plainChar; // 输入一个字符
    cout << "请输入加密的偏移量 (1-25): ";
    cin >> shift;
    // 加密字符
    char encryptedChar = plainChar + shift;
    cout << "加密后的字符: " << encryptedChar << endl;
    // 解密字符
    char decryptedChar = encryptedChar - shift;
    cout << "解密后的字符: " << decryptedChar << endl;
    return 0;
}

输出为:
在这里插入图片描述

在这个程序中,我们首先提示用户输入一个要加密的字符和一个整数偏移量(范围是1-25)。然后,我们通过将字符的ASCII码值加上偏移量来得到加密后的字符,并打印出来。接着,我们通过从加密后的字符的ASCII码值中减去相同的偏移量来得到解密后的字符,并打印出来。
请注意,这个程序只能处理一个字符,并且没有考虑加密过程中可能出现的边界情况,例如字符是大写字母、小写字母还是其他特殊字符。在实际应用中,加密通常会使用更复杂的算法和安全的密钥。

案例 加密和解密函数

下面是一个基于char和ASCII的简单加密案例。这个程序会将用户输入的文本进行加密,然后将加密后的文本输出。加密过程将使用一个简单的算法,例如对每个字符的ASCII码值进行加法操作。

#include <iostream>
#include <string>
using namespace std;
string encrypt(string text, int shift) {
    string encryptedText = "";
    for (int i = 0; i < text.length(); i++) {
        // 对每个字符的ASCII码值进行加法操作
        char encryptedChar = text[i] + shift;
        // 将加密后的字符添加到加密文本中
        encryptedText += encryptedChar;
    }
    return encryptedText;
}
string decrypt(string encryptedText, int shift) {
    string decryptedText = "";
    for (int i = 0; i < encryptedText.length(); i++) {
        // 对每个字符的ASCII码值进行减法操作以解密
        char decryptedChar = encryptedText[i] - shift;
        // 将解密后的字符添加到解密文本中
        decryptedText += decryptedChar;
    }
    return decryptedText;
}
int main() {
    string text;
    int shift;
    cout << "请输入要加密的文本: ";
    getline(cin, text); // 使用getline来允许输入空格
    cout << "请输入加密的偏移量: ";
    cin >> shift;
    string encryptedText = encrypt(text, shift);
    cout << "加密后的文本: " << encryptedText << endl;
    string decryptedText = decrypt(encryptedText, shift);
    cout << "解密后的文本: " << decryptedText << endl;
    return 0;
}

输出为:
在这里插入图片描述

在这个程序中,我们定义了两个函数encryptdecrypt来分别处理加密和解密操作。加密函数通过将每个字符的ASCII码值加上一个偏移量来实现加密,而解密函数则通过从加密后的ASCII码值中减去相同的偏移量来实现解密。
main函数中,我们首先提示用户输入要加密的文本和一个整数偏移量。然后,我们调用encrypt函数来加密文本,并打印出加密后的结果。接着,我们调用decrypt函数来解密文本,并打印出解密后的结果。
请注意,这个加密算法非常简单,并不适合真正的安全加密需求。在实际应用中,加密通常会使用更复杂的算法和安全的密钥。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智慧门店:如何利用AI视频智能监管与存储技术让门店降本增效?

一、行业背景 TSINGSEE青犀视频智慧门店解决方案是一种集成了人工智能、大数据、物联网等技术的零售解决方案&#xff0c;目的是提高门店的运营效率、用户体验和业绩。随着数字化转型的加速&#xff0c;连锁门店需要跟上时代的步伐&#xff0c;需要利用数字化手段提高运营效率…

Android14之DefaultKeyedVector实现(一百八十二)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

打造更智能的应用 - 机器学习和Andorid

打造更智能的应用 - 机器学习和Andorid 一、关于机器学习和Andorid二、使用 Gemini 让您的 Android 应用如虎添翼2.1 Gemini API2.2 Android AICore 三、现成可用的还是自定义的机器学习3.1 机器学习套件 SDK 的常见用户流3.2 高性能自定义机器学习 四、机器学习套件 SDK&#…

GIt与IDEA结合,多人操作gitee仓库

提交到本地 push到gitee远程仓库 在做这些之前注意配置git要忽略上传的文件,一般上传代码只上传src和pom.xml即可 在c盘用户里放置 git.ignore # Compiled class file *.class# Log file *.log# BlueJ files *.ctxt# Mobile Tools for Java (J2ME) .mtj.tmp/# Package Files …

python实现截图识别文字v2.0[脱离开发环境]

目录 1、简介 2、如何使用 3、完整代码 4、免费下载 5、说明文档 &#x1f343;作者介绍&#xff1a;双非本科大三网络工程专业在读&#xff0c;阿里云专家博主&#xff0c;专注于Java领域学习&#xff0c;擅长web应用开发、数据结构和算法&#xff0c;初步涉猎Python人工…

element-ui 打包流程源码解析(下)

目录 目录结构和使用1&#xff0c;npm 安装1.1&#xff0c;完整引入1.2&#xff0c;按需引入 2&#xff0c;CDN3&#xff0c;国际化 接上文&#xff1a;element-ui 打包流程源码解析&#xff08;上&#xff09; 文章中提到的【上文】都指它 ↑ 目录结构和使用 我们从使用方式来…

简单高效学习 LaTeX 007 - LaTex Format Control 科学排版之格式控制

这一集的视频演示了如何在LaTeX中进行排版的格式控制&#xff1a; https://www.douyin.com/user/self?modal_id7303925716830211379&showTabpost

ubuntu系统 vscode 配置c/c++调试环境

文章目录 1.安装插件2.目录结构3.cmake tools配置 1.安装插件 c/c插件 cmake cmake tools插件 2.目录结构 . ├── build ├── CMakeLists.txt ├── demo │ └── main.cpp ├── image.png ├── src │ ├── add.cpp │ └── add.hpp └── vsdebug.…

Debian 11.8.0 安装图解

引导和开始安装 这里直接回车确认即可&#xff0c;选择图形化安装方式。 选择语言 这里要区分一下&#xff0c;当前选中的语言作为安装过程中安装器所使用的语言&#xff0c;这里我们选择中文简体。不过细心的同学可能发现&#xff0c;当你选择安装器语言之后&#xff0c;后续安…

汽车用螺纹紧固件的拧紧力矩规范主要考虑哪些方面——SunTorque智能扭矩系统

在汽车制造过程中&#xff0c;螺纹紧固件是连接和固定各个零部件的重要元件。为了保证汽车的可靠性和安全性&#xff0c;对于螺纹紧固件的拧紧力矩有着严格的规定和规范。SunTorque智能扭矩系统和大家一起掌握这一重要知识点。 拧紧力矩是指将螺纹紧固件拧紧到预定位置所需的力…

最小公倍数之和(莫比乌斯反演P3911)

路径&#xff1a; P3911 最小公倍数之和 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路&#xff1a; 代码&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<string> #include<cstring> #include<cmath> #include<…

新上线一个IT公司微信小程序

项目介绍 项目背景: 一家IT公司,业务包含以下六大块: 1、IT设备回收 2、IT设备租赁 3、IT设备销售 4、IT设备维修 5、IT外包 6、IT软件开发 通过小程序,提供在线下单,在线制单,在线销售,业务介绍,推广,会员 项目目的: 业务介绍: 包含企业业务介绍 客户需…

蓝桥杯(C++ 整数删除 优先队列 )

优先队列&#xff1a; 优先队列具有队列的所有特性&#xff0c;包括队列的基本操作&#xff0c;只是在这基础上添加了内部的一个排序&#xff0c;它本质是一个堆实现的。 1.头文件&定义 #include <queue> #include <functional> //greater<>// 定义 p…

设计模式之“接口隔离原则“:打破僵化,实现灵活编程

在现代软件开发中&#xff0c;设计模式是解决常见问题的最佳实践。其中&#xff0c;接口隔离原则&#xff08;Interface Segregation Principle&#xff0c;简称ISP&#xff09;是面向对象设计模式中的重要原则之一。本文将深入解析接口隔离原则&#xff0c;帮助您理解其重要性…

学习Spring的第五天(Bean的依赖注入)

Bean的依赖注入有两种方式: 一 . 常规Bean的依赖注入 很简单,不过多赘述了,注意ref: 是构造函数或set方法的参数,一般为对象, value: 是构造函数或set方法的参数,一般为值. 看下图 1.1 下面来演示一下集合数据类型的关于Bean的依赖注入 1.1.1这是List的注入(演示泛型为Strin…

AppLovin员工爆料:年底遭暴力辞退。6点通知,直接走人,一分不赔。

* 你好&#xff0c;我是前端队长&#xff0c;在职场&#xff0c;玩副业&#xff0c;文末有福利!&#xff01; 今天&#xff0c;队长看到一个帖子&#xff0c;内容是关于一个员工&#xff0c;在 applovin 公司突然被辞退的经历。 故事的主角&#xff0c;是位尽心尽力的职员&…

墙地砖外形检测的技术方案-外部轮廓检测算法

Ramer算法 利用Canny算子得到墙地砖轮廓后&#xff0c;必须进一步将轮廓线精确分段成墙地砖的四条边&#xff0c;从而可得到墙地砖轮廓尺寸、边直度和直角度指标。采用如下算法实现&#xff1a; 第1&#xff0c;选择较高阈值&#xff0c;利用ramer算法将轮廓线用多边形&#…

PHP Fatal error: Unparenthesized `a ? b : c ? d : e` is not supported.

这个错误是关于三元运算符的错误 这个错误在php8.0以下的版本好像是没问题呢 PHP Fatal error: Unparenthesized a ? b : c ? d : e is not supported. Use either (a ? b : c) ? d : e or a ? b : (c ? d : e) in /cangku/app/common.php on line 57 这个问题是 程…

2024年甘肃省职业院校技能大赛信息安全管理与评估 样题三 理论题

竞赛需要完成三个阶段的任务&#xff0c;分别完成三个模块&#xff0c;总分共计 1000分。三个模块内容和分值分别是&#xff1a; 1.第一阶段&#xff1a;模块一 网络平台搭建与设备安全防护&#xff08;180 分钟&#xff0c;300 分&#xff09;。 2.第二阶段&#xff1a;模块二…

第三讲_ArkTS的初识

ArkTS的初识 1. ArkTS的基本组成2. ArkTS自定义组件 1. ArkTS的基本组成 装饰器&#xff1a; 用于装饰类、结构、方法以及变量&#xff0c;并赋予其特殊的含义。自定义组件&#xff1a;可复用的UI单元&#xff0c;可组合其他组件&#xff0c;图示中Component装饰的struct Hello…