【问题标题】:What happens when we assign one int to an array of 2 ints?当我们将一个 int 分配给一个由 2 个 int 组成的数组时会发生什么?
【发布时间】:2020-07-30 12:09:01
【问题描述】:

以下代码通过选举中的每个选民,并允许他们按偏好对候选人进行排名:1、2、3 等。

代码有效,但我只是想了解将一个 int 分配给ints、preferences[voter][rank] = i 的二维数组时会发生什么。

将单个 int 分配给 ints 的二维数组时会发生什么?

// Keep querying for votes
    for (int i = 0; i < voter_count; i++)
    {

        // Query for each rank
        for (int j = 0; j < candidate_count; j++)
        {
            string name = get_string("Rank %i: ", j + 1);

            // Record vote, unless it's invalid
            if (!vote(i, j, name))
            {
                printf("Invalid vote.\n");
                return 4;
            }
        }

        printf("\n");
    }

//first loop through ranks gets input from the user... this loop through compares the users
//response to each of the candidates, then locks them in as that rank for that voter
bool vote(int voter, int rank, string name)
{
    for (int i = 0; i < candidate_count; i++)
    {
        if(strcmp(name, candidates[i].name) == 0)
        {
            preferences[voter][rank] = i;
            return true;
        }
    }
    return false;
}

【问题讨论】:

    标签: arrays c multidimensional-array


    【解决方案1】:

    在您的代码中

     preferences[voter][rank] = i;
    

    没有int 分配给您提到的“ints 的二维数组”。

    这里,preferences[voter][rank] 是数组中的一个元素,类型为 int,您正在为其分配一个整数值。

    详细来说,一个数组定义如下

     int arrayofints[10] = {0};
    

    有 10 个元素,类型为 int,由arrayofints[i] 访问,其中0 &lt;= i &lt;= 9。所以像

    这样的声明
     for (int i = 0; i< 10; i++){
         arrayofints[i] = i;
      }
    

    分别访问arrayofints[0]arrayofints[1] .... 并将i 的值存储到该元素中。多维数组也是如此。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-02
      • 2015-05-20
      • 1970-01-01
      • 1970-01-01
      • 2021-05-28
      • 2012-10-23
      相关资源
      最近更新 更多