首页 > 试题广场 >

有以下程序 #include ...

[单选题]
以下程序的运行结果是()
#include <iostream>
using namespace std;

int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};

void fun(int* pa, int n);

int main() {
    int m = 10;
    fun(a, m);
    cout << a[6] << endl;
}

void fun(int* pa, int n) {
    for (int i = n - 1; i > 0; i--)
        *(pa + 6) += pa[i];
}
  • 34
  • 7
  • 6
  • 68
问题的关键在i = 6的时候。
发表于 2019-09-02 10:50:58 回复(0)
应该是7+0+9+8+(7+0+9+8)+6+5+4+3+2=68
发表于 2019-10-13 12:53:32 回复(1)
{for (int i=n-1;i>0;i--) 
*(pa+6)+=pa[i]; 
}
*(pa+6)初始值为7,即pa[6]=7,pa[9]=0,pa[8]=9,pa[7]=8
所以,当i=7的时候,pa[6]=7+0+9+8=24;
当i=6的时候,pa[6]已经修改为24了,所以自己加自己是24+24=48
之后就是依次加5,4,3,2,最后结果68。

发表于 2020-09-09 09:18:23 回复(0)
0+9+8+7+(0+9+8+7)+6+5+4+3+2=68
发表于 2018-12-21 18:33:54 回复(1)
加到自己的时候会双倍快乐
发表于 2021-07-09 14:52:31 回复(0)
你好,原来:加到自己的时候翻倍啦,
发表于 2020-05-21 22:12:12 回复(0)
这题真鸡贼啊
发表于 2022-07-02 10:55:24 回复(0)
这题选项没出好,我第一次做没想到加自己但是没有我计算的答案,后来才想起来加了自己。选项应该加一个不考虑加自己的选项
发表于 2020-10-19 19:32:47 回复(2)
注意a【6】的值已经改变
发表于 2023-09-26 11:01:35 回复(0)
从 fun 函数实现可知,是从 a[9] 开始将对应的值加到 a[6] 上,a[6] 需要特殊对待,加到 a[1] 结束。
因此 a[6] = 7 + 0 + 9 + 8 + (7 + 0 + 9 + 8) + 6 + 5 + 4 + 3 + 2 = 68,
发表于 2023-06-10 14:33:26 回复(0)
pa是指向int类型的指针,pa+6指向的是数组中的第7个元素,也就是a[6],之后按for循环执行就行
发表于 2022-03-19 20:28:50 回复(0)
*(pa+6)初试为啥是7
发表于 2021-12-30 11:29:52 回复(0)