1   1  /  1  页   跳转

C语言的题【求助】

C语言的题【求助】



问题二:数制转换
  设有一个字符串A$的结构为:A$=“m<n>p”其中m为数字串(长度<=20),而n,p均为1或2位的数字串(其中所表达的内容在2-10之间)。
程序要求:从键盘上读入A$后(不用正确性检查),将A$中的数字串m(n进制),以p进制的形式输出。
例如:  A$=“48<10>8”
其意义为:将10进制数48,转换成8进制数输出。
输出结果:48〈10〉=60〈8〉

运行示例:
Input:            Output:
101<2>10          101<2>=5(10>
1101<10>2          1101<10>=10001001101<2>
3704<8>10          3704<8>=1988<10>
73<10>8            73<10>=111<8>
44<7>8            44<7>=40<8>
62<8>5            62<8>=200<5>
934<10>7          934<10>=2503<7>
221<9>6            221<9>=501<6>
443<5>7            443<5>=234<7>
61<8>3              61<8>=1211<3>


只有大概思路~~~用堆栈做比较简单!~~~但是不会~~~哭ING~~~~~~
~~大G大J们~教教偶~~~~~
最后编辑2005-10-13 11:53:00
分享到:
gototop
 

串的切割就不用说了吧,得到数据串长度len.
三步啊
1。串自身转换
    每个数字字符减48,字母减55或81,
2。串转化成数
    用循环啊
    for(int i=0,num=0;i<len;i++)
            {num*=n;
              num+=m;
              }

3.再算出P进制数来呀,原来你想在这里用堆栈啊,我不用,把串得到,再头尾换过来就行了
    for(i=0;num>=p;i++)
    {
        p_array=num%p;//加48还是55我就不管喽,自己做吧
        num/=p;
      }
      p_array=num;//这是最高位哦
      i++;//这是长度哦
    //队头换队尾,自己做吧
gototop
 
1   1  /  1  页   跳转
页面顶部
Powered by Discuz!NT