整数数组的 C While 循环

标签 c arrays while-loop

这是一个菜鸟问题。我有一个名为 Counter[N][N] 的数组,我想做类似的事情:

While (each element of Counter < 10000) {do something}

While (there exists an element of Counter < 10000) {do something}

在 C 中是否有一种简单的方法可以做到这一点?

最佳答案

该函数测试传入的计数器数组是否有小于指定值的元素:

bool has_element_less_than(int value, int counter[N][N])
{
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
        {
             if (counter[i][j] < value)
                 return true;
        }
    }

    return false;
}

你使用它:

if (has_element_less_than(10000, counter))
    do_something();

您可以通过将 N 作为参数传递给函数来处理 C99 中的可变维度数组。它假定您有 C99 header <stdbool.h>可用并包含在内。


这就是你想要的吗?你提到“虽然”所以不清楚你是否需要使用 while循环——如果你这样做,我认为这可以完成工作:

int i = 0;

while (i < N)
{
    int j = 0;
    while (j < N)
    {
         if (counter[i][j] < 10000)
         {
             counter[i][j] = do_something(i, j, counter[i][j]);
         }
         j++;
    }
    i++;
}

或者,更通俗地使用 for循环:

for (int i = 0; i < N; i++)
{
    for (int j = 0; j < N; j++)
    {
         if (counter[i][j] < 10000)
         {
             counter[i][j] = do_something(i, j, counter[i][j]);
         }
    }
}

请注意,此代码使用的是 C99;你可以申报ij在循环之外,它变成了 C89 代码。此外,如果出于任何原因您需要 ij (或者更可能是两者)在循环之后,您需要在循环外声明变量。

第二个解决方案 for loops 更符合 C 语言的习惯; for loop 非常适合这项工作,也是您应该计划使用的,尤其是因为它将所有循环控件打包在一行中,这与 while 不同。循环解决方案,其中一行(循环外)有初始化代码,另一行有条件,第三行有重新初始化。

关于整数数组的 C While 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12545116/

相关文章:

php - 在 PHP 中将值数组转换为单个浮点值?

c++ - 如何存储 while 循环中产生的数据?

C编程-3 if语句中的测试条件

c - C prime 生成器中 realloc 的看似未定义的行为(程序已发布,可运行)

JavaScript:使用 Join 使数组成为字符串,使用输入参数作为分隔符 Btw Words --> Replace Error

PHP While 循环发布数据以编辑 1 行

loops - 当输入少于 9 时,如何停止 golang 循环?

c - MPI_Barrier 和 MPI_Gather 使用小数据集还是大数据集?

python - 在两个Python模块之间传递C函数指针

java - Java 中的最大大小列表