一道c语言数组问题

以下程序的输出结果是()f(intb[],intm,intn){inti,s=0;for(i=m;i<n;i=i+2)s=s+b[i];returns;}main(){i... 以下程序的输出结果是( )
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);
}
答案是10
请问怎么计算?
展开
 我来答
潮优悠0H4e09
2011-08-29 · TA获得超过2401个赞
知道小有建树答主
回答量:481
采纳率:0%
帮助的人:465万
展开全部
#include<stdio.h>
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);
}
分析:
f()函数循环过程
1>
m=i=3.n=7 3<7成立
s=4 i=5
2>
m=i=5.m=7 5<7成立
s=10 i=7
3>
m=i=7.n=7 7>7不成立
循环结束

输出X等于返回值S 就等于10
松甜恬0Je4ba
2011-08-29 · TA获得超过2.6万个赞
知道大有可为答主
回答量:7475
采纳率:100%
帮助的人:4137万
展开全部
函数的f的意思是计算数组b的下标从m开始到下标n-1,步长为2的元素的和。
f(a,3,7) = a[3]+a[5] =4+6 = 10;
数组的下标是从0开始的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友eb9400776
2011-08-29 · 超过21用户采纳过TA的回答
知道答主
回答量:71
采纳率:0%
帮助的人:53.9万
展开全部
b[3] = 4,
b[5] = 6.
所以结果是 10.
注意: 数组的初始位是从【0】开始的, 就是说, a[0] = 1.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
LSicny
2011-08-29
知道答主
回答量:62
采纳率:0%
帮助的人:31.6万
展开全部
程序进入f 函数后,运行到for循环时,i=m=3 ;n=7; b[]={1,2,3,4,5,6,7,8,9};
进行第一次for循环时,s=0+b[3]=0+4=4(b[3]即b[]数组的第四个值),i=3+2=5;满足<n(即7)可以进入下一次循环;在第二次for循环中,s=4+b[5]=4+6=10(b[5]即b[]数组的第六个值),i=5+2=7;此时i 已不满足<n;循环结束,返回s值即10;所以s=f函数的返回值即10;

加油!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户05037
2011-08-29 · 超过20用户采纳过TA的回答
知道答主
回答量:178
采纳率:100%
帮助的人:83.2万
展开全部
小于N在第一个函数里指的是数组的每一个元素,因为第二个函数中ch是二维的数组,所以传到第一个函数里时N代表的就是ch的一维数组个数或者说ch的行数. 比如说 ch=,那么它的各个元素就是双引号里面的每个字符串(一维数组),行数就是4(即N),列数可以是大于等于3的任何数(即M). 第一个函数是字符比较,如果*ss)[M], *t分别是二维数组和一维数组的话就是字符串比较. 既然i<N这个语句是控制字符串元素个数的,所以不管是取5还是8都是ch中的元素与t[]比较,而ch中只有5个元素小于8个,C中对于溢出的字符数组不予报错,只比较5个
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式