N进制数组转换成正整数

给定一个任意长度的数组,其中的元素按照一定的进制(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
",jinzhi_change(data,num));
    //system("pause");
}

测试用例:

input.txt

8
1 2 3 4 5 6 7 1 2 3

大多数想法要么平庸,要么更糟糕,这很大程度上因为绝妙的想法难得一见,而且他们还要在我们身边这个充斥了各种恶俗的所谓常识的环境中孕育生长。
原文地址:https://www.cnblogs.com/linux0537/p/6088835.html