目錄
- T1. 字符菱形
- 思路分析
- T2. 與圓相關的計算
- 思路分析
- T3. 蘋果和蟲子 2
- 思路分析
- T4. 奇數求和
- 思路分析
- T5. 藥房管理
- 思路分析
T1. 字符菱形
給定一個字符,用它構造一個對角線長 5 5 5 個字符,傾斜放置的菱形。
時間限制:1 s
內存限制:64 MB
-
輸入
輸入只有一行,包含一個字符。 -
輸出
該字符構成的菱形。 -
樣例輸入
*
-
樣例輸出
**** *********
思路分析
此題考查字符的輸入輸出,屬于入門題。按照樣例輸出的格式編寫代碼輸出即可。
/** Name: T1.cpp* Problem: 字符菱形* Author: Teacher Gao.* Date&Time: 2024/03/03 11:57*/#include <iostream>using namespace std;int main()
{char ch;cin >> ch;cout << " " << ch << endl;cout << " " << ch << ch << ch << endl;cout << ch << ch << ch << ch << ch << endl;cout << " " << ch << ch << ch << endl;cout << " " << ch << endl;return 0;
}
T2. 與圓相關的計算
給出圓的半徑,求圓的直徑、周長和面積。
時間限制:1 s
內存限制:64 MB
-
輸入
輸入包含一個實數 r r r( 0 < r ≤ 10000 0 < r \le 10000 0<r≤10000),表示圓的半徑。 -
輸出
輸出一行,包含三個數,分別表示圓的直徑、周長、面積,數與數之間以一個空格分開,每個數保留小數點后 4 4 4 位。 -
樣例輸入
3.0
-
樣例輸出
6.0000 18.8495 28.2743
-
提示
如果圓的半徑是 r r r,那么圓的直徑、周長、面積分別是 2 × r 2 \times r 2×r、 2 × π × r 2 \times \pi \times r 2×π×r、 π × r × r \pi \times r \times r π×r×r,其中約定 π = 3.14159 \pi = 3.14159 π=3.14159。可以使用printf("%.4lf", ...)
實現保留小數點后 4 4 4 位。
思路分析
先說明一下保留 4 4 4 位小數這個問題,使用 printf("%.4f", ...)
就可以了,對單精度(float
)和雙精度(double
)都適用。原題中提示使用的 %.4lf
中的 l
并不起作用,C99 標準允許使用 %.4lf
,但是在 C89 的標準中是不合法的。關于浮點數的讀 / 寫,博主在格式化輸入 / 輸出和基本類型這兩篇文章中有詳細說明。
此題考查算術運算,以及浮點數精度控制,屬于入門題。按照提示中的公式編寫代碼計算并輸出即可。
/** Name: T2.cpp* Problem: 與圓相關的計算* Author: Teacher Gao.* Date&Time: 2024/03/03 12:23*/#include <cstdio>using namespace std;const double PI = 3.14159;int main()
{double r;scanf("%lf", &r);double d = 2 * r;double c = 2 * PI * r;double s = PI * r * r;printf("%.4f %.4f %.4f\n", d, c, s);return 0;
}
T3. 蘋果和蟲子 2
你買了一箱 n n n 個蘋果,很不幸的是買完時箱子里混進了一條蟲子。蟲子每 x x x 小時能吃掉一個蘋果,假設蟲子在吃完一個蘋果之前不會吃另一個,那么經過 y y y 小時你還有多少個完整的蘋果?
時間限制:1 s
內存限制:64 MB
-
輸入
輸入僅一行,包括 n n n, x x x 和 y y y(均為整數)。 -
輸出
輸出也僅一行,剩下的蘋果個數。 -
樣例輸入
10 4 9
-
樣例輸出
7
-
提示
注意:是要求完整的蘋果數。
思路分析
此題重點考察分支結構判斷倍數關系,但是題目出得并不好,存在考生難以注意到的細節信息,難度略高。
此題需判斷 y y y 是否為 x x x 的倍數,由此求出蟲子經過 y y y 小時吃的蘋果數量。若 y y y 是 x x x 的倍數,則會吃掉 y / x y / x y/x 個蘋果,最后還剩 n ? y / x n - y / x n?y/x 個完整的蘋果。若 y y y 不是 x x x 的倍數,則會吃掉 y / x y / x y/x 個蘋果,并且正在吃下一個蘋果,也就是說剩余的完整蘋果數為 n ? y / x ? 1 n - y / x - 1 n?y/x?1。顯然這里需要用到分支結構,以達到向上取整的目的。不過這一目標可以被 ceil
函數(ceil(1.0 * y / x)
)或者數學公式(見示例代碼)替代。
考生難以注意的細節是除數不能為 0 0 0,因為題目中說 x x x 是整數,并沒有說是正整數,因此 x x x 有可能為 0 0 0。盡管在蟲子吃蘋果的背景故事中看起來 x = 0 x = 0 x=0 比較荒唐,但是從題目限制條件來看這種情況是必須考慮在內的。另一個細節是有可能在不到 y y y 小時的時間內,蟲子就已經吃完了所有蘋果,此時需要輸出 0 0 0。
/** Name: T3.cpp* Problem: 蘋果和蟲子 2* Author: Teacher Gao.* Date&Time: 2024/03/03 13:49*/#include <iostream>using namespace std;int main()
{int n, x, y;cin >> n >> x >> y;if (x == 0) {cout << 0 << endl;}else {int a = n - (y + x - 1) / x;if (a < 0) a = 0;cout << a << endl;}return 0;
}
T4. 奇數求和
計算非負整數 m m m 和 n n n(包括 m m m 和 n n n)之間的所有奇數的和,其中, m m m 不大于 n n n,且 n n n 不大于 300 300 300。例如 m = 3 m = 3 m=3, n = 12 n = 12 n=12,其和則為: 3 + 5 + 7 + 9 + 11 = 35 3 + 5 + 7 + 9 + 11 = 35 3+5+7+9+11=35。
時間限制:1 s
內存限制:64 MB
-
輸入
兩個數 m m m 和 n n n,兩個數以一個空格分開,其中 0 ≤ m ≤ n ≤ 300 0 \le m \le n \le 300 0≤m≤n≤300。 -
輸出
輸出一行,包含一個整數,表示 m m m 到 n n n(包括 m m m 和 n n n)之間的所有奇數的和。 -
樣例輸入
7 15
-
樣例輸出
55
思路分析
此題考查循環結構,以及分支結構判斷倍數關系,屬于入門題。
此題只需要用循環遍歷 m m m 到 n n n 之間的所有整數,依次判斷每個數是否為奇數,若為奇數則進行累加即可。
/** Name: T4.cpp* Problem: 奇數求和* Author: Teacher Gao.* Date&Time: 2024/03/03 13:56*/#include <iostream>using namespace std;int main()
{int m, n, sum = 0;cin >> m >> n;for (int i = m; i <= n; i++) {if (i % 2 == 1) {sum += i;}}cout << sum << endl;return 0;
}
T5. 藥房管理
隨著信息技術的蓬勃發展,醫療信息化已經成為醫院建設中必不可少的一部分。計算機可以很好地輔助醫院管理醫生信息、病人信息、藥品信息等海量數據,使工作人員能夠從這些機械的工作中解放出來,將更多精力投入真正的醫療過程中,從而極大地提高了醫院整體的工作效率。
對藥品的管理是其中的一項重要內容。現在藥房的管理員希望使用計算機來幫助他管理。假設對于任意一種藥品,每天開始工作時的庫存總量已知,并且一天之內不會通過進貨的方式增加。每天會有很多病人前來取藥,每個病人希望取走不同數量的藥品。如果病人需要的數量超過了當時的庫存量,藥房會拒絕該病人的請求。管理員希望知道每天會有多少病人沒有取上藥。
時間限制:1 s
內存限制:64 MB
-
輸入
共 3 3 3 行,第一行是每天開始時的藥品總量 m m m。
第二行是這一天取藥的人數 n n n( 0 < n ≤ 100 0 < n \le 100 0<n≤100)。
第三行共有 n n n 個數,分別記錄了每個病人希望取走的藥品數量(按照時間先后的順序),兩數之間以空格分隔。 -
輸出
只有 1 1 1 行,為這一天沒有取上藥品的人數。 -
樣例輸入
30 6 10 5 20 6 7 8
-
樣例輸出
2
思路分析
此題考查循環結構,以及分支結構判斷大小關系,藥房管理的故事背景讓此題難度略有提升,屬于一般應用題。
此題需要設置一個計數器變量 t o t tot tot 來統計沒有取上藥的病人數。依次輸入每個病人取藥的數量 x x x,然后檢測藥房中的庫存量 m m m 是否足夠,即 m m m 是否大于等于 x x x。若 m < x m < x m<x,說明藥房的庫存不夠,則拒絕該病人的請求,計數器 t o t tot tot 加 1 1 1。否則,取出數量為 x x x 的藥給該病人,即庫存 m m m 減少 x x x。
/** Name: T5.cpp* Problem: 藥房管理* Author: Teacher Gao.* Date&Time: 2024/03/03 14:00*/#include <iostream>using namespace std;int main()
{int m, n, x, tot = 0;cin >> m >> n;for (int i = 1; i <= n; i++) {cin >> x;if (x > m) {tot++;}else {m -= x;}}cout << tot << endl;return 0;
}