蓝桥基础训练——十六进制转八进制

mac2026-01-03  7

** 我的代码出了一些奇怪的问题,本来我用来存储结果的数组逐个输出的话和样例结果是一样的,但是到最后把数组里面的数组合成为一个数时却少了个1** 这里是代码运行的结果,其中**后面的单个数据是储存结果数组res的值。 我对res数组做了res=res+x[i]*pow(16,length-i-1)操作后,为什么少了一个1???

希望各位大佬帮忙解决!!!

#include<stdio.h> #include<string.h> #include<math.h> int res[100]={0}; int getwei(int x[],int length) { int res=0; int i; for(i=0;i<length;i++) { printf("##%d\n",x[i]); res=res+x[i]*pow(16,length-i-1); } return res; } int get_eight(int x) { //int t=0; int i=0,j=0; int re=0; int num=0; while(x>0) { res[i]=x%8; printf("**%d\n",res[i]); x/=8; i++; } num=i; for(j=0;j<num;j++) { re=re+res[j]*pow(10,j); } /* res[i]=0; while(res[j]!=0) { printf("**%d\n",res[j]); re=re+res[j]*pow(10,j); j++; } */ return re; } int main() { int N=0; int i=0,j=0,k=0; char str[100][1000]; int m=0,n=0; int cnt=0; int wei_num[100]={0}; //权位积之和 int re=0; //int flag=0; //输入部分 scanf("%d",&N); getchar(); int six[N][100]; //存放十进制的int数据 int eight[N][100]; int length[N]; //长度 for(i=0;i<N;i++) { //printf("%d",i); gets(str[i]); } for(j=0;j<N;j++) { k=0; //对str[j]进行处理成int型 while(str[j][k]!='\0') { //printf("*\n"); if(str[j][k]>='0' && str[j][k]<='9') { //printf("这里"); six[j][k]=str[j][k]-'0'; } if(str[j][k]>='A' && str[j][k]<='F') { //printf("那里"); six[j][k]=str[j][k]-55; //A~B //printf("**%d**\n",six[j][k]); //flag++; } k++; } length[j]=k; } //十进制得出权位积之和 for(i=0;i<N;i++) { wei_num[i]=getwei(six[i],length[i]); } for(i=0;i<N;i++) { re=get_eight(wei_num[i]); printf("%d\n",re); } return 0; }
最新回复(0)