ZxZ. 发表于 2023-7-16 16:11:06

c语习题

题目:对存储在string数组内的所有以字符'a'开始并以字符'e'结尾的单词做
      加密处理。

加密规则:若单词长度为偶数个字符,则将组成单词的所有字母循环左移一次;否则
          循环右移一次。

例如:单词able经循环左移一次后变为blea;单词abide经循环右移一次后变为eabid。
数组原数据:she is able to abide her.
加密后数据:she is blea to eabid her.

在/**********Program**********/
   



    /**********End**********/中填空
注意:请勿改动程序中的其他部分。

#include <stdio.h>
#include <ctype.h>
void wordchange(char str[])
{
    int i,j,k,m;
    char c;
    for(i=0;str;i++)
    {
      for(j=i,k=i;isalpha(str);k++);//查找
      /**********Program**********/





      /**********End**********/
      i=k;                                 
    }
}

int main()
{
    char string="she is able to abide her.";
    puts(string);
    wordchange(string);
    puts(string);
    return 0;
}

陶远航 发表于 2023-7-16 16:11:22

以下是填空部分的完整代码:

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

void wordchange(char str[]) {
    int i, j, k, m;
    char c;
   
    for (i = 0; str; i++) {
      for (j = i, k = i; isalpha(str); k++);
      
      if (str == 'a' && str == 'e') {
            m = k - j;
            
            if (m % 2 == 0) {
                c = str;
               
                for (i = j; i < k - 1; i++) {
                  str = str;
                }
               
                str = c;
            } else {
                c = str;
               
                for (i = k - 1; i > j; i--) {
                  str = str;
                }
               
                str = c;
            }
      }
      
      i = k;
    }
}

int main() {
    char string = "she is able to abide her.";
    puts(string);
    wordchange(string);
    puts(string);
    return 0;
}


在 wordchange 函数中,我添加了循环来查找以字符 'a' 开始并以字符 'e' 结尾的单词。然后,根据单词的长度是偶数还是奇数,进行循环左移或循环右移操作。

这个程序会对存储在字符串数组内的符合条件的单词进行加密处理。希望能够帮到你!

isdkz 发表于 2023-7-16 16:11:35

这是一个C语言的问题,需要在给定的程序中填空,实现特定的加密规则:对所有以字符'a'开始并以字符'e'结尾的单词,如果单词长度为偶数个字符,则将组成单词的所有字母循环左移一次;否则循环右移一次。

你可以在 /**********Program**********/和/**********End**********/之间加入以下代码:

if(str=='a' && str=='e')
{
    m=k-j;
    if(m%2==0)
    {
      c=str;
      for(i=j;i<k-1;i++)
            str[ i]=str;
      str=c;
    }
    else
    {
      c=str;
      for(i=k-1;i>j;i--)
            str[ i]=str;
      str=c;
    }
}


现在让我们详细解释一下这段代码的运行原理:

·if(str=='a' && str=='e')首先我们检查单词是否以'a'开始并以'e'结尾。如果是,我们继续执行加密操作。

·m=k-j;计算单词的长度。

·if(m%2==0)判断单词长度是否为偶数。

· 如果单词长度是偶数,我们执行循环左移。我们保存第一个字符,然后将剩下的字符向左移动一位,最后把保存的第一个字符放到最后一位。

· 如果单词长度是奇数,我们执行循环右移。我们保存最后一个字符,然后将剩下的字符向右移动一位,最后把保存的最后一个字符放到第一位。

因此,这段代码能够实现题目中的加密规则,并且只会对符合特定条件(以'a'开始并以'e'结尾)的单词进行操作。

学习编程中的Ben 发表于 2023-7-16 16:35:23

陶远航 发表于 2023-7-16 16:11
以下是填空部分的完整代码:



脚本可以发我吗,我想研究研究

陶远航 发表于 2023-7-16 16:38:05

学习编程中的Ben 发表于 2023-7-16 16:35
脚本可以发我吗,我想研究研究

《研究》

学习编程中的Ben 发表于 2023-7-16 16:40:06

陶远航 发表于 2023-7-16 16:38
《研究》

我不用行吧
页: [1]
查看完整版本: c语习题