牛客网基础编程练习题_1_24

129 阅读1分钟

「这是我参与2022首次更文挑战的第6天,活动详情查看:2022首次更文挑战

BC103 序列重组矩阵 warning 校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。

描述

KiKi现在得到一个包含nm个数的整数序列,现在他需要把这nm个数按顺序规划成一个n行m列的矩阵并输出,请你帮他完成这个任务。

输入描述:

一行,输入两个整数n和m,用空格分隔,第二行包含n*m个整数(范围-231~231-1)。(1≤n≤10, 1≤m≤10)

输出描述:

输出规划后n行m列的矩阵,每个数的后面有一个空格。

示例1

输入:

2 3
1 2 3 4 5 6

复制

输出:

1 2 3
4 5 6

#include<stdio.h>
/*
int main()
{
    int n = 0;//[1,10]
    int m = 0;//[1,10]
    //输入n,m的值
    int arr[10][10] = {0};
    scanf("%d %d",&n,&m);
    int i = 0;
    for(i = 1; i <= n; i++)      //若写成i从0开始,0%m = 0
    {
        int j = 0;
        for(j = 1;j <= m;j++)
        {
            scanf("%d",&arr[i-1][j-1]);
        }
        for(j = 1;j <= m;j++)
        {
            printf("%d ",arr[i-1][j-1]);
        }
        printf("\n");
    }
    return 0;
}
*/
//写法2
/*
#include<stdio.h>
int main()
{
    int n = 0;//[1,10]
    int m = 0;//[1,10]
    //输入n,m的值
    int arr[10][10] = { 0 };
    scanf("%d %d", &n, &m);
    int i = 0;
    for (i = 0; i < n; i++)   //写成从0开始也可以    
    {
        int j = 0;
        for (j = 0; j < m; j++)
        {
            scanf("%d", &arr[i][j]);
        }
        for (j = 0; j < m; j++)
        {
            printf("%d ", arr[i][j]);
        }
        printf("\n");
    }
    return 0;
}
*/

//写法3
int main()
{
     int n = 0;//[1,10]
     int m = 0;//[1,10]
    //输入n,m的值
    scanf("%d %d", &n, &m);
    int i = 0;
    int tmp = 0;
    for(i = 1; i <= m*n; i++)
    {
        scanf("%d",&tmp);
        printf("%d ",tmp);
        if(i % m == 0)    //所以i不能从0开始,否则出问题 0%m=0
            printf("\n");
    }
    return 0;
}

BC104 最高身高

## 描述

KiKi想从n行m列的方阵队列中找到身高最高的人的位置,请你帮助他完成这个任务。

### 输入描述:

第一行包含两个整数n和m,表示这个方阵队列包含n行m列。从2到n+1行,每行输入m个整数(范围-231~231-1),用空格分隔,共输入n*m个数,表示方阵中的所有人的身高(保证输入身高都不相同)。(1≤x≤n≤101≤y≤m≤10)

### 输出描述:

一行,输出两个整数,用空格分隔,表示方阵中身高最高的人所在的行号和列号。

## 示例1

输入:

2 2 175 180 176 185


复制

输出:

2 2

#include<stdio.h>
int main()
{
    int n = 0;
    int m = 0;
    int arr[10][10] = {0};
    //输入
    scanf("%d %d",&n,&m);
    //输入数据
    int i = 0;
    int x = 0;//行坐标
    int y = 0;//列坐标
    int max = 0;
    for(i = 0; i < n; i++)
    {
        int j = 0;
        for(j = 0; j < m; j++)
        {
            scanf("%d",&arr[i][j]);
               if(arr[i][j] > max)
               {
                   //注意此处还要给max赋值,不然每次max进行比较都是0
                   max = arr[i][j];
                   x = i;
                   y = j;
               }
        }
    }
    //从示例中可以看出,输出的行和列下标是从1开始的 
    //所以我们打印时,x和y的值要+1
    printf("%d %d",x+1,y+1);
    return 0;
}