- 编辑器:VC++ 6.0
- 题目:从键盘输入一串字符串,第一个字符是‘2’或者‘8’,第二个字符是‘#’,接着后面是一个二进制串或八进制串,最后以‘¥’结尾。输出相对应的十进制数。如输入:2#1101$ 输出结果:13 输入:8#12$ 输出结果:10
- 我的代码:
- #include<stdio.h>
- #include<string.h>
- #include<math.h>
- void main()
- {
- char ch[100];
- int a[100],k=0;
- int n;
- double sum=0,x=0;
- puts("please inputs characters:");
- gets(ch); //输入2#1101¥ 8#12¥
- n=strlen(ch); //n为字符串长度
- if(ch[0]=='2')
- {
- for(int i=n-2;i<=2;i--) //i从¥前一个元素开始,例如2#1101¥从末尾1开始到第一个1结束
- {
- switch(ch[i])
- {
- case '0':a[k]=0;break;
- case '1':a[k]=1;break;
- }
- sum+=(a[k]*pow(2,x)); //sum=1×2^0+1×2^2+1×2^3
- x++;
- k++;
- continue;
- }
- printf("%d\n",sum);
- }
- else if(ch[0]=='8')
- {
- for(int j=n-3;j<=2;j--)
- {
- switch(ch[j])
- {
- case '0':a[k]=0;break;
- case '1':a[k]=1;break;
- case '2':a[k]=2;break;
- case '3':a[k]=3;break;
- case '4':a[k]=4;break;
- case '5':a[k]=5;break;
- case '6':a[k]=6;break;
- case '7':a[k]=7;break;
- }
- sum+=(a[k]*pow(8,x));
- x++;
- k++;
- continue;
- }
- printf("%d\n",sum);
- }
- }
- 无论我输入什么,结果都是输出0,如图:
- 调试结果:
- 谢谢大家能帮忙看一看问题出在哪。