在c语言中,已知数组a的元素值为1,2,3,. . .10,要求将数组a每一项及其相邻元素和值填入b数组的对应项,最后输出两个数组的值。即b【0】=a【0】+a【1】,b【1】=a【0】+a【1】+a【2】, …,b【9】=a【8】+a【9】,要求用指向数组的指针实现,程序中不能出现数组元素的写法
时间: 2024-01-11 17:11:32 浏览: 189
好的,我理解了你的要求,以下是实现该功能的C代码:
```c
#include <stdio.h>
int main()
{
int a[10] = {1,2,3,4,5,6,7,8,9,10};
int b[10];
int *p1 = a; // 指向数组a的指针
int *p2 = b; // 指向数组b的指针
for(int i=0; i<10; i++){
if(i==0){
*p2 = *p1 + *(p1+1);
}else if(i==9){
*p2 = *(p1+8) + *(p1+9);
}else{
*p2 = *(p1+i-1) + *(p1+i) + *(p1+i+1);
}
p2++;
}
p2 = b; // 重新指向数组b的指针
for(int i=0; i<10; i++){
printf("b[%d] = %d\n", i, *p2);
p2++;
}
return 0;
}
```
输出结果为:
```
b[0] = 3
b[1] = 6
b[2] = 9
b[3] = 12
b[4] = 15
b[5] = 18
b[6] = 21
b[7] = 24
b[8] = 27
b[9] = 19
```
代码解释:
首先定义了两个数组a和b以及两个指向数组的指针p1和p2。然后用for循环遍历数组b,并根据题目要求计算出每一项的值,将其存入数组b中。最后再用for循环遍历数组b,输出每一项的值。其中,计算每一项的代码如下:
- 当i等于0时,表示b[0]的值等于a[0]+a[1],即*p2 = *p1 + *(p1+1);
- 当i等于9时,表示b[9]的值等于a[8]+a[9],即*p2 = *(p1+8) + *(p1+9);
- 当i既不等于0也不等于9时,表示b[i]的值等于a[i-1]+a[i]+a[i+1],即*p2 = *(p1+i-1) + *(p1+i) + *(p1+i+1)。
阅读全文
相关推荐


















