課題及解析建議用時60分鐘,作業及講解建議用時50分鐘。
課題及解析:
4003:【GESP2303二級】畫三角形
【題目描述】
輸入一個正整數?n,請使用大寫字母拼成一個這樣的三角形圖案(參考樣例輸入輸出):三角形圖案的第?1?行有?1?個字母,第?2?行有?2?個字母,以此類推;在三角形圖案中,由上至下、由左至右依次由大寫字母?A?Z?填充,每次使用大寫字母?Z?填充后,將從頭使用大寫字母?A?填充。
【輸入】
輸入一行,包含一個正整數?n。約定?2≤n≤40。
【輸出】
輸出符合要求的三角形圖案。注意每行三角形圖案的右側不要有多余的空格。
【輸入樣例】
3
【輸出樣例】
A
BC
DEF
【提示】
【樣例輸入 2】
7
【樣例輸出 2】
A
BC
DEF
GHIJ
KLMNO
PQRSTU
VWXYZAB
【解析】
思路:
①題意:輸出n行,每行1至n個大寫字母。解題步驟:
①變量:
int n;
cin>>n;
char zf='A';
②一級結構:
for(int i=1; i<=n; i++)//i表示行的編號
③二級結構:
for(int j=1; j<=i; j++)//j表示第i行的第幾個字符
cout<<zf;
④三級結構:
if(zf>90)//當zf存的值超過Z時,把zf初始為A。
zf='A';
【答案】
/*4003:【GESP2303二級】畫三角形*/
#include<iostream>
using namespace std;
int main()
{int n;cin>>n;char zf='A';for(int i=1; i<=n; i++){for(int j=1; j<=i; j++){cout<<zf;zf++;if(zf>90) zf='A';//大Z的ASCII值是90。 }cout<<endl;}return 0;
}
4004:【GESP2303二級】百雞問題
【題目描述】
“百雞問題”是出自我國古代《張丘建算經》的著名數學問題。大意為:“每只公雞?5?元,每只母雞?3?元,每?3?只小雞?1?元;現在有?100?元,買了?100?只雞,共有多少種方案?”
小明很喜歡這個故事,他決定對這個問題進行擴展,并使用編程解決:如果每只公雞?x?元,每只母雞?y?元,每?z?只小雞?1?元;現在有?n?元,買了?m?只雞,共有多少種方案?
【輸入】
輸入一行,包含五個整數,分別為問題描述中的?x、y、z、n、m。約定?1≤x,y,z≤10,1≤n,m≤1000。
【輸出】
輸出一行,包含一個整數?C,表示有?C?種方案。
【輸入樣例】
5 3 3 100 100
【輸出樣例】
4
【提示】
【樣例解釋 1】
這就是問題描述中的“百雞問題”。4?種方案分別為:公雞?0?只、母雞?25?只、小雞?75?只;公雞?4?只、母雞?18?只、小雞?78?只;公雞?8?只、母雞?11?只、小雞?81只;公雞?12?只、母雞?4?只、小雞?84?只。
【樣例輸入 2】
1 1 1 100 100
【樣例輸出 2】
5151
【解析】
思路:
①題意:現在有?n?元,剛好買了?m?只雞,共有多少種方案?
其中,每只公雞?x?元,每只母雞?y?元,每?z?只小雞?1?元。解題步驟:
①變量:
int x, y, z, n, m, num=0;//num方案數量
cin>>x>>y>>z>>n>>m;
②一級結構:
for(int i=0; i*x<=n&&i<=m ; i++)//i表示公雞的數量
③二級結構:
for(int j=0; i*x+j*y<=n&&i+j<=m ; j++)//j表示母雞的數量
④三級結構:
int k=(n-i*x-j*y)*z;//k表示母雞的數量
if(i+j+k==m)
【答案】
/*4004:【GESP2303二級】百雞問題*/
#include<iostream>
using namespace std;
int main()
{int x, y, z, n, m, c=0;cin>>x>>y>>z>>n>>m;for(int i=0; i*x<=n&&i<=m ; i++){for(int j=0; i*x+j*y<=n&&i+j<=m ; j++){int k=(n-i*x-j*y)*z;//剩下的錢都買小雞,剛好花完n元。 if(i+j+k==m){c++;
//僅測試 cout<<i<<" "<<j<<" "<<k<<endl;}}}cout<<c;return 0;
}
作業及講解:
作業一、4001:【GESP2303一級】每月天數
【題目描述】
小明剛剛學習了每月有多少天,以及如何判斷平年和閏年,想到可以使用編程方法求出給定的月份有多少天。你能做到嗎?
【輸入】
輸入一行,包含兩個整數,分別表示一個日期的年、月。
【輸出】
輸出一行,包含一個整數,表示輸入月份有多少天。
【輸入樣例】
2022 1
【輸出樣例】
31
【提示】
【樣例輸入 2】
2020 2
【樣例輸出 2】
29
作業一解析:(點擊下一行進入)
4001:【GESP2303一級】每月天數
作業二、4002:【GESP2303一級】長方形面積
【題目描述】
小明剛剛學習了如何計算長方形面積。他發現,如果一個長方形的長和寬都是整數,它的面積一定也是整數。現在,小明想知道如果給定長方形的面積,有多少種可能的長方形,滿足長和寬都是整數?
如果兩個長方形的長相等、寬也相等,則認為是同一種長方形。約定長方形的長大于等于寬。正方形是長方形的特例,即長方形的長和寬可以相等。
【輸入】
輸入一行,包含一個整數A,表示長方形的面積。約定2≤A≤1000。
【輸出】
輸出一行,包含一個整數C,表示有C種可能的長方形。
【輸入樣例】
4
【輸出樣例】
2
【提示】
【樣例解釋 1】
2?種長方形面積為?4,它們的長寬分別為2×2、4×1。
【樣例輸入 2】
6
【樣例輸出 2】
2
【樣例解釋 2】
2?種長方形面積為?6,它們的長寬分別為3×2
作業二解析:(點擊下一行進入)
4002:【GESP2303一級】長方形面積