首页 > 试题广场 >

有以下程序 #include"stdio.h" mai

[单选题]

有以下程序

#include "stdio.h"
void main() {
    int a[5] = {1, 2, 3, 4, 5}, b[5] = {0, 2, 1, 3, 0}, i, s = 0;
    for(i=0; i < 5; i++) s = s + a[b[i]];
    printf("%d\n", s);
}

程序运行后的输出结果是( )

  • 6
  • 10
  • 11
  • 15
推荐
选C
看两个数组,可得到(数组下标一般从0开始)
a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[4]=5
b[0]=0,b[1]=2,b[2]=1,b[3]=3,b[4]=0
直接将值带入一步一步算就行了
i=0;s=0+a[b[0]]=0+a[0]=0+1=1
i=1;s=1+a[b[1]]=1+a[2]=1+3=4
i=2;s=4+a[b[2]]=4+a[1]=4+2=6
i=3;s=6+a[b[3]]=6+a[3]=6+4=10
i=4;s=10+a[b[4]]=10+a[0]=10+1=11
i=5;不满足条件跳出for循环
因此最终输出 s 结果为11
编辑于 2019-07-19 14:14:36 回复(2)
我是这么想的
//这是一个a[b[i]]累加的过程
//0<=I<=4,这b{I}的所有可能取值为0,2,1,3,0
//则s=2*a[0]+a[1]+a[2]+a[3]=11
发表于 2019-07-18 17:41:24 回复(0)
C。考察的是循环结构中的数组累加计算。
根据题意,如下循环步骤:
  • i = 0    s = 0 + a[b[0]] = 1
  • i = 1    s = 1 + a[b[1]] = 4
  • i = 2    s = 4 + a[b[2]] = 6
  • i = 3    s = 6 + a[b[3]] = 10
  • i = 4    s = 10 + a[b[4]] = 11
发表于 2019-07-18 20:08:21 回复(0)
根据循环条件
在循环里
a里面的下标就是b数组的值
就是a[0]+a[2]+a[1]+a[3]+a[0]的和
发表于 2023-02-14 15:59:03 回复(0)
<p>1+3+2+4+1=11</p>
发表于 2020-09-15 01:13:05 回复(0)
i=0 ->  i<5 成立    s=s+a[b[0]]  -> s=s+a[0]  -> s=s+1 -> s=0+1=1  ->  i++  ->i=0
i=1 ->  i<5 成立    s=s+a[b[1]]  -> s=s+a[2]  -> s=s+3 -> s=1+3=4  ->  i++  ->i=1
i=2 ->  i<5 成立    s=s+a[b[2]]  -> s=s+a[1]  -> s=s+2 -> s=4+2=6  ->  i++  ->i=2
i=3 ->  i<5 成立    s=s+a[b[3]]  -> s=s+a[3]  -> s=s+4 -> s=6+4=10  ->  i++  ->i=3
i=4 ->  i<5 成立    s=s+a[b[4]]  -> s=s+a[0]  -> s=s+1 -> s=10+1=11  ->  i++  ->i=4
i=5 ->  i<5 不成立
🤣应该没错
发表于 2019-12-25 20:15:46 回复(0)

C

发表于 2019-07-18 15:22:44 回复(0)