|  | 
          1楼
          巨大八爪鱼
          2016-3-2 22:54
          
          
            #include <stdio.h>#include <stdlib.h>
 
 void main()
 {
 int n, i, j;
 char str[11];
 int *arr;
 scanf_s("%d", &n);
 arr = (int *)calloc(n, sizeof(int));
 for (i = 0; i < n; i++)
 scanf_s("%x", arr + i);
 
 str[10] = '\0'; // 确保字符串能结束
 for (i = 0; i < n; i++)
 {
 for (j = 9; j >= 0 && arr[i] != 0; j--)
 {
 str[j] = '0' + (arr[i] & 07); // 显示低三位的八进制值
 arr[i] >>= 3; // 右移三位
 }
 puts(str + j + 1); // 输出字符串(循环跳出时,j已经减1)
 
 //printf("%o\n", );
 }
 free(arr);
 system("pause");
 }
 | 
    
      |  | 
          2楼
          巨大八爪鱼
          2016-3-2 22:55
          
          
            蓝桥网又进不去了 | 
    
      |  | 
          4楼
          巨大八爪鱼
          2016-3-2 22:57
          
          
            【支持0】#include <stdio.h>
 #include <stdlib.h>
 
 void main()
 {
 int n, i, j;
 char str[11];
 int *arr;
 scanf_s("%d", &n);
 arr = (int *)calloc(n, sizeof(int));
 for (i = 0; i < n; i++)
 scanf_s("%x", arr + i);
 
 str[10] = '\0'; // 确保字符串能结束
 for (i = 0; i < n; i++)
 {
 if (arr[i] == 0)
 {
 puts("0");
 continue;
 }
 for (j = 9; j >= 0 && arr[i] != 0; j--)
 {
 str[j] = '0' + (arr[i] & 07); // 显示低三位的八进制值
 arr[i] >>= 3; // 右移三位
 }
 puts(str + j + 1); // 输出字符串(循环跳出时,j已经减1)
 }
 free(arr);
 system("pause");
 }
 
 | 
    
      |  | 
          5楼
          巨大八爪鱼
          2016-3-3 16:21
          
          
            #include <stdio.h>#include <stdlib.h>
 
 int main()
 {
 int n, i, j;
 char buffer[20];
 char str[11];
 char *pBuf;
 int *arr;
 scanf("%d", &n);
 arr = (int *)calloc(n, sizeof(int));
 for (i = 0; i < n; i++)
 {
 scanf("\n%s", buffer);
 arr[i] = 0;
 for (pBuf = buffer; *pBuf != '\0'; pBuf++)
 {
 arr[i] <<= 4;
 if (*pBuf >= 'A' && *pBuf <= 'F')
 arr[i] += 0x0a + *pBuf - 'A';
 else if (*pBuf >= 'a' && *pBuf <= 'f')
 arr[i] += 0x0a + *pBuf - 'a';
 else
 arr[i] += *pBuf - '0';
 }
 }
 
 str[10] = '\0';
 for (i = 0; i < n; i++)
 {
 if (arr[i] == 0)
 {
 puts("0");
 continue;
 }
 for (j = 9; j >= 0 && arr[i] != 0; j--)
 {
 str[j] = '0' + (arr[i] & 07);
 arr[i] >>= 3;
 }
 puts(str + j + 1);
 }
 free(arr);
 return 0;
 }
 
 这个提交上去也是错误的。。。
 
 | 
    
      |  | 
          6楼
          巨大八爪鱼
          2016-3-3 17:04
          
          
            网上的正确代码#include<cstdio>
 #include<cstring>
 int getnu(char c){
 if(c>='0' && c<='9')return c-'0';
 return c-'A'+10;
 }
 void putans(char *s){
 int ans=0;
 for(int i=0;i<3;i++)
 ans=ans*16+getnu(s[i]);
 printf("%04o",ans);
 }
 int main()
 {
 int n;
 char a[100010];
 scanf("%d",&n);
 for(int i=0;i<n;i++){
 scanf("%s",a);
 int len=strlen(a);
 int flen=(len-1)%3+1;
 int ans=0;
 for(int i=0;i<flen;i++)
 ans=ans*16+getnu(a[i]);
 printf("%o",ans);
 for(int j=flen;j<len;j+=3)putans(a+j);
 printf("\n");
 }
 return 0;
 }
 
 | 
    
      |  | 
          7楼
          巨大八爪鱼
          2016-3-3 17:04
          
          
            【我的运行错误。。。。】#include <stdio.h>
 #include <stdlib.h>
 
 int main()
 {
 int n, i;
 int *arr;
 char buffer[20];
 char *pBuf;
 scanf("%d", &n);
 arr = (int *)malloc(n * sizeof(int));
 for (i = 0; i < n; i++)
 {
 scanf("\n%s", buffer);
 arr[i] = 0;
 for (pBuf = buffer; *pBuf != '\0'; pBuf++)
 {
 arr[i] <<= 4;
 if (*pBuf >= 'A' && *pBuf <= 'F')
 arr[i] += *pBuf - 'A' + 0x0a;
 else
 arr[i] += *pBuf - '0';
 }
 }
 for (i = 0; i < n; i++)
 {
 if (arr[i] == 0)
 {
 puts("0");
 continue;
 }
 buffer[19] = '\0';
 for (pBuf = buffer + 18; arr[i] > 0; pBuf--)
 {
 *pBuf = '0' + (arr[i] & 7);
 arr[i] >>= 3;
 }
 puts(pBuf + 1);
 }
 free(arr);
 return 0;
 }
 
 | 
    
      |  | 
          8楼
          巨大八爪鱼
          2016-3-3 18:19
          
          
            【运行错误】#include <stdio.h>
 #include <stdlib.h>
 
 int main()
 {
 int n, i;
 unsigned long long *arr;
 char buffer[20];
 char *pBuf;
 scanf("%d", &n);
 arr = (unsigned long long *)malloc(n * sizeof(unsigned long long));
 for (i = 0; i < n; i++)
 {
 scanf("\n%s", buffer);
 arr[i] = 0;
 for (pBuf = buffer; *pBuf != '\0'; pBuf++)
 {
 arr[i] <<= 4;
 if (*pBuf >= 'A' && *pBuf <= 'F')
 arr[i] += *pBuf - 'A' + 0x0a;
 else
 arr[i] += *pBuf - '0';
 }
 }
 for (i = 0; i < n; i++)
 {
 if (arr[i] == 0)
 {
 puts("0");
 continue;
 }
 buffer[19] = '\0';
 for (pBuf = buffer + 18; arr[i] > 0; pBuf--)
 {
 *pBuf = '0' + (arr[i] & 7);
 arr[i] >>= 3;
 }
 puts(pBuf + 1);
 }
 free(arr);
 return 0;
 }
 
 |