最近准备开始练习一下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);
}
}
}