Esses passos iniciais em programação C são, sem dúvidas, os mais difíceis, e todos já tiveram problemas e dificuldades, inclusive todos nós da equipe do curso C Progressivo.
Antes de estudar funções, porém, você precisa fazer um treino especial, com mais uma leva de questões.
Exercícios sobre testes condicionais e laços
Afinal, na vida real como programador C, ninguém vai te dizer como você deve fazer seu trabalho.
Você tem que usar sua criatividade, tem que pensar e desenrolar.
Essas questões, portanto, não tem apenas uma única e correta solução.
Cada programador vai ter ideias diferentes e maneiras diferentes de resolver o problema.
Pense, relembre as aulas e tente resolver da maneira mais simples, eficiente e bonita...ou simplesmente tente resolver, já será um passo importante.
Use:
Teste condicional IF ELSE
Laço WHILE
Laço FOR
Teste condicional SWITCH, com ou sem CONTINUE e BREAK
Laço DO WHILE
Fique a vontade para criar sua própria solução, da maneira que mais lhe convier.
0. Escreva um programa em C que recebe 'n' números do usuário, e recebe o número 'n' também, e determine qual destes números é o menor.
1. Escreva um programa em C que recebe um inteiro 'n' do usuário e calcula o produto dos números pares e o produtos dos números ímpares, de 1 até n.
2. Faça um programa em C que recebe um inteiro do usuário e calcula seu fatorial.
O fatorial de 'n' é dado por:
n*(n-1)*(n-2)...*3*2*1
e é representado por n!
3. Crie um aplicativo bancário em C que pede o valor do depósito inicial, o valor do investimento mensal e o número de meses que o dinheiro vai ficar rendendo na poupança.
Após isso, calcule o lucro obtido, sabendo que o juros da poupança é de 0,5%.
4. Crie um programa em C que peça um número inteiro ao usuário, e imprima a seguinte tabela::
1
2 4
3 6 9
4 8 12 16
...
5. Escreva um programa que peça um númer 'n' ao usuário, e que gere um novo n de acordo com a seguinte regra:
• se n é par, n = n / 2
• se n é impar, n = 3 * n + 1
• imprime n
• O programa deve parar quando x tiver o valor igual a 1. Por exemplo, para n = 13, a saída será:
40 -> 20 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1
Desafio dos números de FIbonacci
Crie um aplicativo em C que peça um número inteiro ao usuário - 'n' - e exiba o n-ésimo termo da série de Fibonacci, sabendo que o primeiro termo é 0, o segundo é 1 e o próximo número é sempre a soma dos dois anteriores.
Desafio do diamante de asteriscos:
Escreva um aplicativo em C que peça um número inteiro ímpar ao usuário e desenhe um diamante no seguinte formato:
*
***
*****
*******
*********
*******
*****
***
*
Nesse caso, o número é 9, pois há 9 colunas e 9 asteriscos na linha central.
Super hiper mega desafio de Fibonacci
Fazer o desafio dos números de FIbonacci, mostrador anteriormente, usando apenas duas variáveis.
Soluções e códigos comentados das questões
26 comentários:
Eu não entendi a parte "e exiba o n-ésimo termo da série de Fibonacci," do desafio dos números Fibonacci. Se puder me esclarecer agradeço.
O site é muito bom, tudo muito bem explicado, objetivo e sem perde tempo com coisas desnecessárias, Parabéns.
Ele quis dizer que vc deve exibir o termo na posição n da tabela de fibonacci
Oi, tenho que resolver os dois exercícios abaixo mas não estou conseguindo, será que pode me dar uma mão?
1) Faça um programa em linguagem C que receba a idade, a altura e o peso de 25 pessoas. Calcule e mostre:
* a quantidade de pessoas com idade superior a 50 anos;
* a média de altura das pessoas com idade entre 10 e 20 anos;
* o percentual de pessoas com peso inferior a 40Kg;
2) Faça um programa em linguagem C que apresente um menu de opções para o cálculo das seguintes operações entre dois numeros:
adiçao, subtraçao, multiplicaçao e divisao. O programa deve possibilitar ao usuario a escolha da operaçao desejada, a exibiçao do
resultado e a volta ao menu de opçoes. O programa so termina quando for escolhida a opçao de saida.
Laura, quais suas dúvidas, especificamente? O que já conseguiu fazer?
To gostando muito dessa apostila\curso, sou formado em Análise e Desenvolvimento de Sistemas e faço Pós Graduação em Segurança da Informação.
Mas Programação sempre foi meu calo, acho que por ter feito faculdade muito jovem, entrei com 17 anos e não pensava muito no futuro, hoje estou começando a correr atrás do prejuízo e aprendendo a programar de novo.
To evoluindo muito rápido com as aulas de vocês.
Preciso fazer tipo uma calculadora que resolva Fatorial, Conversão Binário para Decimal e Conversão Decimal para Binário.
Sera que alguém poderia me ajudar?
Meu Deus.... Eu consegui o ultramega power desafio...... Valeu muito ai pelo blog.... muito bom mesmo... muito bom.....
#include
#include
int main(void)
{
float n,
phi = 1.61803;
printf("\nInsira o numero do termo que pretende achar na sequência Fibonacci\n");
scanf("%f", &n);
printf("\No número %.0f de Fibonacci é %.0f", n, ((pow(phi, n)-pow((1-phi), n))/2.236));
}
Nao tendo mais Xuxa de boa!
Taí meu código. Tá meio coisado mas é porque eu tô migrando do Object Pascal pro C.
Boa sorte a todos :)
/*
OBJETIVO: Escreva um programa em C que recebe 'n' números
do usuário, e recebe o número 'n' também, e de-
termine qual destes números é o menor.
AUTOR: Marcelo dos Santos, assuncao2gether@gmail.com
*/
#include
int main(void){
int x, maior=0;
do{
printf("Informe um numero ( para ENCERRAR, press. 0): ");
scanf("%d", &x);
if (x > maior){
maior=x;
printf("MAIOR NUMERO ATE AGORA: %d.\n",maior);
}
else{
if (x < maior){
printf("MAIOR NUMERO ATE AGORA: %d.\n",maior);
}
else{
printf("MAIOR NUMERO ATE AGORA: %d.\n",x);
}
}
}
while(x != 0);
system("pause");
return 0;
}
#include
#include
#include
/*0. Escreva um programa em C que recebe 'n' números do usuário, e recebe o número
'n' também, e determine qual destes números é o menor.
*/
int main()
{
setlocale(LC_ALL,"portuguese");
int iCont=0;
char cOp;
float fNum,fMenor;
do
{
printf("Digite um número: ");
scanf("%f",&fNum);
if(iCont==0)
{
fMenor=fNum;
}
if(fNum>fMenor)
{
fMenor=fMenor;
}
else
{
fMenor=fNum;
}
printf("Deseja sair?\nSe sim digite 's'\nSe não digite 'n': \n");
scanf(" %c%*c",&cOp);
if(cOp=='s')
{
break;
}
else
{
system("pause");
system("cls||clear");
iCont++;
}
}while(iCont<1000);
printf("Menor número digitado: %.1f\n",fMenor);
return 0;
}
#include
#include
#include
/*1. Escreva um programa em C que recebe um inteiro 'n' do usuário e calcula o produto
dos números pares e o produtos dos números ímpares, de 1 até n.
*/
int main()
{
setlocale(LC_ALL,"portuguese");
int iNum,iCont,iPrP=1,iPrIm=1;
printf("Digite um número: ");
scanf("%d",&iNum);
for(iCont=1;iCont<=iNum;iCont++)
{
if((iCont%2)==0)
{
iPrP=iPrP*iCont;
printf("Produto dos números pares: %d\n",iPrP);
}
}
system("pause");
system("cls||clear");
for(iCont=1;iCont<=iNum;iCont++)
{
if((iCont%2)!=0)
{
iPrIm=iPrIm*iCont;
printf("Produto dos números ímpares: %d\n",iPrIm);
}
}
return 0;
}
#include
#include
#include
/*2. Faça um programa em C que recebe um inteiro do usuário e calcula seu fatorial.
O fatorial de 'n' é dado por:
n*(n-1)*(n-2)...*3*2*1
e é representado por n!
*/
int main()
{
setlocale(LC_ALL,"portuguese");
int iNum,iCont;
printf("Digite um número: ");
scanf("%d",&iNum);
iCont=(iNum-1);
while(iCont>=1)
{
printf("%d * %d= %d\n",iNum,iCont,iNum*iCont);
iNum=iNum*iCont;
iCont--;
}
return 0;
}
#include
#include
//#include
/*4. Crie um programa em C que peça um número inteiro ao usuário, e imprima
a seguinte tabela::
1
2 4
3 6 9
4 8 12 16
*/
int main()
{
setlocale(LC_ALL,"portuguese");
int iCont=1,iNum,iValor=0,iCont2=1;;
printf("Digite um número: ");
scanf("%d",&iNum);
do
{
iValor=iValor+iCont;
printf("%d",iCont);
while(iCont2<iCont)
{
iValor=iValor+iCont;
printf("%d",iValor);
iCont2++;
}
printf("\n");
iCont2=1;
iValor=0;
iCont++;
}while(iCont<=iNum);
return 0;
}
#include
#include
/*5. Escreva um programa que peça um númer 'n' ao usuário, e que gere um novo n
de acordo com a seguinte regra:
• se n é par, n = n / 2
• se n é impar, n = 3 * n + 1
• imprime n
• O programa deve parar quando x tiver o valor igual a 1. Por exemplo, para n = 13, a saída será:
40 -> 20 -> 10 -> 5 -> 16 -> ˜8 -> 4 -> 2 -> 1
*/
int main()
{
setlocale(LC_ALL,"portuguese");
int iNum,iCont,iAux;
printf("Digite um número: ");
scanf("%d",&iNum);
iCont=iNum;
while(iCont!=1)
{
if(iNum%2==0)
{
iCont=iNum/2;
}
else
{
iCont=3*iNum+1;
}
iAux=iCont;
iNum=iAux;
printf("%d\n",iCont);
}
return 0;
}
#include
#include
/*
Desafio dos números de FIbonacci
Crie um aplicativo em C que peça um número inteiro ao usuário - 'n' - e exiba o
n-ésimo termo da série de Fibonacci, sabendo que o primeiro termo é 0,
o segundo é 1 e o próximo número é sempre a soma dos dois anteriores.
1, 1, 2, 3, 5, 8, 13…
*/
int main()
{
setlocale(LC_ALL,"portuguese");
int iFib=1,iCont,iN1=0,iN2=1;
printf("Digite um número: ");
scanf("%d",&iCont);
while(iCont>0)
{
iFib=iN1+iN2;
iN2=iN1;
iN1=iFib;
printf("%d\n",iFib);
iCont--;
}
return 0;
}
Questão 4:
int main () {
int i, j, contador = 1, numero = 0, multiplicador = 0;
setlocale(LC_ALL, "Portuguese");
do {
printf("- Digite um número: ");
scanf("%d", &numero);
if (numero < 1) {
printf("\nNúmero Inválido\nTente Novamente.\n\n");
}
} while (numero < 1);
for (i = 1; i <= numero; i++) {
multiplicador = 1;
for (j = 0; j < contador; j++) {
printf("%d ", i * multiplicador);
multiplicador++;
}
contador++;
printf("\n");
}
return 0;
}
Questão 5:
#include < stdio.h >
#include < stdlib.h >
#include < locale.h >
int main () {
int numero = 0;
setlocale(LC_ALL, "Portuguese");
do {
printf("- Digite um número: ");
scanf("%d", &numero);
if (numero < 0) {
printf("\nNúmero Inválido!\n\nTente Novamente.\n\n");
}
} while (numero < 0);
printf("\n");
while (numero != 1) {
if (numero % 2 == 0) {
numero = numero / 2;
} else {
numero = 3 * numero + 1;
}
printf("%d ", numero);
}
printf("\n");
return 0;
}
Desafio do diamante de asteriscos:
#include < stdio.h >
#include < stdlib.h >
#include < locale.h >
int main () {
int i, j, qtd_Espacos = 0, qtd_Pontos = 1, numero = 0;
setlocale(LC_ALL, "Portuguese");
do {
printf("- Digite um número impar: ");
scanf("%d", &numero);
if (numero % 2 == 0 || numero < 1) {
printf("\nNúmero Inválido!\nTente Novamente.\n\n");
}
} while (numero % 2 == 0 || numero < 1);
printf("\n");
qtd_Espacos = numero / 2 + 1;
for (i = 0; i < numero / 2; i++) {
for (j = 0; j < qtd_Espacos; j++) {
printf(" ");
}
qtd_Espacos--;
for (j = 0; j < qtd_Pontos; j++) {
printf("*");
}
printf("\n");
qtd_Pontos = qtd_Pontos + 2;
}
printf(" ");
for (i = 0; i < numero; i++) {
printf("*");
}
printf("\n");
qtd_Espacos = 2;
for (i = 0; i < numero / 2; i++) {
for (j = 0; j < qtd_Espacos; j++) {
printf(" ");
}
qtd_Espacos++;
qtd_Pontos = qtd_Pontos - 2;
for (j = 0; j < qtd_Pontos; j++) {
printf("*");
}
printf("\n");
}
return 0;
}
0. Escreva um programa em C que recebe 'n' números do usuário, e recebe o número 'n' também, e determine qual destes números é o menor.
#include
int main (void)
{
int n, counter = 1, number, menor;
printf("\t Qual e a quantidade de numeros? ");
scanf("%d", &n);
printf("\n\n\t Entre com o numero %d: ", counter);
scanf("%d", &number);
menor = number;
while( counter + 1 <= n)
{
printf("\t Entre com o numero %d: ", counter + 1);
scanf("%d", &number);
if (number < menor)
menor = number;
counter++;
}
printf("\n\t O menor numero e: %d \n", menor);
return 0;
}
1. Escreva um programa em C que recebe um inteiro 'n' do usuário e calcula o produto dos números pares e o produtos dos números ímpares, de 1 até n.
#include
int main (void)
{
int amount, counter = 0, par = 1, impar = 1;
printf("\t Produto dos pares e impares ate o numero [máximo de 19]: ");
scanf("%d", &amount);
if ((amount < 0) || (amount > 19))
printf("\t \nEntre com um valor positivo entre 1 e 19 \n");
else
{
for( counter = 2 ; counter <= amount; counter += 2)
par *= counter;
printf("\n\t Produto dos pares: %d ", par);
for( counter = 1 ; counter <= amount; counter += 2)
impar *= counter;
printf("\n\n\t Produto dos impares: %d \n", impar);
}
return 0;
}
2. Faça um programa em C que recebe um inteiro do usuário e calcula seu fatorial.
O fatorial de 'n' é dado por:
n*(n-1)*(n-2)...*3*2*1
e é representado por n!
#include
int main(void)
{
int n, i, fatorial = 1;
printf("Entre com um inteiro positivo: ");
scanf("%d", &n);
if ( n < 0 )
printf("\n O numero deve ser um inteiro positivo");
else
{
for ( i = n; i >= 3; i--)
fatorial *= (i - 1);
printf("\n Fatorial e: %d \n", fatorial * n);
}
}
3. Crie um aplicativo bancário em C que pede o valor do depósito inicial, o valor do investimento mensal e o número de meses que o dinheiro vai ficar rendendo na poupança.
Após isso, calcule o lucro obtido, sabendo que o juros da poupança é de 0,5%.
#include
int main(void)
{
int meses, counter;
float montante, investimento_mensal, rendimento = 0;
printf("Montante: ");
scanf("%f", &montante);
printf("Investimento Mensal: ");
scanf("%f", &investimento_mensal);
printf("Tempo em meses do investimento: ");
scanf("%d", &meses);
if((montante <= 0) || (investimento_mensal < 0) || (meses <= 0))
printf("\n \tMontante > 0 , Investimento Mensal > 0 ou = 0 , Meses > 0 ");
else
{
for( counter = 1; counter <= meses; counter++ )
{
rendimento += (montante * 0.005);
montante *= 1.005;
montante += investimento_mensal;
printf("\n \t No mes %d o montante e igual = %.2f ", counter, montante);
printf(" \t\t Rendimento = %.2f \n", rendimento);
}
}
}
4. Crie um programa em C que peça um número inteiro ao usuário, e imprima a seguinte tabela::
1
2 4
3 6 9
4 8 12 16
#include
int main(void)
{
int rows, counter_row, counter_width, counter_row_new;
printf("\t Entre com um inteiro maior que 1 ");
scanf("%d", &rows);
if(rows <= 1)
printf("\t O numero deve ser maior que 1");
else
{
for( counter_row = 1; counter_row <= rows; counter_row++ )
{
printf("\n");
counter_row_new = counter_row;
for ( counter_width = 1; counter_width <= counter_row; counter_width++)
{
if( counter_width > 1 )
printf("%3d ", counter_row_new += counter_row);
else
printf("%3d ", counter_row);
}
}
}
printf("\n\n");
}
5. Escreva um programa que peça um númer 'n' ao usuário, e que gere um novo n de acordo com a seguinte regra:
• se n é par, n = n / 2
• se n é impar, n = 3 * n + 1
• imprime n
• O programa deve parar quando x tiver o valor igual a 1. Por exemplo, para n = 13, a saída será:
40 -> 20 -> 10 -> 5 -> 16 -> ˜8 -> 4 -> 2 -> 1
#include
int main (void)
{
int n;
printf("\t Entre com um numero > 2 ");
scanf("%d", &n);
if ( n <= 2)
printf("\t O numero tem que ser > 2 \n");
else
{
while ( n != 1)
{
if( n % 2 == 0 )
n = n / 2;
else
n = 3 * n + 1;
printf(" n = %d", n);
}
}
}
Desafio dos números de FIbonacci
Crie um aplicativo em C que peça um número inteiro ao usuário - 'n' - e exiba o n-ésimo termo da série de Fibonacci, sabendo que o primeiro termo é 0, o segundo é 1 e o próximo número é sempre a soma dos dois anteriores.
#include
int main(void)
{
int number, counter, fibonacci, fibonacciT1 = 0, fibonacciT2 = 1;
printf("\t Entre com um inteiro [ >= 1 ] ");
scanf("%d", &number);
if ( number < 1)
printf("\t O numero deve ser maior que zero \n");
else if (number == 1)
printf("\t Fibonacci Termo [ %3d ] = %3d \n", 1, 0);
else if (number == 2)
printf("\t Fibonacci Termo [ %3d ] = %3d \n", 2, 1);
{
for( counter = 3; counter <= number; counter++)
{
fibonacci = fibonacciT1 + fibonacciT2;
//printf("\t Fibonacci Termo [ %3d ] = %3d \n", counter, fibonacci);
fibonacciT1 = fibonacciT2;
fibonacciT2 = fibonacci;
}
printf("\t Fibonacci Termo [ %3d ] = %3d \n", counter - 1, fibonacci);
}
}
Desafio do diamante de asteriscos:
#include
#include
int main(void)
{
int rows, counter_row, counter_width, space, asterisk = 1, i, SPACE = 1, ASTERISK;
printf("\t Entre com um inteiro impar maior que 1 ");
scanf("%d", &rows);
space = ((int)floor((float)rows/2));
ASTERISK = rows;
if((rows % 2 == 0) && (rows > 1))
printf("\t O numero deve ser impar maior que 1");
else
{
for( counter_row = 1; counter_row <= rows; counter_row++ )
{
printf("\n");
for ( counter_width = 1; counter_width <= rows; counter_width++)
{
if ( counter_width <= space )
printf(" ");
if ( counter_width == space )
{
for ( i = 1; i <= asterisk; i++ )
printf("*");
space--;
asterisk += 2;
break;
}
if ( counter_row == ((int)ceil((float)rows/2)) )
printf("*");
if ( counter_row > ((int)ceil((float)rows/2)) )
{
{
if ( counter_width <= SPACE )
printf(" ");
else
{
if ( counter_width == ( ASTERISK ))
{
ASTERISK--;
SPACE++;
break;
}
printf("*");
}
}
}
}
}
}
printf("\n\n");
}
Postar um comentário