2、首先输入一个大于2且小于10的整数m 和n,然后定义一个二维整形数组(mn),初始化该数组,将该数组中最大元素所在的行和最小元素所在行对调。
要求:
(1)mn数组元素的值由scanf函数从键盘输入(假定最大值和最小值不在同一行),然后输出该数组;
(2)查找最大值最小值所在行,将两行元素对调后输出新的数组;
(3)为直观起见,数组按照m行n列的方式输出;
(4)假设最大值最小最出现在同一行上,请修改程序。
Void main()(部分参考代码)
{int martix[9][9],min,max,temp;
int i,j,m,n,nMax=0,nMin=0;
printf(“please input m and n of martix:\n”);
scanf(......);
......}
#include<stdio.h>
int main()
{
int m, n, i, j, z, max, min, nmax;
printf("请输入两个大于2且小于10的整数\n");
scanf_s("%d%d", &m, &n);
z = m * n;
printf("请输入%d个整数,注意最大值和最小值应该在同一行\n", z);
int a[9][9];
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
scanf_s("%d", &a[i][j]);
}
}
printf("该数组为:\n");
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
printf("%d\t", a[i][j]);
}
printf("\n");
}
max = a[0][0];
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
if (max <= a[i][j])
{
max = a[i][j];
nmax = i + 1;
}
}
}
printf("最大值和最小值都在第%d行", nmax);
return 0;
}
以下是题目所需的完整程序:
#include <stdio.h>
void swap(int arr[][9], int i, int j)
{
for (int k = 0; k < 9; k++) {
int temp = arr[i][k];
arr[i][k] = arr[j][k];
arr[j][k] = temp;
}
}
int main()
{
int m, n;
printf("Please input m and n of matrix (2 < m, n < 10):\n");
scanf("%d %d", &m, &n);
int matrix[9][9];
int min = 10000, max = -10000;
// Input and find min/max element
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &matrix[i][j]);
if (matrix[i][j] < min) {
min = matrix[i][j];
nMin = i;
}
if (matrix[i][j] > max) {
max = matrix[i][j];
nMax = i;
}
}
}
printf("Input matrix:\n");
// Output matrix
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
// Swap rows if min and max are not in the same row
if (nMin != nMax) {
swap(matrix, nMin, nMax);
printf("Swapped matrix:\n");
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
} else {
printf("Cannot swap matrix.\n");
}
return 0;
}
程序中使用了一个辅助函数 swap 来交换数组的两行,其余代码按照题目所需的要求依次实现。注意,题目中输入的 m 和 n 为整数,而数组的维度不能直接用变量表示,因此程序中数组的维度为 9*9,超过输入的 m 和 n 的部分没有被使用。此外,程序假设了最大值和最小值不在同一行上,因此在处理该情况时需要先进行检查,如果在同一行上则直接输出“Cannot swap matrix.”。
不知道你这个问题是否已经解决, 如果还没有解决的话: