Faculdade Anglo-Americano Curso de Ciência da Computação Linguagem de Programação Lista de Exercícios 1 1. O programa seguinte tem vários erros em tempo de compilação. Encontre-os. Main() { int a=1; b=2, c=3; printf(“Os números são: %d %d %d \n, a, b, c) } 2. Qual será a saída do programa abaixo: Main() { printf(“%s \n%s \n%s”, “um”, “dois”, “tres”); } 3. Qual será a impressão obtida por cada uma destas instruções? Assuma que fazem parte de um programa completo. a) printf(“Bom dia! Shirley.”); printf(“Você já tomou café? \n”); b) printf(“A solução não existe! \n Não insista”); c) printf(“Duas linhas de saída \n ou uma?”); 4. Identifique o tipo das seguintes constantes: a) ‘\r’ b) 2130 c) –123 d) 33.28 e) 0x42 f) 0101 g) 2.0e30 h) ‘\xDC’ i) ‘\”’ j) ‘\\’ k) ‘F’ l) 0 m) ‘\0’ 5. O que é uma variável em C? 6. Quais os 5 tipos básicos de variáveis em C? 7. Quais dos seguintes nomes são válidos para variáveis em C? a) b) c) d) e) f) g) h) i) j) k) l) 3ab _sim n_a_o 00FIM int A123 X**x _A y-2 OOFIM \meu *y2 8. Quais as seguintes instruções são corretas? a) b) c) d) e) int a; float b; double float c; unsigned char d; long float e; 9. O tipo float ocupa o mesmo espaço que _____________ variáveis do tipo char. 10. Verdadeiro ou falso: tipos de variáveis long podem conceber números não maiores que o dobro da maior variável do tipo int. 11. Escreva um programa que contenha uma única instrução e imprima na tela: Esta e’a linha um. Esta e’a linha dois. 12. Escreva um programa que imprima na tela: um dois tres 13. Escreva um programa que declare 3 variáveis inteiras e atribua os valores 1, 2 e 3 a elas; 3 variáveis caracteres e atribua a elas as letras a, b e c; finalmente imprima na tela: As variaveis inteiras contem os numeros 1, 2 e 3. As variaveis caracteres contem os valores a, b e c. 14. Reescreva o programa box.c para que desenhe uma moldura similar, mas que tenha 4 caracteres de largura e 4 caracteres de altura. Use o caracter , de código BA hexa, para complementar a moldura. Faculdade Anglo-Americano Curso de Ciência da Computação Linguagem de Programação Lista de Exercícios 2 1. Qual é o erro deste programa? Main() { int i; scanf(“%3d”, &i); printf(“%3d”,i); } 2. Este programa tem um erro de lógica. Qual e? Main() { int a, b, c; printf(“Digite 3 numeros: \n”); scanf(“%d %d %d”, a, b, c); printf(“\n%d %d %d”, a, b, c); } 3. A função scanf() retorna o número de leituras feitas com sucesso. Considere o seguinte programa: Main() { int i, j, k; printf(“%d \n”, scanf(“%d %d %d”, &i, &j, &k)); } Execute-o digitando os seguintes valores: a) b) c) d) e) f) g) 1 1 a 3 ^z 1 3.2 2 2 3 4 5 2 1 3 a 4 2.1 1 ^z 2 Verifique os possíveis inteiros retornados por scanf(). Observe que o caractere ^z é obtido pressionando-se, ao mesmo tempo, as teclas Ctrl e Z. 4. O programa seguinte tem um erro de execução. Verifique. Main() { int a, b=0; a=5/b; } 5. Quais dos seguintes operadores são aritméticos? a) b) c) d) + & % < 6. Assuma que todas as variáveis são do tipo int. Encontre o valor de cada uma delas e escreva um programa que as imprima para verificar os resultados: a) b) c) d) e) x=(2+1)*6 y=(5+1)/2*3 i=j=(2+3)/4; a=3+2*(b=7/2); c=5+10%4/2 7. Reescreva a seguinte instrução usando operador de incremento: Número = número + 1; 8. Como será interpretada a expressão x+ + +y? a) x++ + y b) x + ++y Escreva um pequeno programa e verifique a interpretação dada em seu compilador. 9. Reescreva a seguinte instrução usando operador aritmético de atribuição: Laranja = laranja + x; 10. Considere o código: int x=1, y=2, z=3; x+ =y + =z + =7; Quais serão os valores das variáveis x, y e z? Escreva um programa para checar a sua resposta. 11. Operadores relacionais são usados para: a) b) c) d) combinar valores; comparar valores; distinguir diferentes tipos de variáveis; trocar variáveis por valores lógicos. 12. Verdadeiro ou falso: a) 1 > 2 b) ‘a’ < ‘b’ c) d) e) f) 3= =2 ‘1’= =’1’ 3 >= 2 ‘j’!= ‘j’ 13. Qual será o valor de k? j = 3; k = j = = 3; 14. A precedência dos operadores determina qual é o operador: a) b) c) d) mais importante; usado primeiro; mais adequado; que opera em números maiores. 15. O comentário seguinte é correto? /* Este é um comentário /* que se estende em /* várias linhas */ 16. Modifique o programa idade.c para que imprima a idade em minutos ao invés de em dias. 17. Escreva um programa que solicite 3 números em ponto flutuante e imprima a média aritmética. Faculdade Anglo-Americano Curso de Ciência da Computação Linguagem de Programação Lista de Exercícios 3 1- Substituir for por while: (a) for (i=0; i <= 20; i++) { x = j/3; printf("%d", x); } (b) for (abc=2, semente= 0; semente <= 100; semente+=2) { sem1 = semente *2; sem2 = semente + 1.5 * abc; media = (sem1 + sem2) /2; printf("%f", media); } 2- Reescreva os trechos de código abaixo, utilizando os comandos indicados: (a) for do { printf( "%d", x ); x--; } while( x > 3 ); (b) if e for k = 0; while ( k <10) { printf( " Digite i: "); scanf("%d", &i); switch( i ) { case 1: x = i; case 2: x = j; break; case 0: x = i + j; default: x = i * j; } printf( "%d \n", x); k+=2; } (c ) do-while while( i < n ) { i += 2; n--; } 3- Troque os comandos while por for. Faça teste de mesa para os trechos nas duas versões. (a) a = 0; while ( a != 3) { a = a + 1; printf("%d", a); } (b) z = 10; while( z > 0) { z = z - 3; printf("%d", z); } (c ) k = 5; while( k < 10) { k = k + 1.5; printf("%d", k); } 4- Transforme do-while em while e em for. Faça teste de mesa para o do-while. (a) a = 9; do a = a + 1; while (a <= 10) (b ) gh = 5; a = 8 do { a+= gh; printf("%d", a); } while (gh != 5); (c ) t = 0; do { t = t + 1; printf("%d", t*2); } while (t<8); 5- O que será impresso pelos programas a seguir? (a) main() { int a, b, c, cont; cont = a = b = 1; printf("\n%d\n%d",a ,b); while (cont <= 8) { c = a + b; printf("\n%d", c); a = b; b = c; cont++; } } (b) main() { int x = 8531, s = 0; while (x > 0) { s = s*10 + x % 10; x = x / 10; } printf("\n%d", s); } (c ) main() { int cont = x = 1; while (cont <= 8) { printf("\n%d",x); x += cont; cont++; } } (d) void main() { int x = 0, y = 1; for( ; y < 100; y += 2 ) x = x + y; printf( "\ny = %d\nx = %d\n", y, x ); } (e) void main() { int x = 9, y = 0; do{ y = (x % 2) + 10 * y; x = x / 2; printf( "x = %d, y = %d\n", x, y ); } while( x ); while( y ) { x = y % 100; y = y / 10; printf( "x = %d, y = %d\n", x, y ); }; } (f) for (i = 4 ; i+4<10 ; i++) printf ("\n%d",i); (g) void main() { int i, j, n; n = 4; for (i = 1; i <= n; i++) { for (j = 1; j <= i; j++) printf("%5d", j * i); printf("\n"); } } 6- Escrever um programa que lê uma seqüência de n valores, um de cada vez, e imprime a quantidade de valores negativos. 7- Escrever um programa que lê um conjunto de valores, imprimindo, para cada valor: seu quadrado, seu cubo e sua raiz quadrada. O conjunto é finalizado com o valor zero. 8- Escreva um programa que leia um número inteiro e mostre a tabuada da multiplicação conforme o formato abaixo. Por exemplo, se n = 2, deverá ser impresso: 2x0=0 2x1=2 2x2=4 2x3=6 .... 2 x 10 = 20 9- Escreva um programa para ler um número n (número de termos de uma progressão aritmética), a1 ( o primeiro termo da progressão) e r (a razão da progressão). Calcular e imprimir os n termos desta progressão, bem como a soma dos elementos. 10- Escrever um programa que leia 20 valores para uma variável n e, para cada um deles, calcule a tabuada de 1 até n. Mostre a tabuada na forma: 1xn=n 2 x n = 2n 3 x n = 3n ....... n x n = n2 11- Escreva um programa que leia um número inteiro positivo N. Calcule e mostre o maior quadrado menor ou igual a N. Por exemplo, se N for igual a 38, o menor quadrado é 36 (quadrado de 6). 12- Escreva um programa que leia um número inteiro positivo e mostre o seu fatorial. 13- Escrever um programa que leia um número n que indica quantos valores devem ser lidos a seguir. Para cada número lido, mostre uma tabela contendo o valor lido e o fatorial deste valor. 14- Escreva um programa que leia um número inteiro e indique se o mesmo é primo ou não. 15- Escreva um programa que mostre os 20 primeiros números primos. 16- Escrever um programa que calcula e escreve o produto dos números primos entre 92 e 1478. 17- Faça um programa que imprime todos os números primos entre 1 e um certo valor m 18- Faça um programa que leia 2 valores: x( real ) e y (inteiro). O programa deve calcular e escrever o valor de x elevado a y. 19- Imprimir os números entre 1 e 2000 que divididos por 11 dão resto igual a 5. 20- Escrever um programa que leia uma seqüência de números, calcule e imprima a média aritmética. A seqüência termina quando for digitado o valor zero. 21- Dada uma seqüência com dois ou mais inteiros, contar quantas duplas de números adjacentes são iguais. Exemplo: A seqüência 4 2 9 9 3 7 7 7 0 ( 0 indica fim) tem 3 pares. 22) Escreva um programa C que leia um número inteiro de 4 dígitos, calcule e mostre a sua decomposição em unidade, dezena, centena e milhar. Exemplo: 8531 unidade = 1 dezena = 3 centena = 5 milhar = 8 23) O cardápio de uma casa de hamburger é dado abaixo. Preparar um programa em C para ler a quantidade de cada item comprado e calcular a conta ao final. Mona’s Burgers Preço: Hamburger (R$ 2,50) Cheeseburger (R$ 3,30) Batata Frita (R$ 1,50) Refrigerante (R$ 0,60) Milkshake (R$ 1,70) O programa deve ter uma variável para cada item para ler a quantidade e multiplicar pelo preço do respectivo item, somando tudo ao final, incluindo, também, os 10% dos serviços.