2015-07-20 62 views
-9

給出一個整數序列作爲輸入,以-1結尾。 (也就是說,輸入整數可能是正值,負值或0.輸入信號中的-1表示輸入信號結束。)在不使用數組的情況下查找第二高的數字

-1不被視爲輸入的一部分。

查找輸入中的第二大數字。你不能使用數組。

測試用例通過,但成績是0.0

下面的代碼在你途中的價值

int main() 
{ 
    int a=-32768,b=-32768,temp=-32768; 
    while(1) 
    { 
     scanf("%d",&a); 
     if(a==-1) 
      break; 
     else if(a>0) 
     { 
      temp=b; 
      b=a; 

     } 
     else 
     { 
      if(a>b) 
      { 
       temp=b; 
       b=a; 
      } 
      else 
      { 
       temp=b; 
      } 
     } 

    } 
    printf("%d",temp); 
    return 0; 
} 
+0

這看起來像家庭作業。到目前爲止您嘗試過什麼,哪些不起作用? –

+0

您的代碼不適用於像這樣的非常簡單的輸入::'7 6 3 4 1 2 3 5 -1'預期的輸出'6'您的代碼輸出'3'http://ideone.com/yHacZG – user007

+0

在你的if-else語句中。通過一個像user007發佈的例子來工作,看看發生了什麼,因爲你的語句是如何構造的。你很少進入外部'if-else'鏈的最後部分,你看到了嗎? – birryree

回答

2

空頭支票。 例如,像這樣

#include <stdio.h> 

#define EOI -1 //End Of Input 

int main(void){ 
    int input, first, second; 

    first = second = EOI; 

    while(1){ 
     if(1 != scanf("%d", &input)){ 
      fprintf(stderr, "invalid input!\n"); 
      return -1; 
     } 
     if(input == EOI) 
      break; 
     if(first == EOI){ 
      first = input; 
     } else if(first <= input){ 
      second = first;//slide 
      first = input; 
     } else if(second == EOI || second < input){ 
      second = input; 
     } 
    } 
    if(second == EOI){//first == EOI || second == EOI 
     fprintf(stderr, "No valid value is entered more than one!\n"); 
     return -2; 
    } 
    printf("%d\n", second); 
    return 0; 
} 
相關問題