栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

第4讲 数组

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第4讲 数组

737. 数组替换
#include 
#include 

using namespace std;

int main()
{
    int a[10];
    for (int i = 0; i < 10; i ++ )
    {
        cin >> a[i];
        if (a[i] <= 0) a[i] = 1;
    }
    
    for (int i = 0; i < 10; i ++ )
        printf("X[%d] = %dn", i, a[i]);
    
    return 0;
}
738. 数组填充
#include 
#include 

using namespace std;

int main()
{
    int a[10];
    cin >> a[0];
    
    for (int i = 1; i < 10; i ++ ) a[i] = a[i - 1] * 2;
        
    for (int i = 0; i < 10; i ++ ) 
        printf("N[%d] = %dn", i, a[i]);
    
    return 0;
}
739. 数组选择
#include 
#include 

using namespace std;

int main()
{
    double a[100];
    for (int i = 0; i < 100; i ++ ) cin >> a[i];
    
    for (int i = 0; i < 100; i ++ ) 
        if (a[i] <= 10)
            printf("A[%d] = %.1lfn", i, a[i]);
    
    return 0;
}
740. 数组变换
#include 
#include 
#include 

using namespace std;

int main()
{
    int a[20];
    
    for (int i = 0; i < 20; i ++ ) cin >> a[i];
    
    reverse(a, a + 20);
    
    for (int i = 0; i < 20; i ++ ) printf("N[%d] = %dn", i, a[i]);
    
    return 0;
}
741. 斐波那契数列
#include 
#include 

using namespace std;

int main()
{
    long long t ,a[61];
    a[0] = 0, a[1] = 1;
    for (int i = 2; i < 61; i ++ ) a[i] = a[i - 1] + a[i - 2];
    
    cin >> t;
    while (t -- )
    {
        int n;
        cin >> n;
        printf("Fib(%d) = %lldn", n, a[n]);
    }
    
    return 0;
}
742. 最小数和它的位置
#include 
#include 

using namespace std;

int main()
{
    int a[1001];
    int n, pos = 0;
    
    cin >> n;
    cin >> a[0];
    for (int i = 1; i < n; i ++ )
    {
        cin >> a[i];
        if (a[i] < a[pos]) pos = i;
    }
    
    cout << "Minimum value: " << a[pos] << endl;
    cout << "Position: " << pos << endl;
    
    return 0;
}
743. 数组中的行
#include 
#include 

using namespace std;

int main()
{
    double m[12][12];
    int l;
    char t;
    
    cin >> l >> t;
    for (int i = 0; i < 12; i ++ )
        for (int j = 0; j < 12; j ++ )
            cin >> m[i][j];
    
    double sum = 0;
    for (int j = 0; j < 12; j ++ ) sum += m[l][j];
    
    if (t == 'S') printf("%.1lfn", sum);
    else printf("%.1lfn", sum / 12);
    
    return 0;
}
744. 数组中的列
#include 
#include 

using namespace std;

int main()
{
    double m[12][12];
    int c;
    char t;
    
    cin >> c >> t;
    for (int i = 0; i < 12; i ++ )
        for (int j = 0; j < 12; j ++ )
            cin >> m[i][j];
    
    double sum = 0;
    for (int i = 0; i < 12; i ++ ) sum += m[i][c];
    
    if (t == 'S') printf("%.1lfn", sum);
    else printf("%.1lfn", sum / 12);
    
    return 0;
}
745. 数组的右上半部分
#include 
#include 

using namespace std;

int main()
{
    double m[12][12];
    char t;
    
    cin >> t;
    for (int i = 0; i < 12; i ++ )
        for (int j = 0; j < 12; j ++ )
            cin >> m[i][j];
    
    double sum = 0;
    int cnt = 0;
    for (int i = 0; i < 11; i ++ )
        for (int j = i + 1; j < 12; j ++ , cnt ++ )
            sum += m[i][j];
    
    if (t == 'S') printf("%.1lfn", sum);
    else printf("%.1lfn", sum / cnt);
    
    return 0;
}
746. 数组的左下半部分
#include 
#include 

using namespace std;

int main()
{
    double m[12][12];
    char t;
    
    cin >> t;
    for (int i = 0; i < 12; i ++ )
        for (int j = 0; j < 12; j ++ )
            cin >> m[i][j];
    
    double sum = 0;
    int cnt = 0;
    for (int i = 1; i < 12; i ++ )
        for (int j = 0; j < i; j ++ , cnt ++ )
            sum += m[i][j];
    
    if (t == 'S') printf("%.1lfn", sum);
    else printf("%.1lfn", sum / cnt);
    
    return 0;
}
747. 数组的左上半部分
#include 
#include 

using namespace std;

int main()
{
    double m[12][12];
    char t;
    
    cin >> t;
    for (int i = 0; i < 12; i ++ )
        for (int j = 0; j < 12; j ++ )
            cin >> m[i][j];
    
    double sum = 0;
    int cnt = 0;
    for (int i = 0; i < 11; i ++ )
        for (int j = 0; j < 11 - i; j ++ , cnt ++ )
            sum += m[i][j];
    
    if (t == 'S') printf("%.1lfn", sum);
    else printf("%.1lfn", sum / cnt);
    
    return 0;
}
748. 数组的右下半部分
#include 
#include 

using namespace std;

int main()
{
    double m[12][12];
    char t;
    
    cin >> t;
    for (int i = 0; i < 12; i ++ )
        for (int j = 0; j < 12; j ++ )
            cin >> m[i][j];
    
    double sum = 0;
    int cnt = 0;
    for (int i = 1; i < 12; i ++ )
        for (int j = 12 - i; j < 12; j ++ , cnt ++ )
            sum += m[i][j];
    
    if (t == 'S') printf("%.1lfn", sum);
    else printf("%.1lfn", sum / cnt);
    
    return 0;
}
749. 数组的上方区域
#include 
#include 

using namespace std;

int main()
{
    double m[12][12];
    char t;
    
    cin >> t;
    for (int i = 0; i < 12; i ++ )
        for (int j = 0; j < 12; j ++ )
            cin >> m[i][j];
    
    double sum = 0;
    int cnt = 0;
    for (int i = 0; i < 5; i ++ )
        for (int j = i + 1; j < 11 - i; j ++ , cnt ++ )
            sum += m[i][j];
    
    if (t == 'S') printf("%.1lfn", sum);
    else printf("%.1lfn", sum / cnt);
    
    return 0;
}
750. 数组的下方区域
#include 
#include 

using namespace std;

int main()
{
    double m[12][12];
    char t;
    
    cin >> t;
    for (int i = 0; i < 12; i ++ )
        for (int j = 0; j < 12; j ++ )
            cin >> m[i][j];
    
    double sum = 0;
    int cnt = 0;
    for (int i = 7; i < 12; i ++ )
        for (int j = 12 - i; j < i; j ++ , cnt ++ )
            sum += m[i][j];
    
    if (t == 'S') printf("%.1lfn", sum);
    else printf("%.1lfn", sum / cnt);
    
    return 0;
}
751. 数组的左方区域
#include 
#include 

using namespace std;

int main()
{
    double m[12][12];
    char t;
    
    cin >> t;
    for (int i = 0; i < 12; i ++ )
        for (int j = 0; j < 12; j ++ )
            cin >> m[i][j];
    
    double sum = 0;
    int cnt = 0;
    for (int i = 1; i < 11; i ++ )
        for (int j = 0; j < min(i, 11 - i); j ++ , cnt ++ )
            sum += m[i][j];
    
    if (t == 'S') printf("%.1lfn", sum);
    else printf("%.1lfn", sum / cnt);
    
    return 0;
}
752. 数组的右方区域
#include 
#include 

using namespace std;

int main()
{
    double m[12][12];
    char t;
    
    cin >> t;
    for (int i = 0; i < 12; i ++ )
        for (int j = 0; j < 12; j ++ )
            cin >> m[i][j];
    
    double sum = 0;
    int cnt = 0;
    for (int i = 1; i < 11; i ++ )
        for (int j = max(12 - i, i + 1); j < 12; j ++ , cnt ++ )
            sum += m[i][j];
    
    if (t == 'S') printf("%.1lfn", sum);
    else printf("%.1lfn", sum / cnt);
    
    return 0;
}
753. 平方矩阵 I
#include 
#include 

using namespace std;

int main()
{
    int n;
    while (cin >> n, n)
    {
        for (int i = 1; i <= n; i ++ )
        {
            for (int j = 1; j <= n; j ++ )
                cout << min(min(i, n - i + 1), min(j, n - j + 1)) << ' ';
            cout << endl;
        }
        cout << endl;
    }
    
    return 0;
}
754. 平方矩阵 II
#include 
#include 

using namespace std;

int main()
{
    int n;
    while (cin >> n, n)
    {
        for (int i = 1; i <= n; i ++ )
        {
            for (int j = 1; j <= n; j ++ )
                cout << abs(i - j) + 1 << ' ';
            cout << endl;
        }
        cout << endl;
    }
    
    return 0;
}
755. 平方矩阵 III
#include 
#include 
#include 

using namespace std;

int main()
{
    int n;
    while (cin >> n, n)
    {
        for (int i = 0; i < n; i ++ )
        {
            for (int j = 0; j < n; j ++ )
                cout << (int)pow(2, i + j) << ' ';
                //  cout << (1 << (i + j)) << ' ';
            cout << endl;
        }
        cout << endl;
    }
    
    return 0;
}
756. 蛇形矩阵
#include 
#include 

using namespace std;

const int N = 110;

int n, m;
int a[N][N];

int main()
{
    cin >> n >> m;
    
    int dx[] = {0, 1, 0, -1};
    int dy[] = {1, 0, -1, 0};
    int x = 0, y = 0, d = 0;
    
    for (int i = 1; i <= n * m; i ++ )
    {
        a[x][y] = i;
        
        int tx = x + dx[d];
        int ty = y + dy[d];
        if (tx >= n || tx < 0 || ty >= m || ty < 0 || a[tx][ty]) 
            d = (d + 1) % 4;
            
        x += dx[d];
        y += dy[d];
    }
    
    for (int i = 0; i < n; i ++ )
    {
        for (int j = 0; j < m; j ++ )
            cout << a[i][j] << ' ';
        cout << endl;
    }
    
    return 0;
}
其他知识点
  • 一维数组

    • 数组定义
    int a[100];
    
    • 数组初始化
    int a[3] = {0, 1, 2};
    int b[]  = {0, 1, 2};    // 自动分配大小
    int c[4] = {1};         // 长度为 5,没有给出初始值默认为 0
    int d[4] = {0};         // 长度为 4,初始值全为 0
    
    // 全局变量	堆区	初始值随机	空间较大
    // 局部变量	栈区	初始值为零	空间较小
    

  • 多维数组

    • 数组定义
    int a[3][4];
    
    • 数组初始化
    int a[3][3] = {
        {1, 2, 3}, 
        {4, 5, 6},
        {7, 8, 9}
    };
    

  • memset、memcpy

    #include 
    #include 
    
    using namespace std;
    
    int main()
    {
        int a[10];
        memset(a, 0, sizeof(a));	// 以字节为单位初始化 (0 / -1)
        memcpy(b, a, sizeof(b));	// 将 a 复制到 b
        return 0;
    }
    

  • 浮点数比较

    const double eps = 1e-6;
    
    if (fabs(a - b) < eps) puts("相等");
    else
    {
        if (a > b) puts("a > b");
        else puts("a < b");
    }
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/290005.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号