Você está na página 1de 26

Universidade Tecnológica Federal do Parana

Bruno Emmanuel de Medeiros Tavares


Marcos Rogério Ritz Gouveia

Lista de Exercícios
Linguagem de programação
Profº Nelson

Curitiba
2010
Programação Básica – fluxo de controle – bases
numéricas
1)a)27 f)35

b)28 g)1B

c)29 h)1C

d)33 i)1D

e)34

2) x=12

x=10

x=18

3)a) #include <stdio.h>

int main(){

int n;

printf("\nDecimal para Hexadecimal: ");

while(1){

scanf("%d",&n);

printf("\n%x\n",n);}

return 0; }

b) #include <stdio.h>

int main(){

int n;

printf("\nhexadecimal para decimal:");

while(1){

scanf("%x",&n);
printf("\n%d\n",n); }

return 0; }

c) #include <stdio.h>

int main(){

int n;

printf("\nhexadecimal para octal:");

while(1){

scanf("%x",&n);

printf("\n%o\n",n);}

return 0; }

d) #include <stdio.h>

int main(){

int n;

printf("\noctal para hexadecimal:");

while(1){

scanf("%o",&n);

printf("\n%x\n",n);}

return 0; }

e) #include <stdio.h>

int main(){

int n;

printf("\noctal para decimal:");

while(1){

scanf("%o",&n);

printf("\n%d\n",n);}
return 0; }

f) #include <stdio.h>

int main(){

int n;

printf("\ndecimal para octal:");

while(1){

scanf("%d",&n);

printf("\n%o\n",n);}

return 0; }

4)
Linguagem de programação (exercícios)
1) #include <stdio.h>

#include <conio.h>

int potencia(int base, int n);

int main()

int base,n,resultado;

while(1){

printf("Digite o valor da base: ");

scanf("%d",&base);

printf("\n\nDigite o expoente: ");

scanf("%d",&n);

resultado=potencia(base,n);

printf("\n\n%d^%d = %d\n",base,n,resultado);

printf("\n(FIM DO PROGRAMA)\n\n\n\n\n");

getch();

return 0;

int potencia(int base, int n)

int x,y,i;

for(i=0,y=1;n>i;i++)

y = y*base;

return y; }
2) #include <stdio.h>

int potencia(int base, int n);

int main()

int base,n,resultado2,resultado3,resultado5;

while(1){

n = 0;

base = 2;

resultado2=potencia(base,n);

printf("As cinco primeiras potencias de 2 sao:%d,",resultado2);

++n;

while (n<=3){

resultado2=potencia(base,n);

printf("%d,",resultado2);

++n;}

resultado2=potencia(base,n);

printf("%d\n",resultado2);

n = 0;

base = 3;

resultado3=potencia(base,n);

printf("As cinco primeiras potencias de 3 sao:%d,",resultado3);

++n;

while (n<=3){

resultado3=potencia(base,n);

printf("%d,",resultado3);

++n;}
resultado3=potencia(base,n);

printf("%d\n",resultado3);

n = 0;

base = 5;

resultado5=potencia(base,n);

printf("As cinco primeiras potencias de 5 sao:%d,",resultado5);

++n;

while (n<=3){

resultado5=potencia(base,n);

printf("%d,",resultado5);

++n;}

resultado5=potencia(base,n);

printf("%d\n",resultado5);

printf("\n(FIM DO PROGRAMA)\n\n\n\n\n");

getchar ();

return 0;

int potencia(int base, int n)

int x,y,i;

for(i=0,y=1;n>i;i++)

y = y*base;

return y; }
3) #include <stdio.h>

int potencia(int base, int n);

int main()

int base,n,resultado;

while(1){

n = 0;

base = 5;

resultado=potencia(base,n);

printf("A menor potencia de cinco que eh maior que seis milhoes eh: %d",resultado);

getchar ();

return 0;

return 0;

int potencia(int base, int n)

int x,y,i;

x = base;

i = 5;

y = 1;

while (x<=6000000){

x = x*i;

y = ++y;

return(y); }
4)

5)

6) #include <stdio.h>

#include <math.h>

double f(double x);

int main()

/* f(x)=30*(sen(15*x)+45 */

/* sequencia das funções: f(2), f(0), f(5.5) e f(20) */

double x,y;

x = 2;

x = f(x);

printf("f(x)= 30*(sen(15*x)+45)... em RADIANOS\n\n");

printf("f(2) = %.2lf\n",x);

x = 0;

x = f(x);

printf("f(0) = %.2lf\n",x);

x = 5.5;

x = f(x);

printf("f(5) = %.2lf\n",x);

x = 20;

x = f(x);

printf("f(20) = %.2lf\n",x);

getchar ();

double f(double x)

x = 30*(sin(15*x))+45;
return x; }

7) #include <stdio.h>

#include <conio.h>

int calculo(int x);

int main()

while (1){

int num,q,fatorial;

printf("Digite o numero que deseja calcular seu fatorial: "); //funciona de 0 a 19.

scanf("%d",&num);

if (num<0){

printf("\nNao eh possivel calcular fatorial de numeros negativos.\n");

else{

fatorial = calculo(num);

printf("\n%d! = %d\n",num,fatorial);}

printf("\n\n\n\n\n\n\nTecle q para fechar o programa ou qualquer tecla para reiniciar\n\n");

q=getch();

if (q==0x71 || q==0x51){

return 0;}

int calculo(int x)

int cont,fat;

fat = 1;

for (cont=1;cont<=x;++cont)
fat=fat*cont;

return fat; }

8) #include <stdio.h>

#include <conio.h>

#include <math.h>

int soma(int x, int y);

int subtracao(int x, int y);

int multiplicar(int x, int y);

int dividir(int x, int y);

int potencia(int x, int y);

int entrada,resultado,x,y;

int main(){

while (1){

printf("Digite dois numeros inteiros:\n");

printf("(se voce digitar um numero decimal o programa nao funcionara\ne seu cu nao sera
perdoado)\n");

printf("x = ");

scanf("%d",&x);

printf("\n");

printf("y = ");

scanf("%d",&y);

printf("\n\nDigite o numero da operacao matematica que deseja executar entre x e y:\n");

printf("\n1)Soma\n2)Subtracao\n3)Multiplicacao\n4)Divisao\n5)Potenciacao\n\nOpcao:");

scanf("%d",&entrada);

switch(entrada){

case 1:

resultado = soma(x,y);

printf("\n\nVoce escolheu a opcao soma:\n%d + %d = %d\n\n\n\n\n",x,y,resultado);


break;

case 2:

resultado = subtracao(x,y);

printf("\n\nVoce escolheu a opcao subtracao:\n%d - %d =


%d\n\n\n\n\n",x,y,resultado);

break;

case 3:

resultado = multiplicar(x,y);

printf("\n\nVoce escolheu a opcao multiplicacao\n%d x %d =


%d\n\n\n\n\n",x,y,resultado);

break;

case 4:

resultado = dividir(x,y);

if (resultado==0){

printf("\n\n%d/%d = ????? (tende ao infinito e alem)\n\n\n\n\n",x,y);

break;}

if (x%y!=0){

printf("\n\nVoce escolheu a opcao divisao\n%d/%d = %d",x,y,resultado);

printf("\nresto = %d\n\n\n\n\n",x%y);

break;}

printf("\n\nVoce escolheu a opcao divisao\n%d/%d = %d",x,y,resultado);

printf("\nresto = 0\n\n\n\n\n");

break;
case 5:

resultado = potencia(x,y);

printf("\n\nVoce escolheu a opcao potenciacao\n%d^%d =


%d\n\n\n\n\n",x,y,resultado);

break;

/*default:

printf("\nNenhuma opcao encontrada\n\n");

getch();*/

} //fim do switch

printf("Aperte qualquer tecla para reiniciar o programa");

getch();

printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");

} // fim do while

} // fim do main

int soma (int x,int y){

int result;

result=x+y;

return result;

int subtracao(int x,int y)

{ int result;

result=x-y;

return result;

int multiplicar (int x,int y)


{ int result,mult;

mult = x;

while(y>1){

x=x+mult;

y=--y;}

result = x;

return result;

int dividir (int x,int y) /*miguelei essa parte porque não consegui fazer apenas com + e - */

{ int result,q;

if(y==0){

printf("\nprimeira lei da matematica: nunca dividiras por zero!\ntente outra vez");

return 0;

result = x/y;

return result;}

int potencia (int x,int y) /*miguelei essa parte tambem, x( */

{ int i,pot;

for(i=0,pot=1;y>i;i++)

pot = pot*x;

return pot; }

9) #include <stdio.h>

#include <conio.h>

/*

Programa que calcula o dia seguinte


*/

//int d, m, a;

int dias_do_mes(int m, int a);

int main()

{while(1){

int d, m, a;

//ler dia, mes e ano

printf("insira uma data(dd/dd/dddd): ");

scanf("%d/%d/%d",&d,&m,&a);

d++;

if(d>31 || m>12 || d==31 &&(m==2 || m ==4 || m ==6 || m ==9 || m ==11))

printf("\ndata invalida\n");

getch();

return 0;}

if(d>dias_do_mes(m,a)){

m++;

d = 1;

if (m>12){

m = 1;
a++;

else if (d<=15 && m<=10 && a<=1582){

printf("\nData anterior a correcao do calendario gregoriano.\nImpossivel definir a validade da


data\n");

getch();

return 0;}

printf ("prox dia = %d/%d/%d\n\n",d,m,a);

getch();

int dias_do_mes(int m,int a)

int d;

if (m ==1 || m ==3 || m ==5 || m ==7 || m ==8 || m ==10 || m ==12){

d = 31;

return d;}

else if(m ==4 || m ==6 || m ==9 || m ==11){

d = 30;

return d;}

/*São bissextos todos os anos múltiplos de 400, p.ex: 1600, 2000, 2400, 2800

Não são bissextos todos os múltiplos de 100 e não de 400, p.ex: 1700, 1800, 1900, 2100,
2200, 2300, 2500…
São bissextos todos os múltiplos de 4 e não múltiplos de 100, p.ex: 1996, 2004, 2008, 2012,
2016…*/

else if(m==2 && (a%4==0 && (a%100!=0 || a%400==0))){

d = 29;

printf("\nEsse ano eh bissexto\n");

return d;}

else if(m==2)

d = 28;

return d;}
Funções
1) Para que serve a palavra reservada "extern"?

R: Para definir na função que a variável usada é externa a ela, está por exemplo
declarada no arquivo-fonte.

Ex: f();

int ehnois;

f(){

extern int ehnois


Se não fosse definido “extern” dentro da função, ehnois seria uma nova variável
local e não uma cópia da variável externa.

2) Para que serve a palavra reservada "static"?

R: Deve-se indicar através da palavra static na definição de uma variável, quando for


necessário que a variável local de uma função permaneça com o seu valor mantido,
permitindo assim que na próxima chamada utilizar o valor anterior.

3) Imagine e descreva alguns exemplos onde você desejará usar "static" para uma
variável externa!

R: Num programa temporizador, por exemplo.

4) Para o código abaixo:

a - qual o escopo da variável int x?

Global

b - qual o escopo da variável int y?

Local

c - qual o escopo da variável int z?

Local
5 - O que é passagem por valor?

R: A função recebe uma cópia da variável que é fornecida quando é invocada. Todas as
alterações feitas dentro da função não vão afetar os valores originais.

6 - O que é passagem por referência?

R: Neste caso o que é enviado para a função é uma referência às variáveis utilizadas, e
não uma simples cópia, pelo que as alterações realizadas dentro da função irão
certamente alterar os valores contidos nessas variáveis. Obrigatório o uso de
apontadores.

7- Por que se deve usar a palavra reservada static quando se cria uma tabela de
constantes dentro de uma função?

R: Pois elas continuam existindo independente da ativação ou desativação da função.


Isso significa que elas fornecem uma forma de armazenamento privado e permanente em
funções.

Alguns exemplos de variáveis estáticas são: %d,%lf,\n.

8)
Getchar e Putchar
1)a)Pedirá para o usuário uma digitação finalizada pelo enter, tornando o caracter em um
numero inteiro que pode ser o código do caracter (na tabela ascii) ou o valor -1
correspondendo ao fim do ficheiro. É escrita no cabeçalho stdio.h

b)Escreve o caracter cujo codigo é representado na tabela ascii tendo como o argumento
um número de 0 a 255. É escrita no cabeçalho stdio.h

c)Essa função serve para limpar os buffer.Como por exemplo fflush(stdin) limpa os buffer
de entrada. É escrita no cabeçalho stdio.h

d)Ela atrasa a execução do programa para o número dado em milionésimos de segundos.


Por exemplo: usleep(500000)= 500mil micro segundos=meio segundo. Está no cabeçalho
unistd.h

e)Responsável pela entrada/saída. Funções desta bibliotéca: fprintf, printf, fscanf, scanf,
getchar, putc, getc, fopen, fclose.

f) access, alarm, brk, chdir, chroot, chown, close, confstr, crypt, ctermid, cuserid, dupdup2, encrypt,
execl, execle, execlp, execv, execve, execvp, exit, fchown, fchdir, fdatasync, Fork, fpathconf, Fsync,
ftruncate, Getcwd, getdtablesize, getegid, geteuid, Getgid, getgroups, gethostid, getlogin,
getlogin_r, getopt, getpagesize, getpass, getpgid, getpgrp, getpid, getppid, getsid, getuid, getwd,
isatty, lchown, link, lockf, lseek, nice, pathconf, pause, pipe, pread, pthread_atfork, pwrite, read,
readlink, rmdir, sbrk, setgid, setpgid, setpgrp, setregid, setreuid, setsid, setuid, sleep, swab,
symlink, sync, sysconf, tcgetpgrp, tcsetpgrp, truncate, ttyname, ttyname_r, ualarm, unlink, usleep,
vfork, write.

g) Funções desta bibliotéca: abort, abs, atexit, atof, atoi, atol, bsearch, calloc, div, exit, free,
getenv, labs, ldiv, malloc, mblen, mbstowcs, mbtowc, qsort, rand, realloc, srand, strtod, strtol,
strtoul, system, wcstombs, wctomb, itoa

h)Responsável pelo teste de caracteres. . Funções desta bibliotéca: isupper, islower,


isspace, isdigit, toupper, tolower.

2)Nesse programa ele irá pegar o primeiro digito e imprimilo novamente e após essa
impressão ele imprime o “digito+1(decimal)” na tabela ascii.Por exemplo se eu digitar ‘A’
que é o número 65(decimal) da tabela ascii a saída será: “AB”;sendo que ‘B’é o número
66(decimal) na tabela ascii.

3) #include <stdio.h>
#include <unistd.h>

#include <stdlib.h>

int main()

int letra;

while((letra=getchar())!=EOF){

putchar(letra);

if(letra!=0xA){putchar (letra+1);}

printf("\nACABOU!!!\n\n\n");

return 0; }

4) #include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

int main()

int letra;

while((letra=getchar())!=EOF){

if(letra<=122 && letra>=97){putchar (letra-0x20);}

if(letra<=90 && letra>=60){putchar (letra+0x20);}

printf("\nTermino!!!\n\n\n");

return 0; }

5) #include <stdio.h>

#include <unistd.h>

#include <stdlib.h>
int main()

int letra;

while((letra=getchar())!=EOF){

if(letra<=90 && letra>=78){putchar (letra-0x0D);}

if(letra<=122 && letra>=110){putchar (letra-0x0D);}

if(letra<=77 && letra>=65){putchar (letra+0x0D);}

if(letra<=109 && letra>=97){putchar (letra+0x0D);}

printf("\nTermino!!!\n\n\n");

return 0; }

6)

7) #include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

int main()

int letra,linhas;

linhas=0;

while((letra=getchar())!=EOF){

if(letra==0xA){linhas++;}

putchar(letra);}

printf("\nForam usadas %d linhas\n",linhas);

return 0; }
8) #include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

int main()

int letra,characteres;

characteres=0;

while((letra=getchar())!=EOF){

if(letra>=0x20){++characteres;}

putchar(letra);}

printf("\nForam usadas %d characteres\n",characteres);

return 0; }

9) #include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

int main()

int letra,contagem;

contagem=0;

contagem++;

while((letra=getchar())!=EOF){

if(letra==0xA && letra==0x9){++contagem;}

putchar(letra);}

printf("\nExistem %d espacos,linhas e tabs\n",contagem);

return 0; }
10) #include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

int main()

int letra,espacos;

while((letra=getchar())!=EOF){

if(letra==0x20){espacos++;}

else{espacos=0x0;}

if(espacos<2){putchar(letra);}

printf("\nFim!!!\n\n\n");

return 0; }

11) #include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

int main()

int letra;

while((letra=getchar())!=EOF){

if(letra==0x08){putchar (0x5C); putchar (0x62);}

if(letra==0x09){putchar (0x5C); putchar (0x74);}

if(letra==0x5C){putchar (0x5C); putchar (0x5C);}

if(letra!=0x08 && letra!=0x09 && letra!=0x5C){putchar (letra);}

printf("\nACABOU!!!\n\n\n");

return 0; }
12) #include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

int main()

int letra,palavras;

palavras=0;

printf("digite uma sequencia de palavras, nao pode haver numeros\n");

while((letra=getchar())!=EOF){

if(letra==0xA){palavras++;}

if(letra==0x20){palavras++;}}

printf("\nSão %d palavras\n\n",palavras);

return 0; }

13) #include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

int main()

int letra,linha,characteres;

linha=0;

characteres=0;

while((letra=getchar())!=EOF){

if (letra==0xA){linha++;}

if (letra!=0xA){characteres++;}

putchar(letra);}

printf("sao,ao total, %d linhas e %d caracteres\n",linha ,characteres);


return 0; }

14) #include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

int main()

int letra;

while((letra=getchar())!=EOF){

if(letra==0x20){putchar(0xA);}

if(letra!=0x20){putchar(letra);}

printf("\nAcabou!!!\n");

return 0; }

15)

16)

17)

18)

Você também pode gostar