gpt4 book ai didi

C语言,运行失败,十进制转二进制

转载 作者:太空宇宙 更新时间:2023-11-04 02:15:11 25 4
gpt4 key购买 nike

我正在尝试将十进制数转换为二进制数。

你知道为什么我会出现“运行失败”吗? (我认为我的 scanf 函数附近有错误)。

P.S:我知道这个程序的算法还没有运行,但我想先尝试编译。但我愿意接受任何建议^^

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

/**
* Uebung 1.3 - C Teil
* Programm, welches eine Integer-Zahl in Binärdarstellung ausgibt.
*/

#define DEBUG 1

/** Structure of a binary Value */
typedef struct{
int size;
int* valueInBin;
int valueInDec;
}Wert;

/** Global variables */
//nothing

/** Functions declarations */
void iToBinary(Wert* w);
void printBinaryValue(Wert w);

/** Main function */
int main(int argc, char** argv) {

/* Local variable*/
Wert myVal;

printf("Wert als Integer (auch negativ): ");
scanf("%d", &(myVal.valueInDec));
DEBUG ? printf("Mein Wert : %i", myVal.valueInDec):printf("");
myVal.size = sizeof(int)*8;
DEBUG ? printf("size: %i", myVal.size):printf("");

iToBinary(&myVal);

printBinaryValue(myVal);

return (EXIT_SUCCESS);
}

void iToBinary(Wert* w){

int i,temp = w->valueInDec;

w->size = sizeof(w->valueInDec)*8;

w->valueInBin = (int*) malloc(sizeof(int) * (int)(w->size)) ;

for(i=w->size-1; i>=0; i++){
if(temp > pow(2,i)){
*((w->valueInBin)+i) = 1;
}
else{
*((w->valueInBin)+i) = 0;
}
}
}

void printBinaryValue(Wert w){
unsigned int i;

printf("My int in bin : ");
for(i=0; i<w.size; i++){
printf("%i",(*(w.valueInBin)+i));
}
}

最佳答案

这是你的问题:

for(i=w->size-1; i>=0; i++)

您实际上正在运行一个无限循环。将 i++ 更改为 i--

您的代码还包含函数 iToBinaryprintBinaryValue 中的一些错误。尝试捕捉错误!

顺便说一句,递归函数可以以更好的方式完成它!如果您没有任何限制,请考虑一下。

关于C语言,运行失败,十进制转二进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8881373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com