Next: Bibliografia
Up: Programação C
Previous: Precedência de operadores
  Sumário
- C.1
- Crie um programa C que imprima na tela a mensagem
``C ou nao C, eis a questao!''
Edite e compile o arquivo ser.c contendo este programa, criando
um executável de nome ser.
- C.2
- Analise as mensagens de erro que o compilador C irá apresentar
para cada uma das seguintes situações:
- (a)
- tentar gerar um programa executável sem uma função main;
- (b)
- incluir uma expressão dentro de uma função onde o terminador
;
tenha sido omitido;
- (c)
- tentar alterar uma variável declarada como const;
- (d)
- usar uma variável que não foi declarada;
- (e)
- declarar uma variável que não é usada;
- (f)
- a expressão y = x;, onde x e y
são de um mesmo tipo, ocorre sem que o valor de x
tenha sido definido;
- (g)
- a expressão y = x; ocorre, porém x
é uma variável do tipo float enquanto que
y é do tipo char;
- (h)
- uma variável é declarada com um nome inválido;
- (i)
- um bloco em um dos comandos de controle estruturado não foi
apropriadamente encerrado (um
}
foi esquecido).
Repita a experiência para distintos níveis de verificação do compilador
(Warning levels).
- C.3
- A função int rand() da biblioteca de rotinas padrão
retorna um número inteiro aleatório. Use esta rotina para desenvolver
um programa que gere e imprima na tela uma seqüência de 80 bits
gerados aleatoriamente. Execute o programa diversas vezes e compare as
seqüências geradas. O que você pode deduzir do resultado?
- C.4
- Uma função é recursiva quando ela invoca a si
própria. Desenvolva uma função recursiva para calcular
fatorial
de um número inteiro
, onde
Use esta função em um programa que imprima o fatorial dos
primeiros
inteiros, onde
é um parâmetro da sua função. Qual
o máximo valor de
que você pode especificar?
- C.5
- Use a tabela ASCII (Tabela 2.1) para criar
funções que recebem um argumento do tipo char e:
- (a)
- retorne 1 se um caráter é um dígito decimal (algarismo entre 0
e 9), 0 em caso contrário;
- (b)
- retorne 1 se um caráter é uma letra, 0 se não;
- (c)
- retorne 1 se um caráter é uma letra ou dígito, 0 se não;
- (d)
- retorne 1 se um caráter é uma imprimível (letra, dígito,
símbolo, pontuação), 0 se não;
- (e)
- retorne uma letra maiúscula se o argumento for uma letra
minúscula, ou o caráter inalterado em caso contrário;
- (f)
- retorne uma letra minúscula se o argumento for uma letra
maiúscula, ou o caráter inalterado caso contrário;
- (g)
- retorne o valor inteiro que corresponde a um argumento caráter
que é um dígito decimal (por exemplo, recebendo o caráter '9'
retorna o inteiro 9).
- C.6
- Desenvolva um programa soma que receba um número
arbitrário de inteiros na linha de comando e imprima a soma
destes números.
- C.7
- Desenvolva um programa opera que receba como argumentos
um símbolo indicando uma operação (+, -, *, /)
e dois números (inteiros ou reais), retornando o resultado da
operação. Que cuidados especiais devem ser tomados na execução
desse programa?
- C.8
- A rotina da biblioteca padrão char *getenv(char *)
recebe como argumento o nome de uma variável do ambiente e retorna
a string com o valor atual da variável. Defina um programa
ecoe que aceita como argumentos variáveis de
ambiente do sistema operacional e apresente na saída padrão o seu
valor.
- C.9
- Desenvolva uma função que receba duas strings como
argumento e retorne 1 se seus conteúdos forem iguais e 0 se
forem diferentes. Essa função não pode fazer uso de nenhuma outra
função.
- C.10
- Estenda a função calcula_idade de forma a
melhorar o cálculo da idade, retornando uma Data
dizendo qual a idade da pessoa em anos, meses e dias.
- C.11
- Desenvolva um program que receba três strings como
argumento, sendo o primeiro um nome, o segundo uma data e o terceiro
um caráter M ou F. Estes argumentos são usados para inicializar
os dados do exemplo da Seção C.2.6 e imprimir a
idade da pessoa no formato da atividade anterior.
- C.12
- Desenvolva um programa gerarand que recebe zero, um ou dois
argumentos inteiros (
e
) e apresente na saída uma
seqüência de
números aleatórios na faixa de 0 a
. Se
apenas um argumento estiver presente, não há restrições na faixa de
valores dos números gerados (o valor retornado por rand() pode
ser diretamente utilizado). Se nenhum argumento estiver presente, 20
números aleatórios sem restrição de faixa de valores são gerados e
apresentados.
- C.13
- Modifique o programa acima para que os números sejam
apresentados em ordem. Utilize a rotina qsort do sistema
para ordenar os números em ordem crescente.
- C.14
- Estenda o programa gerarand de forma que a saída, além de
ordenada, apresente após cada número aleatório um número entre
colchetes que indique a ordem em que o número foi gerado. Assim, o
primeiro número aleatório gerado estaria associado à
[1]
, o
segundo a [2]
e assim por diante.
Next: Bibliografia
Up: Programação C
Previous: Precedência de operadores
  Sumário
Ivan L. M. Ricarte
2003-02-14