问题C:进制转换

问题C:进制转换解题思路:
其实很简单,但仍然想了半天,被自己蠢哭;拿985这个数字做个表格来简单说明一下思路吧:

数字 /2 %2
985 492 1
492 246 0
246 123 0
123 61 1
61 30 1
30 15 0
15 7 1
7 3 1
3 1 1
1 0 1

第三列就是需要求得的答案。

#include<cstdio>
#include<cstring>
int main() {
	char input[31];
	while(scanf("%s",input) != EOF) {
		int len = strlen(input);
		int output[100];
		int k = 0;
		int lenOutput = 0;
		while(k < len) {
			//每次除法后个位数字整除2的值 
			output[lenOutput++] = (input[len - 1] - '0')%2; 
			int i = 0;
			int c = 0;  
			//对数字进行除2计算 
			for(i = k ; i < len; i++) {
				int temp = input[i] - '0';
				input[i] = (input[i] - '0'+ c)/2 + '0'; 
				//根据高位的奇偶性判断往低一位进的值 
				if( temp%2 == 0) {
					c = 0;
				} else if( temp%2 == 1) {
					c = 10;
				}
			}
			//如果高位为0.表示运算后的数字位数减少了。个位数字为0时。即表示完成; 
			if(input[k] == '0') {
				k++;
			}
		}
		//输出结果 
		for(int i = lenOutput - 1; i >= 0; i--) {
			printf("%d",output[i]);
		}
		printf("\n");
	}
	return 0;
}