w0h0y0h 2023-05-10 23:50 采纳率: 100%
浏览 170
已结题

字符与数组的运用,请大家帮助解决

这个用数组怎么编程?存在空格,还存在换行,怎么用scanf来输入呀?

img

  • 写回答

5条回答

  • 语言-逆行者 2023-05-10 23:52
    关注

    img

    【法一】

    #include <stdio.h>
    #include <string.h>
    
    // 加密单个单词的函数
    void encryptWord(char* word) {
        int i, len = strlen(word);
        char c;
    
        for (i = 0; i < len; i++) {
            c = word[i];
    
            // 如果当前字母在A到Z的范围内
            if (c >= 'A' && c <= 'Z') {
                if (c >= 'A' && c <= 'M') {  // 如果当前字母是第一组字母中的字母
                    c = 'N' + (c - 'A');     // 替换为对应的第二组字母中的字母
                } else if (c >= 'N' && c <= 'Z') {  // 如果当前字母是第二组字母中的字母
                    c = 'A' + (c - 'N');            // 替换为对应的第一组字母中的字母
                }
            }
    
            // 将替换后的字母存储回原来的单词数组中
            word[i] = c;
        }
    }
    
    int main() {
        char word[101];  // 定义一个能够存储100个字符加上一个结束符'\0'的数组
        while (scanf("%s", word) != EOF) {  // 循环读入每个单词,直到结束符EOF
            encryptWord(word);          // 调用函数加密该单词
            printf("%s\n", word);       // 输出加密后的结果
        }
        return 0;
    }
    
    

    【法二】

    
    #include <stdio.h>
    #include <string.h>
    
    void encryptWord(char* word) {
        int i;
        int length = strlen(word);
    
        for (i = 0; i < length; i++) {
            if (word[i] >= 'A' && word[i] <= 'Z') {
                if (word[i] >= 'A' && word[i] <= 'M') {
                    word[i] = 'N' + (word[i] - 'A');
                } else if (word[i] >= 'N' && word[i] <= 'Z') {
                    word[i] = 'A' + (word[i] - 'N');
                }
            }
        }
    }
    
    int main() {
        char input[100];
        scanf("%[^\n]", input); 
    
        char* word = strtok(input, " ");
    
        while (word != NULL) {
            encryptWord(word);
            printf("%s\n",  word);
            word = strtok(NULL, " ");
           
        }
    
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 5月19日
  • 已采纳回答 5月11日
  • 请采纳用户回复 5月11日
  • 创建了问题 5月10日

悬赏问题

  • ¥15 Fatal error in Process MEMORY
  • ¥15 labelme生成的json有乱码?
  • ¥30 arduino vector defined in discarded section `.text' of wiring.c.o (symbol from plugin)
  • ¥20 如何训练大模型在复杂因素组成的系统中求得最优解
  • ¥15 关于#r语言#的问题:在进行倾向性评分匹配时,使用“match it"包提示”错误于eval(family$initialize): y值必需满足0 <= y <= 1“请问在进行PSM时
  • ¥45 求17位带符号原码乘法器verilog代码
  • ¥20 PySide6扩展QLable实现Word一样的图片裁剪框
  • ¥15 matlab数据降噪处理,提高数据的可信度,确保峰值信号的不损失?
  • ¥15 怎么看我在bios每次修改的日志
  • ¥15 python+mysql图书管理系统