数组练习题

news2024/10/6 2:24:49

1.打印X图案

  • if ((i == j) ||( i + j == n - 1))

  • 循环打印了一个行和列相同的数组

  • 当i==j的时候 打印正斜线

  • i+j==n-1的时候打印反斜线

int main()
{
    int n = 0;
    while (scanf("%d", &n) != EOF)
    {
        for (int i = 0; i < n; i++)  //外循环为行
        {
            for (int j = 0; j < n; j++) //内循环为列
            {
                if (i == j || i + j == n - 1)
                    //最关键的地方,正斜线为[i][i]处是*, 反斜杠为[i][n-1-j]处是*,一行打印1个或2个*
                    printf("*");
                else
                    printf(" ");
            }
            printf("\n"); //打印完一行,换行
        }
    }
    return 0;
}

2.打印空心正方形

用于判断当前打印的位置是否应该是星号 * 的条件。具体来说,if(i==0||i==n-1||j==0||j==n-1) 这个条件判断的逻辑是:

  • i==0:判断当前行是不是第一行(因为行计数从0开始)。

  • i==n-1:判断当前行是不是最后一行。n-1 是最后一行的行索引。

  • j==0:判断当前列是不是第一列。

  • j==n-1:判断当前列是不是最后一列。

如果这四个条件中的任何一个为真,说明当前的 (i, j) 位置位于正方形的边缘(要么是顶部,底部,左侧或右侧边界)。因此,在这些位置上应该打印一个星号 * 。如果这个条件不成立,那么说明当前位置在正方形的内部,应该打印空格 。这种设计确保了正方形的边缘由星号构成,而内部为空。

//打印空心正方形
int main()
{
    int n = 0;
    while (scanf("%d", &n) != EOF)
    {
        for (int i = 0; i < n; i++)  //外循环为行
        {
            for (int j = 0; j < n; j++) //内循环为列
            {
                if ((i == 0 || i == n - 1) ||( j == 0 || j == n - 1))//找规律
                    printf("* ");
                else
                    printf("  ");
            }
            printf("\n");
        }
    }
}
​

3.数组转置

  • 将数组的行和列调换

//数组转置
int main() {
    int i = 0;
    int j = 0;
    int arr[3][3] = { {1,2,3},{4,5,6},{7,8,9} };
    for (i = 0; i < 3; i++) {
        for ( j = 0; j <3 ; j++)
        {
            printf("%d", arr[i][j]);
        }
        printf("\n");
    }
    printf("\n");
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 3; j++)
        {
            printf("%d", arr[j][i]);
        }
        printf("\n");
    }
​
    
}

4.逆序输出

#include<stdio.h>
void Reverse(int arr[], int sz) {
    int l = 0;                   //左下标,从0开始
    int r = sz - 1;              //右下标,从数组最后一项开始
    while (l < r) {              //交换数字,直到左下标大于右下标
        int tmp = 0;
        tmp = arr[l];
        arr[l] = arr[r];
        arr[r] = tmp;
        l++;
        r--;
    }
}
int main() {
    int arr[10] = {0};
    for (int i = 0; i < 10; i++) {
        scanf("%d ", &arr[i]);
    }
    int sz = sizeof(arr) / sizeof(arr[0]);
    Reverse(arr, sz);                  //逆序
    for (int i = 0; i < 10; i++) {
        printf("%d ", arr[i]);
    }
}

5.有序序列合并

  • 描述

输入两个升序排列的序列,将两个序列合并为一个有序序列并输出。

数据范围: 1≤𝑛,𝑚≤1000 1≤n,m≤1000 , 序列中的值满足 0≤𝑣𝑎𝑙≤30000 0≤val≤30000

  • 输入描述:

输入包含三行,

第一行包含两个正整数n, m,用空格分隔。n表示第二行第一个升序序列中数字的个数,m表示第三行第二个升序序列中数字的个数。

第二行包含n个整数,用空格分隔。

第三行包含m个整数,用空格分隔。

  • 输出描述:

输出为一行,输出长度为n+m的升序序列,即长度为n的升序序列和长度为m的升序序列中的元素重新进行升序序列排列合并。

int main()
{
    int n = 0;
    int m = 0;
    int arr1[1000] = {0};
    int arr2[1000] = {0};
    //输入n和m
    scanf("%d %d",&n,&m);
    int i = 0;
    int j = 0;
    //输入两个升序序列
    for(i=0; i<n; i++)
    {
        scanf("%d",&arr1[i]);
    }
    for(i=0; i<m; i++)
    {
        scanf("%d",&arr2[i]);
    }
    //合并有序序列并输出
    i=0;j=0;
    while(i<n && j<m)
    {
        if(arr1[i] < arr2[j])   ///拿arr1中的元素逐个与arr2中的第一个元素比较,小的输出在前
        {
            printf("%d ",arr1[i]);
            i++;
        }
        else
        {
            printf("%d ",arr2[j]); //如果arr2中小的话输出arr2
            j++;
        }
    }
    
   //判断尚未遍历完的数组是否需要打印输出
    if(i==n && j<m)
        for(;j<m;j++)
            printf("%d ",arr2[j]);
    else
        for(;i<n;i++)
            printf("%d ",arr1[i]);
    return 0;
}

6.计算平均值

  • 编写一个程序,从用户输入中读取10个整数并存储在一个数组中。然后,计算并输出这些整数的平均值

int main() {
    int arr[10] = { 0 };
    int i = 0;
    int sum = 0;
    printf("请输入10个整数\n");
    for (i = 0; i < 10; i++) {
        scanf("%d",&arr[i]);
        sum += arr[i];
    }
    float average = (float)sum / 10;
    printf("平均数为:%.2f\n", average);
}

7.交换数组

#include <stdio.h>
​
// 定义一个常量来表示数组的大小
#define ARRAY_SIZE 5
​
// 函数定义:交换两个数组的内容
void swapArrays(int arr1[], int arr2[], int size) {
    for (int i = 0; i < size; i++) {
        // 使用临时变量进行值的交换
        int temp = arr1[i];
        arr1[i] = arr2[i];
        arr2[i] = temp;
    }
}
​
int main() {
    // 定义两个数组A和B,并初始化它们的内容
    int arrayA[ARRAY_SIZE] = { 1, 2, 3, 4, 5 };
    int arrayB[ARRAY_SIZE] = { 6, 7, 8, 9, 10 };
​
    // 输出交换前的数组内容
    printf("交换前的数组A:");
    for (int i = 0; i < ARRAY_SIZE; i++) {
        printf("%d ", arrayA[i]);
    }
    printf("\n");
​
    printf("交换前的数组B:");
    for (int i = 0; i < ARRAY_SIZE; i++) {
        printf("%d ", arrayB[i]);
    }
    printf("\n");
​
    // 调用函数进行数组内容的交换
    swapArrays(arrayA, arrayB, ARRAY_SIZE);
​
    // 输出交换后的数组内容
    printf("交换后的数组A:");
    for (int i = 0; i < ARRAY_SIZE; i++) {
        printf("%d ", arrayA[i]);
    }
    printf("\n");
​
    printf("交换后的数组B:");
    for (int i = 0; i < ARRAY_SIZE; i++) {
        printf("%d ", arrayB[i]);
    }
    printf("\n");
​
    return 0;
}
​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1646449.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ROS机器人入门:机器人系统仿真【学习记录】——2

承接上一篇博客&#xff1a; ROS机器人入门&#xff1a;机器人系统仿真【学习记录】——1-CSDN博客 我们先前结束了&#xff08;上一篇博客中&#xff09;&#xff1a; 1. 概述 2. URDF集成Rviz基本流程 3. URDF语法详解 4. URDF优化_xacro 下面让我们继续学习ROS机器人…

Sentinel流量防卫兵

1、分布式服务遇到的问题 服务可用性问题 服务可用性场景 服务雪崩效应 因服务提供者的不可用导致服务调用者的不可用,并将不可用逐渐放大的过程&#xff0c;就叫服务雪崩效应导致服务不可用的原因&#xff1a; 在服务提供者不可用的时候&#xff0c;会出现大量重试的情况&…

LeetCode 226.翻转二叉树(全网最多的解法)

LeetCode 226.翻转二叉树 1、题目 题目链接&#xff1a;226. 翻转二叉树 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1]示例 2&#…

有什么好用的思维导图软件?6个软件教你快速进行思维导图的制作

有什么好用的思维导图软件&#xff1f;6个软件教你快速进行思维导图的制作 以下是六款常用且功能强大的思维导图软件&#xff0c;它们可以帮助您快速制作思维导图&#xff1a; 迅捷画图: 迅捷画图是一款在线思维导图工具&#xff0c;具有直观易用的界面和丰富的功能。用户可…

无人机反制:雷达探测+信号干扰器技术详解

固定翼无人机、旋翼无人机等&#xff0c;可折叠式无机、DIY无人机等。黑飞&#xff0c;监管困难给航空业带来了诸多隐患&#xff1b;给恐怖袭击及间谍侦察带来新的方式、引发了各国地区政府的忧虑&#xff0c;在中国存在的问题更加严峻。 反无人飞行器防御系统(AUDS)&#xff0…

ElasticSearch 与 OpenSearch:拉开性能差距

Elasticsearch 与 OpenSearch&#xff1a;扩大性能差距 对于任何依赖快速、准确搜索数据的组织来说&#xff0c;强大、快速且高效的搜索引擎是至关重要的元素。对于开发人员和架构师来说&#xff0c;选择正确的搜索平台可以极大地影响您的组织提供快速且相关结果的能力。在我们…

小红书图片文案编辑生成图文工具

在小红书上&#xff0c;种草图文的变现通常涉及以下几个步骤&#xff1a; 1. **建立影响力**&#xff1a;首先&#xff0c;你需要通过持续发布高质量的内容&#xff0c;积累粉丝和影响力。你的内容应该围绕特定的领域或主题&#xff0c;比如时尚、美妆、美食或旅行&#xff0c…

JavaScript中的事件模型

JavaScript中的事件模型分为&#xff1a;事件和事件流、原始事件、标准事件和IE事件。 事件与事件流 JavaScript中的事件&#xff0c;可以理解为HTML文档或者浏览器中发生的一种交互操作&#xff0c;让网页有互动的功能。常见的事件就是加载事件、鼠标事件和自定义事件。 因…

一键安装Halo DB

说明 这里说的一键其实分了好几步&#xff0c;是我将安装步骤分解。你可以把它们放在一个shell中或者串起来就是一键了。 易景科技的数据库 羲和 &#xff08;Halo DB&#xff09; 我之前的一位朋友&#xff08;章晨曦&#xff09;创立的数据库公司。以前看他朋友圈说他做数…

【C语言刷题系列】移除元素

目录 一、问题描述 二、解题思路 三、源代码 个人主页&#xff1a; 倔强的石头的博客 系列专栏 &#xff1a;C语言指南 C语言刷题系列 一、问题描述 二、解题思路 在C语言中&#xff0c;原地移除数组中所有等于特定值的元素并返回新长度的问题可以通过双指针法…

pytest教程-36-钩子函数-pytest_collection_start

领取资料&#xff0c;咨询答疑&#xff0c;请➕wei: June__Go 上一小节我们学习了pytest_unconfigure钩子函数的使用方法&#xff0c;本小节我们讲解一下pytest_collection_start钩子函数的使用方法。 pytest_collection_start(session) 是一个 pytest 钩子函数&#xff0c;…

25 JavaScript学习:var let const

JavaScript全局变量 JavaScript中全局变量存在多种情况和定义方式&#xff0c;下面详细解释并提供相应的举例&#xff1a; 使用var关键字声明的全局变量&#xff1a; var globalVar "我是全局变量";未使用var关键字声明的变量会成为全局变量&#xff08;不推荐使用&…

Celery(分布式任务队列)入门学习笔记

Celery 的简单介绍 用 Celery 官方的介绍&#xff1a;它是一个分布式任务队列; 简单&#xff0c;灵活&#xff0c;可靠的处理大量消息的分布式系统; 它专注于实时处理&#xff0c;并支持任务调度。 Celery 如果使用 RabbitMQ 作为消息系统的话&#xff0c;整个应用体系就是下…

状压dp 理论例题 详解

状压dp 四川2005年省选题&#xff1a;互不侵犯 首先我们可以分析一下&#xff0c;按照我们普通的思路&#xff0c;就是用搜索&#xff0c;枚举每一行的每一列&#xff0c;尝试放下一个国王&#xff0c;然后标记&#xff0c;继续枚举下一行 那么&#xff0c;我们的时间复杂度…

什么是X电容和Y电容?

先补充个知识&#xff1a; 一、什么是差模信号和共模信号 差模信号&#xff1a;大小相等&#xff0c;方向相反的交流信号&#xff1b;双端输入时&#xff0c;两个信号的相位相差180度 共模信号&#xff1a;大小相等。方向相同。双端输入时&#xff0c;两个信号相同。 二、安规…

嵌入式5-6QT

1> 思维导图 2> 自由发挥应用场景&#xff0c;实现登录界面。 要求&#xff1a;尽量每行代码都有注释。 #include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//设置标题this->setWindowTitle("MYQQ");//设置图标this…

5月6号作业

申请该结构体数组&#xff0c;容量为5&#xff0c;初始化5个学生的信息 使用fprintf将数组中的5个学生信息&#xff0c;保存到文件中去 下一次程序运行的时候&#xff0c;使用fscanf&#xff0c;将文件中的5个学生信息&#xff0c;写入(加载)到数组中去&#xff0c;并直接输出学…

PyTorch机器学习实现液态神经网络

大家好&#xff0c;人工智能的发展催生了神经网络这一强大的预测工具&#xff0c;这些网络通过数据和参数优化生成预测&#xff0c;每个神经元像逻辑回归门一样工作。结合反向传播技术&#xff0c;模型能够根据损失函数来调整参数权重&#xff0c;实现自我优化。 然而&#xf…

题目:排序疑惑

问题描述&#xff1a; 解题思路&#xff1a; 做的时候没想到&#xff0c;其实这是以贪心题。我们可以每次排最大的区间&#xff08;小于n&#xff0c;即n-1大的区间&#xff09;&#xff0c;再判断是否有序 。因此只需要分别判断排&#xff08;1~n-1&#xff09;和&#xff08;…

算法学习:二分查找

&#x1f525; 引言 在现代计算机科学与软件工程的实践中&#xff0c;高效数据检索是众多应用程序的核心需求之一。二分查找算法&#xff0c;作为解决有序序列查询问题的高效策略&#xff0c;凭借其对数时间复杂度的优越性能&#xff0c;占据着算法领域里举足轻重的地位。本篇内…