程序一步一步执行失败 #包括 #包括 #包括 int binaryToDecimal(long binarynum){ 整数小数=0,温度=0,余数; while(binarynum!=0){ 余数=二进制数%10; 余数=二进制数/10; 小数=小数+余数*功率(2,温度); temp++; } 返回小数; } 长十进制二进制(整数n){ 整数余数; 长二进制=0,i=1; 而(n!=0){ 余数=n%2; n=n/2; 二进制=二进制+(余数*i); i=i*10; } 返回二进制; } int main(){ 整数商,rem,小数点m1,小数点m2; 长二进制num1,二进制num2; printf(“输入股息二进制数::”; scanf(“%ld”&binarynum1); printf(“输入除数二进制数::”; scanf(“%ld”、&binarynum2); ///从这里开始执行。 decimalnum1=二进制到十进制(二进制num1); decimalnum2=二进制到十进制(二进制num2); 商=小数点m1/小数点m2; rem=小数点1%小数点2; printf(“商为:%ld”,十进制(商)); printf(“余数为:%ld”,十进制二进制(rem)); getch(); }

程序一步一步执行失败 #包括 #包括 #包括 int binaryToDecimal(long binarynum){ 整数小数=0,温度=0,余数; while(binarynum!=0){ 余数=二进制数%10; 余数=二进制数/10; 小数=小数+余数*功率(2,温度); temp++; } 返回小数; } 长十进制二进制(整数n){ 整数余数; 长二进制=0,i=1; 而(n!=0){ 余数=n%2; n=n/2; 二进制=二进制+(余数*i); i=i*10; } 返回二进制; } int main(){ 整数商,rem,小数点m1,小数点m2; 长二进制num1,二进制num2; printf(“输入股息二进制数::”; scanf(“%ld”&binarynum1); printf(“输入除数二进制数::”; scanf(“%ld”、&binarynum2); ///从这里开始执行。 decimalnum1=二进制到十进制(二进制num1); decimalnum2=二进制到十进制(二进制num2); 商=小数点m1/小数点m2; rem=小数点1%小数点2; printf(“商为:%ld”,十进制(商)); printf(“余数为:%ld”,十进制二进制(rem)); getch(); },c,C,我正在使用这个程序来执行二进制数之间的除法。但是 程序执行在第6条语句后停止。我试图更改变量类型,但仍然有问题 程序执行的输出在这里 您的binaryToDecimal函数中存在无限循环问题 #include<math.h> #include<stdio.h> #include<conio.h> int binaryToDecimal(long binarynum){ int decimalnum = 0, temp = 0, remainder;

我正在使用这个程序来执行二进制数之间的除法。但是 程序执行在第6条语句后停止。我试图更改变量类型,但仍然有问题

程序执行的输出在这里


您的
binaryToDecimal
函数中存在无限循环问题

#include<math.h>
#include<stdio.h>
#include<conio.h>
int binaryToDecimal(long binarynum){
    int decimalnum = 0, temp = 0, remainder;
    while(binarynum!=0){
        remainder = binarynum % 10;
        remainder = binarynum / 10;
        decimalnum = decimalnum+remainder*pow(2,temp);
        temp++;
    }
    return decimalnum;
}
long decimalToBinary(int n){
    int remainder;
    long binary = 0,i = 1;
    while(n != 0){
        remainder = n % 2;
        n = n / 2;
        binary = binary + (remainder*i);
        i = i*10;
    }
    return binary;
}
int main(){
    int quotient, rem,decimalnum1,decimalnum2;
    long binarynum1, binarynum2;

    printf("Enter dividend binary number::");
    scanf("%ld",&binarynum1);

    printf("Enter divisor binary number::");
    scanf("%ld",&binarynum2);
    /// execution stops from here.
    decimalnum1 = binaryToDecimal(binarynum1);
    decimalnum2 = binaryToDecimal(binarynum2);
    quotient = decimalnum1/decimalnum2;
    rem = decimalnum1%decimalnum2;
    printf("Quotient  is: %ld",decimalToBinary(quotient));
    printf("Remainder is: %ld",decimalToBinary(rem));
    getch();
}

更改
binarynum
变量的部分在哪里?看,它在循环中永远不会改变,所以它不可能是0。您的循环永远运行。

您的binaryToDecimal函数在无限循环中运行。请尝试下面的函数

int binaryToDecimal(long binarynum){
    int decimalnum = 0, temp = 0, remainder;
    while(binarynum!=0){
        remainder = binarynum % 10;
        remainder = binarynum / 10;
        decimalnum = decimalnum+remainder*pow(2,temp);
        temp++;
    }
    return decimalnum;
}

什么意思?您使用了哪些步骤来确定程序执行停止?这几乎肯定不是它实际做的。你是说调试时?告诉我们如何编译它。您可能需要向编译器添加调试标志。程序在源代码中的哪个语句处停止?你能用注释等标记出来吗?在这一行中,所有相关变量的值是多少?所以程序并没有真正“停止”,只是似乎永远不会结束?好吧,我们来看看原因。谢谢你,这只是一个小错误,我想不出来。
int binaryToDecimal(long n)
{
    int decimalNumber = 0, i = 0, remainder;
    while (n!=0)
    {
        remainder = n%10;
        n /= 10;
        decimalNumber += remainder*pow(2,i);
        ++i;
    }
    return decimalNumber;
}