2016-07-25 7 views
-2

Was ist falsch mit meinem Code? Es gibt immer die letzte Zahl zurück, aber nicht die größte? Ich habe die letzte halbe Stunde verbrachte meinen Kopf & Kratzen Ich kann immer noch nicht finden, was hier los ist ..Größte unter zehn Zahlen mit Arrays

Bitte helfen

// Largest among ten numbers 

#include <stdio.h> 
#include <conio.h> 

int num[10],large,b; // Global Variables 
int largest(int a); // Function protype 

int main() 
{ 
    for(int i=0;i<5;i++) 
    { 
     printf("Enter number %d = ",i+1); 
     scanf("%d",&num[i]); 
     large = largest(num[i]); // Calling Function 
     /* 
      printf("Num(%d)= %d",i,num[i]); // Testing 
      printf("\nLargest for now = %d\n\n",large); // Testing 
     */ 
    } 
    printf("\n\n\n%d is the largest",large); 
    getch(); 
} 

int largest(int a) // Function definition 
{ 
    if (a>=b) 
     { 
      return a; 
      b=a; 
     } 
    else 
     { 
      return b; 
     } 
} 
+2

Sie vergleichen immer die eingegebene Zahl mit der Konstanten '0'. Was versuchst du mit der 'größten' Funktion zu machen? –

+0

Okay, ein dummer Fehler. Ich setze int b = 0 an die Spitze. Jetzt ? Was ist los mit dir ? Ich vergleiche die Nummer mit der vorherigen Nummer b. – Aditya

Antwort

1

Das Problem ist hier:

if (a>=b) 
    { 
     return a; 
     b=a; 
    } 

Sie Rückkehr vor dem Zuweisen, also ist b immer 0. Beende einfach die Zuordnung vor der Rückkehr ie

Demo

+0

Aber ist 'b' nicht bereits in der ersten Schleife zugewiesen? In der For-Schleife Iteration wenn i = 0, sagen wir a = 5, dann b wird 5. zugewiesen, wenn i = 1, sagen wir a = 9, aber da b bereits zugewiesen ist sollte 9 (a) mit b (5)? Sorry, wenn das eine dumme Frage ist. Ich bin neu im Programmieren. – Aditya

Verwandte Themen