2017-09-23 71 views
-2

我試圖打印數組,但它不起作用我得到的輸出不同於用戶輸入的數字。 PS:我需要在for循環之外打印它。 額外的問題:如何重置用戶輸入的數字? (代碼)我無法在「for循環」外打印我的陣列

#define LENGTH 10 
int main(){ 
    int measurements[LENGTH]; 
    int x; 

    for(x=0; x<LENGTH; x++){ 
    printf("Enter number #%d: ", x+1); 
    scanf("%d", &measurements[x]); 

    if(measurements[x]==0){ 
     break; 
    } 


    } 
     printf(" %d ", measurements[x]);//won't work 
    return 0; 
} 
+2

scanf()返回一個值 - 你應該檢查它。 –

+0

@MartinJames你是什麼意思? – Zuzu

+0

你期望的行爲是什麼? – leyanpan

回答

0
#include<stdio.h> 
#include<stdio.h> 
#define LENGTH 5 
int measurements[LENGTH]; 
int x,y,i; 
void abc(); 
int main(){ 
abc(); 
printf("1 to reset,0 to not"); 
scanf("%d",&y); 
if(y == 1){ 
abc(); 
} 
else{ 
    printf("BYE!"); 
} 
} 
void abc(){ 
for(x = 0; x < LENGTH; x++){ 
printf("Enter number #%d: ", x + 1); 
scanf("%d", &measurements[x]); 
} 
for(i = 0 ; i < x ; i++){ 
printf("\n%d\n ", measurements[i]); 
} 
} 

這將重置由用戶輸入的號碼和要打印數組的元素。

+1

你不應該建議遞歸地調用'main'。在大多數情況下這樣做並不是一個好主意。 – mch

+0

除了使用main()之外,請建議一種新的方法來做到這一點。 @mch –

+0

如果你想重複做一些事情,你可以使用'while'循環:https://ideone.com/V5QmNR – mch

1

,如果你要打印的數組:

int i; 
for (i = 0; i < x; i++){ 
    printf("%d\n", measurements[i]); 
} 

代碼:

#define LENGTH 10 
int main(){ 
    int measurements[LENGTH]; 
    int x, i; 

    for(x=0; x<LENGTH; x++){ 
     printf("Enter number #%d: ", x+1); 
     scanf("%d", &measurements[x]); 

     if(measurements[x]==0){ 
      break; 
     } 
    } 


    /* 
    *this for loop will print the array 
    *till the index where 0 is entered. 
    *it will not print 0 
    */ 

    printf("\nHere are your measurements:\n"); 
    for(i = 0; i < x; i++){ 
     printf("%d\n", measurements[i]); 
    } 

    /*reset part*/ 
    for(i = 0; i < LENGHT; i++){ 
     measurements[i] = 0; 
    } 

    return 0; 
} 

你也可以使用memset從string.h中,而不是重置一部分。

measurements = memset(measurements, 0, 10); 

還要記住:沒有這樣的東西在C作爲空數組/ reseted陣列,它只是取決於你定義爲空什麼/重置數組元素的值。即使您不將數組中的0設置爲0仍然爲空透視圖

+0

是的!非常感謝你 – Zuzu

+0

接受它作爲回答:) – DevX