鱼C论坛

 找回密码
 立即注册
查看: 1165|回复: 5

[已解决]c语习题

[复制链接]
发表于 2023-7-16 16:11:06 | 显示全部楼层 |阅读模式

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

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

x
题目:对存储在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];i++)
    {
        for(j=i,k=i;isalpha(str[k]);k++);  //查找
        /**********Program**********/





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

int main()
{
    char string[80]="she is able to abide her.";
    puts(string);
    wordchange(string);
    puts(string);
    return 0;
}
最佳答案
2023-7-16 16:11:35
这是一个C语言的问题,需要在给定的程序中填空,实现特定的加密规则:对所有以字符'a'开始并以字符'e'结尾的单词,如果单词长度为偶数个字符,则将组成单词的所有字母循环左移一次;否则循环右移一次。

你可以在 /**********Program**********/  和  /**********  End  **********/  之间加入以下代码:
if(str[j]=='a' && str[k-1]=='e'){    m=k-j;    if(m%2==0)    {        c=str[j];        for(i=j;i<k-1;i++)            str[ i]=str[i+1];        str[k-1]=c;    }    else    {        c=str[k-1];        for(i=k-1;i>j;i--)            str[ i]=str[i-1];        str[j]=c;    }}
现在让我们详细解释一下这段代码的运行原理:

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

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

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

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

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

因此,这段代码能够实现题目中的加密规则,并且只会对符合特定条件(以'a'开始并以'e'结尾)的单词进行操作。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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]; i++) {        for (j = i, k = i; isalpha(str[k]); k++);                if (str[j] == 'a' && str[k - 1] == 'e') {            m = k - j;                        if (m % 2 == 0) {                c = str[j];                                for (i = j; i < k - 1; i++) {                    str[i] = str[i + 1];                }                                str[k - 1] = c;            } else {                c = str[k - 1];                                for (i = k - 1; i > j; i--) {                    str[i] = str[i - 1];                }                                str[j] = c;            }        }                i = k;    }}int main() {    char string[80] = "she is able to abide her.";    puts(string);    wordchange(string);    puts(string);    return 0;}
wordchange 函数中,我添加了循环来查找以字符 'a' 开始并以字符 'e' 结尾的单词。然后,根据单词的长度是偶数还是奇数,进行循环左移或循环右移操作。

这个程序会对存储在字符串数组内的符合条件的单词进行加密处理。希望能够帮到你!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-16 16:11:35 | 显示全部楼层    本楼为最佳答案   
这是一个C语言的问题,需要在给定的程序中填空,实现特定的加密规则:对所有以字符'a'开始并以字符'e'结尾的单词,如果单词长度为偶数个字符,则将组成单词的所有字母循环左移一次;否则循环右移一次。

你可以在 /**********Program**********/  和  /**********  End  **********/  之间加入以下代码:
if(str[j]=='a' && str[k-1]=='e'){    m=k-j;    if(m%2==0)    {        c=str[j];        for(i=j;i<k-1;i++)            str[ i]=str[i+1];        str[k-1]=c;    }    else    {        c=str[k-1];        for(i=k-1;i>j;i--)            str[ i]=str[i-1];        str[j]=c;    }}
现在让我们详细解释一下这段代码的运行原理:

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

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

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

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

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

因此,这段代码能够实现题目中的加密规则,并且只会对符合特定条件(以'a'开始并以'e'结尾)的单词进行操作。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-16 16:35:23 | 显示全部楼层
陶远航 发表于 2023-7-16 16:11
以下是填空部分的完整代码:

脚本可以发我吗,我想研究研究
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-16 16:38:05 | 显示全部楼层
学习编程中的Ben 发表于 2023-7-16 16:35
脚本可以发我吗,我想研究研究

《研究》
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-16 16:40:06 | 显示全部楼层

我不用行吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-24 09:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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