2015-10-20 56 views
0

如果您找到N個個案(y)之間的所有偶數,我想要編碼。接下來的y行將包含一個n數(1 < = n1 < = 100)。對於每一行我想找到它們之間的偶數。因此,例如:查找C中N個個案之間的偶數N

input: 
2 (number of cases; 1<=y<=10) 
1 
7 
Output: 
No even numbers 
2 4 6 

如果他們之間沒有連號,然後打印「無連號」,例如:

所以我做了到現在爲止是這樣的:

#include <stdio.h> 
int main() 
{ 
    int n1, n2, i, j, p, y; 
    printf("number of intervals: "); 
    scanf("%d", &y); 
    for(j=1; j<=y; j++) 
    { 
     scanf("%d", &n1); 
     for(i=1;i<=n1; i++) 
     { 
      p=i%2; 
      if(p==0) 
       printf(" %d", i);  
     } 
     return 0; 
    } 
} 

問題是我不知道如何實現代碼的間隔數,它只能用於兩個間隔。

+0

如果您可以更詳細地解釋'2 1 7'如何導致'2 4 6',這將大大幫助我們幫助你:-)它*看起來像你在'1'和'7'之間產生偶數但肯定這只是一個案件而不是兩個案件。 – paxdiablo

+2

你在''for''循環外部有'return'聲明。這會導致程序在第一次迭代之後終止。將'return'移到循環外部。 – kaylum

+0

@paxdiablo我對這個問題的理解是,第一個值表示後續輸入的數量。然後,對於每個後續輸入n,OP要打印範圍[1-n]中的偶數。所以在給出的例子中會有2個後續數字。第一個數字「1」在間隔中沒有偶數。第二個數字「7」在相應的間隔中具有偶數「2,4,6」。 – kaylum

回答

0

它總是一個好主意,使一個功能,如果你想要做類似的事情,用不同的values.You可以使一個函數並調用它儘可能多的時間,因爲你need.For例如

void printInterval(int n1, int n2){ //function will print all even 
    for(i=n1;i<=n2; i++)//number between n1 and n2 (both inclusive) 
    { 
     p=i%2; 
     if(p==0) 
     printf(" %d", i); 

    } 
} 
+0

很好的建議。但不知道這是如何回答真正的問題。 – kaylum

+0

您在main中輸入間隔開始和結束點,然後調用printInterval(int,int)函數打印該間隔中的所有偶數。 – Khatri

+0

對。但這不是OP要求的。 OP在問爲什麼顯示的代碼不起作用。你所提供的是代碼重組。 – kaylum