杭电网安复试编程Day6

1、判断年份是否为闰年

实例要求从键盘输入任意年份的整数 N,通过程序运行判断该年份是否为闰年。

闰年判断逻辑

  • year % 400 == 0:能被400整除的是闰年

  • year % 4 == 0 && year % 100 != 0:能被4整除但不能被100整除的是闰年

#include<iostream>
using namespace std;
bool judgeyear(int n)
{
	if((n%400==0&&n%100==0) || n%4==0) return true;
	else return false;
} 
int main()
{
	int year;
	cin>>year;
	if(judgeyear(year)==1) cout<<year<<"是闰年";
	else  cout<<year<<"不是闰年";
	return 0;
}

2、矩阵转置

本实例是利用数组解决线性代数中的矩阵转置问题。
设有一矩阵为 m×n 阶(即 m 行 n 列),第 i 行 j 列的元素是 a(i,j),需要将该矩阵转置为 n×m 阶的矩阵,使其中元素满足 b(j,i)=a(i,j)。

#include<iostream>
#include<vector>
using namespace std;

int main()
{
    int m, n;
    cin >> m >> n;
    
    // 使用vector自动管理内存
    vector<vector<int> > a(m, vector<int>(n));
    vector<vector<int> > b(n, vector<int>(m));
    
    // 输入矩阵
    for(int i = 0; i < m; i++)
    {
        for(int j = 0; j < n; j++)
        {
            cin >> a[i][j];
        }
    }
    
    // 转置矩阵
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < m; j++)
        {
            b[i][j] = a[j][i];
        }
    }
    
    // 输出转置矩阵
    cout << "转置矩阵为:" << endl;
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < m; j++)
        {
            cout << b[i][j] << " ";
        }
        cout << endl;
    }
    
    return 0;
}

创建 vector

// 创建空vector
vector<int> v1;

// 创建指定大小的vector(默认值初始化)
vector<int> v2(10);           // 10个元素,都是0

// 创建指定大小并初始化所有元素
vector<int> v3(5, 100);       // 5个元素,都是100

// 使用列表初始化(C++11及以上)
vector<int> v4 = {1, 2, 3, 4, 5};

// 从数组创建
int arr[] = {1, 2, 3};
vector<int> v5(arr, arr + 3); // 包含1,2,3

// 拷贝构造
vector<int> v6(v4);           // 复制v4的所有元素

二维 vector(矩阵)

// 创建 m行 n列的二维vector
int m = 3, n = 4;

// 方法1:创建空矩阵,然后resize
vector<vector<int>> mat1;
mat1.resize(m, vector<int>(n));

// 方法2:直接创建并初始化所有元素为0
vector<vector<int>> mat2(m, vector<int>(n));

// 方法3:创建并初始化所有元素为特定值
vector<vector<int>> mat3(m, vector<int>(n, 0));  // 所有元素为0
vector<vector<int>> mat4(m, vector<int>(n, 5));  // 所有元素为5

// 方法4:使用列表初始化
vector<vector<int>> mat5 = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值