2017-09-23 62 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