C语言,求过程

#include <stdio.h>
void main()
{
int i,a[10]={0,1,2,3,4,5,6,7,8,9};
for(i=1;i<9;i++)
a[i]=a[i-1]+a[i+1];
printf("%d%d",a[5],a[7]);
}
A.1014 B.2035 C.812 D.2744

这题的重点是在循环中理解数组的变化,即数组和循环的组合使用,这类问题很常见。

先看循环,起始i=1,条件i<9,即i的变化为1到8,所以数组a也是从a[1]到a[8]的变化,数组的下标是从0开始的,即a[0]=0、a[1]=1...a[9]=9,没有a[10]。

接着看循环体语句:a[i]=a[i-1]+a[i+1],这条语句就像一个公式,代入一个数字,例如i=1,那么有:a[1]=a[0]+a[2],即:

当前元素a[i]的值=上一个元素a[i-1]的值+下一个元素a[i+1]的值。

已知i是1到8,根据a[i]=a[i-1]+a[i+1],

数组原来的值:a[10]={0,1,2,3,4,5,6,7,8,9}


当i=1时,那么有:

a[1]=a[0]+a[2],即a[1]=0+2=2

此时a[10]={0,2,2,3,4,5,6,7,8,9}

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


当i=2时,有:

a[2]=a[1]+a[3],即a[2]=2+3=5

此时a[10]={0,2,5,3,4,5,6,7,8,9}

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


当i=3时,有:

a[3]=a[2]+a[4],即a[3]=5+4=9

此时a[10]={0,2,5,9,4,5,6,7,8,9}

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


当i=4时,有:

a[4]=a[3]+a[5],即a[4]=9+5=14

此时a[10]={0,2,5,9,14,5,6,7,8,9}

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


当i=5时,有:

a[5]=a[4]+a[6],即a[5]=14+6=20

此时a[10]={0,2,5,9,14,20,6,7,8,9}

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


当i=6时,有:

a[6]=a[5]+a[7],即a[6]=20+7=27

此时a[10]={0,2,5,9,14,20,27,7,8,9}

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


当i=7时,有:

a[7]=a[6]+a[8],即a[7]=27+8=35

此时a[10]={0,2,5,9,14,20,27,35,8,9}

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


当i=8时,有:

a[8]=a[7]+a[9],即a[8]=35+9=44

此时a[10]={0,2,5,9,14,20,27,35,44,9}

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


循环结束,根据输出语句printf("%d%d",a[5],a[7]),那么a[5]=20,a[7]=35,即输出结果为“2035”,答案选B。

源码

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-03-09
a[0]=0,a[1]=1依次类推。
for循环,当i=1时,a[1]=a[0]+a[2]=0+2=2,当i=2时,a[2]=a[1]+a[3]=2+3=5,当i=3时,a[3]=a[2]+a[4]=5+4=9,当i=4时,a[4]=a[3]+a[5]=9+5=14,当i=5时,a[5]=a[4]+a[6]=14+6=20,当i=6时,a[6]=a[5]+a[7]=20+7=27,当i=7时,a[7]=a[6]+a[8]=27+8=35,依次类推
最后输出a[5]和a[7]的值,分别为20和35,所以选B
第2个回答  2020-03-09
首先解释一下循环的意思
a[i] = a[i-1] +a[i+1]
它的意思是数组中当前位的值等于前一位与后一位的和
第一个次进循环
a[1] = a[0] +a[2]
所以a[1]=2
以此类推
数组a为0,2,5,9,14,20,27,35,44
所以输出20和35
相似回答