标题:C语言函数定义实现任意进制转任意进制
只看楼主
A154294
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2020-1-3
 问题点数:0 回复次数:3 
C语言函数定义实现任意进制转任意进制
利用函数定义写出任意进制转任意进制,想了两天还是只能写出十进制转任意进制,求大神解答,
输出结果如下:
    请输入要转换的数的进制:(2-16)
    请输入数字:
    需要转换成几进制数:(2-16)
    转换结果为:
搜索更多相关主题的帖子: 任意 定义 进制 进制转 函数 
2020-01-03 09:57
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
得分:0 
知其然知其所以然,只要了解进制之间转换的道理,就可以用函数实现。
2020-01-03 19:35
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
得分:0 
进制间互换摆渡即可得其道理
2020-01-03 19:38
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
得分:0 
程序代码:
#include<iostream>   
#include<math.h>   
#include<string.h>  
using namespace std;    
int main()    
//任意进制转换为10进制  
{  char q[100];//定义q为字符串保存原数  
   long n=0;//定义转换成的十进制数为n  
   int i,l,r=0,p,c,m=0,s[100];  
//i为原进制数,l为字符串长度,r为次方数,p为转换后的任意进制数,c为余数,m,l用于计数,s存入转换后的数组  
   cout<<"输入要转化的数:"<<endl;  
   cin>>q;  
   cout<<"输入原数进制:"<<endl;  
   cin>>i;  
   cout<<"转换后的进制:"<<endl;  
   cin>>p;  
   l=strlen(q);  
   strupr(q);//把字符串中字母全部大写,方便下一步计算  
//将任意进制数转化为十进制数  
   for(l=l-1;l>=0;l--)  
      {if(q[l]<='9')n=n+(q[l]-48)*pow(i,r++);  
          else n=n+(q[l]-55)*pow(i,r++);}  
//十进制转换为任意进制  
   while(n!=0)//数制转换,结果存入数组s[m]    
   {  c=n%p;    
      n=n/p;    
      m++;  
      s[m]=c;   //将余数按顺序存入数组s[m]中     
    }      
   for(int k=m;k>=1;k--)//输出转换后的序列    
      {    
         if(s[k]>=10) //若为十六进制等则输出相对应的字母    
            cout<<(char)(s[k]+55);    
         else         //否则直接输出数字    
            cout<<s[k];  
      }   
   cout<<endl;  
   return 0;
   } 
2020-01-04 15:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-498790-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014829 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved