Universidade Federal do Rio de Janeiro Data: 26/04/05 Disciplina: Computação I 1ª Lista de Exercícios 1) Faça um programa, em pseudo-código, que peça ao usuário que informe n números reais e então calcule a soma e a média destes, exibindo os resultados na tela. Traduza o pseudo-código para a linguagem C. 2) A soma dos n termos de uma progressão geométrica é dada por: G n = a + aq + aq 2 + L + aq n n 1 q = a 1 q + 1 Faça um programa em pseudo-código que gere os n termos dessa progressão geométrica e calcule a sua soma. Escreva a versão final do programa em C. 3) A partir do pseudocódigo dado em sala de aula, faça um programa que calcule o mmc de dois números. Este programa deve utilizar uma função que calcule o mdc através do algoritmo de Euclides. Escreva a versão final do programa em C. 4) Escreva um programa em C que leia três pontos coplanares, de coordenadas (x, y), e verifique se estes três pontos formam um triângulo. 5) Desenvolva um programa em linguagem C que contenha um arranjo bidimensional inteiro de a ij ordem 5 5, sendo que essa matriz será inicializada da seguinte forma: os elementos da diagonal principal devem ser iguais ao índice da diagonal, pro exemplo o 2º elemento da diagonal principal ( a 22 ) deve ser igual a 2 e assim sucessivamente. Os elementos acima da diagonal principal serão iguais a soma dos seu índices ( a ij = i + j ) e os elementos abaixo da diagonal serão iguais a subtração dos seus índices ( a ij = i j ). Os elementos dessa matriz devem ser exibidos na tela de forma organizada, linha por linha. 6) O produto escalar de dois vetores = ( x, x, L 2, ) equação: x e y = y, y, L, ) é dado pela seguinte 1 x n x y = x * 1 * y1 + x2 * y2 + L+ xn yn ( 1 2 yn
Desenvolva um programa em C que realize este produto escalar, usando arranjos reais de ordem 3. O resultado do produto escalar é retornado por uma função cujos argumentos são os ponteiros dos arranjos x e y. Uma vez realizado o produto, imprima o resultado na tela, informado se os vetores são ortogonais ou não, isto é, se x y = 0. 7) O número inteiro 3025 tem a seguinte característica: 30 + 25 = 55 55 2 = Escreva um programa em C que verifique se há outros números inteiros de 4 dígitos que também possuam essa interessante característica e os mostre na tela utilizando o formato acima. 3025 8) Repetir o exercício 5 utilizando ponteiros. 9) Escreva um programa em C que compare dois números reais e retorne o maior. Esse programa deve ter duas funções que fazem a mesma tarefa, sendo que na primeira são passados os valores e a funçao retorna o resultado. Na segunda função, que não retorna valor, são passados além dos endereços das variáveis como argumentos, o endereço de uma terceira variável que deve conter o resultado da operação. 10) Escreva um programa que exiba um menu com as opções "1-multiplicar" e "2-somar", leia a opção desejada, leia dois valores, execute a operação (utilizando o comando "if") e exiba o resultado 11) Utilizando if's em escada, inclua, no programa do exercício 10, as opções "3-Subtrair" e "4- Dividir". 12) Utilizando um laço "for" dentro de outro, escreva um programa que exiba as tabuadas de multiplicação dos números de 1 à 9. 13) Escreva um programa que imprima todos os numeros pares entre 0 e 50 e em seguida imprima todos os impares. Deixar um espaco entre os numeros. 14) Escreva um programa que exibe a tabela ascii. 15) Escreva um programa que leia um numero do teclado e ache todos os seus divisores.
Escreva um programa que conte de 100 a 999 (inclusive) e exiba, um por linha, o produto dois tres digitos dos numeros. Por exemplo, inicialmente o programa irá exibir: 0 (1*0*0) 0 (1*0*1) (...) 0 (1*1*0) 1 (1*1*1) 2 (1*1*2) até 9*9*9=729 Faça seu programa dar uma pausa a cada 20 linhas para que seja possível ver todos os números pouco a pouco (solicitando que seja pressionada alguma tecla para ver a próxima sequencia de números, como o DIR/P do DOS). 16) Escreva o resultado do programa em C abaixo: void main(void) int a,b,c; a = b = c = 0; a = ++b + ++c; a = b++ + c++; a = ++b + c++; a = b-- + --c; a = ++c + c--; printf ("\n\n"); 17) Escreva o resultado do programa em C abaixo: void main(void) int a,b,c = 5;
float x,y; a = b = 10; c = a/2; x = c/2; y = (float) c/2; printf ("\n x = %6.2f y = %6.2f", x, y); x = (float) (a + b)/2; y = (float) a + b/2; printf ("\n x = %6.2f y = %6.2f", x, y); printf ("\n\n"); 18) Explique a diferença entre: p++; (*p)++; *(p++) e *(p+10);? 19) Escreva o resultado do programa em C abaixo: void main() int y, *p, x; y = 0; p = &y; x = *p; x = 4; (*p)++; x--; (*p) += x; printf ("y = %d\n", y); 20) Escreva o resultado do programa em C abaixo: void func1(float a, float b) a = 5; b = 10; void main() float a,b; a = b = 0; func1(a,b); printf("\n a = %6.2f b = %6.2f \n",a,b);
21) Escreva o resultado do programa em C abaixo: void func2(float *a, float *b) *a = 5; *b = 10; void main() float a,b; a = b = 0; func2(&a,&b); printf("\n a = %6.2f b = %6.2f \n",a,b); 22) Faça um programa que execute o menu abaixo: Considerações: OPÇÕES 1 Calcula a HIPOTENUSA 2 Calcula a MÉDIA PONDERADA 3 Imprime o MENOR ENTRE 3 NÚMEROS 4 Termina o algoritmo OPCAO: 1 - Ao se escolher a opção 1, deverá ser pedido os valores dos catetos e impresso a HIPOTENUSA. 2 - Ao se escolher a opção 2, deverá ser pedido 4 notas e impressa a MÉDIA PONDERADA. Para calcular a média ponderada, use os seguintes pesos para as notas: 2, 3, 2 e 3 respectivamente. 3 - Ao se escolher a opção 3, deverá ser pedido 3 números e impresso menor. 23) O que o programa a seguir faz? Qual é o resultado obtido se a string fornecida for: a) "Ah! Eu tô maluco!" b) "5*4+(3^3)+4*5" #include <stdio.h> #include <string.h> #define TAM 20 main () char s[tam]; int c, i, j; for (i=0, j=strlen(s)-1; i<j; i++, j--) c = s[i]; s[i] = s[j]; s[j] = c;
24) Faça um programa que leia quatro palavras pelo teclado, e armazene cada palavra em uma string. Depois, concatene todas as strings lidas numa única string. Por fim apresente esta como resultado ao final do programa. 25) Entrar com uma mensagem e imprimir quantas letras A, E, I, O e U tem esta mensagem.(considerar minúscula e maiúscula). 26) Ler uma mensagem qualquer (uma string) e: a) Determinar o tamanho da string. Use o laço for, sem conteúdo, para executar esta tarefa; b) Determinar o tamanho da string fazendo uso de uma função; c) Determinar a quantidades de caracteres brancos (espaços); d) Mostrar a string invertida; e) Mostrar a string sem espaços em branco; f) Se fosse um nome de uma pessoa, determinar as letras iniciais de cada parte do nome. Acrescentar @ufrj.br Ex.: Roberta Cortes => roberta@ufrj.br