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