QQ扫一扫联系
1 #include <stdio.h> 2 #include <string.h> 3 4 char base[64]; 5 char table[256]; 6 char str[256]; 7 char ans[256]; 8 9 void init() 10 { 11 for (int i = 0; i < 26; i++) base[i] = 'A' + i; 12 for (int i = 0; i < 26; i++) base[26 + i] = 'a' + i; 13 for (int i = 0; i < 10; i++) base[52 + i] = '0' + i; 14 base[62] = '+', base[63] = '/'; 15 16 for (int i = 0; i < 256; i++) table[i] = 0xff; 17 for (int i = 0; i < 64; i++) table[base[i]] = i; 18 table['='] = 0; 19 } 20 21 void decode(char *str) 22 { 23 char *ret = ans; 24 int i, len = strlen(str); 25 for (i = 0; i < len; i += 4) { 26 (*ret++) = table[str[i]] << 2 | table[str[i + 1]] >> 4; 27 if (str[i + 2] != '=') 28 (*ret++) = (table[str[i + 1]] & 0x0f) << 4 | table[str[i + 2]] >>2; 29 if(str[i + 3] != '=') 30 (*ret++) = table[str[i + 2]] << 6 | table[str[i + 3]]; 31 } 32 } 33 34 int main() 35 { 36 init(); 37 printf("%d\n", (int)table[0]); 38 39 scanf("%s", str); 40 decode(str); 41 printf("%s\n", ans); 42 return 0; 43 }
?判断题
1)输出的第二行一定是由小写字母、大写字母、数字和”+”、”/”、”=”构成的字符
串。()
2.)可能存在输入不同,但输出的第二行相同的情形。()
3)输出的第一行为”-1”。()
?单选题
4)设输入字符串长度为n,decode函数的时间复杂度为()
5)当输入为”Y3Nx”时,输出的第二行为()
6)当输入为”Y2NmIDIwMjE=”时,输出的第二行为()
1.
A.正确
B.错误
2.
A.正确
B.错误
3.
A.正确
B.错误
4.
A.O(√n)
B.O(n)
C.O(n log n)
D.O(n^2)
5.
A.”csp”
B.“csq”
C.”CSP”
D.“Csp”
6.
A.”ccf2021”
B.”ccf2022”
C.”ccf 2021”
D.”ccf 2022”
第一空(1.5分):______________
第二空(1.5分):______________
第三空(1.5分):______________
第四空(3分):______________
第五空(3分):______________
第六空(3.5分):______________