DCC003: Algoritmos e Estruturas de Dados I
2013/1

Exercícios 4: Conversão de bases, estruturas e escopo de variáveis

Exercício 1.
Binária Octal Decimal Hexadecimal
10 000 000 000 2 000 1024 400
100 100 010 442 290 112
100 011 011 433 283 11B
110 001 000 610 392 188
1 001 101 115 77 4D

Exercício 2.
Octal Decimal Hexadecimal
02000 1024 0x400
0442 290 0x112
0433 283 0x11B
0610 392 0x188
0115 77 0x4D

Exercício 3.

struct musica {
	char titulo[80];
	double popularidade;
	int duracao;
};
int main(void) {
	struct musica m1 = { "Born to be wild", 6.2, 182 };	
	struct musica m2;
	sprintf(m2.titulo, "Paranoid");
	m2.popularidade = 8.4;
	m2.duracao = 173;
	printf("%s, %lf, %d:%d\n", m1.titulo, m1.popularidade,
		m1.duracao/60, m1.duracao % 60);
	printf("%s, %lf, %d:%d\n", m2.titulo, m2.popularidade,
		m2.duracao/60, m2.duracao % 60);
}

Exercício 4. O último printf imprime a variável soma declarada na linha 2. Essa variável vale 3 depois do for porque soma é incrementada três vezes. A redeclaração de soma na linha 5 sobrescreve a declaração anterior dentro do segundo for. Dentro do segundo for soma é sempre igual a j e imprimimos:

0 0 0
0 1 1
0 2 2
1 0 0
1 1 1
1 2 2
2 0 0
2 1 1
2 2 2
	int i, j;
	int soma = 0;
	for(i = 0; i < 3; i++) {
		soma++;
		int soma = 0;
		for(j = 0; j < 3; j++) {
			printf("%d %d %d\n", i, j, soma);
			soma++;
		}
	}
	printf("%d\n", soma);