「这是我参与2022首次更文挑战的第6天,活动详情查看:2022首次更文挑战」
BC103 序列重组矩阵
校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地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≤10,1≤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;
}