Gabarito da Lista 1
Módulo 1: Aula 1 e Aula 2: Primeiros Passos
#include <stdio.h>
main()
{
int x;
scanf("%d",&x);
printf("%d",x);
}
Solução
A primeira linha do programa inclui o arquivo de cabecalho stdio.h. Este arquivo contem a
declaracao das funcoes 'scanf' e 'printf'. No início do programa e' declarada a variavel
'x', inteira. 'scanf' lê x pelo teclado e printf imprime o valor lido. Em tempo de execucao
o programa ira esperar ate que o usuario entre com um numero, e exibira em seguida este numero.
O objetivo neste exercício é apenas escrever a função. Porem, para testa-la, teremos tambem que escrever um programa principal que use a funcao.
Solução
A função soma2 fica:
int soma2(int a, int b) /* Retorna a soma dos inteiros a e b */
{
int resultado;
resultado = a+b;
return resultado;
}
ou de uma forma mais pratica..
int soma2(int a, int b) /* Retorna a soma dos inteiros a e b */
{
/* Versao 2 */
return a+b;
}
Para testar a funcao usamos:
int main( )
{
int
i, j, k;
i = 3;
j = 7;
k = soma2(i , j);
printf(" O valor da soma e' : %d
", k);
return 0;
}
a) Escreva um programa que leia um caracter digitado pelo usuario, imprima o caracter digitado e o codigo ASCII correspondente a este caracter.
Solucao:
#include <stdio.h>
int main()
{
char ch;
printf("\nDigite um caracter: ");
scanf("%c",&ch);
printf("\nCaracter digitado: %c, Codigo ASCII: %d", ch, ch);
return 0;
}
Note o uso de %c para imprimir o caracter como caracter e de %d para imprimir o codigo ASCII (isto e, o caracter como um numero inteiro) do caracter.
b) Escreva um programa que leia duas strings e as coloque na tela. Imprima tambem a
segunda letra de cada string.
Solução
#include <stdio.h>
int main()
{
char s1[25], s2[25];
printf(" Digite a primeira string: ");
gets(s1); /* Le
string 1*/
printf("\n Digite a segunda string: ");
gets(s2); /* Lê
string 2*/
printf("\n\n As strings lidas sao:\n %s \n %s", s1, s2);
/* Imprime as strings*/
printf("\n\n A segunda letra da primeira string e': %c",
s1[1]);
printf("\n A segunda letra da segunda string e': %c ",
s2[1]);
return 0;
}
Enunciado
if (num=10) ...
O que irá acontecer?
ii) Escreva um programa que coloque os números de 1 a 100 na tela na ordem inversa (começando em 100 e terminando em 1).
iii) Escreva um programa que leia uma string, conte quantos caracteres desta string
são iguais a 'a' e substitua os que forem iguais a 'a' por 'b'. O programa deve imprimir
o número de caracteres modificados e a string modificada.
Solução
i) Não está errado, mas o resultado não será o desejado. A expressão entre
parênteses, ao invés de funcionar como condicional (desejado) irá funcionará como uma
atribuição, e retornará o valor atribuído (10). Este número é diferente de zero e,
assim, a condição será sempre verdadeira. A forma correta seria fazer
if (num==10) ...
Esta é a forma correta para se realizar este teste.
ii)
#include <stdio.h>
main()
{
int i;
for (i=100; i>0; i=i-1)
printf("%d ", i);
}
iii)
#include <stdio.h>
int main ()
{
char string[100]; /* String, ate' 99
caracteres */
int i, cont;
printf("\n\nDigite uma frase: ");
gets(string); /* Le a
string */
printf("\n\nFrase digitada: %s", string);
cont = 0;
for (i=0; string[i] != '\0'; i=i+1)
{
if ( string[i] == 'a' ) /* Se for a letra 'a'
*/
{
cont = cont +1;
/* Incrementa o contador de caracteres */
string[i] = 'b';
/* e substitui 'a' por 'b' */
}
}
printf("\nNumero de caracteres trocados = %d\nNova string =
%s", cont, string);
}
Curso de C do CPDEE/UFMG - 1996-1999