T611392 二维数组练习

解题思路

  1. 问题分析

    • 题目要求从一个4行5列的二维数组中,找出所有行号和列号之和等于给定值k的元素。

    • 行号和列号从1开始计数。

    • 需要按照行优先的顺序输出这些元素(即先输出第一行符合条件的元素,再第二行,以此类推)。

    • 如果没有符合条件的元素,则输出"none"。

  2. 实现方法

    • 使用双重循环遍历二维数组的每个元素。

    • 对于每个元素,检查其行号i和列号j的和是否等于k。

    • 如果满足条件,则输出该元素,并标记已找到至少一个元素。

    • 遍历结束后,如果没有找到任何符合条件的元素,则输出"none"。

  3. 注意事项

    • 行列号从1开始,因此循环变量i和j的初始值应为1。

    • 输出时需要用空格分隔多个元素。

    • 需要用一个标志变量f来记录是否找到过符合条件的元素。

代码注释

#include<bits/stdc++.h>
using namespace std;

int main()
{
    int k, a[10][10];  // 定义k和二维数组,数组大小设为10x10以避免越界
    cin >> k;  // 输入目标值k

    // 输入4行5列的二维数组
    for(int i = 1; i <= 4; i++)
        for(int j = 1; j <= 5; j++)
            cin >> a[i][j];
    
    int f = 0;  // 标志变量,用于判断是否找到符合条件的元素

    // 遍历二维数组的每个元素
    for(int i = 1; i <= 4; i++)
        for(int j = 1; j <= 5; j++)
        {
            // 检查行号和列号之和是否等于k
            if(i + j == k){
                cout << a[i][j] << " ";  // 输出符合条件的元素
                f = 1;  // 标记已找到至少一个元素
            }
        }

    // 如果没有找到任何元素,输出"none"
    if(f == 0) cout << "none"; 

    return 0;
}

代码解释

  1. 输入处理

    • 首先读取目标值k。

    • 然后使用双重循环读取4行5列的二维数组,存储到a数组中。

  2. 查找和输出

    • 初始化标志变量f为0,表示尚未找到符合条件的元素。

    • 使用双重循环遍历数组的每个元素,检查行号i和列号j的和是否等于k。

    • 如果满足条件,输出该元素,并将f设为1表示已找到。

  3. 无结果处理

    • 循环结束后检查f的值,如果仍为0,说明没有找到任何符合条件的元素,输出"none"。

示例分析

对于样例输入:

6
5 8 6 7 9
1 5 4 7 5
2 5 4 7 6
3 6 9 9 1
  • 行号和列号之和为6的元素有:

    • (1,5): 9

    • (2,4): 7

    • (3,3): 4

    • (4,2): 6

  • 按照行优先顺序输出:9 7 4 6

  •  
 
 
posted @ 2025-05-24 15:26  CRt0729  阅读(50)  评论(0)    收藏  举报