C语言 函数 递归和倒序 基础题

题目:以二进制的形式打印整数

img

我的代码:

#include//二进制打印整数//

int dg(int );

int main()
{
    int c;
    while(scanf("%d",&c)==1)
        dg(c);
    printf("that's over");
    return 0;
}

int dg(int a)
{
    int b ;
    b=a%2;
    while(b>2)
        b=b%2;
    printf("%d\n",b==0?0:1);
    return ;
}

这个代码无法运行,求问怎么改

该回答引用GPTᴼᴾᴱᴺᴬᴵ
在代码中,函数dg()的参数类型是int,但是没有给出函数的声明。为了解决这个问题,可以在程序开始处加入函数声明或将函数定义放在main()函数前面。此外,函数dg()的返回值类型为void,所以不需要在return语句中返回值。

下面是修改后的代码:

#include <stdio.h>

void dg(int);

int main() {
    int c;
    while (scanf("%d", &c) == 1) {
        dg(c);
    }
    printf("That's over");
    return 0;
}

void dg(int a) {
    int b;
    b = a % 2;
    while (b > 2) {
        b = b % 2;
    }
    printf("%d\n", b == 0 ? 0 : 1);
}


这样就可以以二进制的形式打印整数了。

修改如下:

#include<stdio.h>//二进制打印整数//
 
void dg(int a);
 
int main()
{
    int c;
    while(scanf("%d",&c)==1) {
        dg(c);
        printf("\n");
    }
    printf("that's over");
    return 0;
}
 
void dg(int a)
{
    int b ;
    b=a%2;
    if (a >= 2)
        dg(a / 2);
    printf("%d",b==0?0:1);
}