Disciplina: Técnicas de Programação_______________________________________________________ Universidade Federal de Campina Grande Centro de Ciências e Tecnologia Departamento de Sistemas e Computação Disciplina: Técnicas de Programação Profs.: Joseana Macedo Fechine José Eustáquio Rangel de Queiroz DSC/CCT/UFCG Exercício de Revisão DATA: 10/05/2004 DISCIPLINA Técnicas de Programação Exercícios de Revisão I – Linguagem C Campina Grande – PB Maio, 2004 DSC/CCT/UFCG ___________________________________________________________________ 1 Disciplina: Técnicas de Programação_______________________________________________________ Exercícios de Revisão 1 − Linguagem C 1) Mostrar ao lado de cada chamada à função printf o que será exibido na execução do programas abaixo. 1.1) Programa 1 #include <stdio.h> void main(void) { int m[2][2] = {{14, 29}, {58,33}}; int v1 = 0, v2 = 1; char str[] = "AEIOU"; printf("[%4d]", m[++v1][v2++]); printf("[%-4d]", v1); v2 += v1; printf("[%04d]", v2); printf("[%4.2s]", str); v1 = (m[0][1]>m[1][0])?2:3; printf("[%c]", str[v1]); } 1.2) Programa 2 #include <stdio.h> void main(void) { int n1=10, n2=8; char txt[]="ABCDEF"; float vf=13.0; printf("[%3d]", n1); printf("[%04d]", n2); printf("[%10s]", txt); printf("[%c]", txt[1]); printf("[%-8.3s]", txt); printf("%10.2f", vf); } 2) Informe a operação realizada pelos programas abaixo. 2.1) Programa 1 #include <stdio.h> int main() { int x; scanf("%d",&x); printf("%d",x); return (0); } 2 Disciplina: Técnicas de Programação_______________________________________________________ 2.2) Programa 2 int main() { float Nota1,Nota2,Nota3,Nota4, Media; printf("Digite a 1 nota"); scanf("%f", &Nota1); printf("Digite a 2 nota"); scanf("%f", &Nota2); printf("Digite a 3 nota"); scanf("%f", &Nota3); printf("Digite a 4 nota"); scanf("%f", &Nota4); Media = (Nota1 + Nota2 + Nota3 + Nota4) / 4; printf("A media e: %f", Media); return 0; } 2.3) Programa 3 #include <stdio.h> int main(){ int valor, resto; float nota,notaf; clrscr(); printf (“Digite uma nota: ); scanf (“%f”, &nota); valor = nota * 10; resto = valor % 10; if (resto <= 5) notaf = (valor – resto) / 10.0; else notaf = (valor + (10 – resto))/10.0; printf (“Nota Final : %f”, notaf); return 0; } 3. Usando a Linguagem C, solucione os problemas abaixo apresentados. 3.1) Escreva um programa que ordene inversamente os primeiros cem números inteiros. 3.2) Num laboratório de Física, em uma experiência relativa a Movimento Uniformemente Variado, foram encontrados os seguintes valores: s 0 = 2 m, v0 = 3 m/s, a = 10m/s². Digitado o valor de t, em segundos, apresentar em tela o valor de s, em metros. (Dica: Lembre-se da expressão s = s0 + v0.t + ½.a.t²) DSC/CCT/UFCG ___________________________________________________________________ 3 Disciplina: Técnicas de Programação_______________________________________________________ 3.3) Escrever um programa que receba, via teclado, os valores do espaço percorrido e do tempo gasto por um veículo em movimento e calcule e apresente em tela sua velocidade média. 3.4) O critério de avaliação semestral de determinada escola envolve as seguintes notas: P1 – primeira avaliação do semestre. P2 – segunda avaliação do semestre. A – nota atribuída pelas atividades realizadas no semestre. Escreva um programa que leia as notas das provas (P1 e P2) e das atividades semestrais (A), calcule e apresente a média ponderada, sabendo que às duas provas são atribuídos pesos iguais (4), enquanto a nota das atividades recebe peso 2. 3.5) Elaborar um programa para calcular e imprimir o volume (V) de uma esfera e a área (A) de sua superfície, dado o valor de seu raio (R). (Dica: Lembre-se que as expressões para o cálculo do volume e da área da esfera são, respectivamente, V = 4/3 R³ e A = 4R². 3.6) Escrever um programa que receba, via teclado, um determinado número inteiro e apresente em tela uma mensagem informando se o número é par ou ímpar. 3.7) Para tornar segura a transmissão de dados, costuma-se codificá-los antes de transmiti-los. Suponha um número X qualquer de 3 dígitos na forma d1d2d3 (e.g. 237, no qual d1 = 2, d2 = 3 e d3 = 7). Escreva um programa em C que transforme o número X = d1d2d3 em um número Y = f1f2f3, correspondente a X codificado, usando a seguinte regra: f1 = ((d3 + 7) mod 10) f2 = ((d1 + 6) mod 9) f3 = (9 mod (d2 + 1)) Obs.: O programa em C deve ler X e imprimir Y. 3.8) O acesso ao Laboratório de Processamento de Sinais do DEE/UFCG é controlado a partir de uma porta automática. Para abrir a porta referido laboratório, é necessário o uso de uma senha, composta por 4 dígitos, no formato Y = d1d2d3C, onde C é o dígito de controle da senha (e.g, se Y = 7207, então d1 = 7, d2 = 2 d3 = 0 e C = 7). O dígito C da senha é uma forma de segurança que impede que pessoas não autorizadas entrem na sala do laboratório. Caso uma pessoa não autorizada consiga digitar uma senha, ela é testada para verificar se é válida. O setor de segurança compõe a senha gerando aleatoriamente os dígitos d 1, d2, d3 e d4 e o dígito C é calculado da seguinte forma: 3 C = 9 - ( [ (7 - K) * d k ] mod 10) K =1 Assim, se d1 = 7, d2 = 2 d3 = 0 então X = 720 e C = 7. Assim, a senha válida é Y=7207. Se a senha digitada for X = 7206, a senha é inválida e a porta permanece fechada. Escreva um algoritmo que leia o número X = d1d2d3 e gere o número Y conforme a regra acima. 3.9) Escreva um programa em C que apresente em tela uma seqüência de 30 números que obedeçam à seguinte regra: (i) os dois primeiros números são 1; e (ii) qualquer outro número corresponde à soma dos dois anteriores ( 1 1 2 3 5 8 13 21 .... ). Esta seqüência é conhecida como série de Fibonacci. 4 Disciplina: Técnicas de Programação_______________________________________________________ 3.10) Uma empresa distribuidora de energia elétrica adotou normas de economia de energia. Para cada imóvel, a meta de economia deve ser uma redução de 25% da média de consumo dos meses maio, junho e julho de 2003. Escreva um programa em linguagem C, que leia o consumo dos meses mencionados e o consumo do mês atual para várias residências. O programa deve calcular a meta de economia, informando se o consumidor está dentro da meta ou ultrapassou o limite. No final do cálculo da meta de economia de cada imóvel, o programa deverá exibir uma mensagem perguntando se o usuário deseja calcular mais uma meta; caso a resposta seja negativa, será informado ao usuário a porcentagem de imóveis que atingiram a meta e a porcentagem de imóveis que não a atingiram. DSC/CCT/UFCG ___________________________________________________________________ 5