2016-09-20 32 views
0

摘要打印无符号整数数组和退出循环

我希望能够编写可以让我保存10值的功能。我应该能够通过0退出循环而不将0存储到阵列。我应该可以重新输入数组并继续存储,直到获得10值。

问题

  1. 我开始写一些简单的,但是当我像存储值5它会打印出5值,然后一些随机数。这是为什么?

  2. 我怎样才能退出循环没有数组存储0

我对这个东西很新,所以我希望我在这里正确地遵循了规则。

代码

#include <stdio.h> 

int main(void) 
{ 
    int arrayTable[9] = {0}; 
    int i; 

    for (i=0; i<10; i++) 
    { 
     printf("Enter Measurement #%i (or 0): ", i+1); 
     scanf("%d", &arrayTable[i]); 
     if (arrayTable[i] == 0) 
     { 
      break; 
     } 
    } 

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

    return 0; 
} 
+2

要开始,'int arrayTable [9]'不能包含10个值。另一件事,即使您只输入5个值,输出循环也会打印10个值。其余的将有未定义的值,特别是'arrayTable [9]'如前所述。第二个(输出)循环,试试'for(int j = 0; j

+0

这个效果会说我想计算最小值,最大值和平均值?我怎样才能打印存储的值,而不是所有的0? – xxFlashxx

+0

@WeatherVane'int arrayTable [9] = {0};'初始化整个数组(9个值)为0. –

回答

0

只要你想从数组丢弃0然后使用一个临时变量,输入它,检查是否它是一个非零值,如果是这样,则将其存储到数组元素中,如果它是零则退出循环:

#include <stdio.h> 

int main(void) 
{ 

    int arrayTable[10] = {0}; 
    int iValue   = 0; 
    int i    = 0; 

    while(i < 10) 
    { 
     printf("Enter Measurement #%i (or 0): ", i+1); 
     scanf("%d", &iValue); // input iValue 

     if (!iValue) // if iValue is zero then exit loop without affecting array with this value 
      break; 
     else 
     { 
      arrayTable[i] = iValue; // if the value is non-zero store it in array and continue 
      i++; 
     } 
    } 

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

    return 0; 
} 
+0

7,谢谢!这对我最有意义! – xxFlashxx

+0

@亚历克斯欢迎!并感谢您将其标记为已接受的答案 – Raindrop7

+1

轻微:不需要'else'。好的做法是检查scanf()的返回值。 – chux

0

您probbaly想这样的:

... 
    int arrayTable[10] = {0}; // <<< [10] instead of [9] 

    ... 

    for (i=0; i<10; i++) 
    { 
     if (arrayTable[i] == 0) // <<< add this 
     break;    // <<< 

     printf("%d\n", arrayTable[i]); 
    } 
    ... 
+1

如果我写所有10个值。它将打印11个值,最后一个是随机数。我怎么能只打印10个值没有第11个值 – xxFlashxx

+0

@Alex我不知道这个代码如何能够打印11个值而不是10个.' for(i = 0; i <10; i ++)'将循环'i'从0到9,这是10个值。 –

+0

不,你是对的,我有点不清楚。我指的是外部循环'(int j = 0; j xxFlashxx

1
#include <stdio.h> 

#define ArraySize 10 

int main(void){ 
    unsigned v, arrayTable[ArraySize] = {0}; 
    int n = 0;//number of elements 

    while(n < ArraySize){ 
     printf("Enter Measurement #%i (or 0): ", n + 1); 
     if(1 != scanf("%u", &v) || v == 0){//use other variable 
      break; 
     } 
     arrayTable[n++] = v; 
    } 

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

    return 0; 
}