Ir ao conteúdo

Posts recomendados

Postado

Olá, me chamo Estefhane e estou iniciando o aprendizado em linguagem C. Na minha lista de exercícios, tinha a seguinte questão:

Faça um programa que leia um numero positivo N e imprima todos os numeros naturais de  0 até N em ordem crescente. 

 

Encontrei algumas maneiras de responder essa questão, porém encontrei problemas para imprimir o numero 0.

 

Usando o comando while, o programa começa a imprimir do 1:

 

#include <stdio.h>
#include <stdlib.h>
int main (){
    int a, n;
    printf ("digite um  numero\n");
    scanf ("%d", &n);
    a=0;
    while (a<=n){
         a++;
        printf ("%d\t", a);
        }
    system ("pause");
    return 0;
}

usando o comando for, o programa imprime do 0:

#include <stdio.h>
#include <stdlib.h>
int main (){
    int a, n;
    printf ("digite um  numero\n");
    scanf ("%d", &n);
    for (a=0; a<=n; a++){
        printf ("%d\t", a);
        }
    system ("pause");
    return 0;
}


Alguém pode me explicar porque isso acontece?


 

  • Curtir 1
Postado

é simples atribua o valor -1 a variavel n e então ele passará pelo zero 

#include <stdio.h>
#include <stdlib.h>
int main (){
    int a=-1;
	int n;
    printf ("digite um numero\n");
    scanf ("%d",&n);
    while (a<n){
         a++;
        printf ("%d\t", a);
        }
    system ("pause");
    return 0;
}

 

  • Curtir 1
  • Obrigado 1
Postado
3 minutos atrás, Herbertbahia disse:

é simples atribua o valor -1 a variavel n e então ele passará pelo zero 


#include <stdio.h>
#include <stdlib.h>
int main (){
    int a=-1;
	int n;
    printf ("digite um numero\n");
    scanf ("%d",&n);
    while (a<n){
         a++;
        printf ("%d\t", a);
        }
    system ("pause");
    return 0;
}

 

Obrigada pela resposta!, porém a minha dúvida é porque usando o comando for o numero 0 é escrito e usando o mesmo código com while o 0 não é escrito.

adicionado 1 minuto depois
2 minutos atrás, AdrianoSiqueira disse:

Ou poderia acrescentar a variável a depois de imprimir seu valor.


while (a <= n) {
    printf("%d\t", a);
    a++;
}

 

Agora eu entendi. Obrigada!

Postado
16 horas atrás, Estefhane disse:

Olá, me chamo Estefhane e estou iniciando o aprendizado em linguagem C. Na minha lista de exercícios, tinha a seguinte questão:

Faça um programa que leia um numero positivo N e imprima todos os numeros naturais de  0 até N em ordem crescente. 

 

Encontrei algumas maneiras de responder essa questão, porém encontrei problemas para imprimir o numero 0.

 

Usando o comando while, o programa começa a imprimir do 1:

 


#include <stdio.h>
#include <stdlib.h>
int main (){
    int a, n;
    printf ("digite um  numero\n");
    scanf ("%d", &n);
    a=0;
    while (a<=n){
         a++;
        printf ("%d\t", a);
        }
    system ("pause");
    return 0;
}

usando o comando for, o programa imprime do 0:


#include <stdio.h>
#include <stdlib.h>
int main (){
    int a, n;
    printf ("digite um  numero\n");
    scanf ("%d", &n);
    for (a=0; a<=n; a++){
        printf ("%d\t", a);
        }
    system ("pause");
    return 0;
}


Alguém pode me explicar porque isso acontece?


 

 

Acontece porque no while você optou por somar -- a++  -- antes de imprimir e no for você não tem essa abertura criativa e

  • primeiro atribui --- a = 0
  • depois testa a condição --- a <=n
  • depois executa o loop, e acaba imprimindo
  • depois executa a terceira parte que é o incremento -- a++. Mas aí já imprimiu
  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...