C语言二维数组指针求每行最大值
代码如下:
#include <stdio.h>
int main() {
int a[4][4], *p, max;
int i, j;
// 输入二维数组元素
printf("请输入二维数组a[4][4]的元素:\n");
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
scanf("%d", &a[i][j]);
}
}
// 使用指针遍历二维数组并求每行最大值
for (i = 0; i < 4; i++) {
p = &a[i][0]; // 指针指向该行的第一个元素
max = *p; // 初始最大值为该行第一个元素
for (j = 1; j < 4; j++) {
if (*(p + j) > max) { // 判断当前元素是否大于最大值
max = *(p + j); // 更新最大值
}
}
printf("第 %d 行的最大值为:%d\n", i + 1, max);
}
return 0;
}
解释:
- 定义二维数组
a[4][4]和指针p,用于存储数组元素和指向数组元素。 - 使用嵌套循环输入二维数组元素。
- 使用外层循环遍历每一行,内层循环使用指针
p遍历该行的所有元素。 - 将指针
p指向当前行的第一个元素,并将最大值max初始化为第一个元素的值。 - 使用内层循环遍历该行剩余元素,比较当前元素与最大值,更新最大值。
- 输出每行的最大值。
注意:
- 该程序中使用了指针访问数组元素,提高了代码的效率和可读性。
- 您可以根据需要修改数组的大小和元素类型。
- 可以使用更简洁的方式来获取每行最大值,例如使用
max(a[i][0], max(a[i][1], max(a[i][2], a[i][3])))来直接获取最大值。
原文地址: https://www.cveoy.top/t/topic/ol9J 著作权归作者所有。请勿转载和采集!