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