| 
          十六进制 -> 八进制 | 
        
                
          
            
                         一派掌门 二十级              | 
          
            
            
             
              #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"); }             
                       | 
        
                
          
            
                         一派掌门 二十级              | 
          
            
            
             
              蓝桥网又进不去了             
             | 
|
        
                
          
            
                         一派掌门 二十级              | 
          
            
            
             
              【支持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"); }              
             | 
|
        
                
          
            
                         一派掌门 二十级              | 
          
            
            
             
              #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; }
  这个提交上去也是错误的。。。              
             | 
|
        
                
          
            
                         一派掌门 二十级              | 
          
            
            
             
              网上的正确代码 #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; }              
             | 
|
        
                
          
            
                         一派掌门 二十级              | 
          
            
            
             
              【我的运行错误。。。。】 #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; }              
             | 
|
        
                
          
            
                         一派掌门 二十级              | 
          
            
            
             
              【运行错误】 #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; }              
             | 
|