c语言大赛 问题求解答
c语言有一道题,是关于数学的,就是用堆栈编写将二进制转化十进制
我说下我的思路。。
让二进制进栈,根据TOP指针建立位权的关系。最后相加 。。


程序代码:
root@~/prog #cat b2d.c
#include <stdio.h>
int main (void) {
char str[16],*ptr=str;
int binToDec (char *ptr),len=0;
scanf("%s",str);
for(len=0;str[len]!='\0';len++) {
if(str[len]<'0'||str[len]>'1'||len>16) {
printf ("Error input Or Out of Rang.Exit!\n");
return 1;
}
}
printf("%s's Dec-Code is:%i\n",str,binToDec(ptr));
return 0;
}
int binToDec (char *ptr) {
int sum=0,i=0,j=0;
int N2 (int n);
char *p=ptr;
while(*(p+j)) {
j++;
}
ptr+=j-1;
while(*ptr) {
sum+=(*ptr-'0')*N2(i);
ptr--;
i++;
}
return sum;
}
int N2 (int n) {
if(n==0) return 1;
else return 2*N2(n-1);
}
root@~/prog #