浙大版《C語言程式設計(第3版)》題目集前四章總結

2021-08-04 16:15:18 字數 3267 閱讀 2002

習題3-2 高速公路超速處罰   (15分)

按照規定,在高速公路上行使的機動車,超出本車道限速的10%則處200元罰款;若超出50%,就要吊銷駕駛證。請編寫程式根據車速和限速自動判別對該機動車的處理。

輸入在一行中給出2個正整數,分別對應車速和限速,其間以空格分隔。

在一行中輸出處理意見:若屬於正常行駛,則輸出「ok」;若應處罰款,則輸出「exceed x%. ticket 200」;若應吊銷駕駛證,則輸出「exceed x%. license revoked」。其中x是超速的百分比,精確到整數。

65 60
ok

#include

int main (void)

else if(over>=10)else

return 0;

}習題3-5 三角形判斷   (15分)

給定平面上任意三個點的座標(x_1, y_1)(x

​1​​

,y​1

​​)、(x_2, y_2)(x

​2​​

,y​2

​​)、(x_3, y_3)(x

​3​​

,y​3

​​),檢驗它們能否構成三角形。

輸入在一行中順序給出六個[-100, 100][−

100,

100]

範圍內的數字,即三個點的座標x_1x​

1​​、y_1y​

1​​、x_2x​

2​​、y_2y​

2​​、x_3x​

3​​、y_3y​

3​​。

若這3個點不能構成三角形,則在一行中輸出「impossible」;若可以,則在一行中輸出該三角形的周長和面積,格式為「l = 周長, a = 面積」,輸出到小數點後2位。

4 5 6 9 7 8
l = 10.13, a = 3.00
4 6 8 12 12 18
impossible

起初結果一直輸不出來,我以為是浮點數比較大小的問題就搜了一下浮點數比較大小(相等:

fabs(a-b)<=1e-6  大於:if(a>b && fabs(a-b)>1e-6)  小於亦然)  結果發現不是 (笑著哭.jpg),三角形構成的原則是:任意兩邊之和要大於第三邊,所以應該用&&而不是||。而且三角形的面積可以由周長得出來 :s=(a+b+c)/2     area=sqrt(s*(s-a)*(s-b)*(s-c)).  我的**如下:

#include

#include

int main(void)

else

return 0;}

練習4-3 求給定精度的簡單交錯序列部分和   (15分)

本題要求編寫程式,計算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... 直到最後一項的絕對值不大於給定精度eps。

輸入在一行中給出乙個正實數eps。

在一行中按照「sum = s」的格式輸出部分和的值s,精確到小數點後六位。題目保證計算結果不超過雙精度範圍。

4e-2
sum = 0.854457
0.02
sum = 0.826310

這題目也不難,當時在pta上面提交的時候顯示的是部分正確,錯誤提示是   eps超過首項     就是說eps超過首項是結果就是第一項的值,所以我的**如下:

#include

int main(void)

else

printf("sum = %f",sum);

}return 0;}

練習4-6 猜數字遊戲   (15分)

猜數字遊戲是令遊戲機隨機產生乙個100以內的正整數,使用者輸入乙個數對其進行猜測,需要你編寫程式自動對其與隨機產生的被猜數進行比較,並提示大了(「too big」),還是小了(「too small」),相等表示猜到了。如果猜到,則結束程式。程式還要求統計猜的次數,如果1次猜出該數,提示「bingo!」;如果3次以內猜到該數,則提示「lucky you!」;如果超過3次但是在n(>

>

3)次以內(包括第n次)猜到該數,則提示「good guess!」;如果超過n次都沒有猜到,則提示「game over」,並結束程式。如果在到達n次之前,使用者輸入了乙個負數,也輸出「game over」,並結束程式。

輸入第一行中給出兩個不超過100的正整數,分別是遊戲機產生的隨機數、以及猜測的最大次數n。最後每行給出乙個使用者的輸入,直到出現負數為止。

在一行中輸出每次猜測相應的結果,直到輸出猜對的結果或「game over」則結束。

58 4

7050

5658

60-2

too big

too small

too small

good guess!

問題是:第一次寫的時候考慮不周全,猜對了的情況下沒有break,另外不管有沒有達到輸入次數,一旦輸入了負數就要退出,並輸出game over,但是輸入超過次數不管你之後有沒有猜對也要輸出game over 所以兩種情況分開輸出,還有就是當時第一遍看題目的時候,注意到的是即使你超過了輸入次數一樣的還可以輸入這一點。

#include

int main (void)

else if(count<=3)else

}else if(number>randnumber)else

}scanf("%d",&number);

count++;

}if(countprintf("game over");

}if(count>time)

return 0;

}下面是一段比我的寫得稍微好點的**(我覺得輸入負數就退出的情況做的比我好,但是我覺得他的for確實有點投機取巧)

/*#include

int main()

if(inp == number)

else if(cnt == 2 || cnt == 3)

else if(cnt > 3 && cnt <= n)

else if(cnt > n)

}else if(inp > number)

else if(inp < number)

}return 0;

}*/

浙大版《C語言程式設計(第3版)》題目集 (6)

本題要求實現乙個函式,統計給定字串中英文本母 空格或回車 數字字元和其他字元的個數。void stringcount char s 其中 char s 是使用者傳入的字串。函式stringcount須在一行內按照 letter 英文本母個數,blank 空格或回車個數,digit 數字字元個數,ot...

浙大版《C語言程式設計(第3版)》題目集 (5上)

本題要求實現乙個計算m n mint sum int m,int n 其中m和n是使用者傳入的引數,保證有m include intsum int m,int n int main include intsum int m,int n int sum int m,int n return sum i...

浙大版《C語言程式設計(第3版)》題目集 找鞍點

習題7 5 找鞍點 20分 乙個矩陣元素的 鞍點 是指該位置上的元素值在該行上最大 在該列上最小。本題要求編寫程式,求乙個給定的n階方陣的鞍點。輸入格式 輸入第一行給出乙個正整數n 1 n 6 隨後n行,每行給出n個整數,其間以空格分隔。輸出格式 輸出在一行中按照 行下標 列下標 下標從0開始 的格...