我正在学习 C,我遇到了这个我无法弄清楚的问题。编写一个函数,计算整数数组 a
的元素加上 6 模 10,并将结果存储在数组 b
中。例如,如果 5 是数组 a
的第二个元素,那么数组 b
的第二个元素应该是 (5+6)%10
, 即 1。该函数具有以下原型(prototype),n
是数组的长度,a
和 b
是整数数组。
我做到了:
void arithmetic (int *a, int n, int *b)
{
int *arr1; arr1=a; int *arr2; arr2=b;
int i;
for(i = 0; i < n; i++) {
*arr1 = *(((a + i) + 6) % 10);
*arr2 = *arr1;
}
}//don't know if the function is correct.
最佳答案
几件事:
- 无需更新第一个数组的实际内容(这修复了关于您的代码始终将结果存储在
a
的第一个元素中的错误) 使用一些括号来确保您获得正确的操作顺序。
void newArr(int *a, int n, int *b) { int *arr1; arr1 = a; int *arr2; arr2 = b; for (int i = 0; i < n; i++) { *(arr2 + i) = (*(arr1 + i) + 6) % 10; } }
想想你的标题“...using Pointer arithemtic
”。您需要将循环计数器添加到 arr1
和 arr2
的数组指针,以便它遍历每个数组的每个元素:*(arr2 + i)
和 *(arr1 + i)
。
关于使用指针算法将数据从第一个数组复制到第二个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49079640/