Sie sind auf Seite 1von 23

Apostila com Exerccios de Linguagem C

por Rodrigo Zancanella Pereira, em 19/03/2007.

SUMRIO

1 INTRODUO ..................................................................................... 3 2 TEMAS ..................................................... Error! Bookmark not defined.


2.1 Programas Bsicos ..........................................................................................4 2.1 Operadores e Expresses ...............................................................................4 2.2 Comandos para Controle do Fluxo de ExecuoError! Bookmark not defined. 2.3 Macros e Subprogramas ...................................... Error! Bookmark not defined.

3 CONCLUSO......................................................................................23

1 INTRODUO
Esta apostila de exerccios foi desenvolvida a partir de um trabalho acadmico para obteno de nota parcial na disciplina Laboratrio de Programao I, focada na linguagem de programao C. O objetivo deste material foi disseminar recursos para pessoas envolvidas com a linguagem C.

2 TEMAS
2.1 Programas Bsicos 01 - Ler a temperatura em graus Celsius e apresent-la convertida em graus (F = (9* C + 160)/5) #include<conio.h> #include<stdio.h> float graus; main() { printf("Digite uma temperatura em graus Celsius: \n"); scanf("%f", &graus); graus = (9* graus + 160)/5; printf("Graus equivalentes em F = %2.1f", graus); getch(); }

02 - Calcular e apresentar o volume de uma lata de leo sabendo que V = 3.1415 * Raio * Raio * Altura #include<conio.h> #include<stdio.h> float raio, altura, volume; main() { printf("Calcular volume da lata \n"); printf("Raio: "); scanf("%f", &raio); printf("Altura: "); scanf("%f", &altura); volume = 3.1415 * raio * raio * altura; printf("Volume da lata: %2.1f", volume); getch(); }

03 - Ler dois valores A e B, troque os valores e exiba o resultado. #include<conio.h> #include<stdio.h> int a, b, c; main() { printf("Trocar numeros \n"); printf("A = "); scanf("%i", &a); printf("B = "); scanf("%i", &b); c = a; a = b; b = c; printf("Numeros trocados \n"); printf("A = %i \n", a); printf("B = %i", b); getch(); }

04 - Ler um inteiro decimal e exibi-lo em hexadecimal #include<conio.h> #include<stdio.h> int num; main() { printf("Digite um numero inteiro decimal: "); scanf("%i", &num); printf("O numero %i em hexa eh %x", num, num); getch(); }

05 Ler um inteiro hexadecimal e exibi-lo em decimal #include <conio.h> #include <stdio.h> int num; main () { printf("Digite um numero inteiro em hexadecimal: "); scanf("%x", &num); printf("O numero %x em decimal e: %i", num, num); getch(); }

06 - Ler um inteiro decimal e exibir o caractere correspondente (cdigo ACII) #include <conio.h> #include <stdio.h> int num; main () { printf("Digite um numero inteiro: "); scanf("%d", &num); printf("O numero %d em ascii: %c \n", num, num); getch(); }

07 - Ler um char e exibir seu cdigo ASCII (decimal) #include <conio.h> #include <stdio.h> int num; main () { printf("Digite um caracter: "); scanf("\n%c", &num); printf("O caracter %c em ascii: %d \n", num, num); getch(); }

2.2 Operadores e Expresses 01 - Compacte o seguinte programa: #include<stdio.h> #include<math.h> #include<string.h> int x,y,z; float a,b,c; void main (void) { x = 0; y = 0; z = 0; a = 10; b = 10; c = 10; x = x + 1; y = x; a = b; b = b + 1; z = z + y; a = b + a; c = c * (a + b + c); if (x == 0) puts("x vale zero!"); else puts("x diferente de zero!"); printf("x: %d y: %d z: %d a: %d b: %d c: %d",x,y,z,a,b,c); } Resoluo: #include<stdio.h> #include<conio.h> #include <string.h> int x, y, z, a, b, c;

main () { b = 10; c = 10; x = ++x; y = x; a = b; b = ++b; z = z + y; a = b + a; c = c * (a + b + c); (x == 0) ? puts("x vale zero!") : puts("x diferente de zero!"); printf("x: %d y: %d z: %d a: %d b: %d c: %d",x,y,z,a,b,c); getch(); }

02 - Avalie o valor de y e r: int x = 2, y = 1; y = ++x + x++; y += x++;

int p = 0, q = 1, r; r = p || q; r = p && q; r = ! p; Resoluo: #include<stdio.h> #include<conio.h> int x = 2, y = 1; int p = 0, q = 1, r; main() { y = ++x + x++;

y += x++; r = p || q; r = p && q; r = ! p; printf("Y= %i getch(); } R= %i", y, r);

2.3 Comandos para Controle do Fluxo de Execuo 01 - Quais so os comandos e sintaxe para desvios condicionais no c. if (x == 0) { printf("Valido"); else printf("Invalido"); } switch(oper) { case 1 : printf("Opcao 1"); break; case 2 : printf("Opcao 2"); break; default : printf("Default"); };

02 - Qual o comando e sintaxe para loopings de tamanho definido no c. for (int i; i = 0; i < max; ++i) { printf("%i",i) };

03 - Quais so os comandos e sintaxe para os loopings de tamanho indefinido no c. while (x != 0) { printf("Looping"); }

04 - Leia trs nmeros do teclado e exiba-os em ordem crescente (if). #include <stdio.h> #include <conio.h> float x, y, z, ordem[2]; main () { printf("Digite 3 numeros \n"); scanf("%f %f %f", &x, &y, &z);

if ((x > y) and (y > z)) { ordem[2] = x; ordem[1] = y; ordem[0] = z; } else if ((y > z) and (z > x)) { ordem[2] = y; ordem[1] = z; ordem[0] = x; } else if ((z > x) and (x > y)) { ordem[2] = z; ordem[1] = x; ordem[0] = y; } printf("Numeros em ordem crescente: \n"); for (int i = 0; i < 3; ++i) { printf("%2.1f, ", ordem[i]); } getch(); }

05 - Leia uma nota do provo (A, B ,C , D ou E). Classifique a nota lida como: timo, Bom, Regular, Ruim, Pssimo e Invlido (switch). #include<conio.h> #include<stdio.h> char nota; main() { printf("Informe a nota em letra minuscula \n"); nota = getch(); switch(nota) { case 'a' : printf("Resultado = Otimo"); break; case 'b' : printf("Resultado = Bom"); break; case 'c' : printf("Resultado = Regular"); break; case 'd' : printf("Resultado = Ruim"); break; case 'e' : printf("Resultado = Pessimo"); break;

default : printf("Resultado = Invalido"); break; } getch(); }

06 - Implemente uma contagem regressiva de 50 at 0 na tela (for). #include <stdio.h> #include <conio.h> #define max 50 main() { printf("Contagem regressiva de 50 a 0 \n\n"); for (int i = max; i >= 0; --i) { printf("%i \n", i); } getch(); } 07 - Conte qtas vezes o usurio ir tentar acertar um nmero aleatrio entre 0 e 4. Use randomize e random (while). #include #include #include #include <stdio.h> <conio.h> <time.h> <stdlib.h>

int cont, sorteio, x; char opcao; main() { srand(time(NULL)); sorteio = rand()%4; while(printf("deseja tentar? \n"), opcao = getch(), opcao == 's') { printf("Digite um numero entre 0 e 4 \n"); scanf("%i", &x); cont = ++cont; if (x == sorteio) { printf("Parabens voce acertou! \n"); printf("Voce tentou %i vez(es) \n", cont); } else if ((x != opcao) and (x <= 4)) { printf("Que pena, tente novamente! \n"); } else if (x > 4) {

printf("Digite um numero valido! \n"); } } getch(); }

2.4 Macros e Sub-programas 01 - Implemente sub-programas para: cubo(x) max(x,y) min(x,y,z) triplo(x) par(x) impar(x) somatorio(x,y): soma de x a t y produtorio(x,y): multiplica de x ate y eleva(x,n): eleva x a n fatorial(x) 1! = 1 X! = X*(x-1)! Teste os sub-programas acima em um programa principal.

02 - Implemente um programa com sub-programao que leia notas de alunos e as classifique como A se nota >= 9, B se nota >= 8, C se nota >= 7e D caso contrario. Retorne tambm se a nota valida ou no (TRUE ou FALSE) Exiba na tela o resultado da classificao. Faa a funo int classifica(float nota, char * classif)

#include<stdio.h> #include<stdlib.h> #include<conio.h>

int classifica(float nota, char * classif) { if( nota>10) { *classif='F'; puts("Nota Invalida"); return(0); } if(nota>=9) {

*classif ='A'; return(1); } if(nota>=8) { *classif='B'; return(1); } if(nota>=7) { *classif='C'; return(1); } if((nota>=0)&&(nota<7) ) { *classif='D'; return(1); } }

float x; int z; char y; int aux=9; main() { printf("Tecle 99 para sair ou outro numero para continuar...\n"); scanf("%d",&z); while (z!=99) { printf("Informe o valor da nota do aluno\n"); scanf("%f",&x); classifica(x,&y); printf("A classificacao e: %c\n",y); if (z==99) break;

} getchar(); getchar(); }

03 - Faa um programa que armazene dados sobre 10 alunos (nome, matricula, disciplina e nota 1 bimestre e nota 2 bimestre). Aps o armazenamento desses alunos, ordene-os em ordem de matrcula. Aps a ordenao busque uma determinada matrcula (entrada pelo teclado) se ela existir. Exiba a sua mdia final e se ele estiver aprovado, reprovado ou de prova final. Utilize programao ESTRUTURADA - PROCEDURES E FUNCTIONS. Faa os seguintes sub-programas: Cadastro() Ordenacao() float Busca(int matricula) (retorna a media final do aluno) char classificacao(float media) #include <iostream.h> #include <stdio.h> #include <stdlib.h> #include <conio.h> #define MAX 10 #define MIN -1 struct TAlunos { char Nome[50], Disciplina[50]; int Matricula; float Nota1b, Nota2b, Media; }; TAlunos aluno[MAX]; void Cadastro() { printf("Cadastrando alunos..."); aluno[0].Matricula = MIN; for (int i = 1; i <= MAX; ++i) { printf("\n\n## Aluno %d ## \n", i);

printf("Nome: "); scanf("%s", &aluno[i].Nome); printf("Matricula: "); scanf("%d", &aluno[i].Matricula); printf("Disciplina: "); scanf("%s", &aluno[i].Disciplina); printf("Nota Bim. 1: "); scanf("%f", &aluno[i].Nota1b); printf("Nota Bim. 2: "); scanf("%f", &aluno[i].Nota2b); aluno[i].Media = (aluno[i].Nota1b + aluno[i].Nota2b) / 2; }; }; void Insere(TAlunos BKP, int i) { while (BKP.Matricula < aluno[i].Matricula) { aluno[i+1] = aluno[i]; i = --i; }; aluno[i+1] = BKP; }; void Ordenacao() { for (int j = 2; j <= MAX; ++j) { Insere(aluno[j], j+1); }; }; Buscar() { int buscarMat, aux;

void

printf("\nMatricula: "); scanf("%d", &buscarMat); printf("\n\n============== \n\n"); for (int i = 1; i <= MAX; ++i) { if (buscarMat == aluno[i].Matricula) { if (aluno[i].Media >= 7) { printf("O aluno %s esta Aprovado! \n", aluno[i].Nome); } else if ((aluno[i].Media >= 3) and (aluno[i].Media < 7)) { printf("O aluno %s esta em Prova Final! \n", aluno[i].Nome);

} else { printf("O aluno %s esta Repovado! \n", aluno[i].Nome); }; printf("Nota = %2.1f \n", aluno[i].Media); aux = 1; }; }; if (aux == 0) printf("Matricula inexistente. \n"); printf("\n==============\n"); }; char opcao; main() { Cadastro(); Ordenacao(); while(printf("\nDeseja buscar uma matricula? (s/n)\n"), opcao = getch(), opcao == 's') { Buscar(); }; }

04 - Simule o jogo Campo Minado, da seguinte maneira: matriz M 10 x 10 Graus de Dificuldade Fcil 10 bombas, Mdio 20 bombas e Difcil 30 bombas Sorteie aleaotoriamente essas bombas na sub matriz 9 x 9, para que no hajam bombas na borda da matriz. Pergunte ao usurio se ele vai querer jogar. Leia uma coordenada na matriz x,y Se for bomba avise que o jogo acabou, seno calcule a qtde de bombas na vizinhana quadrangular. cada jogada exiba a matriz na tela.

#include<stdio.h> #include<conio.h> #include<time.h> #include<stdlib.h> #define #define #define #define #define #define #define bomba -1 vazio -2 facil 10 medio 20 dificil 30 curinga '?' tam 10

int campo[tam][tam], i, j; char opcao; void Iniciar() { for(int i = 0; i <= 9; i++) for(int j = 0; j <= 9; j++) campo[i][j] = vazio; } void Sorteio(int bombas) { int x,y; srand(time(NULL)); for(int i = 0; i <= bombas; i++) { x = rand()%9; y = rand()%9; if (campo[x][y] == vazio) campo[x][y] = bomba; } }

void Exibir() { for(int i = 0; i <= 9; i++) for(int j = 0; j <= 9; j++) { if ((campo[i][j] == vazio) || (campo[i][j] == bomba)) printf(" %c ", curinga); else printf(" %i ", campo[i][j]); if (j == tam - 1) printf("\n"); } } int Bombas(int x, int y) { int aux = 0, linIni, linFin, colIni, colFin; if (x == 0) { linIni = 0; linFin = x + 1; } else if (x == tam - 1) { linIni = x - 1; linFin = x; } else { linIni = x - 1; linFin = x + 1; } if (y == 0) { colIni = 0; colFin = y + 1; } else if (y == tam - 1) { colIni = y - 1; colFin = y; } else { colIni = y - 1; colFin = y + 1; } if (campo[x][y] == bomba) return(bomba); else { for(int i = linIni; i <= linFin; i++) for(int j = colIni; j <= colFin; j++) { if ((campo[i][j] == bomba)) aux++; } return(aux);

} } int CheckCoordenada(int x, int y) { if ((x >= 0) && (x <= tam -1) && (y >= 0) && (y <= tam -1)) return(1); else return(0); } int CheckFim() { for (int i = 0; i < tam; i++) for (int j = 0; j < tam ; j++) { if (campo[i][j] == vazio) return(0); } return(1); } void ExibirCompleta() { for (int i = 0; i < tam; i++) for (int j = 0; j < tam; j++) { if (campo[i][j] == vazio) printf (" %c ",'-'); else if (campo[i][j] == bomba) printf (" %c ",'B'); else printf (" %i ",campo[i][j]); if (j ==tam - 1) printf ("\n"); } } void GameOver() { puts ("voce acertou uma bomba!\n"); ExibirCompleta(); puts ("\nDigite qualquer tecla para continuar..."); getch(); exit(0); }

main() { Iniciar();

printf("Escolha um grau de dificuldade: \n"); printf(" 1 = Facil \n"); printf(" 2 = Medio \n"); printf(" 3 = Dificil \n\n"); opcao = getch(); switch(opcao) { case '1' : Sorteio(facil); break; case '2' : Sorteio(medio); break; case '3' : Sorteio(dificil); break; default : Sorteio(facil); break; } Exibir(); while(!CheckFim()) { printf("\nDigite uma coordenada x,y: \n"); scanf("%i\n%i", &i, &j); printf("\n"); if (CheckCoordenada(i,j)) { campo[i][j] = Bombas(i,j); if (campo[i][j] == bomba) GameOver(); else Exibir(); } else printf("\nCoordenada invalida!\n"); }

getch(); }

4 CONCLUSO Espera-se que este material sirva como recurso para a prtica de programao para iniciantes da linguagem C.

Das könnte Ihnen auch gefallen