noip第9課作業


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;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM