打印无符号数组并退出循环

时间:2016-09-20 18:14:40

标签: c arrays loops

摘要

我希望能够编写一个可以让我存储10值的函数。我应该能够使用0退出循环而不将0存储到数组中。我应该能够重新输入数组并继续存储,直到我得到10值。

问题

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

  2. 如何在没有存储0的数组的情况下退出循环?

  3. 我对这些东西很陌生,所以我希望我在这里正确遵守规则。

    代码

    #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;
    }
    

3 个答案:

答案 0 :(得分:1)

k

答案 1 :(得分:0)

你可能想要这个:

  ...
  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]);
  }
  ...

答案 2 :(得分:0)

只要您想从数组中丢弃0然后使用临时变量,输入它,检查它是否为非零,如果是,则将其存储到数组元素中,如果它是零退出循环:< / p>

#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;
}