问答题
下列给定的程序中,函数fun()的功能是:计算并输出k以内最大的10个能被13或17整除的自然数之和。k的值由主函数传入,若k的值为500,则函数的值为4622。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序
#include
<stdio.h>
#include <conio.h>
#include
<stdlib.h>
int fun(int k)
{ int m=0, mc=0,
j;
while((k>=2)&&(mc<10))
{ /* * * *
*found* * * * * /
if((k% 13=0)||(k% 17=0))
{m=m+k; mc++;}
k--;
/* * * * *found* * * * *
/
return m;
}
void
main()
{ printf("% d/n", fun(500));
}
【正确答案】(1)if((k%13==0)||(k%17==0)) (2)加}
【答案解析】[解析] 本题考查:if语句条件表达式,区分逻辑表达式和算术表达式;同时注意C语言书写程序应遵守的规则。
(1)C语言中“=”是赋值运算符,“==”才表示等于,x能被y整除的表示方法是x%y==0,而并非像题目中所表示的x%y=0。所以,if((k%13=0)||(k%17=0))修改后的结果应该是答案所示信息。
(2)程序中缺少“}”花括号,程序不完整。此类信息在做题时一定要注意,可以在做题前先运行一下程序,这样明显的错误一般都会有错误信息显示出来,比如丢失“}”的错误信息是“Compound statement missing } in function fun”。