小工具知识网

当前位置: 首页 > 行业知识 > 蓝桥杯 十六进制转为八进制 C语言版

行业知识

蓝桥杯 十六进制转为八进制 C语言版

2026-11-05 04:41:26 来源:互联网转载

**

蓝桥杯 十六进制转为八进制

**

题目

���定n个十六进制正整数,输出它们对应的八进制数。

输入格式

  输入的第一行为一个正整数n (1 int n,t,num_ten,num_eight; char str[10][100000]; scanf("%d",&n); for(int i=0;i int len = strlen(str[i])-1; t=1; num_ten=0; while(len=0) //将16进制转为10进制 { if(str[i][len]='0'&&str[i][len] num_eight+=num_ten%8*t; t=t*10; num_ten/=8; } printf("%d\n",num_eight); } return 0;} int n,i,j,k,a=0,cur,ok; char s[10][100000],z[12]; scanf("%d",&n); for(j=0; j ok=1; if(strlen(s[j])%3!=0&&a==0&&(a=(3-(strlen(s[j])%3)))!=0) //是判断当前的这个十六进制的位数离3的整数还差几位 { for(k=0; k switch(s[j][i]) { case '0': z[k]='0'; z[k+1]='0'; z[k+2]='0'; z[k+3]='0'; break; case '1': z[k]='0'; z[k+1]='0'; z[k+2]='0'; z[k+3]='1'; break; case '2': z[k]='0'; z[k+1]='0'; z[k+2]='1'; z[k+3]='0'; break; case '3': z[k]='0'; z[k+1]='0'; z[k+2]='1'; z[k+3]='1'; break; case '4': z[k]='0'; z[k+1]='1'; z[k+2]='0'; z[k+3]='0'; break; case '5': z[k]='0'; z[k+1]='1'; z[k+2]='0'; z[k+3]='1'; break; case '6': z[k]='0'; z[k+1]='1'; z[k+2]='1'; z[k+3]='0'; break; case '7': z[k]='0'; z[k+1]='1'; z[k+2]='1'; z[k+3]='1'; break; case '8': z[k]='1'; z[k+1]='0'; z[k+2]='0'; z[k+3]='0'; break; case '9': z[k]='1'; z[k+1]='0'; z[k+2]='0'; z[k+3]='1'; break; case 'A': z[k]='1'; z[k+1]='0'; z[k+2]='1'; z[k+3]='0'; break; case 'B': z[k]='1'; z[k+1]='0'; z[k+2]='1'; z[k+3]='1'; break; case 'C': z[k]='1'; z[k+1]='1'; z[k+2]='0'; z[k+3]='0'; break; case 'D': z[k]='1'; z[k+1]='1'; z[k+2]='0'; z[k+3]='1'; break; case 'E': z[k]='1'; z[k+1]='1'; z[k+2]='1'; z[k+3]='0'; break; case 'F': z[k]='1'; z[k+1]='1'; z[k+2]='1'; z[k+3]='1'; break; } k+=4; if(k==12) //当三位十六进制都转为4为二进制后,开始将12位二进制变为四位八进制 { for(cur=0; cur putchar('1'); ok=0; } else if(z[cur]=='0'&&z[cur+1]=='1'&&z[cur+2]=='0') { putchar('2'); ok=0; } else if(z[cur]=='0'&&z[cur+1]=='1'&&z[cur+2]=='1') { putchar('3'); ok=0; } else if(z[cur]=='1'&&z[cur+1]=='0'&&z[cur+2]=='0') { putchar('4'); ok=0; } else if(z[cur]=='1'&&z[cur+1]=='0'&&z[cur+2]=='1') { putchar('5'); ok=0; } else if(z[cur]=='1'&&z[cur+1]=='1'&&z[cur+2]=='0') { putchar('6'); ok=0; } else if(z[cur]=='1'&&z[cur+1]=='1'&&z[cur+2]=='1') { putchar('7'); ok=0; } k=0;//将k置0,开始将下面三位16进制进行转换 } } a=0;//假设第j个十六进制数的位数是三的倍数 putchar('\n'); } return 0;} for(k=0; k int n,i,j,k,a,cur,ok,m,l; char s[10][100001],d16[16][5]= {"0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"},out[140000]= {},z[13]= {}; scanf("%d",&n); for(j=0; j k=0; ok=1; m=0; /*初始化标记数据*/ l=strlen(s[j]); /* 初始化标记数据*/ a=3-l%3; /*初始化标记数据*/ if(a==3)ok=0; /*十六进制数长度刚好为3的倍数时转二进制不需补0,ok标记其是否为3的倍数0是1不是*/ for(i=0; i if(65 strcat(z,"0000"); k=k+4; ok=0; } else if(a==2) { strcat(z,"00000000"); k=k+8; ok=0; } z[k++]=d16[s[j][i]-48][0]; /*一位十六进制转四位二进制*/ z[k++]=d16[s[j][i]-48][1]; z[k++]=d16[s[j][i]-48][2]; z[k++]=d16[s[j][i]-48][3]; if(k==12) /*每转三位十六进制数将其转为四位八进制数*/ { for(cur=0; cur strcat(z,"0000"); k=k+4; ok=0; } else if(a==2) { strcat(z,"00000000"); k=k+8; ok=0; } z[k++]=d16[s[j][i]-48][0]; /*一位十六进制转四位二进制*/ z[k++]=d16[s[j][i]-48][1]; z[k++]=d16[s[j][i]-48][2]; z[k++]=d16[s[j][i]-48][3]; for(cur=0; cur int n,i,j,k,a,cur,ok,m,l,flag; char s[10][100001],d16[16][5]= {"0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"},out[4]= {},z[13]= {}; scanf("%d",&n); for(j=0; j k=0; ok=1; flag = 0; m=0; /*初始化标记数据*/ l=strlen(s[j]); /* 初始化标记数据*/ a=3-l%3; /*初始化标记数据*/ if(a==3)ok=0; /*十六进制数长度刚好为3的倍数时转二进制不需补0,ok标记其是否为3的倍数0是1不是*/ for(i=0; i if(65 strcpy(z,"0000"); k=k+4; ok=0; a=0; } else if(a==2) { strcpy(z,"00000000"); k=k+8; ok=0; } z[k++]=d16[s[j][i]-48][0]; /*一位十六进制转四位二进制*/ z[k++]=d16[s[j][i]-48][1]; z[k++]=d16[s[j][i]-48][2]; z[k++]=d16[s[j][i]-48][3]; if(k==12) /*每转三位十六进制数将其转为四位八进制数*/ { m=0; for(cur=0; cur

上一篇:怎么把代码发布到服务器?

下一篇:ios 上架2.1.0,2.3.10,3.2.0,5.1.2问题解决记录