Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 我的数字转换器(十进制到基数2-16)以相反的顺序打印数字_C - Fatal编程技术网

C 我的数字转换器(十进制到基数2-16)以相反的顺序打印数字

C 我的数字转换器(十进制到基数2-16)以相反的顺序打印数字,c,C,我一直在编写一个程序,当执行该程序时,需要两个数字,第一个是任意十进制数,第二个数字是希望转换为的基数(2-16)。它工作得很好,除了一件事。每个输出都是反向的。这是意料之中的,它获取余数并按计算顺序输出它们。然而,我希望它们以相反的顺序出现。我在考虑建立一个循环,将剩余的存储在一个数组中,然后向后循环数组并吐出信息。但是我是C新手,我不能让它工作!告诉我你的想法 任何帮助都将不胜感激。我已经在这上面呆了一段时间了 #include <stdio.h> #include <st

我一直在编写一个程序,当执行该程序时,需要两个数字,第一个是任意十进制数,第二个数字是希望转换为的基数(2-16)。它工作得很好,除了一件事。每个输出都是反向的。这是意料之中的,它获取余数并按计算顺序输出它们。然而,我希望它们以相反的顺序出现。我在考虑建立一个循环,将剩余的存储在一个数组中,然后向后循环数组并吐出信息。但是我是C新手,我不能让它工作!告诉我你的想法

任何帮助都将不胜感激。我已经在这上面呆了一段时间了

#include <stdio.h>
#include <stdlib.h>

int main(void){

  int x, y, z, c; //Sets up variables to be used in program


  printf("Please enter two integers: "); //Asks for user input
  scanf("%d", &x);
  scanf("%d", &y); //stores input

  printf("%d\n", x);
  printf("%d\n", y);
  printf(" \n");

  if(y < 2 || y > 16){
    printf("You have entered incorrect information.\n");
           return 0;
  } //bug checks

  else if(y > 1 && y < 17){

    while(x != 0){
       c = (x%y);
       x = (x/y); // Loops numbers until a 0 value is reached, can be used with
                  // any Base

     if( c == 10){
        c = printf("A");
    }else if( c == 11){
        c = printf("B");
    }else if( c == 12){
        c = printf("C");
    }else if( c == 13){
        c = printf("D");
    }else if( c == 14){
        c = printf("E");
    }else if( c == 15){
        c = printf("F");
    }else{
        printf("%d", c);
    }
        // Returns for each remainer option
    }
    printf("\n");
  }
     // Returns for each remainer option
    printf("\n");
}
#包括
#包括
内部主(空){
int x,y,z,c;//设置要在程序中使用的变量
printf(“请输入两个整数:”;//请求用户输入
scanf(“%d”和&x);
scanf(“%d”,&y);//存储输入
printf(“%d\n”,x);
printf(“%d\n”,y);
printf(“\n”);
如果(y<2 | | y>16){
printf(“您输入的信息不正确。\n”);
返回0;
}//错误检查
否则,如果(y>1&&y<17){
而(x!=0){
c=(x%y);
x=(x/y);//循环数字直到达到0值,可与一起使用
//任何基地
如果(c==10){
c=打印F(“A”);
}else如果(c==11){
c=打印F(“B”);
}else如果(c==12){
c=打印F(“c”);
}else如果(c==13){
c=打印F(“D”);
}else如果(c==14){
c=打印F(“E”);
}如果(c==15),则为else{
c=打印F(“F”);
}否则{
printf(“%d”,c);
}
//返回每个remainer选项
}
printf(“\n”);
}
//返回每个remainer选项
printf(“\n”);
}

将所有余数保留在字符数组中并反向打印数组

将所有余数保留在字符数组中并反向打印数组

另一种方法是递归方法(对于很长的序列,我不建议这样做,但由于整数的位数有限,您可以知道递归的深度)。它看起来像这样(未经测试,有点伪代码):

printnum(int n,int b)
{int r;
if(n

一个好的优化器甚至可以在编译时透明地将其转换为非递归代码。

另一种方法是递归方法(对于很长的序列,我不建议使用递归方法,但由于整数的位数有限,您可以知道递归的深度)。它看起来像这样(未经测试,有点伪代码):

printnum(int n,int b)
{int r;
if(n
一个好的优化器甚至可以在编译时透明地将其转换为非递归代码。

Declare

int i = 0;
int rev[50];  
并将代码更改为

if( c == 10){
    rev[i++] = 'A' ;
}else if( c == 11){
    rev[i++] = 'B' ;
}else if( c == 12){
    rev[i++] = 'C' ;
}else if( c == 13){
    rev[i++] = 'D' ;
}else if( c == 14){
    rev[i++] = 'E' ;
}else if( c == 15){
    rev[i++] = 'F' ;
}else{
    rev[i++] = 48 + c;
}
    // Returns for each remainer option
}
printf("\n");
}
while(--i >= 0) 
    printf("%c", rev[i]); 
申报

int i = 0;
int rev[50];  
并将代码更改为

if( c == 10){
    rev[i++] = 'A' ;
}else if( c == 11){
    rev[i++] = 'B' ;
}else if( c == 12){
    rev[i++] = 'C' ;
}else if( c == 13){
    rev[i++] = 'D' ;
}else if( c == 14){
    rev[i++] = 'E' ;
}else if( c == 15){
    rev[i++] = 'F' ;
}else{
    rev[i++] = 48 + c;
}
    // Returns for each remainer option
}
printf("\n");
}
while(--i >= 0) 
    printf("%c", rev[i]); 

是的,那是我正在处理的一个剩余编辑。忘记注释了…我相信你可以将你的大if-else-if-printf块更改为just:
printf(“%X”,c);
是的,那是我正在处理的一个剩余编辑。忘记注释了…我相信你可以将你的大if-else-if-printf块更改为just:
printf(“%X”,c)
你能向我解释一下你为什么用50加载rev数组吗?它必须有足够的空间来容纳所有整数选项,对吗?谢谢你的帮助!我无法表达你帮我理解这一点的程度。你能解释一下你为什么用50加载rev数组吗?它必须有足够的空间来容纳所有整数选项是吗?谢谢你的帮助!我无法表达你对我理解这件事的帮助有多大。