點擊前往題目👉j390 (須先加入競賽【海山高中資訊研究社社內競賽試題公開練習】)
開場
今天挑選了海山高中資訊研究社社內競賽的題目!是陣列相關的題目。棕熊看了一下,感覺挺適合那些想練習較複雜題目的初學者,那麼,我們就開始吧~
範例程式
#include <iostream>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
int x[a][b];
for(int i=0;i<a;i++){
for(int j=0;j<b;j++)
cin>>x[i][j];
}
int blue=x[0][b-1],orange=x[0][0],red=x[0][0];
float purple=x[a-1][0];
for(int i=1;i<a;i++)
blue+=x[i][b-1];
for(int i=1;i<a;i++)
orange-=x[i][0];
for(int i=1;i<b;i++)
red*=x[0][i];
for(int i=1;i<b;i++)
purple+=x[a-1][i];
cout<<blue<<"\n"<<orange<<"\n"<<red<<"\n"<<purple/2;
return 0;
}
解析
這一題實際上也沒有很難,但就是題目敘述複雜了些,需要想一下,不過實際上,若讀懂了題目,應該是很快就能答出來的!接下來,來看看這題的解題思路吧!
題目要求我們分別輸出:
藍色以及其上下兩白色框代表的數字之和、
橘色以及其上下兩白色框代表的數字之差、
紅色以及其左右兩白色框代表的數字之積、
紫色以及其左右兩白色框代表的數字之和,除以2。
所以首先,我們要令一些變數並且賦值,如上方程式碼的第4-12行:
int a,b;
cin>>a>>b;
int x[a][b];
for(int i=0;i<a;i++){
for(int j=0;j<b;j++)
cin>>x[i][j];
}
int blue=x[0][b-1],orange=x[0][0],red=x[0][0];
float purple=x[a-1][0];
這裡,我們定義了一些變數,分別是a、b、blue、orange、red跟purple,並且賦值。第7-10行的for迴圈 是賦值給我們的二維陣列x,而blue、orange、red及purple是用來儲存我們的運算結果的。
for(int i=1;i<a;i++)
blue+=x[i][b-1];
for(int i=1;i<a;i++)
orange-=x[i][0];
for(int i=1;i<b;i++)
red*=x[0][i];
for(int i=1;i<b;i++)
purple+=x[a-1][i];
cout<<blue<<"\n"<<orange<<"\n"<<red<<"\n"<<purple/2;
return 0;
以上程式的邏輯應該不用再詳述,我盡可能地使其容易理解......是分別計算藍、橘、紅、紫色格的數值。紫色那一列我是先將其全部加起來求其總和,最後再輸出其除以2的數值。
結語
以上就是今天的內容啦!希望大家都有了解這次的內容!如果有不懂的歡迎留言詢問~~
沒有留言:
張貼留言
留言注意事項:
◎ 勾選「通知我」可在後續有回覆時寄信給您!
◎ 使用Safari恐無法登入留言(只能以匿名方式留言)!
◎ 敬請詳細描述問題,以方便站方迅速判斷與解答!
◎ 依據本站免責聲明,本站得逕行刪除含有不適合存在於本站的言論與字詞的發言,敬請謹慎留言!