鱼C论坛

 找回密码
 立即注册
查看: 1093|回复: 3

[已解决]没有输出

[复制链接]
发表于 2023-11-26 22:52:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

当n=1
时,今天写的每一句话中所用的字母都会向后+1,比如:i love you就成了j mpwf zpv,当然了当是z的时候,+1就等于a。 输入为多组,每组为两行。
第一行为n
,&#8722;50<n<50
第二行为一句话,只有小写字母和空格。长度小于10000
#include <stdio.h>
#include <string.h>
int main(){
    int n, m, i;
    char a[10001];
    while(scanf("%d", &n)==1)
    {
        int s=strlen(a);
        fgets(a, 10001, stdin);
        for(i=0;i<s;i++)
        {
            if(a[i]!=' ')
            {
                m=a[i]-'a';
                n=n%26;
                m=(m-n)%26;
                a[i]=m+'a';
            }
          printf("%c\n",a[i]);
        }
    }
    return 0;
}
最佳答案
2023-11-26 22:53:42

好的,下面是使用C语言实现字符移位加密的示例代码:
#include <stdio.h>#include <ctype.h>void shift_characters(char *text, int n) {    for (int i = 0; text[i] != '\0'; i++) {        if (isalpha(text[i])) {            char base = islower(text[i]) ? 'a' : 'A';            text[i] = ((text[i] - base + n) % 26 + base);        }    }}int main() {    int test_cases;    printf("请输入测试数据的组数:");    scanf("%d", &test_cases);    getchar(); // consume the newline character        for (int i = 0; i < test_cases; i++) {        int n;        printf("请输入移动的位置数:");        scanf("%d", &n);        getchar(); // consume the newline character                printf("请输入需加密的文本:");        char text[100];        fgets(text, sizeof(text), stdin);                shift_characters(text, n);        printf("加密后的文本:%s\n", text);    }        return 0;}
这段代码使用了fgets函数来获取输入的文本,以避免使用scanf时可能出现的换行符问题。shift_characters函数对每个字符进行判断和移位加密,并直接修改原始的文本字符串。

通过循环输入测试数据的组数以及移动的位置数和需要加密的文本,然后调用shift_characters函数进行加密,并打印加密后的结果。

希望这段C语言代码可以帮助到你。如果还有其他问题,请随时提问。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-26 22:52:50 | 显示全部楼层
问题的描述不够清晰,但看起来你想要解决的是一个简单的字符移位加密问题。你需要将每个字母向后移动n个位置,并考虑到循环的情况。

下面是一个示例代码,它可以实现这个字符移位加密的功能:
def shift_characters(text, n):    encrypted_text = ""    for char in text:        if char.isalpha():            base = ord('a') if char.islower() else ord('A')            shifted_char = chr((ord(char) - base + n) % 26 + base)            encrypted_text += shifted_char        else:            encrypted_text += char    return encrypted_text# 输入测试数据test_cases = int(input("请输入测试数据的组数:"))for i in range(test_cases):    n = int(input("请输入移动的位置数:"))    text = input("请输入需加密的文本:")        encrypted_text = shift_characters(text, n)    print("加密后的文本:", encrypted_text)
这段代码首先定义了一个函数`shift_characters`,它接受一个字符串和一个整数作为参数,并返回加密后的字符串。该函数会判断字符是否为字母,然后根据字母的大小写进行移位加密。加密的逻辑是,将字符转换成ASCII码,然后减去对应大小写字母的ASCII码再加上移动的位置数n,最后再进行取模运算。

在主程序中,我们首先询问测试数据的组数,然后依次输入移动的位置数和需要加密的文本。每输入一组测试数据,就会调用`shift_characters`函数进行加密,并打印加密后的结果。

希望这段代码可以帮助到你。如果仍然有问题,请提供更多的信息,以便我能够更好地帮助你解决问题。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-11-26 22:53:25 | 显示全部楼层
FishC_GPT 发表于 2023-11-26 22:52
问题的描述不够清晰,但看起来你想要解决的是一个简单的字符移位加密问题。你需要将每个字母向后移动n个位 ...

用C语言
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-26 22:53:42 | 显示全部楼层    本楼为最佳答案   

好的,下面是使用C语言实现字符移位加密的示例代码:
#include <stdio.h>#include <ctype.h>void shift_characters(char *text, int n) {    for (int i = 0; text[i] != '\0'; i++) {        if (isalpha(text[i])) {            char base = islower(text[i]) ? 'a' : 'A';            text[i] = ((text[i] - base + n) % 26 + base);        }    }}int main() {    int test_cases;    printf("请输入测试数据的组数:");    scanf("%d", &test_cases);    getchar(); // consume the newline character        for (int i = 0; i < test_cases; i++) {        int n;        printf("请输入移动的位置数:");        scanf("%d", &n);        getchar(); // consume the newline character                printf("请输入需加密的文本:");        char text[100];        fgets(text, sizeof(text), stdin);                shift_characters(text, n);        printf("加密后的文本:%s\n", text);    }        return 0;}
这段代码使用了fgets函数来获取输入的文本,以避免使用scanf时可能出现的换行符问题。shift_characters函数对每个字符进行判断和移位加密,并直接修改原始的文本字符串。

通过循环输入测试数据的组数以及移动的位置数和需要加密的文本,然后调用shift_characters函数进行加密,并打印加密后的结果。

希望这段C语言代码可以帮助到你。如果还有其他问题,请随时提问。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 12:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表