Prévia do material em texto
Universidade Estadual da Paraíba Centro de Ciências e Tecnologia Departamento de Computação Disciplina: Linguagem de Programação C LISTA DE EXERCÍCIOS 1) Diga se cada uma das afirmações seguintes é verdadeira ou falsa. Se for falsa, explique por quê. a) Quando a função printf é chamada, ela sempre começa a imprimir no início de uma nova linha. b) Os comentários fazem com que o computador imprima na tela o texto situado entre /* e */ quando o programa é executado. c) A seqüência de escape \n, quando usada em uma string de controle de formato de printf, faz com que o cursor se posicione no início da próxima linha na tela. d) Todas as variáveis devem ser declaradas antes de serem usadas. e) Todas as variáveis devem receber a atribuição de um tipo ao serem declaradas. f) O C considera idênticas as variáveis numero e NuMeRo. g) As declarações podem aparecer em qualquer lugar do corpo de uma função. h) Todos os argumentos após a string de controle de formato em uma função printf devem ser precedidos por um e-comercial (&). i) O operador resto (%) só pode ser usado com operadores inteiros. j) Os operadores aritméticos *, /, % e - possuem o mesmo nível de precedência. k)Verdadeiro ou falso: Os nomes de variáveis a seguir são idênticos em todos os sistemas ANSI C: 0vejaumnomesuperhiperlongol234567 0vejaumnomesuperhiperlongol234568 1) Verdadeiro ou falso: Um programa em C que imprime três linhas de saída deve conter três instruções printf. 2) *Escreva um programa que leia um caracter digitado pelo usuário, imprima o caracter digitado e o código (número inteiro) ASCII correspondente a este caracter. 3) Qual o valor de x após a seguinte seqüência de comandos: a. a = 10; b = 20; x = 0; x = (b > a) ? b : a; b. a = 1; b = 2; c = 3; x = 0; x = a < b ? a < c ? a : c : b < c ? b : c; 4) if(num) ...; é equivalente a if(num!=0)? Porquê? 5) Explique qual é a utilidade do operador de modulação (casting). Dê exemplo onde ele é bastante útil. 6) *Escreva um programa em C que recebe como entrada um valor em segundos e o converte em horas, minutos e segundos. Imprima o resultado. (Dica: utilize o operador módulo (%)). 7) Faça um programa que peça dois números ao usuário e mostre qual o maior e qual o menor 8) Escreva um programa em C que recebe um inteiro e diga se é par ou ímpar. Use o operador matemático % (resto da divisão ou módulo) e o teste condicional if. 9) Crie um programa em C que peça um número ao usuário e armazene ele na variável x. Depois peça outro número e armazene na variável y. Imprima esses números na tela. Em seguida, faça com que x passe a ter o valor de y, e que y passe a ter o valor de x. 10) Explique porque a condição abaixo pode causar um erro lógico. if (num=10) ... O que irá acontecer? 11) Dados: int a = 11, b = 4, c = 3, d = 0, e = 1; Diga se as seguintes expressões serão verdadeiras ou falsas, mostre os cálculos. a) (!(a>b)||(b>a)) b) (!(b==a)&&(b!=c)&&((e>d)||(b<=b-1))) c) ((!((b+c>a)&&(--e))||(++d)) – (a-(b + 2*c+ d))) 12) Dada a tabela abaixo, escreva um programa que receba por teclado um valor float e imprima o conceito correto de acordo com o valor digitado. Valor Conceito 9.0 < 𝑣𝑎𝑙𝑜𝑟 ≤ 10.0 A 8.0 < 𝑣𝑎𝑙𝑜𝑟 ≤ 9.0 B 7.0 < 𝑣𝑎𝑙𝑜𝑟 ≤ 8.0 C 6.0 < 𝑣𝑎𝑙𝑜𝑟 ≤ 7.0 D 𝑣𝑎𝑙𝑜𝑟 ≤ 6.0 E 13) *Escreva um programa que tem como entrada três números e imprime estes números em ordem crescente. 14) Os nomes true e false são definidos como constantes simbólicas na biblioteca stdbool (stdbool.h): #define true 1 #define false 0 a. Explique o que o processador faz quando encontra essas constantes simbólicas. b. Explique porque em C não é extremamente necessário utilizar essas constantes simbólicas. c. Mas então porque seria interessante utilizá-las? 15) Identifique e corrija os erros de cada uma das seguintes instruções: a) printf("O valor e %d\n", &número); b) scanf("%d %f", &numerol, numero2); c) if (c < 7); printf("C e menor do que 7\n"); d) if (c => 7) printf("C e igual ou menor do que 7\n");