#include <stdio.h>
/* prototipos de funcoes */
int main()
{
/* declaracao de variaveis */
/* lista de comandos */
return 0; /* comandos terminam com ; */
} /* blocos de comandos entre { } */
/* demais funcoes */
Escreva um programa em C que leia um número inteiro positivo n
e calcula o fatorial de n
.
Obs.: Esse é o exercício 8 da lista de exercícios sobre inteiros
while
)#include <stdio.h> /* Biblioteca que contém funções de manipulação de entrada e saida de dados */
int main() {
int n;
int i = 1;
int fat = 1;
printf("Digite n: ");
scanf("%d", &n);
while (i <= n) {
fat *= i;
i++;
}
printf("fat(%d) = %d\n", n, fat);
return 0;
}
for
)#include <stdio.h> /* Biblioteca que contem funcoes de manipulacao de entrada e saida de dados */
int main() {
int n, i;
int fat = 1;
printf("Digite n: ");
scanf("%d", &n);
for (i = 1; i <= n; i++)
fat *= i;
printf("fat(%d) = %d\n", n, fat);
return 0;
}
#include <stdio.h> /* Biblioteca que contem funcoes de manipulação de
entrada e saida de dados */
int fat(int n);
int main() {
int n, f;
printf("Digite n: ");
scanf ("%d", &n);
f = fat(n);
printf("fat(%d) = %d\n", n, f);
return 0;
}
int fat(int n) {
int i, resultado = 1;
for (i = 1; i<=n; i++)
resultado *= i;
return resultado;
}
Esse problema envolvendo números inteiros mostra uma das limitações do C em comparação ao Python: valores inteiros em C são armazenados usando uma quantidade fixa de bits, por essa razão, eles são capazes de representar uma faixa limitada de valores. Já em Python3, um número inteiro pode ser tão grande quanto o espaço que está disponível para armazená-lo na memória.
Geralmente, um valor do tipo int
em C ocupa 32 bits; com essa quantidade de bits, é possível representar a faixa de valores de −2.147.483.648 a 2.147.483.647. Entretanto, a quantidade de bits usada para armazenar um inteiro na linguagem C pode variar de computador para computador. Em um computador em que um número inteiro é representado com 32 bits, o programa acima não forneceria valores de fatorial corretos para qualquer n >= 13 (já que fatorial(12) = 479.001.600 < 2.147.483.647, mas fatorial(13) = 6.227.020.800 > 2.147.483.647).
Para saber mais detalhes sobre a representação de números inteiros no computador, você pode consultar essa página na Wikipédia.
Na figura abaixo, no plano cartesiano, a região sombreada não inclui as linhas de bordo. Note que o eixo y
cai bem no meio da figura, e usamos o lado do quadrado para indicar as ordenadas correspondentes.
Escreva um programa em C que lê as coordenadas cartesianas (x, y)
de um ponto (ambas do tipo float) e imprime entro se esse ponto está na região, e fora caso contrário.
Obs.: Esse problema foi a Questão 1 da Prova 1 de 2014 das outras turmas de MAC2166.
Exemplos:
Digite x: 10 Digite x: -3 Digite x: 0
Digite y: 5 Digite y: 5 Digite y: 3.14149
fora fora dentro
Digite x: -3 Digite x: -3 Digite x: 2
Digite y: -1 Digite y: 5.5 Digite y: 4.444
fora fora fora
Digite x: -3 Digite x: -3 Digite x: 2.718
Digite y: 2 Digite y: 6 Digite y: 5.774
fora fora dentro
Digite x: -3 Digite x: -2 Digite x: 3.14
Digite y: 2.3 Digite y: 0.5 Digite y: 6.02
dentro dentro fora
Digite x: -3 Digite x: -1 Digite x: 5
Digite y: 4 Digite y: 1.5 Digite y: 8
fora fora fora
#include <stdio.h>
#define TRUE 1
#define FALSE 0
int main() {
float x, y;
int dentro;
printf("Digite x: ");
scanf("%f", &x);
printf("Digite y: ");
scanf("%f", &y);
/* suponha que (x,y) esta dentro */
dentro = TRUE;
if (x <= -5 || 5 <= x || y <= 0 || 8 <= y)
/* aqui sabemos que (x,y) esta fora da face */
dentro = FALSE;
else
if (-3 <= x && x <= 3 && 1 <= y && y <= 2)
/* aqui sabemos que (x,y) esta na boca */
dentro = FALSE;
else
if (-4 <= x && x <= -1 && 4 <= y && y <= 7) {
/* aqui sabemos que (x,y) esta no olho esquerdo */
dentro = FALSE;
if (-3 < x && x < -2 && 5 < y && y < 6)
/* aqui sabemos que na verdade (x,y) esta na iris esquerda */
dentro = TRUE;
}
else
if (1 <= x && x <= 4 && 4 <= y && y <= 7) {
/* aqui sabemos que (x,y) esta no olho direito */
dentro = FALSE;
if (2 < x && x < 3 && 5 < y && y < 6)
/* aqui sabemos que na verdade (x,y) esta na iris direita */
dentro = TRUE;
}
if (dentro)
printf("dentro\n");
else
printf("fora\n");
return 0;
}
main
include
scanf
e printf
int
while
e for
if-else