El programa es un poco tonto pero bueno, para familiarizarme me viene bien. Consiste en adivinar un número ya fijado en el código. En el primer caso, al ponerlo bien a la primera el programa reconoce que está bien. Pare el segundo programa no te lo reconoce a la primera, sí a la segunda. La única diferencia es que en el segundo hay un if-else dentro de un do-while y en el primero sólo está el do-while.
creo que tus casos están al revés...
en el primero SIEMPRE va a estar "malo" a la primera
porque
do
{
printf ("El numero escogido es diferente al que estoy pensando\n"); }
while (v!=d);
como vez el codigo, siempre va a comprobar si está bien o mal al final (donde stá ubicada la comprobacion)
en el segundo...
if (v!=d)
descarta la entrada al bucle y si está bueno, está bueno...
para arreglar el primero, en lugar de usar "do-while", podrias usar solo "while"
[code=c] while (v!=d);
{
printf ("El numero escogido es diferente al que estoy pensando\n"); }
[/code]
en ese caso el va a comprobar la condición antes de entrar al bucle