Vamos agora propor algumas questões para você treinar e fixar seus conhecimentos.
Tente usar somente o laço while, e nenhum outro.
Não vá olhar a solução nem o código antes de tentar, bastante, resolver por conta própria. Do contrário, nunca aprenderá C.
Clique aqui e saiba como obter seu certificado de programação C! Entre já no Mercado de Trabalho!
- Baixar nossa apostila: Apostila de C
Apostila C Progressivo - Exercícios sobre o laço WHILE
Xuxa, a rainha dos baixinhos, criou uma música que tem o segunte formato:
n patinhos foram passear
Além das montanhas
Para brincar
A mamãe gritou: Quá, quá, quá, quá
Mas só n-1 patinhos voltaram de lá.
Que se repete até nenhum patinho voltar de lá.
Ao final, todos os patinhos voltam:
A mamãe patinha foi procurar
Além das montanhas
Na beira do mar
A mamãe gritou: Quá, quá, quá, quá
E os n patinhos voltaram de lá.
Crie um programa em C que recebe um inteiro positivo do usuário e exibe a música inteira na tela, onde o inteiro recebido representa o número inicial n de patinhos que foram passear.
1. Programa em C que mostra os números ímpares
Escreva um aplicativo em C mostra todos os números ímpares de 1 até 100.
2. Programa em C que mostra os números pares
Escreva um aplicativo em C mostra todos os números pares de 1 até 100.
3. Programa em C que mostra os números pares e ímpares
Escreva um aplicativo em C que recebe inteiro e mostra os números pares e ímpares (separados), de 1 até esse inteiro.
4. Programa em C que calcula a média das notas de uma turma
Escreva um programa que pergunte ao usuário quantos alunos tem na sala dele.
Em seguida, através de um laço while, pede ao usuário para que entre com as notas de todos os alunos da sala, um por vez.
Por fim, o programa mostra a média, aritmética, da turma.
5. Achando o maior número
Achar o maior, menor, média e organizar números ou sequências são os algoritmos mais importantes e estudados em Computação. Em C não poderia ser diferente.
Em nosso curso, obviamente, também não será diferente.
Escreva um programa em C que solicita 10 números ao usuário, através de um laço while, e ao final
mostre qual destes números é o maior.
6. Achando os dois maiores números
Escreva um programa em C que solicita 10 números ao usuário, através de um laço while, e ao final
mostre os dois maiores números digitados pelo usuário.
7. Quadrado de asteriscos
Escreva um programa que lê o tamanho do lado de um quadrado e imprime um quadrado daquele tamanho com asteriscos. Seu programa deve funcionar para quadrados com lados de todos os tamanhos entre 1 e 20.
Para lado igual a 5:
*****
*****
*****
*****
*****
8. Quadrado de asteriscos e espaços em branco
Escreva um programa que lê o tamanho do lado de um quadrado e imprime um quadrado daquele tamanho com asteriscos e espaços em branco. Seu programa deve funcionar para quadrados com lados de todos os tamanhos entre 1 e 20.
Para lado igual a 5:
*****
* *
* *
* *
*****
9. Tabuada em C
Escreva um programa que pergunta um número ao usuário, e mostra sua tabuada completa (de 1 até 10).
10. Tabela ASCII em C
Se você lembrar bem, quando estudamos as variáveis do tipo caractere, char, dissemos que, na verdade, ela eram representadas por inteiros de 0 até 255.
Mostre a tabela completa do código ASCII.
36 comentários:
Me perdoe a intromissão, mas nos códigos dos exercicios de impares e pares de 1 a 100, não deveria existir um 'else' depois do 'if'?
Se for pensar na lógica do código da solução, se (count%2 == 1) ele soma +1 em count, senão, ele não soma nada e o programa não roda.
Na verdade deveria ter o 'else' e depois o incremento a variavel. A unica diferença é que no 'else' não haverá o 'printf'. Deem uma olhada no meu código:
#include
int main ()
{
int n=1;
while (n<=100)
{
if (n%2==0)
{
printf("%d, ",n);
n++;
}
else
{
n++;
}
}
}
Mas uma vez me desculpe pela intromissão, mas acredito que esse tipo de discussão só colabora mais ainda para a didática do curso.
Obrigado
Olá José,
Note que no nosso código, depois do IF não há o par de chaves { }
Quando não usamos o par de chaves, somente a primeira instrução imediatamente após o IF (ou ELSE, ou WHILE, ou FOR ou DO WHILE) é que é executada!
Ou seja, se o IF for verdadeiro, aí é executado o printf.
Mas independente do IF ser verdadeiro ou não, o 'count' é incrementado, pois está fora do IF e dentro do WHILE.
Qualquer dúvida, sugestão ou errata, não exitem em comentar.
Certamente ajuda a aumentar o conteúdo do site, e sua dúvida pode ser a de outros.
Bom.Tentei criar um programa que mostre o maior numero então queria ver se estar certo, apesar do resultado tenha sido positivo.obrigado!
#include
main()
{
int num1,num2;
printf("Valor 1:");
scanf("%d", &num1);
printf("Valor 2:");
scanf("%d", &num2);
while(num1 > num2)
{
if(num1 > num2)
{
printf("%d", num1);
break;
}else
{
printf("%d",num2);
break;
}
}
}
Gostaria de saber se a 6ª questão poderia ser feita da seguinte forma:
#include
main(){
int maior, segundo_maior, count=3, num;
printf("Digite o valor 1\n");
scanf("%d", &maior);
printf("Digite o valor 2\n");
scanf("%d", &segundo_maior);
fflush(stdin);
while( count <= 10){
count++;
printf("Digite o valor %d\n", count);
scanf("%d", &num);
fflush(stdin);
if(num > maior){
segundo_maior = maior;
maior = num;
}
else
if((num > segundo_maior) && (num < maior))
segundo_maior = num;
}
printf("Os maiores valores, respectivamente, sao: %d e %d", maior, segundo_maior);
}
Exercício 0:
#include
#include
main ()
{
int num, num2;
printf (" Quantos patinhos foram passear?\n\n --> ");
scanf ("%d", &num);
num2 = num;
while (num > 0)
{
printf ("\n %d patinhos foram passear\n Alem das montanhas\n Para brincar \n A mamae gritou: Qua, qua, qua, qua.. ", num);
num--;
printf ("\n Mas so %d patinhos voltaram de la.\n", num);
}
printf ("\n A mamae patinha foi procurar\n Alem das montanhas\n Na beira do mar\n A mamae gritou: Qua, qua, qua, qua..\n E os %d patinhos voltaram de la.", num2);
}
//6. Achando os dois maiores números
//Escreva um programa em C que solicita 10 números ao usuário, através de um laço while, e ao final
//mostre os dois maiores números digitados pelo usuário.
//MAC
#include
int main()
{
int num,maior=0,maior2=0,count=1;
while (count<=10)
{
printf("digite o %d numero",count);
scanf("%d",&num);
if (num>maior)
{
maior2=maior;
maior=num;
}
else
{
if ((nummaior2))
{
maior2=num;
}
}
count++;
}
printf("o maior numero foi %d e o %d o segundo maior",maior,maior2);
}
BOA TARDE GALERA... TENHO UM PROBLEMA AQUI E PRECISO DE AJUDA...
ESTE CODIGO DESTINA-SE AO EXERCICIO 4 DE ELABORAR A MEDIA DA TURMA...
O PROBLEMA É QUE NÃO CONSIGO PUXAR A MEDIA DA TURMA... ME AJUDAM POR FAVOR...
#include
#include
void linha()
{
int i;
for (i=1; i<=80; i++)
putchar('-');
}
main()
{
int n_aluno; float nota, media = 0.0 ; int ordem = 1; /*IMPRIMIR PROXIMA LINHA*/ printf("\n\t\t\tCALCULADORA DE MEDIA DA TURMA\n"); linha();
printf("\nQUANTOS ALUNOS EXISTEM: "); scanf("%d", &n_aluno); putchar('\n'); linha();
while (ordem <= n_aluno)
{
printf("\nINTRODUZ A NOTA %d : ", ordem++); scanf("%f", ¬a);
}
media= media + nota;
ordem++;
linha(); putchar('\n'); /**/ printf("\nA MEDIA DA TURMA CORRESPONDE A: %.2f VALORES \n\n", media/n_aluno); /**/ linha();
putchar('\n');
system("pause");
}
No exercicio 1 eu fiz o que se pediu, mas depois eu fiquei brincando com essa ideia e eu fiz um programa em que voce digita quaisquer 2 numeros e ele mostra todos os numeros impares entre esses dois numeros, ta ai pra voces compilarem, nao se esqueçam do include:
int main(void)
{
int num1;
int num2;
int contador;
printf("Programa que mostra todos os numeros impares\n");
printf("entre dois numeros inseridos pelo usuario.\n\n");
printf("Insira o primeiro numero: ");
scanf("%d",&num1);
printf("Insira o segundo numero: ");
scanf("%d",&num2);
printf("\n");
contador = num1;
while(contador <= num2)
{
if(contador%2 == 1)
{
printf("%d, ",contador);
contador++;
}
else
{
contador++;
}
}
}
Fiz o meu dos patinhos assim:
#include
int main(){
int n, x;
printf("Informe a quantidade de patinhos inicial: ");
scanf("%d", &n);
fflush(stdin);
x = n;
while(x != 0){
printf("\n\n%d patinhos foram passear\nAlem das montanhas\nPara brincar\nA mamae gritou: Qua, qua, qua, qua\nMas so %d patinhos voltaram de la.\n", x--, x-1);
}
printf("\n\nA mamae patinha foi procurar\nAlem das montanhas\nNa beira do mar\nA mamae gritou: Qua, qua, qua, qua\nE os %d patinhos voltaram de la.", n);
getchar();
}
# include
# include
int main (void) {
int i = 0, j = 0, num;
printf("Digite um numero para ver o seu respectivo quadrado: ");
scanf("%i", &num);
while(i < num){
while(j < num){
if(i == 0 || j == 0 || i == num-1 || j == num-1){
printf("%c", '*');
} else {
printf("%c", ' ');
}
++j;
}
printf("\n");
++i;
j = 0;
}
system("pause");
return 0;
}
olá , queria saber o porque de quando eu fiz o da tabela de letras e tambem em algumas letras quando executo ao inves de aparecer a propria aparece um caractere estranho , como resolver?
#include
#include
/*7. Quadrado de asteriscos
Escreva um programa que lê o tamanho do lado de um quadrado e imprime um quadrado
daquele tamanho com asteriscos. Seu programa deve funcionar para quadrados com lados
de todos os tamanhos entre 1 e 20.*/
int main()
{
setlocale(LC_ALL,"portuguese");
int iNum,iCont1=0,iCont2=0,iNLinhas=0;
printf("Escolha um número de 1 a 20: ");
scanf("%d",&iNum);
if(iNum<=0||iNum>=21)
{
printf("Parece que você não gosta de seguir regras em, mas azar o seu!");
}
else
{
while(iCont1<iNum)
{
printf("%d ",iNLinhas+1);
while(iCont2<iNum)
{
printf("*");
iCont2++;
}
printf("\n");
iCont2=0;
iCont1++;
iNLinhas++;
}
}
return 0;
}
#include
#include
/*9. Tabuada em C
Escreva um programa que pergunta um número ao usuário, e mostra sua tabuada completa (de 1 até 10).*/
int main()
{
setlocale(LC_ALL,"portuguese");
float fNum,fCont=1,fA=1,fS=1,fD=1,fM=1;
printf("Escolha um número: ");
scanf("%f",&fNum);
while(fCont<=10)
{
printf("Adição: %.f + %.f = %.f\n",fNum,fA,fNum+fA);
printf("================================================\n");
printf("Subtração: %.f - %.f = %.f\n",fNum,fS,fNum-fS);
printf("================================================\n");
printf("Multiplicação: %.f * %.f = %.f\n",fNum,fM,fNum*fM);
printf("================================================\n");
printf("Divisão: %.f / %.f = %.2f\n",fNum,fD,fNum/fD);
fA++;
fS++;
fD++;
fM++;
fCont++;
}
return 0;
}
Meu código para a Questão 6:
#define TAM 10
int main () {
int i = 0, numero[TAM], maiorNumero = 0, maiorNumero2 = 0;
setlocale(LC_ALL, "Portuguese");
printf("\t MAIOR NÚMERO\n\n");
while (i != 10) {
printf("\n- Digite o %dº número: ", i + 1);
scanf("%d", &numero[i]);
if (numero[i] > maiorNumero) {
maiorNumero = numero[i];
}
i++;
}
i = 0;
while (i != 10) {
if (numero[i] > maiorNumero2 && numero[i] < maiorNumero) {
maiorNumero2 = numero[i];
}
i++;
}
printf("\nO maior número foi: %d", maiorNumero);
printf("\n\nO segundo maior número foi: %d", maiorNumero2);
return 0;
}
Meu código para a Questão 8:
int main () {
int i = 0, j = 0, numero = 0;
setlocale(LC_ALL, "Portuguese");
do {
printf("- Digite o tamanho do lado do quadrado: ");
scanf("%d", &numero);
if (numero < 1 || numero > 20) {
printf("\nEscreva um numero entre 1 a 20.\nTente Novamente.\n\n");
}
} while (numero < 1 || numero > 20);
printf("\n\n");
while (i < numero) {
printf("* ");
i++;
}
i = 2;
while (i < numero) {
printf("\n*");
j = 1;
while (j < numero) {
if (j == numero - 1) {
printf(" ");
} else {
printf(" ");
}
j++;
}
printf("*");
i++;
}
printf("\n");
i = 0;
while (i < numero) {
printf("* ");
i++;
}
return 0;
}
Meu código para a Questão 0:
int main () {
int numero = 0;
printf("- Digite a quantidade de patos: ");
scanf("%d", &numero);
int i = numero;
setlocale(LC_ALL, "Portuguese");
while (i != 0) {
printf("\n\n=====================================\n\n");
if (i == 1) {
printf("1 patinho foi passear\n");
} else {
printf("%d patinhos foram passear\n", i);
}
printf("Além das montanhas\n");
printf("Para brincar\n");
printf("A mamãe gritou: Quá, quá, quá, quá\n");
if (i - 1 == 0) {
printf("Nenhum patinho voltou de lá\n");
} else if (i - 1 == 1){
printf("Mas só 1 patinho voltou de lá\n");
} else {
printf("Mas só %d patinhos voltaram de lá.\n", i - 1);
}
i--;
}
return 0;
}
Uma sugestão de solução para a questão 6:
Utilizar um "laço while" dentro de outro "laço while"
----------
#include
#include
int main(void)
{
int n,
i = 1,
x = 0,
y = 0;
printf("Digite 10 numeros\n");
while (i <= 10)
{
printf("Digite o numero %d de 10: ", i);
scanf("%d", &n);
fflush(stdin);
while (x < n)
{
y = x;
x = n;
}
i++;
}
printf("========================================\n");
printf("O maior numero digitado e: %d\n", x);
printf("O segundo maior numero digitado foi: %d\n", y);
}
Questão 0 - Considerando o plural e singular
#include
int main (void)
{
int np, ni;
printf("\t Entre com um inteiro positivo \n");
scanf("%d", &np);
ni = np;
if(np < 0)
{
printf("\t O inteiro deve ser positivo \n");
}
else
{
while (np > 0)
{
if((np == 2) || (np == 1))
{
if (np == 2)
{
printf("\n %d patinhos foram passear\n Alem das montanhas\n Para brincar\n A mamae gritou: Qua, qua, qua, qua\n Mas so %d patinho voltou de la.\n\n", np, np - 1);
np--;
}
else
{
printf("\n %d patinho foi passear\n Alem das montanhas\n Para brincar\n A mamae gritou: Qua, qua, qua, qua\n Mas %d patinho voltou de la.\n\n", np, np - 1);
np--;
}
}
else
{
printf("\n %d patinhos foram passear\n Alem das montanhas\n Para brincar\n A mamae gritou: Qua, qua, qua, qua\n Mas so %d patinhos voltaram de la.\n\n", np, np - 1);
np--;
}
}
printf("\n A mamae patinha foi procurar\n Alem das montanhas\n Na beira do mar\n A mamae gritou: Qua, qua, qua, qua\n E os %d patinhos voltaram de la\n\n.", ni);
}
return 0;
}
Questao 1
#include
int main (void)
{
int n = 0;
printf("\t Os numeros pares ate 100 sao: \n");
while (n != 102)
{
printf("\t %d", n);
n+=2;
}
return 0;
}
Questão 2 - Troquei a 1 com a 2. Esta é para números impares
#include
int main (void)
{
int n = 1;
printf("\t Os numeros pares ate 100 sao: \n");
while (n != 101)
{
printf("\t %d", n);
n+=2;
}
return 0;
}
Questao 3
#include
int main (void)
{
int np = 0, ni = 1, nf = 1;
do
{
printf("\t Entre com um numero inteiro positivo");
scanf("%d", &nf);
}
while( nf < 0);
printf("\t Os numeros pares ate %d sao: \n", nf);
while (np != nf)
{
printf("\t %d", np);
np+=2;
}
printf("\n\t Os numeros impares ate %d sao: \n", nf);
while (ni != nf+1)
{
printf("\t %d", ni);
ni+=2;
}
return 0;
}
Questao 4
#include
int main (void)
{
int num_alunos;
float counter = 1, soma = 0, nota = 0;
printf("\t Entre com a quantidade de alunos da sala \n");
scanf("%d", &num_alunos);
while ( counter - 1 != num_alunos )
{
printf("\t Entre com as nota do aluno %4.0f \t", counter);
scanf("%f", ¬a);
soma = soma + nota;
counter++;
}
printf("\t Media das notas = %.2f"\n\n, soma / num_alunos);
return 0;
}
Questão 5
#include
int main (void)
{
int counter =1, number, maior;
while ( counter <= 10)
{
printf("\t Entre com 10 numeros inteiros ");
scanf("%d", & number);
if (counter == 1)
{
maior = number;
}
if (number > maior)
{
maior = number;
}
counter++;
}
printf("\t O maior numero e: %d", maior);
return 0;
}
Questão 7. Quadrado de asteriscos
#include
int main(void)
{
int lado, counter_i = 1, counter_j = 1;
printf("\tEntre com o tamanho do quadrado . Entre 1 e 20\n\n");
scanf("%d", &lado);
if ((lado < 1) || (lado > 20))
printf("\t O tamanho do quadrado deve ser entre 1 e 20\n\n");
else
{
while (counter_i <= lado)
{
while (counter_j <= lado)
{
printf("*");
counter_j++;
}
counter_j =1;
printf("\n");
counter_i++;
}
}
printf("\n\n");
return 0;
}
Questão 8. Quadrado de asteriscos e espaços em branco
#include
int main(void)
{
int lado, counter_i = 1, counter_j = 1, counter_k = 1;
printf("\tEntre com o tamanho do quadrado . Entre 1 e 20\n\n");
scanf("%d", &lado);
if ((lado < 1) || (lado > 20))
printf("\t O tamanho do quadrado deve ser entre 1 e 20\n\n");
else
{
while (counter_i <= lado)
{
if ((counter_i == 1) || (counter_i == lado))
{
while (counter_j <= lado)
{
printf("*");
counter_j++;
}
counter_j = 1;
printf("\n");
}
else
{
printf("*");
while (counter_k <= lado - 2)
{
printf(" ");
counter_k++;
}
printf("*");
counter_k = 1;
printf("\n");
}
counter_i++;
}
}
printf("\n\n");
return 0;
}
9. Tabuada completa (de 1 até 10).
#include
int main (void)
{
int num;
printf("\t Entre com um numero de 1 a 10 para saber qual é sua Tabuada \n");
scanf("%d", &num);
if(num <= 0)
printf("\t O numero deve estar entre 1 e 10 \n");
else
{
printf("\t Tabuada de %d \n\n", num);
printf("\t 0 x %d = %d\n", num, 0 * num);
printf("\t 1 x %d = %d \n", num, 1 * num);
printf("\t 2 x %d = %d \n", num, 2 * num);
printf("\t 3 x %d = %d \n", num, 3 * num);
printf("\t 4 x %d = %d \n", num, 4 * num);
printf("\t 5 x %d = %d \n", num, 5 * num);
printf("\t 6 x %d = %d \n", num, 6 * num);
printf("\t 7 x %d = %d \n", num, 7 * num);
printf("\t 8 x %d = %d \n", num, 8 * num);
printf("\t 9 x %d = %d \n", num, 9 * num);
}
return 0;
}
Questao 10. Tabela ASCII em C
#include
int main (void)
{
int counter = 0;
printf("\t\t\t Tabela ASCII \n");
printf("\t\t\t Decimal Caracter \n\n");
while (counter <= 255)
{
printf("\t\t\t %d \t %c \n", counter, counter);
counter++;
}
}
Questao 10. Tabela ASCII em C
#include
int main (void)
{
int counter = 0;
printf("\t\t\t Tabela ASCII \n");
printf("\t\t\t Decimal Caracter \n\n");
while (counter <= 255)
{
printf("\t\t\t %d \t %c \n", counter, counter);
counter++;
}
}
Exercicio 5
#include "math.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "locale.h"
int main()
{
char *caractere; // usado para declarar um ponteiro que segura o buffer do teclado
setlocale(LC_ALL, "Portuguese"); // Insira essa linha para ter acentos(cuidado ao usar float, ao inves de usar '.' use ',' entre numeros)
int n = 0;
int x = 0; // quantidade de iterações
int soma = 0; // usada para reter valor de n para adquirir soma, media etc
int maior, menor;
maior = -999; //começa com o menor numero possivel (acredite, esta correto)
menor = 999; //começa com o maior numero possivel
printf("\tDigite 10 números \n");
while (x < 10)
{
printf("\t");
scanf("%d", &n);
if (n < menor)
menor = n;
else if (n > maior)
maior = n;
soma = soma + n;
x++;
scanf("%c", &caractere); //limpa o buffer da tecla enter
fflush(stdin); //limpa o buffer do enterde usar qualquer dois dois nesse caso)
}
printf("Número maior vale:% d, menor vale: %d. Média vale %d.", maior, menor, soma / 10);
scanf("%c", &caractere);
return 0;
}
melhor site para aprender C
O exercício dos quadrados/retângulos não preenchidos eu tive bastante dificuldade. Eu sei que o enunciado pedia quadrado, mas, para aumentar a dificuldade, eu fiz com que o usuário pudesse escolher a largura e a altura. Segue código. Gostaria muito de críticas. :)
#include
int main(void)
{
unsigned int alt, base, cont_alt=1, cont_base=1;
printf("EDITOR DE RETANGULO/QUADRADO\n\n");
printf("Largura: ");
scanf("%d", &base);
printf("Altura: ");
scanf(" %d", &alt);
printf("\n");
if (alt>15 || base>50)
printf("Medidas invalidas (Max. 50x15)");
else
{
while(cont_alt<=alt)
{
while(cont_alt==1 || cont_alt==alt)
{
printf("\n");
cont_base=1;
while(cont_base<=base)
{
printf("*");
cont_base++;
}
cont_alt++;
}
while (cont_alt<alt)
{
cont_base=1;
printf("\n*");
cont_base++;
while (cont_base<base)
{
printf(" ");
cont_base++;
}
printf("*");
cont_alt++;
}
}
}
return 0;
}
Ele tá sumindo com 2 Patos de cada vez
Fiquei umas meia hora pensando e tentando só mostrar números impares na tela, ai do nada eu pensei: é só ao invés de acrescentar mais 1 eu acrescento mais 2 ai a soma sempre resulta em impar zzzzzz, extremamente simples
int main(void)
{
int num = 1;
while (num<=100) {
{printf("%5d", num);}
num++; num++;
}
}
No terceiro exercicio eu separei eles de verdade:
int main(void)
{
int cont=1,cont1=1, ne;
printf("Digite o numero:");
scanf("%d", &ne);
while (cont<=ne) {
if ((cont%2)==0){
printf("%5d", cont); }
cont++; }
printf("\n\n");
while (cont1<=ne) {
if ((cont1%2)==1) {
printf("%5d", cont1);}
cont1++;
}
Postar um comentário