【问题标题】:C: Subtract arraysC:减去数组
【发布时间】:2020-10-11 11:07:33
【问题描述】:

我有三个数组。

int Aarr[31];
int Barr[12];
int Carr[];

我想用Barr 中的每个元素减去Aarr 中的每个元素并将其分配给Carr

for(int i=0; i<32; i++){
Carr[i]=Aarr[i]-Barr[i];
}

由于Barr 中的整数比Aarr 少,所以减法不正确。

我应该如何编写,以便每次代码到达 Barr 的末尾时,它都从 Barr 的开头开始,但 Aarr 从原来的位置继续?

【问题讨论】:

  • 带有嵌套的for循环,你也应该正确启动Carr
  • 使用模运算符? (Barr[i % 12])
  • 顺便说一句,由于A 只有 31 个元素,所以您的循环条件应该是 i&lt;31
  • @Michael 我不明白为什么Barr[i % 12] 会在这里工作,他希望两个数组之间的每一个减法都是可能的
  • 举个输入输出数据的例子

标签: arrays c subtraction


【解决方案1】:

下面我会讲一个更简单的例子。

因此,您希望嵌套的 for 循环第一个循环遍历 Aarr,第二个循环遍历 Barr 并将其分配给 Carr

以下内容正是这样做的:

#include <stdio.h>

int main()
{
    int Aarr[5] = {19, 10, 8, 17, 9};
    int Barr[2] = {1,3};
    int Carr[5*2];
    
    for (int i=0; i<5; i++){
        for (int j=0;j<2;j++) {
            Carr[i * 2 + j] = Aarr[i] - Barr[j];
        }
    }
    for(int loop = 0; loop < 10; loop++)
      printf("%d ", Carr[loop]);

    return 0;
}

打印循环会给你:

18 16 9 7 7 5 16 14 8 6 

这正是Aarr 的每个元素与Barr 的每个元素的减法

注意以下几点:

  1. 您应该已将 Carr 初始化为两个数组大小的乘积。
  2. 如果您的数组有 k 值,您应该迭代直到 k-1,因为您从 0 开始索引。

【讨论】:

    猜你喜欢
    • 2020-08-12
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多