Escolar Documentos
Profissional Documentos
Cultura Documentos
Linguagem C
exercícios resolvidos
27 de Junho de 2019
[a\
Sumário
1 Introdução 5
2 Elementos de um programa em C 6
3 Praticando a teoria 13
1 Olá mundo! . . . . . . . . . . . . . . . . . . . . . . 13
3 Comando de decisão . . . . . . . . . . . . . . . . . 18
4 Decisões aninhadas . . . . . . . . . . . . . . . . . . 20
5 Conectivos lógicos . . . . . . . . . . . . . . . . . . 22
[a\
Capı́tulo 1
Introdução
5
[a\
Capı́tulo 2
Elementos de um programa em C
6
[a\
1 /* ----------------------------------------------- */
2 /* Program Name , Version
3 * Program description and utility
4 * Copyright (C) Author , Year
5 * Warranty note
6 * Author contact information
7 * Creation and modification date
8 */
9
10 /* ----------------------------------------------- */
11 /* includes */
12 # include <stdio .h> /* Standard I/O functions */
13 # include <stdlib .h> /* Miscellaneous functions */
14
15 /* ----------------------------------------------- */
16 /* defines */
17 # define VERSION " 20190627.110330 " /* Version Num. */
18 # define DEBUG 0 /* Activate / deactivate debug mode */
19 # define SBUFF 10 /* string buffer */
20 # define MAXCLI 100 /* Maximum of clients on memory */
21
22 /* ----------------------------------------------- */
23 /* typedefs , structs , etc. */
24 /* client register */
25 typedef struct sregister
26 {
27 char nick[SBUFF ];
28 int id;
29 float credit ;
30 } reg_t ;
31
32 /* ----------------------------------------------- */
33 /* function prototypes */
34 void help(void); /* this function does ... */
35
36 /* ----------------------------------------------- */
7
[a\
8
[a\
12
[a\
Capı́tulo 3
Praticando a teoria
1 Olá mundo!
Exercício ex1.c:
%c Lê um caracter char.
%d Lê um inteiro com sinal, na base 10 int. Exemplo:
070 é lido como 70, e 0x70 dá erro de leitura. A leitura
ignora espaços precedentes aos números.
%i Diferente do printf, lê um inteiro com sinal, mas
aceita outras bases, a depender do prefixo do número
dado. Exemplo: base hexadecimal 0x70==112, base octal
070==56 e base decimal 70==70.
%u Lê valores inteiros sem sinal, base 10 unsigned
int.
%x Lê um inteiro na base hexadecimal.
%o Lê um inteiro na base octal.
%f Lê um valor de ponto flutuante para float. Dife-
rente do printf, é preciso um tipo específico para float,
pois a leitura usa ponteiros para a variável que irá receber
o dado valor.
%lf Lê um valor de ponto flutuante para double.
%Lf Para lêr variáveis do tipo long double.
%ld Para ler variáveis do tipo long int.
%s Lê uma string de caracteres, terminando a leitura
no primeiro espaço. Um caracter nulo ’\0’ é adicionado
16
[a\
ao final da string.
Exercício ex2.c:
17
[a\
3 Comando de decisão
comando
anterior
verdd. comando
condição?
subordinado
falso
comando
posterior
Exercício ex3.c:
4 Decisões aninhadas
comando
anterior
comando
verdd. subordi-
condição?
nado se
verdadeiro
falso
comando
subordinado
se falso
comando
posterior
Veja o exemplo:
1 comando_anterior ;
2 if( condicao )
3 {
4 comando_subordinado_caso_verdadeiro_1 ;
5 comando_subordinado_caso_verdadeiro_2 ;
6 }
7 else
8 {
9 comando_subordinado_caso_falso_1 ;
10 comando_subordinado_caso_falso_2 ;
11 }
12 comando_posterior ;
Exercício ex4.c:
5 Conectivos lógicos
22
[a\
Capı́tulo 4
Soluções dos Exercícios
1 /* ----------------------------------------------- */
2 /* ex1.c
3 * Imprimir "Ola mundo !" e "Eu te amo 3000 vezes ."
4 * Copyright (C) Ruben Carlo Benante , 2019
5 * License GNU/GPL v2.0
6 * This program comes without ANY WARRANTY
7 * Author : Ruben Carlo Benante <rcb@beco .cc >
8 * Date: 2019 -06 -29
9 */
10
11 /* ----------------------------------------------- */
12 /* includes */
13 # include <stdio .h> /* Standard I/O functions */
23
[a\
27
[a\
25 int main(void)
26 {
27 printf ("Ola mundo !\n"
28 "Eu te amo %d vezes .\n", AMOVEZ );
29 return EXIT_SUCCESS ;
30 }
1 /* ----------------------------------------------- */
2 /* ex2.c
3 * Converter um valor flutuante de graus Fahrenheit
4 * para graus Celsius
5 * Copyright (C) Ruben Carlo Benante , 2019
6 * Licenca GNU/GPL v2.0
7 * Este programa nao tem QUALQUER GARANTIA
8 * Autor : Ruben Carlo Benante <rcb@beco .cc >
9 * Data: 2019 -06 -30
10 */
29
[a\
11
12 /* ----------------------------------------------- */
13 /* includes */
14 # include <stdio .h> /* Funcoes de entrada / saida */
15 # include <stdlib .h> /* Funcoes Miscelaneas */
16
17 /* ----------------------------------------------- */
18 /* prototipos de funcoes */
19 /* le um float e o retorna */
20 float le_f(void);
21 /* Converte Fahrenheit para Celsius */
22 float converte_fc (float f);
23
24 /* ----------------------------------------------- */
25 /* Chama funcao de leitura de dados ,
26 * funcao de processamento de dados e finalmente
27 * imprime o resultado .
28 * Sem argumentos de entrada
29 * Retorna sucesso ao final
30 */
31 int main(void)
32 {
33 float f, c; /* fahrenheit e celsius */
34
35 /* entrada de dados */
36 printf (" Digite o valor em Fahrenheit : ");
37 f=le_f ();
38 /* processamento de dados */
39 c= converte_fc (f);
40 /* saida de dados */
41 printf (" Celsius : %f\n", c);
42
43 return EXIT_SUCCESS ;
44 }
45
46 /* ----------------------------------------------- */
47 /* Le um valor flutuante do teclado
48 * Entrada : nao ha
30
[a\
1 /* ----------------------------------------------- */
2 /* ex2v2 .c
3 * Converter um valor flutuante de graus Fahrenheit
4 * para graus Celsius , versao 2.0
5 * Copyright (C) Ruben Carlo Benante , 2019
6 * Licenca GNU/GPL v2.0
7 * Este programa nao tem QUALQUER GARANTIA
8 * Autor : Ruben Carlo Benante <rcb@beco .cc >
9 * Data: 2019 -06 -30
10 */
11
12 /* ----------------------------------------------- */
35
[a\
13 /* includes */
14 # include <stdio .h> /* Funcoes de entrada / saida */
15 # include <stdlib .h> /* Funcoes Miscelaneas */
16
17 /* ----------------------------------------------- */
18 /* defines */
19 # define MAXUIS 10 /* Tamanho maximo da string */
20
21 /* ----------------------------------------------- */
22 /* prototipos de funcoes */
23 /* le um float e o retorna */
24 double le_double (void);
25 /* Converte Fahrenheit para Celsius */
26 double fahrenheit_celsius ( double f);
27
28 /* ----------------------------------------------- */
29 /* Chama funcao de leitura de dados ,
30 * funcao de processamento de dados e finalmente
31 * imprime o resultado .
32 * Sem argumentos de entrada
33 * Retorna sucesso ao final
34 */
35 int main(void)
36 {
37 double fah , cel; /* fahrenheit e celsius */
38
39 /* entrada de dados */
40 printf (" Digite o valor em Fahrenheit : ");
41 fah= le_double ();
42 /* processamento de dados */
43 cel= fahrenheit_celsius (fah);
44 /* saida de dados */
45 printf (" Fahrenheit :\ tCelsius :\n");
46 printf ("%.4 lf\t%.4 lf\n", fah , cel);
47
48 return EXIT_SUCCESS ;
49 }
50
36
[a\
51 /* ----------------------------------------------- */
52 /* Le um valor flutuante do teclado
53 * Entrada : nao ha
54 * Retorno : o valor lido
55 */
56 double le_double (void)
57 {
58 char user_input [ MAXUIS ]; /* entrada do usuario */
59 double d; /* double convertido da entrada */
60
61 scanf ("%s", user_input );
62 sscanf (user_input , "%lf", &d);
63
64 return d;
65 }
66
67 /* ----------------------------------------------- */
68 /* Converte Fahrenheit para Celsius
69 * Entrada : um valor double em fahrenheit
70 * Saida : o valor double convertido para celsius
71 */
72 double fahrenheit_celsius ( double fah)
73 {
74 double cel;
75
76 cel = 5.0/9.0 * (fah - 32.0) ;
77
78 return cel;
79 }
80
81 /* ----------------------------------------------- */
82 /* vi:set ai et ts=4 tw=0 sw =4 wm =0 cc =54 fo= croql :*/
83 /* C config for Vim modeline by Dr. Beco v .190727 */
84
37
[a\
1 /* ----------------------------------------------- */
2 /* ex3.c
3 * Calcular a media de duas notas e imprimir se o
4 * aluno foi aprovado ou nao
5 * Copyright (C) Ruben Carlo Benante , 2019
6 * Licenca GNU/GPL v2.0
7 * Este programa nao tem qualquer GARANTIA
8 * Autor : Ruben Carlo Benante <rcb@beco .cc >
9 * Data: 2019 -06 -30
10 */
11
12 /* ----------------------------------------------- */
13 /* includes */
14 # include <stdio .h> /* Standard I/O functions */
15 # include <stdlib .h> /* Miscellaneous functions */
16
17 /* ----------------------------------------------- */
18 /* defines */
19 # define CORTE 5.0
39
[a\
20
21 /* ----------------------------------------------- */
22 /* prototipos de funcoes */
23 /* le um float e o retorna */
24 float leia_f (void);
25 /* Calcula e retorna a media entre dois valores */
26 float media(float , float );
27
28 /* ----------------------------------------------- */
29 /* Chama funcao de leitura de dados ,
30 * funcao de processamento de dados e finalmente
31 * imprime se foi aprovado ou nao
32 * Sem argumentos de entrada
33 * Retorna sucesso ao final
34 */
35 int main(void)
36 {
37 float a, /* primeira nota */
38 b, /* segunda nota */
39 m; /* media */
40
41 /* entrada de dados */
42 printf (" Digite a primeira nota: ");
43 a= leia_f ();
44 printf (" Digite a segunda nota: ");
45 b= leia_f ();
46 /* processamento de dados */
47 m= media(a, b);
48 /* saida de dados */
49 printf ("Sua media: %.2f\ nVoce ", m);
50 if(m< CORTE)
51 printf ("nao ");
52 printf ("foi aprovado \n");
53
54 return EXIT_SUCCESS ;
55 }
56
57 /* ----------------------------------------------- */
40
[a\
41
[a\
80 float m;
81
82 m = (n1 + n2)/2.0; /* troque para 2 */
83
84 return m;
85 }
1 /* ----------------------------------------------- */
2 /* ex4.c
3 * Ler tres valores e imprimir o maior , v1 .0
4 * Copyright (C) Ruben Carlo Benante , 2019
5 * Licenca GNU/GPL v2.0
6 * Este programa nao tem NENHUMA GARANTIA
7 * Author : Ruben Carlo Benante <rcb@beco .cc >
8 * Date: 2019 -07 -01
9 */
10
11 /* ----------------------------------------------- */
12 /* includes */
13 # include <stdio .h> /* Standard I/O functions */
14 # include <stdlib .h> /* Miscellaneous functions */
15
16 /* ----------------------------------------------- */
17 /* Le tres numeros e imprime o maior
46
[a\
47
[a\
21 int main(void)
22 {
23 int a, b, c; /* os 3 valores lidos */
24
25 printf (" Digite 3 valores :\n");
26 scanf ("%d %d %d", &a, &b, &c);
27
28 if(a>b)
48
[a\
29 {
30 if(a>c)
31 c=a;
32 }
33 else
34 if(b>c)
35 c=b;
36
37 printf ("O maior valor: %d\n", c);
38
39 return EXIT_SUCCESS ;
40 }
50
[a\
[a\
Entrada BibTeX:
@BOOK{Benante2019,
author = {Ruben Carlo Benante},
title = {Linguagem C: exercícios resolvidos},
publisher = {O Autor},
year = {2019},
address = {Recife},
note = {UNI2019}
}
A fonte do corpo do texto é a Times New Roman 10pt. Preparado para ebook
(ratio 3 : 4).
Preâmbulo LATEX:
\documentclass[10pt,openany]{book}
\usepackage[paperwidth=9cm, paperheight=12cm, top=0.25cm, bottom=0.15cm,
left=0.25cm, right=0.15cm, asymmetric, nohead, nofoot]{geometry}
\usepackage[center,pdflatex,cross]{crop}
\linespread{1.01}
\setlength{\parskip}{.6\baselineskip}