Encontre o erro em cada um dos segmentos de código a seguir, e explique como corrigi-lo.
a)
x = 1 ; while ( x
b)
for ( y = .1; y != 1.0; y += .1 ) printf( "%f\n", y );
c)
switch ( n ) { case 1: printf( "O número é 1\n" ); case 2: printf( "O número é 2\n" ); break; default: printf( "O número não é nem 1 nem 2\n" ); break; }
d)
O código a seguir deveria imprimir os valores de 1 a 10
n = 1; while ( n
Passo 1
Para o primeiro exercício o erro é bem simples: há um ponto e vírgula (;) após o while, que não deveria existir. Com esse ponto e vírgula o loop fica preso ali. Corrigindo:
x = 1 ; while ( x
Passo 2
Na letra b) o erro é usar float para controlar um for. A estrutura for deve ser controlada com um número inteiro sempre! Vamos corrigir:
for ( y = 1; y != 10; y += 1 ) printf( "%f\n", y / 10 );
Passo 3
O erro nessa letra c) é mais de lógica do que de execução. Se você compilar esse programa ele vai funcionar, o problema é que não vai rodar como queremos pois falta o break no primeiro comando! sem esse break o programa fica travado ali naquele ponto quando a condição "case" for satisfeita. Vamos corrigir:
switch ( n ) { case 1: printf( "O número é 1\n" ); break; case 2: printf( "O número é 2\n" ); break; default: printf( "O número não é nem 1 nem 2\n" ); break; }
Passo 4
O erro nesse programa também é de lógica, como no programa da letra c). O enunciado diz que deve imprimir os valores de 1 a 10 mas foi usado o sinal de menor (
n = 1; while ( n
Resposta
a)
x = 1 ; while ( x
b)
for ( y = 1; y != 10; y += 1 ) printf( "%f\n", y / 10 );
c)
switch ( n ) { case 1: printf( "O número é 1\n" ); break; case 2: printf( "O número é 2\n" ); break; default: printf( "O número não é nem 1 nem 2\n" ); break; }
d)
n = 1; while ( n