A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

代码如下,大家指点一下
  1. #include <stdio.h>

  2. int main(int argc, const char * argv[]){
  3.     int i,num,R,flag;
  4.     char bitnum[100];
  5.     printf("请输入一个十进制整数:\n");
  6.     scanf("%d",&num);
  7.     printf("请输入要转换的进制数(2-16之间):\n");
  8.     scanf("%d",&R);
  9.     //判断进制范围
  10.     if(R<2||R>16){
  11.         printf("输入数据错误");
  12.     }else {
  13.         //计算需要转换的进制数,先判断num的正负。
  14.         if (num>0) {
  15.             for (i=0;num!=0;i++){
  16.                 if (num % R >= 10) {
  17.                     bitnum[i]= 'A' + (num % R - 10);
  18.                 } else {
  19.                     bitnum[i]=num % R + '0';
  20.                 }
  21.                 num = num / R;
  22.             }
  23.         
  24.    
  25.         }else if (num<0){
  26.             flag=1;
  27.             num=-num;
  28.             for ( i=0; num!=0; i++) {
  29.                 if (num % R >= 10) {
  30.                     bitnum[i]= 'A' + (num % R - 10);
  31.                 } else {
  32.                     bitnum[i]=num % R + '0';
  33.                 }
  34.                 num = num / R;
  35.                
  36.             }
  37.         }
  38.     }
  39.         //逆向输出
  40.         printf("转化进制后为:");
  41.         if (flag==1) {
  42.             printf("-") ;
  43.         }
  44.         while(i--){
  45.             
  46.             printf("%c",bitnum[i]);
  47.         }
  48.             return 0;
  49.             
  50.         
  51.     }
复制代码

3 个回复

正序浏览
yue努力越幸运,签到
回复 使用道具 举报
很楼主写的很简练,很实用
回复 使用道具 举报
赞。。。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马