Universidade Metodista de Angola Departamento de Engenharias Curso de Engenharia Industrial e Sistemas Eléctricos (Manhã) Segunda Frequência Programação I Data: 22/11/2010 Duração: 2h00 Docente: Gustavo Sebastião Instruções: Variante A -A prova é individual -Ler com bastante atenção e por completo antes de começar a responder -Responda as questões a partir do enunciado. -A prova contem 6 problemas que devem ser resolvidos usando a linguagem de programação C. -Erros cometidos ao desenvolver os programas tais como, falta de ponto e vírgula no final das instruções, abertura de chavetas, plicas, aspas, sem as fechar, entre outros, irão conduzir a uma cotação reduzida. Nome_____________________________________________________________________________Nº___________ 1. [2.5 val] Escreva um programa em linguagem C que recebe do teclado o valor da base maior B, o valor da base menor b e a altura h de um trapézio, calcula e apresenta a área do trapézio. A área do trapézio é calculada através da fórmula (1.1). Atrapézio = (b + B ) ×h 2 (1.1) Resolução: #include <stdio.h> #include <stdlib.h> int main(){ float b,B,h;Area; printf(“Insira a base menor do trapezio: ”); scanf(“%f”,&b); printf(“Insira a base maior trapezio: ”); scanf(“%f”,&B); printf(“Insira a altura do trapezio: ”); scanf(“%f”,&h); Area = ((B + b)/2) * h; printf(“A área do trapezio e: %.3f”,Area); exit(0); } 2. [2.0 val] Escreva um programa em linguagem C que recebe um carácter maiúsculo do teclado e indica o estado civil de acordo com a tabela abaixo. Caracter ‘C’ ‘S’ ‘D’ ‘V’ Estado Civil “Casado” “Solteiro” “Divorciado” “Viúvo” Solução: #include <stdio.h> #include <stdlib.h> int main(){ char c; printf(“Insira o estado civil: ”); scanf(“%c”,&c); getchar(); switch(c){ case ‘C’: printf(“Casado\n”);break; case ‘S’: printf(“Solteiro\n”);break; case ‘D’: printf(“Divorciado\n”);break; case ‘V’: printf(“Viuvo\n”);break; default: printf(“Estado Civil Invalido\n”); } exit(0); } 3. [2.5 val] Escreva um programa que imprime no ecrã todos os múltiplos de 5 compreendidos entre 100 e 200. Solução: #include <stdio.h> #include <stdlib.h> int main(){ int i; for(i = 100 ; i<=200 ; i++) if(i%5==0) printf(“%d ”,i); exit(0); } 4. [2.5 val] Escreva uma função em linguagem C que recebe como argumento um número inteiro e determina se esse número é impar. A função deve devolver 0 se o número recebido for impar, caso o número não for impar a função deve devolver 1. Solução: int impar(int v){ if(v%2==0) return 1; else return 0; } 5. [3.0 val] Desenvolva um programa que recebe do teclado um número inteiro e determina se o número inserido é impar usando a função do problema anterior. O programa deve imprimir a mensagem “O número é impar” caso o número inserido for impar, caso contrário o programa deve imprimir a mensagem “O número não é impar”. Solução: #include <stdio.h> #include <stdlib.h> int main(){ int n,m; printf(“Insira um número inteiro: ”); scanf(“%d”,&n); m = impar(n); if(m==0) printf(“O numero e impar”); else printf(“O numero nao e impar”); exit(0); } 6. [3.0 val].Escreva um programa em linguagem C que calcula e apresenta o determinante da matriz A representada abaixo. −2 5 A= 1 − 3 Solução: #include <stdio.h> #include <stdlib.h> int main(){ int A[2][2]={{-2,5},{1,-3}}; int det; det = A[0][0]*A[1][1]-A[0][1]*A[1][0]; printf(“O determinante da matriz A vale: %d ”, det); exit(0); } 7. [2.5 val] Dado o programa abaixo. Diga justificando o que o programa imprime no ecrã. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #include <stdio.h> #include <stdlib.h> #define DIM 3 int main(){ int A[3][3]; int i,j; int count = 0; for(i = 0 ; i < DIM ; i++) for(j = 0 ; j < DIM ; j++){ A[i][j]= count; count++; } for(i = 0 ; i < DIM ; i++){ for(j = 0 ; j < DIM ; j++) printf(“%d ”, A[i][j]); printf(“\n”); } exit(0); } Solução: O programa imprime no ecrã os seguintes números: 0 1 2 3 4 5 6 7 8 8. [2.0 val] Dado o programa abaixo. Com a ajuda da tabela ASCII, diga justificando o que o programa imprime no ecrã. 1 2 3 4 5 6 7 8 9 10 11 12 #include <stdio.h> #include <stdlib.h> int main(){ char v[6]={65,78,71,79,76,65}; int i; for(i = 1 ; i<6 ;i++) printf(“%c”,v[i]); exit(0); } Solução: O programa imprime no ecrã os seguintes caracteres: NGOLA Boa Sorte!