两题C语言算术,谁能解释下,万分感谢。

来源:百度知道 编辑:UC知道 时间:2024/09/24 02:52:07
35.以下程序的输出结果是( )。
f( int b[ ], int m, int n)
{
int i,s=0;
for(i=m;i<n;i=i+2) s=s+b[i];
return s;
}
main()
{
int x, a[ ]={1,2,3,4,5,6,7,8,9};
x=f(a,3,7);
printf("%d\n",x);
}
A. 10 B. 18 C. 8 D. 15

36.以下程序中函数reverse的功能是将a所指数组中的内容进行逆置。
void reverse(int a[ ],int n)
{
int i,t;
for(i=0;i<n/2;i++)
{
t=a[i]; a[i]=a[n-1-i];a[n-1-i]=t;
}
}
main()
{
int b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0;
reverse(b,8);
for(i=6;i<10;i++) s+=b[i];
printf("%d\n",s);
}
程序运行后的输出结果是( )。
A. 22 B. 10 C. 34 D. 30

第一题是求和,
调用函数后,答案应该是a[3]+a[5]=10
选A

第二题函数是把数组b[]的前八个元素逆置。b[10]={8,7,6,5,4,3,2,1,9,10}
for(i=6;i<10;i++) s+=b[i]是求b[6]b[7]b[8]b[9]的和,2+1+9+10=22
选a

35:a[3]+a[5]答案10