Ciao,
Allora tanto per cominciare ti consiglio vivamente di utilizzare il tag code quando inserisci un codice e soprattutto di indentare il suddetto codice, ho fatto più fatica a leggere il codice che a far altro...
in secondo luogo il primo errore grave che ho riscontrato è l'assegnamento di variabile nel primo if:
[...]
if((d<0) || (d=1)){
[...]
è errato, bisogna inserire == per comparare e non = quindi corretto è:
[...]
if((d<0) || (d==1)){
[...]
ora ti posto il tuo codice corretto, sappi che esistono modi più eleganti e molto più funzionali per convertire un numero in binario.. ma a parte questo uno dei tuoi errori è complicarti la vita, un metodo corretto per scrivere il tuo codice in modo leggibile e chiaro saprebbe questo:
#include <stdio.h>
#include <stdlib.h>
int main(){
int n; //dati di input //contiene il numero che si inserisce
int d; //variabili di lavoro // contiene il valore di n, su cui andremo poi a lavorare successivamente
int r; //dati di output //contiene il numero binario corrispondente
printf("Programma per convertire un numero da decimale a binario.\n");
printf("Inserisci un numero senza virgola e positivo: ");
scanf("%d",&n);
d=n;
if((d<0) || (d==1)){
if(d<0)
printf("Impossibile calcolare il numero binario.");
else{
r=1;
printf("Il numero binario e\': %d",r);
}
}
else
do{
r = d % 2;
printf("%i ",r);
if (r == 0)
d /= 2;
else
d = (d-1)/2;
}
while(d>0);
printf("\n");
return 0;
}
inoltre non capisco perché utilizzi la variabile n, consiglio di ricevere subito il dato nella variabile d ed evitare di allocare memoria inutile.
per fare bene questo esercizio inoltre dovresti salvare r in un array e poi stamparlo rovescio perché altrimenti il numero esce completamente rovesciato..