yueyufeng 发表于 2023-11-26 22:52:37

没有输出


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

FishC_GPT 发表于 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官方接口),如未能正确解答您的问题,请继续追问。

yueyufeng 发表于 2023-11-26 22:53:25

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

用C语言

FishC_GPT 发表于 2023-11-26 22:53:42

yueyufeng 发表于 2023-11-26 22:53
用C语言

好的,下面是使用C语言实现字符移位加密的示例代码:

#include <stdio.h>
#include <ctype.h>

void shift_characters(char *text, int n) {
    for (int i = 0; text != '\0'; i++) {
      if (isalpha(text)) {
            char base = islower(text) ? 'a' : 'A';
            text = ((text - 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;
      fgets(text, sizeof(text), stdin);
      
      shift_characters(text, n);
      printf("加密后的文本:%s\n", text);
    }
   
    return 0;
}

这段代码使用了fgets函数来获取输入的文本,以避免使用scanf时可能出现的换行符问题。shift_characters函数对每个字符进行判断和移位加密,并直接修改原始的文本字符串。

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

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

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 没有输出