给定一个任意长度的数组,其中的元素按照一定的进制(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