输出左三角
输入:
3
输出:
*
**
***
具体实现
#include<bits/stdc++.h>
using namespace std;
int main(){ //左三角
int n;
cin>>n;
for(int i=1; i<=n; i++){
for(int j=n-i; j>=1; j--)
cout<<" ";
for(int j=1; j<=i; j++)
cout<<"*";
cout<<endl;
}
return 0;
}
输出右三角
输入:
3
输出:
*
**
***
具体实现
#include<bits/stdc++.h>
using namespace std;
int main(){ //右三角
int n;
cin>>n;
for(int i=1; i<=n; i++){
for(int j=1; j<=i; j++)
cout<<"*";
for(int j=n-i; j>=1; j--)
cout<<" ";
cout<<endl;
}
return 0;
}
上对称三角
输入:
3
输出:
*
***
*****
具体实现
#include<bits/stdc++.h>
using namespace std;
int main(){ //上对称三角
int n;
cin>>n;
for(int i=1; i<=n; i++){
for(int j=1; j<=(n-i); j++)
cout<<" ";
for(int j=1; j<=2*i-1; j++)
cout<<"*";
cout<<endl;
}
return 0;
}
下对称三角
输入:
3
输出:
*****
***
*
具体实现
#include<bits/stdc++.h>
using namespace std;
int main(){ //下对称三角
int n;
cin>>n;
for(int i=n; i>=1; i--){
for(int j=1; j<=n-i; j++)
cout<<" ";
for(int j=1; j<=2*i-1; j++)
cout<<"*";
cout<<endl;
}
return 0;
}
右梯形
输入:
2 4
输出:
**
***
****
具体实现
#include<bits/stdc++.h>
using namespace std;
int main(){ //右梯形
int x,y; //梯形的上下边长
cin>>x>>y;
while(x<=y){
for(int i=1; i<=y-x+1; i++){
for(int j=1; j<=x; j++)
cout<<"*";
x++;
cout<<endl;
}
}
return 0;
}
左梯形
输入:
2 4
输出:
**
***
****
具体实现
#include<bits/stdc++.h>
using namespace std;
int main(){ //左梯形
int x,y;
cin>>x>>y;
while(x<=y){
for(int i=1; i<=y-x+1; i++){
for(int j=y-x; j>=1; j--)
cout<<" ";
for(int k=1; k<=x; k++)
cout<<"*";
x++;
cout<<endl;
}
}
return 0;
}
对称梯形
输入:
2 4
输出:
**
****
具体实现
#include<bits/stdc++.h>
using namespace std;
int main(){ //对称梯形
int x,y;
cin>>x>>y;
while(x<=y){
for(int i=1; i<=(y-x)/2+1; i++){ //行数
for(int j=1; j<=(y-x)/2; j++)
cout<<" ";
for(int k=1; k<=x; k++)
cout<<"*";
x+=2;
cout<<endl;
}
}
//对称梯形:输入时,x必须大于1,且x和y相差2,因为对称。所以x和y要么全奇数要么全偶数
return 0;
}
平行四边形
输入:
3
输出:
***
***
***
具体实现
#include<bits/stdc++.h>
using namespace std;
int main(){ //平行四边形
int m;
cin>>m; //m为行数和每行个数
for(int i=1; i<=m; i++){ //行数
for(int j=m-i; j>=1; j--)
cout<<" ";
for(int k=1; k<=m; k++)
cout<<"*";
cout<<endl;
}
return 0;
}
菱形
输入:
3
输出:
*
***
*****
***
*
具体实现
#include<bits/stdc++.h>
using namespace std;
int main(){ //菱形
int n;
cin>>n;
for(int i=1; i<=n; i++){ //上半部分 行数
for(int j=1; j<=n-i; j++)
cout<<" ";
for(int k=1; k<=2*i-1; k++)
cout<<"*";
cout<<endl;
}
for(int i=n-1; i>=1; i--){ //下半部分 行数
for(int j=1; j<=n-i; j++)
cout<<" ";
for(int k=1; k<=2*i-1; k++)
cout<<"*";
cout<<endl;
}
return 0;
}
矩阵顺时针旋转90°
输入:
3
1 2 3
4 5 6
7 8 9
输出:
7 4 1
8 5 2
9 6 3
具体实现
#include<bits/stdc++.h>
using namespace std;
int main(){ //顺时针旋转90° (列出来,找规律)
int a[100][100]={0},b[100][100]={0};
int m;
cin>>m; //m行m列矩阵。若行列不相等,旋转,叫矩阵的转置!
for(int i=1; i<=m; i++){
for(int j=1; j<=m; j++)
cin>>a[i][j];
}
for(int i=1; i<=m; i++){
for(int j=1; j<=m; j++){
b[j][m-i+1]=a[i][j];
}
}
for(int i=1; i<=m; i++){
for(int j=1; j<=m; j++)
cout<<b[i][j]<<" ";
cout<<endl;
}
return 0;
}
矩阵顺时针旋转180°
输入:
3
1 2 3
4 5 6
7 8 9
输出:
9 8 7
6 5 4
3 2 1
具体实现
法1
#include<bits/stdc++.h>
using namespace std;
int main(){ //矩阵顺时针旋转180°
//以3*3的矩阵为例可以发现:一三行替换,中间行不动。一三列替换,中间列不动,即可
int a[100][100];
int b[100][100];
int m;//m行m列
cin>>m;
for(int i=1; i<=m; i++)
for(int j=1; j<=m; j++)
cin>>a[i][j];
for(int i=1; i<=m; i++)
for(int j=1; j<=m; j++)
b[m-i+1][m-j+1]=a[i][j];
for(int i=1; i<=m; i++){
for(int j=1; j<=m; j++)
cout<<b[i][j]<<" ";
cout<<endl;
}
return 0;
}
法2
#include<bits/stdc++.h>
using namespace std;
int main(){ //矩阵顺时针旋转180°
//顺时针旋转90°,再旋转90°,即可。
int a[100][100];
int b[100][100];
int m;//m行m列
cin>>m;
for(int i=1; i<=m; i++)
for(int j=1; j<=m; j++)
cin>>a[i][j];
for(int i=1; i<=m; i++)
for(int j=1; j<=m; j++)
b[j][m-i+1]=a[i][j];
for(int i=1; i<=m; i++)
for(int j=1; j<=m; j++)
a[j][m-i+1]=b[i][j];
for(int i=1; i<=m; i++){
for(int j=1; j<=m; j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
return 0;
}
数组上下翻转
输入:
3
1 2 3
4 5 6
7 8 9
输出:
7 8 9
4 5 6
1 2 3
具体实现
#include<bits/stdc++.h>
using namespace std;
int main(){ //数组上下翻转 此类题的规律:找数组下标,变化规律
int a[100][100];
int b[100][100];
int n;
cin>>n;
for(int i=1; i<=n; i++){
for(int j=1; j<=n; j++)
cin>>a[i][j];
}
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
b[n-i+1][j]=a[i][j];
for(int i=1; i<=n; i++){
for(int j=1; j<=n; j++)
cout<<b[i][j]<<" ";
cout<<endl;
}
return 0;
}
杨辉三角
输入:
4
输出:
1
11
121
1331
具体实现
#include<bits/stdc++.h>
using namespace std; //杨辉三角
int main(){
int n;
int a[21][21]={0};
cin>>n;
if(n>0){
a[1][1]=1;
for(int i=2; i<=n; i++){ //行数
for(int j=1; j<=i; j++){
a[i][j]=a[i-1][j]+a[i-1][j-1]; //core
}
}
for(int i=1; i<=n; i++){
for(int j=1; j<=i; j++)
cout<<a[i][j];
cout<<endl;
}
}
return 0;
}
小结
看数组下标,找规律。