Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.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函数,它以k的指数形式打印数字n,表示2<=k<=16例如,对于n=200和k=8,打印为;200=3*8**2+;1*8**1“; #包括 #包括 无效foo(整数n,整数k){ int-rez=1; 特伦努特尼雷斯酒店; int最高值_exp=0; if(k16){ printf(“不正确”); 返回NULL; } 而(rez_C_Function_Math - Fatal编程技术网

C函数,它以k的指数形式打印数字n,表示2<=k<=16例如,对于n=200和k=8,打印为;200=3*8**2+;1*8**1“; #包括 #包括 无效foo(整数n,整数k){ int-rez=1; 特伦努特尼雷斯酒店; int最高值_exp=0; if(k16){ printf(“不正确”); 返回NULL; } 而(rez

C函数,它以k的指数形式打印数字n,表示2<=k<=16例如,对于n=200和k=8,打印为;200=3*8**2+;1*8**1“; #包括 #包括 无效foo(整数n,整数k){ int-rez=1; 特伦努特尼雷斯酒店; int最高值_exp=0; if(k16){ printf(“不正确”); 返回NULL; } 而(rez,c,function,math,C,Function,Math,你的任务是将数字从基数10转换为其他基数(即从基数2转换为基数16) 本质上 n=coef(xp)*b^(xp)+coef(xp-1)*b^(xp-1)+…+coef(1)*b^(0)+coef(0)*b^(0) 其中,以下为非负整数: n是给定的数字 coef(t)表示指数为t的系数 b是您要转换到的基础,并且 xp是最高指数 这种方法是通过重复的除法和余数运算来实现的。在伪代码中: 对于i=xp到0,包括: coef=n/b**i/'/'是整数除法,**'是指数运算 n=n%b**i/

你的任务是将数字从基数10转换为其他基数(即从基数2转换为基数16)

本质上

n=coef(xp)*b^(xp)+coef(xp-1)*b^(xp-1)+…+coef(1)*b^(0)+coef(0)*b^(0)
其中,以下为非负整数:

  • n
    是给定的数字
  • coef(t)
    表示指数为t的系数
  • b
    是您要转换到的基础,并且
  • xp
    是最高指数
这种方法是通过重复的除法和余数运算来实现的。在伪代码中:

对于i=xp到0,包括:
coef=n/b**i/'/'是整数除法,**'是指数运算
n=n%b**i/'%'是余数运算
如果系数>0:
如果i!=xp:
打印“+”
恩迪夫
打印系数,“*”,b,“*”,i
恩迪夫
外循环
由此可以在C中实现一个相当简单的实现。请注意,您可能希望缓存
b**i
的值,这样它就不会被多次计算,并且您首先需要一个函数来执行计算(我建议您自己编写一个)因为C不提供求幂运算符,除了二进制数


关于您目前编写的代码,有几点评论:

  • main
    函数不接受任何参数时,它的标准规定定义之一是
    intmain(void){…}
    ——不要偏离这一点,除非您试图为特定的实现调用一些实现定义的行为
  • 从返回类型为
    void
    的函数返回
    NULL
    是未定义的行为(来自C99标准6.8.6.4): 带有表达式的
    return
    语句不得出现在返回类型为
    void
    的函数中

    • 相反,您想要的是
      返回EXIT\u FAILURE;
      (并更改函数返回的值的类型)并在调用函数中处理它,或者调用
      EXIT(EXIT\u FAILURE);
      ,导致正常进程终止,在
      stdlib.h
      中声明
      EXIT\u故障
      EXIT
      ;或者,一个简单的无表情
      返回;
      也可以
还有几个其他的观察结果:

  • trenutnirez
    未初始化且未使用
  • 通常,在写入标准输出时,您希望附加一个换行符,这意味着将
    \n
    附加到
    printf
    的格式字符串中,或者简单地使用
    put
    ,这将自动为您执行此操作
  • 考虑在顶部声明所有函数原型:这很有用,因为当您有多个函数时,您不必担心哪个函数排在第一位,以便所有函数都“可见”(例如,如果您现在在
    foo
    下面添加求幂函数,您应该将其重命名为更合适的函数,它将不知道新函数的签名)

好的,可能是OT,但您不能从返回类型为
void
的函数中返回NULL。这不是问题所在,它是这样工作的,但我总是可以将它注释掉,谢谢您的注释:)是的,它不会解决问题,因此使用OT(主题外)引用,但您无论如何都不应该这样做,所以是的,注释是一种方式;)您的代码打印的唯一内容是
NEVALJA
无论这意味着什么。因此,请澄清。程序应该做什么?在您当前所做的工作之后,您必须找到应用于k的每一次幂的系数,从hightest_exp.Factor[highest_exp]=rez/power(k,highest_exp)开始,然后对余数和最高的_exp-1执行相同的操作。这可以通过递归、函数、循环来完成。由您定义设计。
#include <stdio.h>
#include <math.h>

void foo (int n, int k){
    int rez=1;
    int trenutnirez;
    int highest_exp=0;
    if (k<2 || k>16){
        printf ("INCORRECT");
        return NULL;
    }
    while (rez<n){
        rez*=k;
        highest_exp++;
    }
    rez=n;
    highest_exp--;


}
int main (){
    foo(200,8);
    return 0;
}