C语言编程

输入一个八进制数的字符串,并将它转换成等价的十进制字符串,用、printf的%s格式输出转换结果以检验转换的正确性。例如:“1732”→“986” 麻烦加点说明...谢啦
额。。。这个要求的是用printf的%s的格式输出

首先我忘记C里面取1移行输入怎么写了,所以用了C++
但是我会注释的

int main(){
string str; // C可以用一个大的字符数组代替,几十个大小差不多了
int num=0,bits,temp;
char * res;
cin >> str;// 这里换成C的输入函数
// 下面的str.length()可以用strlen(str)代替
for(int i=0; i<str.length(); i++){
int bit = str[i] - '0';
num += bit << (3*(str.size()-1 - i));
//这里每左移3位相当于乘以8,差n位就乘n-1个8
//8进制么,每位就是8的几次方
}

for(bits=0,temp=num; temp !=0; bits++){
temp /=10;
}

res = (char *) malloc(bits+1);
res[bits--]='\0';
temp = num;
while(temp!=0){
res[bits--]=temp%10 + '0';
temp /=10;
}
printf("%s -> %s", str.c_str(), res);

free(res);
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-05-06
看书,自己编,程序这东西不自己编没影响
相似回答
大家正在搜