Este capítulo contém questões específicas sobre a linguagem C.
Resposta: são palavras que a linguagem de programação fornece aos programadores para a criação de programas. Essas palavras não podem ser utilizadas pelos programadores para nomear variáveis ou funções. Por exemplo, em C, não é possível criar uma variável com nome float, pois este é utilizado para identificar os números em ponto flutuante.
#include <stdio.h>
int main() {
printf("%d", 5>3>2);
return 0;
}
É possível executar esse programa? Se não for possível, justifique a sua resposta. Caso seja possível, qual seria o resultado? E o que aconteceria se fosse substituído o valor 2 por 0 nesse programa? Justifique a sua resposta.
#include <stdio.h>
int main() {
float i;
int x;
x=2;
printf("%d\n", x);
x=1/2;
printf("%d\n", x);
x = 2/4;
printf("%d\n", x);
x = 2.0/4;
printf("%d\n", x);
i = 2.0/4.0;
printf("%f\n", i);
i = 2.0/4;
printf("%f\n", i);
i = 2/4;
printf("%f\n", i);
i = 1/2;
printf("%f\n", i);
return 0;
}
COMENTáRIOS: PARA RESOLVER ESSA QUESTãO O ALUNO DEVE TER CONHECIMENTO SOBRE COMO A LINGUAGEM C ENTENDE A DIVISãO DE TIPOS NUMéRICOS.
#include <stdio.h>
int main() {
int i;
float x;
i = (float) 2;
printf("%d\n", i);
i = i / (float) 2;
printf("%d\n", i);
i = (int) (2/4);
printf("%d\n", i);
i = (int) 2./ (float) 4;
printf("%d\n", i);
x = 2.0 / (int) 4.0;
printf("%f\n", x);
x = (int) 2.0/4;
printf("%f\n", x);
x = (int) (2.0/4);
printf("%f\n", x);
x = 2 / (float) 4;
printf("%f\n", x);
x = (float) (1/2);
printf("%f\n", x);
x = 1 / (float) 2;
printf("%f\n", x);
return 0;
}
#include <stdio.h>
int main(void) {
char i;
for (i='A'; i<='Z'; i++)
printf ("%c", i);
printf ("\n");
return 0;
}
#include <stdio.h>
int main(void) {
char i;
for (i=65; i<=90; i++)
printf ("%c", i);
printf ("\n");
return 0;
}
#include <stdio.h>
int main(void) {
int i;
for (i='A'; i<='Z'; i++)
printf ("%d ", i);
printf ("\n");
return 0;
}
#include <stdio.h>
int main(void) {
int i;
for (i='A'; i<='Z'; i++)
printf ("%d - %c\n", i, i);
printf ("\n");
return 0;
}
#include <stdio.h>
int main(void) {
char i;
for (i='A'; i<='z'; i++)
printf ("%d ", i);
printf ("\n");
return 0;
}
#include <stdio.h>
int main(void) {
int a,b;
a = 2147483647;
b = a + a;
printf("%d\n", a);
printf("%d\n", b);
return 0;
}
Ao compilar e executar o programa é obtido os seguintes valores na tela: 2147483647 e -2. O que ocorreu?
COMENTáRIOS: PARA RESPONDER ESSA QUESTãO, é IMPORTANTE SABER QUE O VALOR 2147483647 é O MAIOR VALOR POSSíVEL PARA O TIPO INTEIRO EM C (USANDO 4 BYTES). COLOQUE O MODIFICADOR UNSIGNED ANTES DO TIPO INT E VERIFIQUE A MUDANçA (SERá NECESSáRIO TAMBéM MUDAR A MáSCARA DE IMPRESSãO PARA %U.
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
switch (n) {
case 0:
printf("Você digitou zero.");
break;
case 1:
case 4:
case 9:
printf("n é um quadrado perfeito.");
break;
case 2:
printf("n é um número par.");
case 3:
case 5:
case 7:
printf("n é um número primo.");
break;
case 6:
case 8:
printf("n é um número par.");
break;
default:
printf("Somente números de 1 dígito são permitidos.");
break;
}
return 0;
}
#include <stdio.h>
int main() {
int a;
printf("Digite um número positivo:");
scanf("%d", &a);
switch (a) {
case 1: case 2: case 3:
printf("Número de 1 a 3.\n");
case 4: case 5: case 6:
printf("Número de 4 a 6.\n");
default:
printf("Número digitado é maior que 6.\n");
}
return 0;
}
a) Existe algum erro no programa que não possa gerar um executável? Se existir, o que está errado?
b) Caso o programa possa ser compilado sem erro, o que seria exibido se o valor digitado pelo usuário fosse igual a 2? Isto estaria correto? Se não estiver, faça as devidas modificações para que as mensagens estejam de acordo com os possíveis valores digitados. Neste caso, considere que o usuário irá digitar um valor positivo.
Resposta: Não faz sentido colocar o comando break após o comando default, pois isto seria desnecessário. Porém, de acordo com os criadores da linguagem (Brian Kerninghan e Dennis Ritchie), isso poderia ser necessário na hipótese do programador adicionar, posteriormente, um caso após este comando [pág. 52 do livro The Programming Language - second edition]. Os autores chamam essa prática de programação defensiva.
#include <stdio.h>
int main() {
char c;
for ( ; ; ) {
printf("@");
scanf("%c", &c);
if (c == 'a')
break;
}
return 0;
}
a) O que faz o comando for ( ; ; )?
b) Execute o programa e verifique como é possível finalizá-lo.
#include <stdio.h>
int main() {
int i;
for (i=0; ;i++) {
printf("%d\n", i);
}
return 0;
}
É possível utilizar o comando for sem a condição de parada? Se for possível, o que acontecerá com a execução desse programa?
#include <stdio.h>
int main() {
int j=0;
for ( ;j!=5; ) {
printf("%d\n", j);
j++;
}
return 0;
}
Resposta: o programa irá apresentar uma sequência de números (de zero a quatro). Neste programa, deve-se observar que o comando for que normalmente tem a inicialização e o incremento (ou decremento) na própria instrução, não precisa ter esses elementos para funcionar. Inclusive, poderia até mesmo não ter nenhuma das suas partes (inicialização, condição de parada e incremento ou decremento) - situação em que estaria em loop eterno.