Discuz! Board

 找回密码
 立即注册
查看: 309|回复: 2

3.3错误作业

[复制链接]

20

主题

33

帖子

3458

积分

论坛元老

Rank: 8Rank: 8

积分
3458

小火马 Lv:11
发表于 2023-3-5 11:05:06 | 显示全部楼层 |阅读模式
[C++] 纯文本查看 复制代码
#include <stdio.h>
#include <string.h>
[color=#ff0000]//建议还是使用万能头[/color]
int main() {
        char s[1005];//定义数组
        int i, len;
        while (~scanf("%s", s)) { //循环
                len = strlen(s);
                for (i = len; i >= 0; i = i - 4) {//循环,[color=#ff0000]这里i每次减4是为什么,跳4个字符访问吗,应该是按序访问[/color]
                        if (s[i] == 'a')//特殊,
                                s[i] = 'w';
                        else if (s[i] == 'A')
                                s[i] = 'W';
                        if (s[i] == 'b')
                                s[i] = 'x';
                        else if (s[i] == 'B')
                                s[i] = 'X';
                        if (s[i] == 'c')
                                s[i] = 'y';
                        else if (s[i] == 'C')
                                s[i] = 'Y';
                        if (s[i] == 'd')
                                s[i] = 'z';
                        else if (s[i] == 'D')
                                s[i] = 'Z';//特殊
                        else if (s[i] >= 'a' && s[i] < 'z')//一般[color=#ff0000]逻辑上没有问题,[/color]
                                s[i] = s[i] - '4';//[color=#ff0000]写法上有问题,s[i]=s[i]-4[/color]
                        else if (s[i] >= 'A' && s[i] < 'Z')
                                s[i] = s[i] - '4';//一般
                        printf("%c", s[i]);//输出
                }
                printf("\r\n");//输出不换行
        }
        return 0;
}
回复

使用道具 举报

574

主题

758

帖子

243万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2435189

烈空座 Lv:100
发表于 2023-3-5 11:12:14 | 显示全部楼层
[C] 纯文本查看 复制代码
#include<bits/stdc++.h>
using namespace std;
int main()//字符串加密1
{

        string a;
        getline(cin,a);
      
        for(int i=0;i<a.length();i++)
        {
                if((a[i]<='d')&&(a[i]>='a'))        a[i]='z'-('d'-a[i]);
                else if((a[i]<='D')&&(a[i]>='A'))        a[i]='Z'-('D'-a[i]);
                else if(((a[i]<='z')&&(a[i]>='a'))||((a[i]<='Z')&&(a[i]>='A')))a[i] = a[i]-4;
                else a[i]=a[i];
                cout<<a[i];
        }
        return 0;
} 

请加上注释


回复

使用道具 举报

20

主题

33

帖子

3458

积分

论坛元老

Rank: 8Rank: 8

积分
3458

小火马 Lv:11
 楼主| 发表于 2023-3-5 11:20:51 | 显示全部楼层
admin 发表于 2023-3-5 11:12
[mw_shl_code=c,true]#include
using namespace std;
int main()//字符串加密1

#include<bits/stdc++.h>
using namespace std;
int main()//字符串加密1
{

        string a;
        getline(cin,a);//输入数组a
         
        for(int i=0;i<a.length();i++)//循环
        {
                if((a<='d')&&(a>='a'))       a='z'-('d'-a);//特殊情况小写
                else if((a<='D')&&(a>='A'))        a='Z'-('D'-a);//特殊情况大写
                else if(((a<='z')&&(a>='a'))||((a<='Z')&&(a>='A')))a = a-4;//一般情况大小写
                else a=a;
                cout<<a;//输出最后加密字符
        }
        return 0;
}
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-2-13 05:19 , Processed in 0.052909 second(s), 32 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.. 技术支持 by 巅峰设计

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