POJ 1298

最近准备开始练习一下poj上的程序,先从水题开始吧,这就是第一个选择的题,题目果然很简单,密码翻译,对于不属于字母的元素直接输出,对于大写字母,减五就能得到翻译后的结果,除A~E需要特殊处理

 

本以为可以轻松过关,不过一运行报Time Limit Exceeded,需要进一步的调试

 

#include<iostream>

#include<string.h>
using namespace std;

char decode(char character){
     char*result;
     switch(character)
     {
       case 'A':
            return 'V';
            break;
       case 'B':
            return 'W';
            break;
       case 'C':
            return 'X';
            break;
       case 'D':
            return 'Y';
            break;
       case 'E':
            return 'Z';
            break;
       default:
            return character-5;
            break;
       }
     }
int main(){
    char input[11];
    char Cipher[201];
    char end[4];
    int i;
 
    while(1)
    {
       cin.getline(input,11);
       if(input == "ENDOFINPUT")
          break;
       else{
       cin.getline(Cipher,201); 
       int length=strlen(Cipher);        
       for(i=0;i<length;i++)
         {
            if(Cipher[i] <= 'Z' && Cipher[i] >= 'A'){
              // cout<<'1';
               cout << decode(Cipher[i]);
               }
            else
            {
               //cout<<'0';
               cout << Cipher[i];
               }
         }
        cout<<endl;
        cin.getline(end,4);
        }
 //       cout<<end<<endl;
   }
    
    return 0;
}

 

不用函数调用,采用scanf与printf进行输入输出之后可以AC.

#include<stdio.h>
#include<string.h>

char result[27]="VWXYZABCDEFGHIJKLMNOPQRSTU";


int main(){
 char Cipher[201];
 char input[11];
 char end[4];
 int i;

 while(1)
 {
  //scanf("%s",input);
  //cin.getline(input,11);
  scanf("%s%*c",input);
  if(strcmp(input,"ENDOFINPUT")==0)
   break;
  else{
   //cin.getline(Cipher,201);
   gets(Cipher);
   //printf("%d\n",strlen(Cipher));
   int length=strlen(Cipher);        
   for(i=0;i<length;i++)
   {
    if(Cipher[i] <= 'Z' && Cipher[i] >= 'A'){
     printf("%c",result[Cipher[i]-'A']); 
     //cout << result[Cipher[i]-'A'];
    }
    else
    {
     printf("%c",Cipher[i]);
     // cout << Cipher[i];
    }
   }
   printf("\n");
   //cout<<endl;
   //scanf("%s",end);
   //cin.getline(end,4);
   scanf("%s%*c",end);
  }
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值