Universidade Federal Rural de Pernambuco - UFRPE Departamento de Estatística e Informática - DEINFO DISCIPLINA: Paradigmas de Programação PROFESSOR: Gláucya Carreiro

Boechat

Prática - Linguagem C Exercícios - Desenvolvendo um pequeno projeto
Siga as instruções abaixo: 1) Baixe, instale e entre no ambiente DevC++ (http://sourceforge.net/project/downloading.php?groupname=devcpp&filename=devcpp-4.9.9.2_setup.exe&use_mirror=ufpr) 2) Vá em Arquivo -> Novo -> Projeto. Escolha a opção “Console Application” 3) Escolha o caminho e salve o projeto com o nome “primeiro”. Aparecerá automaticamente no editor um arquivo (main.cpp) onde podemos encontrar a função main.

4) Altere o arquivo main.cpp deixando o código como abaixo e salve o arquivo:
#include <stdio.h> void impsaudacao() { puts("Boa Tarde"); } int main() { printf("Meu primeiro projeto em C\n"); impsaudacao(); getchar(); }

5) Vá em Executar -> Compilar (ou pressione Ctrl+F9). 6) Escolha a opção Executar -> Compilar (ou pressione Ctrl+F10) e execute o programa.

7) Alterne o arquivo main.cpp e declare uma variável local à função main chamada NomeUsr através da seguinte linha de código:
char NomeUsr[21];

8) Peça para o usuário informar o seu nome, através das seguintes linhas:
printf("Informe o seu Nome: "); gets(NomeUsr);

9) Alterne a função impsaudacao() e modifique a linha puts("Boa Tarde") para:
printf("Boa Tarde %s\n", NomeUsr);

10) Refaça o projeto (Compilar). Verifique a janela de mensagens. Qual o motivo do erro de compilação e como consertá-lo? 11) Conserte o erro e execute a aplicação! 12) Crie um segundo projeto com o nome “segundo”. 13) Altere o arquivo main.cpp deixando-o com a seguinte implementação:
#include <stdio.h> #include <stdlib.h> int main() { int num1, num2; int getnum(); puts("Digite 2 numeros:"); printf("Numero 1: "); num1 = getnum(); pr intf("Numero 2: "); num2 = getnum(); printf("O produto dos dois numeros vale: %d\n", num1*num2); return (0); } int getnum() { char s[80]; gets(s); /* Le string s */ return (atoi(s)); /* Converte string s para inteiro e devolve o valor convertido*/ }

14) Compile e execute o programa. Que falhas você visualiza neste programa. Comente.

Programa para gerar tabela ASCII 15) Crie um terceiro projeto. É importante a criação de diversos projetos pois um projeto (aplicação) não pode conter mais de uma função main( ). 16) Digite main.cpp as seguintes linhas de código em C:
#include <stdio.h> main() { int i; int linha = 5; puts("Tabela ASCII\n"); puts("Decimal Hexa Caracter"); for (i = 0; i < 256; i = i + 1) { printf("%5.3d %4.2X %c\n", i, i, i); linha = linha + 1; if (linha == 25) { if (getchar() == 's') break; linha = 1; } } return (0); }

17) Salve o arquivo, compile e teste o programa.

Alteração do programa de tabela ASCII 18) Altere o código do programa de geração da tabela ASCII para permitir que o usuário estabeleça o início e o final da tabela. Dica: use a função scanf( ) para ler estes valores. Teste e execute o programa.

4. Exercícios Complementares
1) Monte um programa em C para executar cada um dos comandos abaixo. Veja a saída de cada comando e explique porque ela teve este formato. a) printf("|%10s|\n", "string"); b) printf("|%-10s|\n", "string"); c) printf("|%5d|\n", 100); d) printf("|%-5d|\n", 200); e) printf("|%5.2f|\n", 3.141592); f) printf("|%-10.3s|\n", "string"); g) printf("|%8d|\n", 40000); h) printf("|%8ld|\n", 40000); i) printf("|%10.5d|\n", 102); j) printf("|%.5d|\n", 102); k) printf("|%010d|\n", 102); l) printf("|%010.5d|\n", 102); m) printf("|%5.2Lf|\n", 314.1592); n) printf("|%5.2Le|\n", 314.1592L); 2) Descreva como poderia ser feito um programa para montar uma tabela ASCII para o usuário. 3) Monte um programa com o trecho de código abaixo, veja sua saída e explique o seu funcionamento.
char ch; ch = getchar(); /* Digite 123<Enter> */ putchar(ch); putchar(getchar()); printf("%c %d\n", getchar()); printf("%d\n", getchar()); putchar(getchar());

4) Escreva um programa em C que leia os coeficientes de uma equação de 2º Grau, calcule e mostre suas raízes, caso existam.

5) Informe o resultado finais das variáveis do seguinte código #include <stdio.h> int x[10] = {2, 4, 1, 8, 6, 7, 3, 9, 2, 5}; permutar(a,b) int *a,*b; { int auxiliar; auxiliar *a *b } main() { int i, j, aux, m, nm1, n = 10; nm1 = n - 1; for (i = 0; i < nm1; i++) { m = i; for (j = i + 1; j < n; j++) if (x[j] < x[m]) m = j; permutar(&x[i], &x[m]); } for (i = 0; i < n; i++) printf(" x[%d] = %d", i, x[i]); } 6) Coloque a função MDC( ) com recursividade #include <stdio.h> int mdc(m, n) int m, n; { int r; do = *a; = *b; = auxiliar;

{ r = m % n; m = n; n = r; } while(r != 0); return(m); } main() { int m = 120, n = 9, mdc(m,n); printf("\n o MDC de %d e %d e ", m, m, mdc(m, n)); } 7) Informe o valor das variáveis após a execução dos seguintes códigos. void troca(); main() { int x=10,y=20; troca(&x,&y); printf("x=%d y=%d\n",x,y); } void troca(a,b) int *a,*b; { int temp; temp=*a; *a=*b; *b=temp; } } } void troca(a,b) int a, b; { int temp; temp = a; a = b; b= temp; void troca(); main() { int x=10,y=20; troca(x,y); printf("x=%d y=%d\n",x,y);

8) Escreva uma função para trocar o conteúdo de duas strings informadas pelo usuário. Utilize a função strcpy() 9) Fazer um programa para receber valores inteiros X, Y e Z do usuário e determinar se estes valores podem formar os lados de um triângulo. Em caso afirmativo, informar se o triângulo é eqüilátero, isósceles ou escaleno. 10) Escreva uma função para comparar duas strings informadas pelo usuário. 11) Fazer um programa no qual o usuário vai entrando sucessivamente com valores positivos. Quando o usuário entrar com um valor negativo o programa pára de pedir valores e calcula a média dos valores já fornecidos. 12) Faça um programa que receba do usuário o número de lados e o tamanho dos lados de um polígono regular e imprima o valor da área do polígono. O programa deve utilizar uma estrutura switch-case para decidir que fórmula de cálculo utilizar, de acordo com o número de lados do polígono. Se o número de lados for diferente de 3, 4 ou 6 o programa deve informar: “não sei calcular a área”. Áreas:
a. Triângulo: A = L*L*1.73/4 b. Quadrado: A = L*L

c. Hexágono: A = 6*L*L*1.73/4;