改错题
1. 下列给定的程序中,函数proc()的功能是:计算并输出k以内最大的10个能被13或17整除的自然数之和。k的值由主函数传入,若k的值为600,则函数的值为5671。请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdio.h>
#include<conio.h>
#inelude<stdlib.h>
int proc(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()
{
system("CLS");
printf("%d\n",proc(600));
}
【正确答案】(1)错误:if((k%13=0)||(k%17=0))
正确:if((k%13==0)||(k%17==0))
(2)错误:缺少大括号
正确:在“k--;”后加“}”
【答案解析】 题目中要求能被13或17整除的自然数,判断整除条件是取余恒等于0,判断相等的符号应该用“==”,符号“=”是赋值符号,因此,“=”应改为“==”;在C语言中,括号一定是成对出现的,因此,在语句“k--;”后要加上符号“}”。