20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises15
P216

/*
编写一程序P216.C实现以下功能
求任意的一个m×m矩阵的最大数及其所在的行列数,m(2<=m<=20)及矩阵元素从键盘输入(只考虑int型)。
编程可用素材:
printf("Please input m: ");
printf("\nPlease input array:\n");
printf("\nmax=…,i=…,j=…\n");
程序的运行效果应类似地如图1所示,图1中的红色部分是从键盘输入的内容。
Please input m: 5
Please input array:
1 45 67 235 464
35 6 89 32342 8
347 9346 47 95 746
46 785 436 19434 634
3235 567 24 8465 25
max=32342,i=1,j=3
图1 程序运行效果示例
思路:
1. 最简单的搜索方式:比较得结果
记录最大值
记录行号
记录列号
2. 注意:
矩阵到了C语言下,一般用二维数组来表示,但行和列标的索引是从0开始的,因数二进制计数,0不能浪费
而人在数数时,是从1开始有计数的。
*/
#include <stdio.h>
#define N 20 // m(2<=m<=20) 按题目要求,给定常量
int main(void)
{
int i,j;
int arr[N][N]; // 使用二维数组
int m;
int max, iMark, jMark; // 搜索过程中进行标记和记录
printf("Please input m: ");
scanf("%d", &m);
// 输入矩阵
printf("\nPlease input array:\n");
for ( i = 0; i < m; i++)
{
for ( j = 0; j < m; j++)
{
scanf("%d", &arr[i][j]);
}
}
// 搜索矩阵,找最大,并标记。默认0行0列最大
max = arr[0][0];
iMark = jMark = 0;
for ( i = 0; i < m; i++)
{
for ( j = 0; j < m; j++)
{
if (max < arr[i][j] ) // 如果有更大的,则更新标记和记录
{
max = arr[i][j];
iMark = i;
jMark = j;
}
}
}
// 输出
printf("\nmax=%d,i=%d,j=%d\n", max, iMark, jMark);
return 0;
}
P262

/*
编写一程序P262.C实现以下功能
先从键盘读入整数m和n(约定(2<=m<=20、2<=n<=20)),再从键盘读入m行(每行n个,即一个m×n矩阵)整数,
然后从键盘读入一个列序号,按示例格式显示该列的内容。
编程可用素材:
printf("请输入 m 和 n: ");
printf("请输入 %d 行, 每行 %d 列整数:\n"…);
printf("请输入要显示列的列号: ");
printf("\n该列的内容为: ");
程序的运行效果应类似地如图