困็้丶小孩็้
2021-11-26 10:55
采纳率: 0%
浏览 10

关于#c语言#的问题:在main中输入数据时,要求做合法性检查,若输入的字符串不能构成十六进制数

键盘输入一串字符,看作十六进制数,先将其转换为十进制整数输出 ,再转换为八进制形式输出。在main中输入数据时,要求做合法性检查,若输入的字符串不能构成十六进制数,重新输入

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • CSDN专家-link 2021-11-26 10:57

    就差是否由数字和A-F组成,然后进行进制转换

    #include <stdio.h>
    int main()
    {
          char s[100];
          int e[100];
          int n=0,i,k=0;
          long long data = 0;
          char ch = getchar();
          while(ch != '\n')
          {
                if((ch >='0' && ch<='9') || (ch>='A' && ch<='F') || (ch>='a' && ch<='f'))
                    s[n++] = ch;
                else
                    printf("字符不是十六进制字符");
                ch = getchar();
          }
          for(i=0;i<n;i++)
          {
              if(s[i]>='0' && s[i]<='9')
                  data = data*16  + s[i] - '0';
              else if(s[i] >='A' && s[i] <='F')
                  data = data * 16 + s[i] - 'A'+10;
              else if(s[i] >= 'a' && s[i] <= 'f')
                  data = data * 16 + s[i] - 'a'+10;
          }
          printf("十进制为:%d\n",data);
          while(data > 0)
          {
              e[k++] = data%8;
              data = data/8;
          }
          printf("八进制为:");
          for(i=k-1;i>=0;i--)
              printf("%d",e[i]);
          return 0;
    }
    
    

    编辑记录

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题