2016-04-16 21 views
-7

我寫這說明最大輸入的數字的代碼,但運行時,它會返回一個看似隨機數,下面我的代碼:C程序不工作

#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; 
} 

運行,當它返回:

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

你能告訴我我做錯了什麼嗎? 感謝 數量最多的是-1536115152

+1

的%d格式printf不期望指向一個整數的指針,它期望一個整數。所以你的printf實際上是將一個指針值作爲一個整數來打印。 – sisyphus

+0

從此鏈接學習http://www.programiz.com/c-programming/examples/largest-number-ree –

+0

它像以前一樣返回,但'最大數字'現在是-831125744 –

回答

0

你爲什麼寫這條線largest = nvalue;? 而你的if-else if命令完全錯誤。 試試這個代碼:

#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

這很有效地謝謝你! –

+1

歡迎,但我認爲你應該多學習一點C編程,因爲代碼中有很多錯誤。 –

+0

我對這門語言仍然很陌生,在大學時做過,但我的講師並不是很有幫助,所以盡我所能努力學習。 –

1

printf避免&,它返回變量的地址。

+0

有了這個它的一些進步,但返回34而不是最大的這是最大的 –

+0

你的條件是錯誤的。嘗試實施以下邏輯。將第一個變量存儲在一個臨時變量中,並與第二個變量進行比較。如果temp小於第二個數字,則用第二個數字更新temp,然後對第三個第四個數字執行相同操作。記住:爲了學習的目的,最好的方法是讓你的邏輯。 – shafeeq

+0

上述邏輯可以用於任何數量的變量。親自試一試..最好的祝願 – 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

代碼應該是良好的格式化e.g代碼裏面大括號({})應適當縮進(這使得它更易於閱讀你的代碼)。

#include <stdio.h> 

int main(int argc, char *argv[]) 
{ 

變量應該是描述性的(如果其他人正在閱讀您的代碼,這會有幫助)。

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

換行符('\ n)不是必需的,除非您希望scanf將換行符作爲輸入的一部分。

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

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

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

這是一個更清潔,更簡單的檢查,看哪個是最大的數字。

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; 
} 

我還建議閱讀這本書The C Programming Language 2nd Edition和閱讀一些在線教程

(從上面Rishav Choudhuri's代碼取)也一定要寫大量的代碼,以及:d