You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何构建可接收用户输入的数组以用于Caesar cipher程序存储明文

凯撒密码接收用户输入构建明文字符数组实现方案

通用实现逻辑如下:

  • 首先接收用户输入的完整明文串,大多数编程语言的字符串本身就是可按索引访问的字符序列,如果你需要显式转为数组,直接做对应类型转换即可
  • 可以根据凯撒密码的计算需求提前处理输入:比如过滤非字母字符、统一转大小写,避免后续移位计算出错

Python 实现示例

Python 中字符串本身是可迭代序列,用list()方法即可直接转为字符数组:

# 接收用户输入的明文
plaintext = input("请输入需要加密的明文: ")
# 直接转换为字符数组
plaintext_arr = list(plaintext)
# 可选处理:过滤非字母、统一转大写方便后续移位计算
filtered_arr = [c.upper() for c in plaintext_arr if c.isalpha()]

C 语言实现示例

C 语言需要先定义固定长度的字符数组,推荐用fgets接收输入避免空格截断问题:

#include <stdio.h>
#include <ctype.h>
#define MAX_PLAIN_LEN 1024 // 自定义明文最大支持长度

int main() {
    char plaintext_arr[MAX_PLAIN_LEN];
    printf("请输入需要加密的明文: ");
    // 接收用户输入存入数组
    fgets(plaintext_arr, MAX_PLAIN_LEN, stdin);
    
    // 可选处理:过滤非字母、统一转大写
    int valid_pos = 0;
    for(int i = 0; plaintext_arr[i] != '\0'; i++) {
        if(isalpha(plaintext_arr[i])) {
            plaintext_arr[valid_pos++] = toupper(plaintext_arr[i]);
        }
    }
    plaintext_arr[valid_pos] = '\0'; // 补充字符串结束符
    return 0;
}

JavaScript 实现示例

浏览器环境:

// 接收用户输入
const plaintext = prompt("请输入需要加密的明文: ") || '';
// 转为字符数组
const plaintextArr = plaintext.split('');
// 可选处理:过滤非字母、统一转大写
const filteredArr = plaintextArr.filter(c => /[a-zA-Z]/.test(c)).map(c => c.toUpperCase());

Node.js 环境:

const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

rl.question('请输入需要加密的明文: ', (plaintext) => {
    const plaintextArr = plaintext.split('');
    // 后续处理逻辑
    rl.close();
});

小提示:如果只是做基础凯撒移位运算,大部分场景不需要显式转数组,直接遍历字符串的每个字符做移位计算即可,转数组仅用于需要对字符做增删改的特殊处理场景。

内容的提问来源于stack exchange,提问作者abdallah saeed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 15:48:04