练习时突然遇到的其他进制转十进制的两种c++代码

 

一种是从个位开始:

    while(cin>>b!=0){
		if(b==0) break;
		ans=0;shu=0;
		gets(s);
		for(int i=1;i<=strlen(s)-1;i++)
		  a[i]=s[i]-'0';
		
		int k=0;
		for(int i=strlen(s)-1;i>=1;i--)
		 {
		   shu+=a[i]*pp(b,k);
		   k++;
		}

包含一个子函数

int pp(int x,int y){  //x^y
	if(y==0) return 1;
	int xx=x;
	while(--y!=0)
		xx*=x;
	return xx;
}



第二种是从最高位开始:

while(scanf("%d",&b)&&b){
   scanf("%s",a);
   int len=strlen(a);
   int inum=0;
   for(int i=0;i<len;i++)
       inum=inum*b+a[i]-'0';
}


第二种是在sd那儿得来的,不过真的很巧妙



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值