C语言的一道题

intf(inta){returna%2;}main(){ints[8]={1,3,5,2,4,6},i,d=0;for(i=0;f(s);i++)d+=s;printf... int f(int a)
   { return a%2; }
   main()
   { int s[8]={1,3,5,2,4,6},i,d=0;
   for (i=0;f(s);i++) d+=s;
   printf("%d\n",d);
   }
   程序运行后的输出结果是 ( )。
A)9
B)11
C)19
D)21   
其中不太清楚for中f(s)的意思,麻烦讲解下,谢谢啦
04年9月的真题。。。。我复制过来的,答案的确是A,但是为什么啊
展开
 我来答
kingiswei
2009-09-11 · 超过20用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:0
展开全部
你确定题目是这样子吗?我怎么觉得别扭...
int f(int a)
{return a%2;};
int main()
{int s[8]={1,3,5,2,4,6};int i,d=0;
for (i=0;f(s[i]);i++)
d+=s[i];
printf("%d\n",d);
}

如果是这样的话还可以解释运行得A

你主要就是f(s[i])不理解吧
我们先看他的过程是return a%2,你想想他会有什么结果呢,不难看出如果a是奇数,就会返回1,偶数就会返回0
我们看,for (i=0;f(s[i]);i++)中间是决定这个循环继续不继续的语句是吧,如果返回1,就是真,那么循环就会继续,如果返回0,就是假,就会终止循环。
so 这样就容易解决了,意思就是在s[8]里前几项奇数的和,直到遇到偶数就停止
我们看,前面三项1+3+5=9
到s[4]的时候由于f(s[4])返回为0就终止了循环
明白了吗
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式