Você está aqui: C ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade) |
Um método recursivo que conta de 0 até 10 - Desafio de Programação Resolvido em CQuantidade de visualizações: 840 vezes |
Pergunta/Tarefa: Escreva um método recursivo que conta e exibe os valores de 0 até 10. Seu método deverá possuir a seguinte assinatura: void contar_recursivamente(int n){ // sua implementação aqui } Sua saída deverá ser parecida com: 0 1 2 3 4 5 6 7 8 9 10 Veja a resolução comentada deste exercício usando C console: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> // método recursivo que conta de 0 até 10; void contar_recursivamente(int n){ // vamos exibir o número atual printf("%d ", n); // devemos prosseguir com a recursividade? if(n < 10){ // incrementa o valor de n n++; contar_recursivamente(n); // e faz uma nova chamada recursiva } } // método principal do programa int main(int argc, char *argv[]){ // efetua uma chamada ao método recursivo fornecendo o primeiro valor contar_recursivamente(0); printf("\n\n"); system("pause"); return 0; } |
![]() |
C ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de C - Declare uma matriz de 10 inteiros e use um laço for para preencher os elementos da matriz usando valores aleatórios de 0 até 10Quantidade de visualizações: 11727 vezes |
Pergunta/Tarefa: Escreva um programa C que declara uma matriz de 10 inteiros. Use um laço for para preencher os elementos da matriz usando valores aleatórios de 0 até 10 (incluindo os valores 0 e 10). Para finalizar, percorra os elementos da matriz e exiba seus valores. A saída do programa deverá ser parecida com: 3 5 5 1 3 8 10 0 9 7 Resposta/Solução: Veja abaixo a resolução completa para esta tarefa: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { // vamos inicializar o gerador de números aleatórios srand(time(NULL)); // vamos declarar e construir uma matriz de 10 inteiros int valores[10]; // vamos preencher a matriz com valores aleatórios de 0 até 10 (incluindo) int i; for(i = 0; i < 10; i++){ valores[i] = rand() % 11; } // vamos exibir os valores dos elementos da matriz for(i = 0; i < 10; i++){ printf("%d ", valores[i]); } printf("\n\n"); system("PAUSE"); return 0; } Espero que você tenha gostado e continue a acessar a nossa Lista de Exercícios de C. |
C ::: Dicas & Truques ::: Strings e Caracteres |
Como escrever uma função is_numeric() em C que verifica se uma string contém apenas dígitos de 0 a 9Quantidade de visualizações: 10022 vezes |
Em algumas situações precisamos verificar se uma string contém apenas dígitos de 0 a 9, ou seja, é um valor numérico inteiro válido. Para isso podemos usar a função personalizada em C que mostro nesta dica. Veja que o segredo é passar todos os caracteres individualmente para a função isdigit(). Veja o código:---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> // função personalizada que permite verificar se uma // string contém apenas dígitos de 0 a 9 int is_numeric(const char *str){ int res = 1; // passou no teste // vamos percorrer todos os caracteres da string // e testar se cada um é um dígito. Se não // for nós marcamos res como 0 e retornamos while(*str){ if(!isdigit(*str)){ res = 0; break; } // vamos passar para o próximo caractere str++; } return res; } int main(int argc, char *argv[]){ char valor[20]; // vamos guardar o valor digitado aqui // vamos ler o valor informado pelo usuário printf("Digite qualquer coisa e tecle ENTER: "); gets(valor); // vamos verificar se o usuário informou uma string // que contém apenas dígitos de 0 a 9 if(is_numeric(valor)) printf("Voce informou uma string numerica"); else printf("Voce NAO informou uma string numerica"); puts("\n\n"); system("PAUSE"); return 0; } E, antes que perguntem como é possível verificar se a string contém um valor fracionário válido, a seguinte alteração pode ser feita: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- int is_numeric(const char *str){ int res = 1; // passou no teste // vamos percorrer todos os caracteres da string // e testar se cada um é um dígito ou uma vírgula. Se não // for nós marcamos res como 0 e retornamos while(*str){ if((!isdigit(*str)) and (*str != ',')){ res = 0; break; } // vamos passar para o próximo caractere str++; } return res; } |
C ::: Desafios e Lista de Exercícios Resolvidos ::: C Básico |
Exercício Resolvido de C - Como calcular o restante de um salário após o pagamento de duas contas com jurosQuantidade de visualizações: 874 vezes |
Pergunta/Tarefa: Cintia acaba de receber seu salário mas precisa pagar duas contas atrasadas. Por causa do atraso, ela deverá pagar multa de 2% sobre cada conta. Faça um programa que leia o valor do salário e das duas contas e que calcule e mostre quanto restará do salário de Cintia. Sua saída deverá ser parecida com: Informe o salário: 1350 Valor da primeira conta: 140 Valor da segunda conta: 300 Total das contas sem juros: 440.0 Total dos juros: 8.8 Total das contas com juros: 448.8 Sobra do salário: 901.2 Veja a resolução comentada deste exercício usando C: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> #include <locale.h> int main(int argc, char *argv[]){ setlocale(LC_ALL,""); // para acentos do português double salario, conta1, conta2, total_contas; double total_juros, total_contas_com_juros; double total_contas_sem_juros, sobra_salario; // vamos pedir que o usuário informe o valor do salário e das duas contas printf("Informe o salário: "); scanf("%lf", &salario); printf("Valor da primeira conta: "); scanf("%lf", &conta1); printf("Valor da segunda conta: "); scanf("%lf", &conta2); // total a ser pago nas duas contas sem os juros total_contas = conta1 + conta2; // calcula os juros total_juros = total_contas * 0.02; // total a ser pago com juros total_contas_com_juros = total_contas + total_juros; // sobra do salário sobra_salario = salario - total_contas_com_juros; // mostra os resultados printf("\nTotal das contas sem juros: %lf", total_contas); printf("\nTotal dos juros: %lf", total_juros); printf("\nTotal das contas com juros: %lf", total_contas_com_juros); printf("\nSobra do salário: %lf", sobra_salario); printf("\n\n"); system("PAUSE"); return 0; } |
C ::: C para Engenharia ::: Física - Mecânica |
Como usar a Equação de Torricelli para calcular a velocidade da queda livre dada a altura (e a aceleração da gravidade) usando a linguagem CQuantidade de visualizações: 2297 vezes |
A Equação de Torricelli pode ser usada quando temos a altura na qual um corpo (objeto) foi abandonado e gostaríamos de calcular sua velocidade de queda livre em m/s ou km/h imediatamente antes de tal corpo tocar o chão. Para isso usaremos a seguinte fórmula: \[ v^2 = \text{2} \cdot \text{g} \cdot \text{H} \] Onde: g ? aceleração da gravidade (m/s2) H ? altura em metros na qual o corpo é abandonado. Vamos ver um exemplo? Veja o seguinte enunciado: 1) Uma bola de basquete é abandonada a uma altura de 5 metros em relação ao chão. Se essa bola estiver movendo-se em queda livre, qual será a velocidade da bola, em km/h, imediatamente antes de tocar o chão? Note que o exercício pede a velocidade em km/h, e não m/s. Assim, veja o código C completo para o cálculo: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> #include <math.h> int main(int argc, char *argv[]){ // gravidade terrestre em m/s2 float gravidade = 9.80665; // altura da queda (em metros) int altura = 5; // em metros // velocidade da queda em metros por segundo float velocidade_m_s = sqrt(2 * gravidade * altura); // velocidade da queda em km/h float velocidade_km_h = velocidade_m_s * 3.6; // mostramos o resultado printf("A velocidade da queda livre em m/s é: %fm/s", velocidade_m_s); printf("\nA velocidade da queda livre em km/h é: %fkm/h", velocidade_km_h); printf("\n\n"); system("PAUSE"); return 0; } Ao executar este código C nós teremos o seguinte resultado: A velocidade da queda livre em m/s é: 9.902853m/s A velocidade da queda livre em km/h é: 35.650272km/h Note que definimos, no código, a aceleração da gravidade terreste como 9.80665m/s2. |
C ::: Dicas & Truques ::: Strings e Caracteres |
Como escrever uma função C que verifica se duas strings são iguais ou diferentes (sem considerar maiúsculas e minúsculas)Quantidade de visualizações: 9793 vezes |
Esta dica mostra como escrever uma função em linguagem C que verifica se duas strings são iguais ou diferentes (sem considerar maiúsculas e minúsculas, ou seja, case insensitive). O nome da função é str_equal(). Esta função aceita duas strings como argumentos e retorna 1 se estas forem iguais e 0 em caso contrário. Experimente, faça as devidas alterações e adicione mais esta função ao seu repertório de códigos C:---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> // função personalizada que permite verificar // se duas strings são iguais ou diferentes sem // considerar maiúsculas e minúsculas int str_equal(const char *str1, const char *str2){ while((toupper(*str1) == toupper(*str2)) && (*str1)){ str1++; str2++; } return((*str1 == 0) && (*str2 == 0)); } int main(int argc, char *argv[]){ char palavra1[] = "Java"; char palavra2[] = "Java"; if(str_equal(palavra1, palavra2) == 1) printf("As palavras sao iguais"); else printf("As palavras sao diferentes"); puts("\n\n"); system("PAUSE"); return 0; } |
C ::: Desafios e Lista de Exercícios Resolvidos ::: Operadores de Manipulação de Bits (Bitwise Operators) |
Exercícios Resolvidos de C - Como converter de decimal para binário usando os operadores de bits em CQuantidade de visualizações: 737 vezes |
Pergunta/Tarefa: Escreva um programa C para pede para o usuário informar um número decimal e faça a conversão para binário usando os operadores de bits. Sua saída deverá ser parecida com: Informe um número decimal: 9 O número binário é: 00000000000000000000000000001001 Veja a resolução completa para o exercício em C, comentada linha a linha: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> #include <locale.h> // vamos definir o tamanho do vetor para guardar // os dígitos do número binário #define TAM_INT sizeof(int) * 8 int main(int argc, char *argv[]){ // variáveis para ajudar a resolver o problema int decimal, indice, i; // vetor para guardar o número binário int binario[TAM_INT]; setlocale(LC_ALL,""); // para acentos do português // vamos pedir para o usuário informar um decimal inteiro printf("Informe um número decimal: "); scanf("%d", &decimal); // ajustamos índice para o último elemento do vetor indice = TAM_INT - 1; // enquanto índice for maior ou igual a 0 while(indice >= 0){ // vamos guardar o bit menos significativo LSB binario[indice] = decimal & 1; // diminuímos o índice indice--; // desloca bits para a direita uma posição decimal = decimal >> 1; } // agora vamos exibir o número binário printf("O número binário é: "); for(i = 0; i < TAM_INT; i++){ printf("%d", binario[i]); } printf("\n\n"); system("PAUSE"); return 0; } |
C ::: Dicas & Truques ::: Struct (Estruturas, Registros) |
Linguagem C para iniciantes - Como usar estruturas (struct) em CQuantidade de visualizações: 68323 vezes |
Vetores e matrizes (arrays) são muito importantes quando precisamos agrupar várias variáveis de um mesmo tipo de dados. Porém, há casos em que precisamos agrupar variáveis de diferentes tipos. Para estes casos a linguagem C nos fornece as estruturas (struct). Veja como declará-las:---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- // uma estrutura Pessoa struct Pessoa { char *nome; int idade; }; Veja que esta estrutura possui dois tipos de dados diferentes: um ponteiro para uma cadeia de caracteres e uma variável do tipo int. Para declarar variáveis do tipo Pessoa você tem duas opções. A primeira consiste em declarar as variáveis juntamente com a declaração da estrutura. Veja: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- // uma estrutura Pessoa struct Pessoa { char *nome; int idade; }pessoa, cliente, chefe; A outra forma consiste em declarar a variável no local no qual ela será usada. Esta forma é mais prática. Veja um exemplo completo de como isso é feito: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> // uma estrutura Pessoa struct Pessoa { char *nome; int idade; }; int main(int argc, char *argv[]) { // declara uma variável do tipo struct struct Pessoa cliente; cliente.nome = "Osmar J. Silva"; cliente.idade = 36; // obtém os dados printf("O nome do cliente e: %s\n", cliente.nome); printf("A idade do cliente e: %d\n", cliente.idade); printf("\n\n"); system("PAUSE"); return 0; } |
C ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade) |
Exercícios Resolvidos de C - Um método recursivo que conta de 10 até 0Quantidade de visualizações: 839 vezes |
Pergunta/Tarefa: Escreva um método recursivo em C que conta e exibe os valores de 10 até 0. Seu método deverá possuir a seguinte assinatura: void contar_recursivamente(int n){ // sua implementação aqui } Sua saída deverá ser parecida com: 10 9 8 7 6 5 4 3 2 1 0 Veja a resolução comentada deste exercício usando C console: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> #include <locale.h> // função recursiva que conta de 10 até 0; void contar_recursivamente(int n){ // vamos exibir o número atual printf("%d\n", n); // devemos prosseguir com a recursividade? if(n > 0){ // decrementa o valor de n n--; contar_recursivamente(n); // e faz uma nova chamada recursiva } } int main(int argc, char *argv[]){ setlocale(LC_ALL,""); // para acentos do português // efetua uma chamada ao método recursivo fornecendo // o primeiro valor contar_recursivamente(10); printf("\n\n"); system("pause"); return 0; } |
Vamos testar seus conhecimentos em Engenharia Civil - Construção Civil |
Locação da obra Locar ou marcar a obra é uma das etapas de maior importância da construção. Sobre essa etapa, assinale a alternativa que apresenta a afirmação verdadeira. A) A demarcação dos pontos que definem o edifício no terreno é feita a partir de um referencial previamente definido, considerando-se três coordenadas, sendo duas planimétricas e uma altimétrica. B) Para a locação da obra, são necessários somente os projetos de estrutura e de arquitetura. C) A locação da obra deve ser realizada somente após a movimentação de terra e a execução das fundações. D) As tábuas que compõem os quadros de madeira (gabaritos) só precisam ser niveladas nos casos em que o terreno possui desnível superior a um metro. E) O gabarito somente poderá ser desmontado após a execução da totalidade da estrutura de concreto. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em |
Domínios de Deformações Vigas de concreto armado, com seções submetidas a um momento fletor e a um esforço cortante, são dimensionadas de tal forma que se determine uma armadura longitudinal para resistir ao momento fletor e uma armadura transversal para resistir ao esforço cortante. Analise as informações a seguir, a respeito da solicitação normal do tipo momento fletor: I) Solicitação de flexão simples ocorre quando a única solicitação atuante é o momento fletor. II) Solicitação de flexão composta ocorre quando, além do momento fletor, há uma força normal atuante. III) Solicitação de flexão oblíqua ocorre quando o plano de flexão compreende um eixo de simetria da seção transversal. Assinale a alternativa correta: A) Somente a afirmação I está correta. B) Somente as afirmações I e II estão corretas. C) Somente a afirmação II está correta. D) Somente a afirmação III está correta. E) Somente as afirmações II e III estão corretas. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Construção Civil |
Formas: Confecção e colocação O concreto deve estar curado e liberado para a remoção das formas segundo recomendações técnicas. Quando não se utiliza concreto especial ou aditivo acelerador de pega, para vigas de pequeno vão, qual é o prazo mínimo para a retirada das formas inferiores, com a manutenção das principais escoras? A) Cinco dias. B) Sete dias. C) Dez dias. D) Quatorze dias. E) Vinte e um dias. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Instalações Hidráulicas Prediais |
Água Fria: Reservatórios Uma edificação possui 10 ocupantes com um consumo médio per capita de 200 litros por dia. Qual a capacidade total mínima do reservatório, segundo a NBR 5.626, sem considerar a reserva de incêndio? A) 6 m3. B) 1,6 m3. C) 2 m3. D) 8 m3. E) 500 litros. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em AutoCAD Civil 3D |
Superfícies no AutoCAD Civil 3D Qual dos objetos abaixo não é um tipo de dados que pode ser incluído em uma superfície do AutoCAD Civil 3D? A) Lines (Linhas) B) Points (Pontos) C) Parcels (Parcelas, Lotes) D) Blocks (Blocos) Verificar Resposta Estudar Cards Todas as Questões |
Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de C |
Veja mais Dicas e truques de C |
Dicas e truques de outras linguagens |
C - Como alocar memória para instâncias de uma estrutura (struct) e acessá-las usando ponteiros em C |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |