2. 改錯題
下列給定的程序中,函數(shù)fun()的功能是:計算并輸出k以內(nèi)最大的6個能被7或11整除的自然數(shù)之和。K的值由主函數(shù)傳入,若k的值為500,則函數(shù)的值為2925。
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include
#include
int fun(int k)
{
int m=0,mc=0, j;
/**********************found***********************/
while(k>=2)&&(mc<6)
{
/**********************found***********************/
if((k%7=0)||(k%11=0))
{
/**********************found***********************/
m=k;
mc++;
}
k--;
}
return m;
}
main()
{
clrscr();
printf("%d\n ",fun(500));
}
答案及評析:
(1)錯誤:while(k>=2)&&(mc<6)
正確:while((k>=2)&&(mc<6))
(2)錯誤:if((k%7=0)||(k%11=0))
正確:if((k%7==0)||(k%11= =0))
(3)錯誤:m=k;
正確:m=m+k;
【解析】錯誤1:C語言規(guī)定while語句后的表達(dá)式兩側(cè)必須要有圓括號。
錯誤2:if語句的判斷條件應(yīng)用關(guān)系運算符,而不是賦值運算符。
錯誤3:根據(jù)題意,將滿足條件的數(shù)求累加和。
相關(guān)鏈接:北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |