N进制数组转换成正整数

时间:2022-08-21 17:51:26

给定一个任意长度的数组,其中的元素按照一定的进制(N进制)来转换成正整数

//把数组中的元素按照N进制转换成为正整数
#include <stdio.h>
#include
<stdlib.h>
#define SIZE 20 //这里SIZE的值一定要大于需要的数组长度,剩下的空余的数组元素默认为零。函数里面有对于零的处理
int data[SIZE] = {};//用于存放N进制的数组
int num;//N进制

/*
* 函数名:jinzhi_change
* 函数功能:进制转换
* 入口参数:1.int data[SIZE] 存放需要转换成整数的N进制的数组
* 2.int num N进制
* 返回值:返回最后计算得出的转换成的整型数值
*/
int jinzhi_change(int data[SIZE],int num)
{
int size = SIZE;//局部变量,用来去掉数组为零的那些数字
for(int i=SIZE-1;i>=0;i--){//从后向前找第一个不是零的数字作为转换的起始位
if(data[i]==0){
size
--;}
}
int output=0;//最终输出值
for(int j=size-1;j>=0;j--)//从后向前按权值展开
{
int temp =1;
for(int k=size-1;k>j;k--)
{temp
= temp *num;}
output
+= temp* data[j];
}
return output;
}
int main(){
freopen(
"input.txt","r",stdin);
scanf(
"%d",&num);//读入N进制
for(int i=0;i<SIZE;i++){//读入数据
scanf("%d",&data[i]);}
printf(
"%d\n",jinzhi_change(data,num));
//system("pause");
}

测试用例:

input.txt

8
1 2 3 4 5 6 7 1 2 3