今天面试某司,竟然把数字转换成2进制表示的字符串写错了。。。
写个正确的版本提醒一下。。。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | typedef stack< char > CharStack; void binary(unsigned int num, char *out) { CharStack tmpStack; while (num) { tmpStack.push((num % 2) + '0' ); num /= 2; } int i = 0; while (!tmpStack.empty()) { out[i++] = tmpStack.top(); tmpStack.pop(); } out[i] = 0; } |
二面应该是没有了。。。
虽然我 C 是水货,但是我印象里记得这种进制转换不应该用字符串,而是位操作~
要求结果是字符串输出