2017-10-14 4 views
0

J'ai un programme où six nombres sont entrés dans un tableau puis les sortir vers l'arrière et si le numéro 26 est trouvé imprimé trouvé 26. mon problème est je pense J'ai ma déclaration if au mauvais endroit parce que peu importe ce que je saisis dans le tableau, il imprime trouvé 26. Quelqu'un peut-il m'aider et me dire ce que j'ai mal fait? #includeoù dois-je ajouter une instruction if dans mon programme pour trouver un certain nombre

 int main() 
     { 
      int array[6]; 
      int x; 
      int number=26; 

     printf("Enter six numbers.\n\n"); 

     for(x = 0; x < 6; x++) { 
     printf ("Enter a number : ", x+1); 
     scanf ("%d",&array[x]); 

     if (number=26); 
     { 
      printf("FOUND 26!"); 
     } 

     } 

     for(x = 6; x > 0; x--) 
    { 



     printf("The numbers backwards are:"); 
     printf("%d\n", array[x- 1]); 

    } 


     return 0; 
    } 
+2

1. La comparaison nécessite un double '==' 2. supprimer le point-virgule après 'if':' if (nombre = 26); '->' if (nombre == 26) {'. – usr

+0

Vous assignez 26 à 'number', puis n'utilisez plus cette variable jusqu'à l'instruction if (qui est aussi une affectation dans votre code). Bien sûr, il imprimera "FOUND 26". – waka

+0

@victoriatibbs Dites juste à la place de l'ordinateur: "Trouvé!" et n'utilise pas de déclaration if. :) –

Répondre

1

Ces déclarations

if (number=26); 
    { 
     printf("FOUND 26!"); 
    } 

peut être équivalente réécrite comme

if (number=26) /* null statement */; 

    // separate compound statement 
    { 
     printf("FOUND 26!"); 
    } 

En outre, dans l'état de l'instruction if on utilise affectation number=26 au lieu de comparaison number == 26.

Et encore plus, si vous écrirez la comparaison et de supprimer le point-virgule comme celui-ci

if (number == 26) 
    { 
     printf("FOUND 26!"); 
    } 

la déclaration n'a pas de sens, car évidemment number est égal à 26, car il a d'abord été initialisé de telle manière.

Je pense que vous devez envoyer le message lorsque le tableau est sorti dans l'ordre inverse. Le code peut ressembler à

 const int N = 26; 

    printf("Enter six numbers.\n\n"); 

    for(x = 0; x < 6; x++) { 
    printf ("Enter a number : ", x+1); 
    scanf ("%d",&array[x]); 
    } 

    printf("The numbers backwards are:"); 

    for(x = 6; x > 0; x--) 
    { 
     printf("%d\n", array[x- 1]); 
     if (array[x-1] == N) 
     { 
      printf("FOUND %d!\n", N); 
     } 
    } 
2

Vous devez utiliser: if (number == 26) au lieu de if(number = 26).

La première est une comparaison tandis que la seconde est une affectation qui renvoie toujours Vrai.

En outre, vous avez une erreur ; après les if

+0

merci je l'ai changé le code il dit toujours trouvé 26 entrer un nombre – victoriatibbs

1

Vous avez utilisé if (number=26);. Ce que vous devez utiliser est if(number == 26)

Le = est un opérateur d'affectation, tandis que le == est un opérateur de comparaison.

L'utilisation d'un ; après une instruction if est incorrecte car le compilateur le considère comme une instruction vide.