【发布时间】:2016-06-25 17:07:07
【问题描述】:
我正在尝试重写我的代码,该代码采用用户输入数组,转到函数并在每个数字之间添加零并将其保存到数组 2。我的源代码工作得很好,但我在尝试这样做时遇到了麻烦它使用指针算法仅用于函数访问每个数组元素,它不能是子脚本。 你能告诉我关于我的代码或如何做到这一点的建议吗?
源代码:
#include <stdio.h>
void insert0(int n, int a1[], int a2[]);
int main(void) {
int i;
int n;
printf("Please enter the length of the input array: ");
scanf("%d", &n);
int a[n];
int b[2*n];
printf("Enter %d numbers for the array: ", n);
for (i = 0; i < n; i++){
scanf("%d", &a[i]);
}
insert0(n, a, b);
printf("Output array:");
for (i = 0; i < 2*n; i++){
printf(" %d", b[i]);
printf("\n");
}
return 0;
}
void insert0(int n, int a[], int b[]) {
int i, j = 0;
for(i = 0; i < n; i++, j+=2){
b[j]= a[i];
b[j+1] = 0;
}
}
我的算术:
#include <stdio.h>
void insert0(int n, int *a1, int *a2);
int main(void) {
int i;
int n;
printf("Please enter the length of the input array: ");
scanf("%d", &n);
int a1[n];
int a2[2*n];
printf("Enter %d numbers for the array: ", n);
for (i = 0; i < n; i++){
scanf("%d", &a2[i]);
}
//not sure if this is how you call it, I've seen it called with arr
insert0(n, a1, a2);
printf("Output array:");
for (i = 0; i < 2*n; i++){
printf(" %d", a2[i]);
printf("\n");
}
return 0;
}
void insert0(int n, int *a1, int *a2) {
int *p;
int j = 0;
// I think I translated this properly
for(p = a1; p < a1+n; p++, j+=2){
a2+j = a1+p;
//unsure how to get a2[j+1] to still work here with pointer
a2(j+1) = 0;
}
}
【问题讨论】:
标签: c arrays pointers pointer-arithmetic