文章目录
- 一 上三角矩阵
- 1.三角矩阵是什么?
- 2. 思路分析
- 3.代码的实现
- 二 矩阵转置
- 三 矩阵交换
- 1.描述
- 2. 思路
- 3. 代码
- 四 杨辉三角
- 3. 代码
一 上三角矩阵
1.三角矩阵是什么?
主对角线的左下方元素全为0的矩阵称为上三角矩阵; 主对角线的右上方元素全为0的矩阵称为下三角矩阵; 上三角矩阵 和 下三角矩阵 统称为三角矩阵。
今天讲解的是上三角矩形,同时也会分析下三角矩阵,这两个思路是一样的,学会上三角矩阵,轻松搞定下三角矩阵。
2. 思路分析
3.代码的实现
#include<stdio.h>
int main()
{
int n = 0;
int arr[10][10] = { 0 };
//表示矩阵是n*n个元素
scanf("%d", &n);
//输入这个n*n的矩阵
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
scanf("%d", &arr[i][j]);
//判断n*n的矩阵是否为上三角矩阵
if (i > j) //i<j 则是对下三角矩阵的判断
{
if (arr[i][j] != 0)
{
printf("NO\n");
return 0;
}
}
}
}
printf("YES\n");
return 0;
}
三角矩阵的判断其实只要掌握做题的思路,就可以很容易的判断上三角矩阵或者是下三角矩阵。
二 矩阵转置
输入:2 3
1 2 3
4 5 6
输出:
1 4
2 5
3 6
思路:
代码:
#include <stdio.h>
int main() {
int n=0;
int m=0;
int arr[10][10]={0};
int i=0;
int j=0;
//输入n*m个元素的矩阵
scanf("%d %d",&n,&m);
//输入n行m列的元素
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%d",&arr[i][j]);
}
}
//打印转换后的矩阵
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%d ",arr[j][i]);
}
printf("\n");
}
return 0;
}
三 矩阵交换
1.描述
一个矩阵,经过k次行变换或列变换后得到的矩阵;
第一行包含两个整数n和m,表示一个矩阵包含n行m列;
接下来一行输入k,表示要执行k次操作,接下来有k行,每行包括一个字符t和两个数a和b,中间用空格格分隔,t代表需要执行的操作,当t为字符’r’时代表进行行变换,当t为字符’c’时代表进行列变换,a和b为需要互换的行或列;其他字符不处理
例如1:
输入:
2 2 //n*m个元素
1 2 /元素内容
3 4
1 //代表需要执行下面的一次操作
r 1 2 //r是行变化,第1行 和第2行是需要互换的行
例如2:
输入:
2 2
1 2
3 4
2 //代表需要执行下面的2次操作
c 1 2 //c是列变化,第1列和第2列是需要互换的列
t 1 2 //除了r和c,其他字符不处理
2. 思路
3. 代码
#include <stdio.h>
int main() {
int n = 0, m = 0;
int arr[10][10] = { 0 };
scanf("%d %d", &n, &m);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
scanf("%d", &arr[i][j]);
}
}
int k = 0;
scanf("%d", &k);
for (int i = 0; i < k; i++)
{
char t = 0;
int a = 0, b = 0;
scanf(" %c %d %d", &t, &a, &b);
if (t == 'r')
{
//行交换
for (int j = 0; j < n; j++)
{
int temp = 0;
temp = arr[a - 1][j];
arr[a - 1][j] = arr[b - 1][j];
arr[b - 1][j] = temp;
}
}
else if (t == 'c')
{
//列交换
for (int j = 0; j < n; j++)
{
int temp = 0;
temp = arr[j][a - 1];
arr[j][a - 1] = arr[j][b - 1];
arr[j][b - 1] = temp;
}
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
四 杨辉三角
杨辉三角:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
…
3. 代码
#include<stdio.h>
int main()
{
int arr[50][50] = { 0 };
int n = 0;
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (i == j || j == 0)
{
arr[i][j] = 1;
}
else if(i>=2&&j>=1)
{
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
}
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j <= i; j++)
{
printf("%5d", arr[i][j]);
}
printf("\n");
}
return 0;
}