2013-09-16 31 views
2

我想要一個程序,可以從用戶處獲得兩個整數,並將這些輸入的總和放在一個變量中,然後檢查總和是否超過5個? (我知道我可以用,但是我想用它來做)。我自己做的,但它有一些問題,你會介意說什麼是問題,我該如何調試它?這裏是我的代碼:用C語言接收兩個輸入

#include <stdio.h> 
int main() 
{ 
    int ui1; 
    int ui2; 
    puts("Please enter two numbers:"); 
    scanf("%2i", &ui1, &ui2); 
    int sum; 
    sum = ui1+ui2; 
    while(sum > 5) { 
     printf("Whats up !"); 
    } 
    return 0; 
} 
+0

編輯,請再看看。 – InJecTable

+3

scanf格式參數應該是「%i%i」,而不是表示兩位整數的「%2i」。 – Eimantas

+0

要調試一個應該使用GDB,只需鍵入gdb <程序二進制>,然後鍵入開始。 'next'將使程序的下一行運行,並且你可以輸入'print a'來打印a的值。 –

回答

0

我不知道,我得到了你想要做什麼......但如果你只是想用while語句來檢查兩個整數的總和,你可以把一個破發在whi裏面樂圈,一切都將工作:)

#include <stdio.h> 
int main() 
{ 
    int ui1; 
    int ui2; 
    puts("Please enter two numbers:"); 
    scanf("%2i", &ui1, &ui2); 
    int sum; 
    sum = ui1+ui2; 
    while(sum > 5) { 
     printf("Whats up !"); 
     break; 
    } 
    return 0; 
} 

正如其他人告訴你,使用,如果是最好的解決辦法

6

本專線爲1點整隻掃描(%i2格式,表示只需要2個數字。):

scanf("%2i", &ui1, &ui2); 

但似乎你希望收到兩個整數。
這將使第二個參數ui2未初始化。
(應填ui1成功,至少)

嘗試,而不是:

scanf("%i %i", &ui1, &ui2); 
+2

爲了詳細說明abelenky的答案,這是非常正確的,請請參閱K&R第2版中的第7.4節。 – Turin

1

您需要重置「求和」,否則while循環將是真正的永恆。 其次輸入scanf是完全錯誤的。

這裏正確的代碼

#include <stdio.h> 
int main() 
{ 
    int ui1; 
    int ui2; 
    puts("Please enter two numbers:"); 
    scanf("%d %d", &ui1, &ui2); 
    int sum; 
    sum = ui1+ui2; 
    while(sum > 4) { printf("Whats up !"); 
    sum=0;} 
    return 0; 
} 
+4

您的循環仍將永久運行。更何況你還只是讀一個整數。 –

+0

哦,你沒錯。我怎麼能阻止它?或再次啓動程序? – InJecTable

+0

您可以在while循環中放入另一組'scanf(,);'和'sum = ui1 + ui2;'語句系列,這樣ui1和ui2的值將被更新,並且循環將不再是無限的。 – ryyker

1

其實同時是一個循環語句不是條件檢查

如果你想有條件的檢查使用IF ... ELSE系列,交換機等

注意:在你的代碼循環啓動if(sum> 5)並且永不結束(infinate「Wha TS了!「)

sum = ui1+ui2; 
while(sum > 5) ///loop starts if (sum > 5) and never ends (infinate "Whats up !") 
{ 
    printf("Whats up !"); // (infinate "Whats up !") 
} 

    if(sum > 5) 

    { 

    //greater stuff 
    } 

    else 

{ 

    //lower stuff 
} 

參見教程這裏conditionals Stmts

2

嘗試包括scanf函數聲明進入死循環,這將不再是一個無限循環......(還需要取消引用整數見EDIT)

#include <stdio.h> 
int main() 
{ 
    int ui1; 
    int ui2; 
    puts("Please enter two numbers:\n"); 
    //scanf("%2i", &ui1, &ui2); 
    int sum = 10;//(so that it will enter the loop at least once) 
    //sum = ui1+ui2; 
    while(sum > 4) 
    { 
     printf("enter number 1:\n"); 
     scanf("%i", &ui1); //EDIT & 
     printf("enter number 2:\n"); 
     scanf("%i", &ui2); //EDIT & 
     sum = ui1+ui2;   
    } 
    printf("result is: %d\n", sum); 
    getchar();//so you can see the result; 
    getchar(); 
    return 0; 
} 
+1

我可以向下選舉者請求投票原因嗎?代碼工作並說明了解決OP問題的答案。 – ryyker