2016-04-16 5 views
-7
arbeiten

ich einen Code ich schreibe, die die größte der eingegebenen Zahlen zeigt, aber wenn es gibt eine scheinbar zufällige Zahl laufen, meinen Code unten:C-Programm nicht

#include <stdio.h> 

int main() { 
    int largest; 
    int nvalue; 
    int no1, no2, no3; 

    printf("Enter value of n:"); 
    scanf("%d\n", &nvalue); 

    printf ("Number1:"); 
    scanf("%d\n", &no1); 

    printf("Number2:"); 
    scanf("%d\n", &no2); 

    printf("Number3:"); 
    scanf("%d\n", &no3); 

    largest == nvalue; 
    if (no1 > nvalue) { 
     printf ("The largest number is:%d\n", &no1); } 
    else if (no2 > nvalue) { 
     printf("The largest number is %d\n", &no2); } 
    else if (no3 > nvalue) { 
     printf("The largest number is %d\n", &no3); } 
    else { 
     printf("The largest number is %d\n", &largest); } 

    return 0; 
} 

wenn führen Sie es zurück:

Enter value of n:3 
3 
Number1:34 
Number2:89 
Number3:54 

Können Sie mir sagen, was ich falsch mache? Dank Die größte Zahl -1536115152

+1

Die% d Format in printf erwartet keinen Zeiger auf eine ganze Zahl, sondern erwartet eine ganze Zahl. Ihre Drucke drucken also einen Zeigerwert als Integer. – sisyphus

+0

Erfahren Sie von diesem Link http://www.programiz.com/c-programming/examples/largest-number-three –

+0

Es kehrt wie zuvor zurück, aber die "größte Nummer" ist jetzt -831125744 –

Antwort

0

Warum schreiben Sie diese Zeile largest = nvalue;? Und Ihre Wenn-sonst, wenn Befehle völlig falsch sind. Versuchen Sie diesen Code:

#include <stdio.h> 

int main(){ 
    int largest = 0; 
    int no1, no2, no3; 

    printf("Number1: "); 
    scanf("%d", &no1); 

    printf("Number2: "); 
    scanf("%d", &no2); 

    printf("Number3: "); 
    scanf("%d", &no3); 

    if ((no1 > no2) && (no1>no3)){ 
     largest=no1; 
    } 
    else if ((no2 > no1) && (no2>no3)) { 
     largest=no2; 
    } 
    else { 
     largest=no3; 
    } 
    printf("The largest number is:%d", largest); 

    return 0; 
} 
+0

Das funktioniert fantastisch danke! –

+1

Willkommen, aber ich denke, Sie sollten C-Programmierung mit ein wenig mehr Aufwand lernen, weil es viele Fehler in Ihrem Code gab. –

+0

Ich bin immer noch sehr neu in der Sprache, mache es an der Universität, aber mein Dozent ist nicht sehr hilfreich, also versuche ich es selbst so gut wie möglich zu lernen. –

1

Vermeiden & in printf ist, gibt es Adresse dieser Variablen.

+0

Mit diesem ist ein gewisser Fortschritt, aber die Rückkehr 34 statt 89, die die größte ist –

+0

Ihre Bedingungen sind falsch. Versuchen Sie, die folgende Logik zu implementieren. Speichern Sie die erste Variable in einer temporären Variable, cimpare sie mit der zweiten. Wenn temp kleiner als die zweite Nummer ist, dann aktualisiere temp mit second und mach dasselbe für die dritte und vierte Nummer. Erinnern Sie sich: zu Lernzwecken ist der beste Weg, Ihre Logik zu machen. – shafeeq

+0

Die obige Logik kann für eine beliebige Anzahl von Variablen implementiert werden. Probieren Sie es selbst aus ... die besten Wünsche – shafeeq

0
#include <stdio.h> 
#include <limits.h> 

int main(void) { 
    int largest = INT_MIN; 
    int n, value; 
    int i; 

    printf("Enter value of n:");//fflush(stdout); 
    scanf("%d", &n); 

    for(i = 1; i <= n; ++i){ 
     printf ("Number%d:", i);//fflush(stdout); 
     if(1 != scanf("%d", &value)){ 
      printf("invalid input!\n"); 
      while(getchar() != '\n');//clear input 
      --i; 
      continue; 
     } 
     if(value > largest) 
      largest = value; 
    } 
    printf("The largest number is %d\n", largest); 

    return 0; 
} 
1

-Code sollte gut beispiel Code in geschweiften Klammern formatiert werden ({}) sollten richtig eingezogen werden (dies macht es einfacher, den Code zu lesen).

Variablen sollten beschreibend sein (hilfreich, wenn andere Personen Ihren Code lesen).

int largest = 0; 
    int num1 = 0, num2 = 0, num3 = 0; 

Die Newline-Zeichen ('\ n) ist nicht erforderlich, es sei denn, Sie scanf wollen das Newline-Zeichen als Teil Ihrer Eingabe zu übernehmen.

printf("Enter the first number : "); 
    scanf("%d", &num1); 

    printf("Enter the second number : "); 
    scanf("%d", &num2); 

    printf("Enter the third number : "); 
    scanf("%d", &num3); 

Dies ist ein viel sauberer und einfacher zu überprüfen, welche die größte Zahl ist. (Aus Rishav Choudhuri's Code oben)

if (num1 > num2 && num1 > num3) 
    { 
     largest = num1; 
    } 
    else if (num2 > num1 && num2 > num3) 
    { 
     largest = num2; 
    } 
    else 
    { 
     largest = num3; 
    } 

    printf("The largest number is : %d", largest); 

    return 0; 
} 

Ich empfehle dieses Buch auch The C Programming Language 2nd Edition Lesen und Lesen einige Tutorials online

auch sicher sein, viel Code zu schreiben, wie gut: D