鱼C论坛

 找回密码
 立即注册
查看: 1526|回复: 7

时间超限

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

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

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

x
他们每天都会约定加密常数n,举个例子,当n=1时,今天写的每一句话中所用的字母都会向后+1,比如:i love you就成了j mpwf zpv,当然了当是z的时候,+1就等于a。

输入为多组,每组为两行。

第一行为n,&#8722;50<n<50

第二行为一句话,只有小写字母和空格。长度小于10000 ,输出加密语言

  1. #include <stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5.     char a[10001];
  6.     int n,i;
  7.     while(1)
  8.     {
  9.         scanf("%d",&n);
  10.         gets(a);
  11.         int sum=strlen(a);
  12.         if(n>0)
  13.         {
  14.             for(i=0;i<sum;i++)
  15.             {
  16.                 if(a[i]!=' ')
  17.                 {
  18.                     a[i]=(a[i]-'a'+26-n)%26+'a';
  19.                 }
  20.                 if(a[i]==' ')
  21.                 {
  22.                     a[i]=a[i];
  23.                 }
  24.             }
  25.         }
  26.         if(n<0)
  27.         {
  28.             for(i=0;i<sum;i++)
  29.             {
  30.                 if(a[i]!=' ')
  31.                 {
  32.                     a[i]=(a[i]-'a'-n)%26+'a';
  33.                 }
  34.                  if(a[i]==' ')
  35.                 {
  36.                     a[i]=a[i];
  37.                 }
  38.             }
  39.         }
  40.         for(i=0;i<sum;i++)
  41.         {
  42.             printf("%c",a[i]);
  43.         }
  44.         printf("\n");
  45.     }
  46.     return 0;
  47. }
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-11-26 12:41:32 | 显示全部楼层
这个问题需要对输入的每一行进行加密,加密的方法是将每个字母向后移动n个位置。当移动到字母表的末尾时,会循环回到字母表的开头。

以下是一个示例的Python代码,用于加密字符串:
  1. def encrypt_string(s, n):
  2.     result = ""
  3.     for char in s:
  4.         # 判断是否是大写字母
  5.         if char.isupper():
  6.             # 将字母转换为ASCII码,并向后移动n个位置
  7.             encrypted_char = chr((ord(char) - 65 + n) % 26 + 65)
  8.         # 判断是否是小写字母
  9.         elif char.islower():
  10.             encrypted_char = chr((ord(char) - 97 + n) % 26 + 97)
  11.         else:
  12.             encrypted_char = char  # 非字母字符不做处理
  13.         result += encrypted_char
  14.     return result
  15. # 读取输入的多组测试数据
  16. while True:
  17.     n = int(input())
  18.     if n == 0:
  19.         break
  20.     s = input()
  21.     encrypted_string = encrypt_string(s, n)
  22.     print(encrypted_string)
复制代码

这段代码中,我们定义了一个`encrypt_string`函数,它接受两个参数:需要加密的字符串`s`和加密常数`n`。在函数内部,我们使用循环遍历字符串中的每个字符,并根据字符的ASCII码进行加密操作。加密后的结果存储在`result`变量中,最后返回该加密字符串。

主程序读取多组输入数据,直到输入的加密常数n为0时结束。对于每组测试数据,读取需要加密的字符串s,并调用`encrypt_string`函数进行加密操作。最后将加密后的结果打印出来。

希望这个示例能够帮助你理解问题并找到解决方案。如果还有其他问题,请随时提问!

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-11-26 12:42:06 | 显示全部楼层
FishC_GPT 发表于 2023-11-26 12:41
这个问题需要对输入的每一行进行加密,加密的方法是将每个字母向后移动n个位置。当移动到字母表的末尾时, ...

用C语言
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-26 12:42:20 | 显示全部楼层

当然,以下是使用C语言编写的示例代码来解决这个问题:
  1. #include <stdio.h>
  2. #include <string.h>
  3. void encryptString(char* str, int n) {
  4.     int length = strlen(str);
  5.     for(int i = 0; i < length; i++) {
  6.         if(str[i] >= 'a' && str[i] <= 'z') {
  7.             str[i] = (str[i] - 'a' + n) % 26 + 'a';
  8.         }
  9.         else if(str[i] >= 'A' && str[i] <= 'Z') {
  10.             str[i] = (str[i] - 'A' + n) % 26 + 'A';
  11.         }
  12.     }
  13. }
  14. int main() {
  15.     int n;
  16.     char str[100];
  17.    
  18.     while(1) {
  19.         scanf("%d", &n);
  20.         if(n == 0) {
  21.             break;
  22.         }
  23.         
  24.         getchar(); // 清除缓冲区的换行符
  25.         
  26.         fgets(str, sizeof(str), stdin);
  27.         
  28.         encryptString(str, n);
  29.         
  30.         printf("%s", str);
  31.     }
  32.    
  33.     return 0;
  34. }
复制代码

在这个示例代码中,我们定义了一个`encryptString`函数来对字符串进行加密操作。这个函数接受两个参数:需要加密的字符串`str`和加密常数`n`。在函数内部,我们使用循环遍历字符串中的每个字符,并根据字符的ASCII码进行加密操作。最后,我们在`main`函数中读取多组输入数据,直到输入的加密常数`n`为0时结束。对于每组测试数据,我们使用`fgets`函数读取需要加密的字符串`str`,然后调用`encryptString`函数进行加密操作。最后,我们使用`printf`函数打印加密后的结果。

希望这个示例能够帮助你解决问题!如果有任何其他问题,请随时提问!

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-11-26 12:57:32 | 显示全部楼层
FishC_GPT 发表于 2023-11-26 12:42
当然,以下是使用C语言编写的示例代码来解决这个问题:

#include<stdio.h>
#include<string.h>
void lml(char*a,int n)
{
    int i;
    int len=strlen(a);
    if(n>0)
        {
            for(i=0;i<len;i++)
            {
                if(a[i]!=' ')
                {
                    a[i]=(a[i]-'a'+26-n)%26+'a';
                }
                if(a[i]==' ')
                {
                    a[i]=a[i];
                }
            }
        }
        if(n<0)
        {
            for(i=0;i<len;i++)
            {
                if(a[i]!=' ')
                {
                    a[i]=(a[i]-'a'-n)%26+'a';
                }
                 if(a[i]==' ')
                {
                    a[i]=a[i];
                }
            }
        }
}
int main()
{
    int n;
    while(1)
    {
        scanf("%d",&n);
       char a[10001];
        fgets(a,10001,stdin);
        lml(a,n);
        printf("%s\n",a);
    }
    return 0;
}
哪里不对
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-26 12:57:44 | 显示全部楼层
mamaaini 发表于 2023-11-26 12:57
#include
#include
void lml(char*a,int n)
{
    ...

抱歉,看起来你的代码截断了。请提供完整的代码,或者描述你的问题更详细一些,我会尽力帮助你解决。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-11-26 13:25:44 | 显示全部楼层
FishC_GPT 发表于 2023-11-26 12:57
抱歉,看起来你的代码截断了。请提供完整的代码,或者描述你的问题更详细一些,我会尽力帮助你解决。

...

#include <string.h>
int main()
{
    char a[10001];
    int n,i;
    while(1)
    {
        scanf("%d",&n);
        getchar();
        gets(a);
        int sum=strlen(a);
        if(n>0)
        {
            for(i=0;i<sum;i++)
            {
                if(a[i]!=' ')
                {
                    a[i]=(a[i]-'a'+26-n)%26+'a';
                }
                if(a[i]==' ')
                {
                    continue;
                }
            }
        }
        if(n<0)
        {
            for(i=0;i<sum;i++)
            {
                if(a[i]!=' ')
                {
                    a[i]=(a[i]-'a'-n)%26+'a';
                }
                 if(a[i]==' ')
                {
                    continue;
                }
            }
        }
        puts(a);
    }
    return 0;
}
时间超限了怎么该
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-26 13:26:02 | 显示全部楼层
mamaaini 发表于 2023-11-26 13:25
#include
int main()
{
    char a;
    int n,i ...

感谢提供代码。我注意到你的代码存在一些问题。首先,你定义了一个字符变量`a`,应该使用字符数组来存储输入的字符串。其次,你在循环中使用`gets()`函数获取字符串,这个函数已经被标记为不安全的,建议使用更安全的`fgets()`函数。此外,在你的循环中,没有对输入字符串进行加密操作。

下面是修改后的代码示例:
  1. #include <stdio.h>
  2. #include <string.h>
  3. void encrypt_string(char *str, int n) {
  4.     int len = strlen(str);
  5.     for (int i = 0; i < len; i++) {
  6.         if (str[i] >= 'a' && str[i] <= 'z') {
  7.             // 小写字母处理
  8.             str[i] = ((str[i] - 'a') + n) % 26 + 'a';
  9.         } else if (str[i] >= 'A' && str[i] <= 'Z') {
  10.             // 大写字母处理
  11.             str[i] = ((str[i] - 'A') + n) % 26 + 'A';
  12.         }
  13.     }
  14. }
  15. int main() {
  16.     int n;
  17.     char str[100];
  18.     while (1) {
  19.         scanf("%d", &n);
  20.         getchar();
  21.         fgets(str, sizeof(str), stdin);
  22.         int len = strlen(str);
  23.         if (str[len - 1] == '\n') {
  24.             str[len - 1] = '\0';  // 去掉输入字符串末尾的换行符
  25.         }
  26.         if (n == 0) {
  27.             break;
  28.         }
  29.         encrypt_string(str, n);
  30.         printf("%s\n", str);
  31.     }
  32.     return 0;
  33. }
复制代码

在上面的示例中,我们定义了`encrypt_string`函数来进行加密操作。在循环中,我们使用`fgets()`函数获取输入的字符串,并去掉末尾的换行符。然后,我们调用`encrypt_string`函数对字符串进行加密,并打印加密后的结果。如果输入的加密常数为0,则退出循环。

希望这个示例能够帮助你解决问题。如果还有其他疑问,请随时提问。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-22 01:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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