问题标题: 大家好!酷町堂:求解 1791 密码升级战!

5
1
已解决
马佳滢
马佳滢
新手天翼
新手天翼

帮帮忙!

#include<stdio.h>
#include<string.h>
#include<iostream>
int main()
{
	char n[100];
	int i; 
	scanf("%s",n);
	int a=strlen(n),c,b,d;
	c=a/5;
	b=a%5;
	if(c>=2){
	d=c-2;
	for(i=0;i<i+5;i++){
		if(65<=(int)n[i]&&(int)n[i]<=90||97<=(int)n[i]&&(int)n[i]<=122){
			if(n[i]=='a'){
				n[i]=='y';
			}else if(n[i]=='b'){
				n[i]=='z';
			}if(n[i]=='A'){
				n[i]=='Y';
			}else if(n[i]=='B'){
				n[i]=='Z';
			}
			else {
				(int)n[i]==(int)n[i]-2;
			}
		}
	}
	for(i=5;i<i+5;i++){
		if(65<=(int)n[i]&&(int)n[i]<=90||97<=(int)n[i]&&(int)n[i]<=122){
			if(n[i]=='y'){
				n[i]=='a';
			}else if(n[i]=='z'){
				n[i]=='b';
			}if(n[i]=='Y'){
				n[i]=='A';
			}else if(n[i]=='Z'){
				n[i]=='B';
			}
			else {
				(int)n[i]==(int)n[i]+2;
			}
		}
	}
	if(d!=0){
		for(i=10;i<d*5;i++){
		if(65<=(int)n[i]&&(int)n[i]<=90||97<=(int)n[i]&&(int)n[i]<=122){
			if(n[i]=='z'){
				n[i]=='a';
			}else if(n[i]=='Z'){
				n[i]=='A';
			}
			else {
				(int)n[i]==(int)n[i]+2;
			}
		}
	}
	}
	}
	printf("%d",n);
	return 0;	
} 

运行结果:

马佳滢在2018-01-27 17:40:53追加了内容

1.http://judge.codingtang.com/problem/1791/

2.1791密码升级战

3.或lookhttp://wenda.codingtang.com/questions/904/(有题目描述)专供非精英怪同学look。

马佳滢在2018-02-02 17:32:50追加了内容

为什么一遇到“cout”将报错


0
已采纳
陆麟瑞
陆麟瑞
资深天翼
资深天翼

你的思路不太对,有些地方思路不太对,你这种错误可能是死循环。

可以参考如下代码。

for(int i=0; i<=min(4,l); i++)//第一部分判断并替换
    {
        if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')
        {
            if(s[i]=='B') cout<<'Z';
            else if(s[i]=='b') cout<<'z';
            else if(s[i]=='a') cout<<'y';
            else if(s[i]=='A') cout<<'Y';
            else cout<<char(s[i]-2);
        }
        else cout<<s[i];
    }
    for(int i=5; i<=min(9,l); i++)//第二部分判断并替换
    {
        if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')
        {
            if(s[i]=='Z') cout<<'B';
            else if(s[i]=='z') cout<<'b';
            else if(s[i]=='y') cout<<'a';
            else if(s[i]=='Y') cout<<'A';
            else cout<<char(s[i]+2);
        }
        else cout<<s[i];
    }
    for(int i=10; i<=l; i++)//第三部分判断并替换
    {
        if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')
        {
            if(s[i]=='A') cout<<'Z';
            else if(s[i]=='a') cout<<'z';
            else cout<<char(s[i]-1);
        }
        else cout<<s[i];
    }

模拟一遍就行了。

0
马佳滢
马佳滢
新手天翼
新手天翼

注意:

本题由于为了腾出3个位置问问题,已经采纳陆麟瑞 大神的回答(可惜没有,用倒是用另一种方法AC了),请大家不要怀疑!

                                                      谢谢!

                                                                                特此说明,以资表明!

                                                                              马佳滢 2018年3月26日 22时11分

0
0
陆麟瑞
陆麟瑞
资深天翼
资深天翼

你的思路不太对,有些地方思路不太对,你这种错误可能是死循环。

可以参考如下代码。

for(int i=0; i<=min(4,l); i++)//第一部分判断并替换
    {
        if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')
        {
            if(s[i]=='B') cout<<'Z';
            else if(s[i]=='b') cout<<'z';
            else if(s[i]=='a') cout<<'y';
            else if(s[i]=='A') cout<<'Y';
            else cout<<char(s[i]-2);
        }
        else cout<<s[i];
    }
    for(int i=5; i<=min(9,l); i++)//第二部分判断并替换
    {
        if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')
        {
            if(s[i]=='Z') cout<<'B';
            else if(s[i]=='z') cout<<'b';
            else if(s[i]=='y') cout<<'a';
            else if(s[i]=='Y') cout<<'A';
            else cout<<char(s[i]+2);
        }
        else cout<<s[i];
    }
    for(int i=10; i<=l; i++)//第三部分判断并替换
    {
        if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')
        {
            if(s[i]=='A') cout<<'Z';
            else if(s[i]=='a') cout<<'z';
            else cout<<char(s[i]-1);
        }
        else cout<<s[i];
    }

模拟一遍就行了。

0
0
我要回答