C語言改錯程式題

2022-10-10 05:39:02 字數 3114 閱讀 2788

2-1. 改錯題

下列給定程式中,函式fun()的功能是根據整型形參m,計算如下公式的值。

y=1-1/(2×2)+1/(3×3)-1/(4×4)+…+(-1)(m+1)/(m×m)

例如:m中的值為5,則應輸出0.838611。

請改正程式中的錯誤,使它能得到正確結果。

注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構。

試題程式:

#include <>

#include <>

double fun(int m)

return(y);

}main()

(1)錯誤:int j=1;

正確:double j=1.0;

(2)錯誤:y+=1/(i * i);

正確:y+=j/(i * i);

3-1. 改錯題

下列給定程式中,函式fun的功能是按以下遞迴公式求函式值。

例如:當給n輸入5時,函式值為240;當給n輸入3時,函式值為60。

請改正程式中的錯誤,使它能得到正確結果。

注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構。

試題程式:

#include <>

found

fun(int n);

main()

3-1. 改錯題

(1)錯誤:fun(int n);

正確:fun(int n)

(2)錯誤:if(n=1)

正確:if(n==1)

【解析】錯誤1:該行是函式的首部,不是一條語句,因此不能以分號結束。

錯誤2:if後面應該緊跟乙個條件判斷表示式,若寫成"if(n=1)",則說明該表示式的值永遠為真,也就是說這個條件永遠成立,沒有遞迴執行。

4-1. 改錯題

下列給定程式中,函式fun的功能是按以下遞迴公式求函式值。

例如:當給n輸入5時,函式值為240;當給n輸入3時,函式值為60。

請改正程式中的錯誤,使它能得到正確結果。

注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構。

試題程式:

#include <>

found

fun(int n);

main()

4-1. 改錯題

(1)錯誤:fun(int n);

正確:fun(int n)

(2)錯誤:if(n=1)

正確:if(n==1)

【解析】錯誤1:該行是函式的首部,不是一條語句,因此不能以分號結束。

錯誤2:if後面應該緊跟乙個條件判斷表示式,若寫成"if(n=1)",則說明該表示式的值永遠為真,也就是說這個條件永遠成立,沒有遞迴執行。

5-1. 改錯題

下列給定程式中函式fun()的功能是計算正整數num的各位上的數字之平方和。

例如:輸入352,則輸出應該是38;若輸入328,則輸出應該是77。

請改正程式中的錯誤,使它能得到正確結果。

注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構。

試題程式:

#include <>

#include <>

long fun(long num)

while(num)

return (k);

}main()

5-1. 改錯題

(1)錯誤:long k=1;

正確:long k=0;

(2)錯誤:while(num)

正確:while(num);

【解析】錯誤1:k用來存放各位數字的平方和,初值應為0。

錯誤2:do-while語句的語法,while()後加分號。

6-1. 改錯題

下列給定程式中,函式fun()的功能是將字串s中位於偶數字置的字元或ascii碼為奇數的字元放入字串t中(規定第乙個字元放在第0位中)。

例如:字串中的資料為adfeshdi,則輸出應當是afesdi。

請改正程式中的錯誤,使它能得到正確結果。

注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構。

試題程式:

#include <>

#include <>

#include <>

#define n 80

found

void fun(char s, char t[ ])

main()

6-1. 改錯題

(1)錯誤: void fun(char s, char t[ ])

正確:void fun(char *s, char t[ ])

(2)錯誤: if(i%2=0||s[i]%2!=0)

正確:if(i%2==0||s[i]%2!=0)

【解析】錯誤1:由於本題中函式的功能是對字串進行處理,而不是對單個字元進行處理,因此,函式的引數應為字串指標。

錯誤2:if語句中要用關係運算子,而不是賦值運算子。

12、下列給定程式中,函式fun()的功能是找出100~n(不大於1000)之間百位數字加十位數字等於個位數字的所有整數,把這些整數放在s所指的陣列中,個數作為函式值返回。

請改正程式中的錯誤,使它能得到正確結果。

試題程式:

(1)錯誤:k=n;

正確:k=i;

(2)錯誤:s[j]=i;

正確:s[j++]=i;

【解析】錯誤1:k就是當前要被判斷的數,是隨著i值的變化而變化的。

錯誤2:在迴圈中,j是陣列的下標要遞增。

8-1. 改錯題

下列給定程式中,函式fun()的功能是求出陣列中最小數和次最小數,並把最小數和a[0]中的數對調,次最小數和a[1]中的數對調。

請改正程式中的錯誤,使它能得到正確結果。

注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構。

試題程式:

#include <>

#include <>

#define n 20

void fun(int *a,int n)

}main()

,n=10,i;

clrscr();

for(i=0; i printf("%d ",b[i]);

c程式改錯

1 功能 乙個5位數,判斷它是不是回文數。即12321是回文數,個 位與萬位相同,十位與千位相同。include main 2 功能 猴子吃桃問題 猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了乙個,第二天早上又將剩下的桃子吃掉 一半,又多吃了乙個。以後每天早上都吃了前一天剩下的一 半零...

c語言經典程式100題

程式1 題目 有1 2 3 4個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?1.程式分析 可填在百位 十位 個位的數字都是1 2 3 4。組成所有的排列後再去 掉不滿足條件的排列。2.程式源 main 程式2 題目 企業發放的獎金根據利潤提成。利潤 i 低於或等於10萬元時,獎金可提1...

C語言中級題庫之程式題

程式設計題 函式fun計算從1到10之間所有奇數之和並輸出 注意 部分源程式已經存在檔案中。請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入你編寫的若干語句,不得刪除花括號中的原始注釋。include int fun int m main void nono fclose ...