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 #