1. 打印乘法表
【問題描述】
用for循環實現輸出1至9的乘法表
【樣例輸出】
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
#include<iostream> using namespace std; int main(){ for(int i=1;i<=9;i++){ for(int j=1;j<=i;j++){ cout<<j<<"*"; cout<<i<<"="<<j*i<<" "; } cout<<endl; } return 0; }
2. 矩陣交換
【問題描述】
給定一個5*5的矩陣(數學上,一個r×c的矩陣是一個由r行c列元素排列成的矩形陣列),將第n行和第m行交換,輸出交換后的結果。
輸入:輸入共6行,前5行為矩陣的每一行元素,元素與元素之間以一個空格分開。
第6行包含兩個整數m、n(1 <= m,n< = 5),以一個空格分開。
輸出:輸出交換之后的矩陣,矩陣的每一行元素占一行,元素之間以一個空格分開。
【樣例輸入】
1 2 2 1 2
5 6 7 8 3
9 3 0 5 3
7 2 1 4 6
3 0 8 2 4
1 5
【樣例輸入】
3 0 8 2 4
5 6 7 8 3
9 3 0 5 3
7 2 1 4 6
1 2 2 1 2
#include<iostream> using namespace std; int main(){ //定義要交換的行數 int r1,r2; //定義一個五行五列的二維數組 int a[5][5]={}; for(int i=0;i<5;i++){ for(int j=0;j<5;j++){ cin>>a[i][j]; } } //輸入你要交換的行和列 cin>>r1>>r2; for(int i=0;i<5;i++){ swap(a[r1-1][i],a[r2-1][i]); } for(int i=0;i<5;i++){ for(int j=0;j<5;j++){ cout<<a[i][j]<<" "; } cout<<endl; } return 0; }
1. 打印楊輝三角
【問題描述】
打印楊輝三角形的前10行,楊輝三角形如下:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
【樣例輸出】
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
#include<iostream> using namespace std; int main() { //定義一個十行十列的數組 int a[10][10]; //先遍歷行 for(int i=0;i<10;i++){ //先把空格打出來 for(int h=0;h<10-i;h++){ cout<<" "; } for(int j=0;j<=i;j++){ if(j==0||j==i) { a[i][j]=1; } else { a[i][j]=a[i-1][j-1]+a[i-1][j]; } cout<<a[i][j]<<" "; } cout<<endl; } return 0; }
2. 掃雷游戲地雷數計算
【問題描述】
掃雷游戲是一款十分經典的單機小游戲。它的精髓在於,通過已翻開格子所提示的周圍格地雷數,來判斷未翻開格子里是否是地雷。現在給出n行m列的雷區中的地雷分布,要求計算出每個非地雷格的周圍格地雷數。
注:每個格子周圍格有八個:上、下、左、右、左上、右上、左下、右下。
輸入:第一行包含兩個整數n和m,分別表示雷區的行數和列數。1 <= n <= 100, 1 <= m <= 100。接下來n行,每行m個字符,‘*’表示相應格子中是地雷,‘?’表示相應格子中無地雷。字符之間無任何分隔符。
輸出:n行,每行m個字符,描述整個雷區。若相應格中是地雷,則用‘*’表示,否則用相應的周圍格地雷數表示。字符之間無任何分隔符。
【樣例輸入】
3 3
*??
???
?*?
【樣例輸出】
*10
221
1*1
#include <iostream> using namespace std; int main(){ int n,m,cnt=0; char a[102][102]; cin>>n>>m; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cin>>a[i][j]; } } for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ if(a[i][j]!='*'){ if(a[i-1][j-1]=='*') cnt++; if(a[i-1][j]=='*') cnt++; if(a[i-1][j+1]=='*') cnt++; if(a[i][j-1]=='*') cnt++; if(a[i][j+1]=='*') cnt++; if(a[i+1][j-1]=='*') cnt++; if(a[i+1][j]=='*') cnt++; if(a[i+1][j+1]=='*') cnt++; cout<<cnt; cnt=0; } else{ cout<<"*"; } } cout<<" "<<endl; } return 0; }
3. 二維數組右上左下遍歷
【問題描述】
給定一個row行col列的整數數組array,要求從array[0][0]元素開始,按從左上到右下的對角線順序遍歷整個數組。
輸入:輸入的第一行上有兩個整數,依次為row和col。余下有row行,每行包含col個整數,構成一個二維整數數組。(注:輸入的row和col保證0 < row < 100, 0 < col < 100)
輸出:按遍歷順序輸出每個整數。每個整數占一行。
【樣例輸入】
3 4
1 2 4 7
3 5 8 10
6 9 11 12
【樣例輸出】
1 2 3 4 5 6 7 8 9 10 11 12
#include <iostream> using namespace std; int main(){ int r,c,max; cin>>r>>c; max=r+c-1; int a[101][101]; for(int i=0;i<r;i++){ for(int j=0;j<c;j++){ cin>>a[i][j]; } } for(int k=max;k;k--){ //3 4 for(int j=max-k,i=0;i<r;j--,i++){ if(j>=0&&j<c) cout<<a[i][j]<<" "; } } return 0; }