首页 > 解决方案 > 将连续除法的其余部分存储在数组中

问题描述

我想创建一个程序,将其余的连续除法存储在数组中。但不幸的是,我创建的数组拒绝正确存储余数,例如 5/2,余数假设为 1,但数组存储另一个值

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

int divise(int n){
    int i=0;
    int remain[20];
    int rest;
    while(n!=0){
        rest = n%2;
        remain[i] = rest;
        n = n/2;
        i++;
        printf("%d\n",remain[i]);
    }
}

int main(){
    divise(10);
}

标签: c

解决方案


错误在于你的i++陈述。应该是之后printf("%d\n",remain[i]);

修改后的代码:-

#include <stdio.h>
#include <stdlib.h>
int divise(int n)
{
    int i = 0;
    int remain[20];
    int rest;
    while (n != 0)
    {
        rest = n % 2;
        remain[i] = rest;
        n = n / 2;
        printf("%d\n", remain[i]);
        i++;                        // repositioned 
    }
}
int main()
{
    divise(10);
    return 0;
}

输出 :-

0
1
0
1

您的函数int divise(int n)不返回任何 int 值。所以最好让它void divise(int n)int main()也应该有一个return 0


推荐阅读