不是VIP会员,不能显示答案

题目解答

题目:
#include <iostream>

#include <string>

using namespace std;



char base[64] ;

char table[256] ;



void init ()

{

for (int i=0; i<26; i++)base[i]='A'+i;

for (int i=0; i<26; i++)base[26 +i]='a'+i;

for (int i=0; i<10; i++)base[52+i]='0'+i;

base [62] = '+', base[63] ='/';



for (int i =0; i<256; i++)table[i]=0xff;

for (int i =0; i <64; i++) table[base[i]]=i;

table['='] =0;

}



string decode (string str)

{

string ret;

int i;

for (i=0; i < str.size(); i +=4){

ret +=table[str [1]] <<2|table[str[1+1]]>> 4;

if (str[i+2] !='=')

ret += (table[str[i+1] ] &0x0f) <<4|table[str[i+2]] >> 2;

if (str [i+3] !='=')

ret += table[str[i+2] ] << 6 | table[str[i+3]];

}

return ret;

}



int main ()

{

init () ;

cout<<(int)table[0])<<endl;



string str;

cin>>str;

cout<<decode (str) <<endl;

return 0;

}




判断题

1) 输出的第二行一定是由小写字母、大写字母、数字和“+”、“/”、“-”构成的字符串。()

2) 可能存在输入不同,但输出的第二行相同的情形。()

3) 输出的第一行为“-1”。


选择题

4) 设输入字符串长度为n, decode函数的时间复杂度为()

5) 当输入为“Y3Nx”时,输出的第二行为()。

6) (3.5分) 当输入为“Y2NmIDIWMjE=”时,输出的第二行为()。
考点:
分析:
解答:
评论:
老师: