如何用指针遍历数组解决实际问题
在解决数组问题时应该注意什么
指针,是C语言中的一个重要概念及其特点,也是掌握C语言比较困难的部分。指针也就是内存地址,指针变量是用来存放内存地址的变量,如何利用指针的特性解决问题
假设有浮点型数组:list[2][5] = { { 3.5, 7.1, 6.0, -9.9, -2.3 }, { 18.2, 1.2, 5.5, 4.8, -3.2 } };
首先,使用指针遍历数组,并计算出该数组所有元素的最大值、最小值和平均值,分别存储到变量max、min、和average中;
最后,分3行输出上一步得到的3个值,结果保留3位小数。
#include <stdio.h>
int main()
{
float list[2][5] = { { 3.5, 7.1, 6.0, -9.9, -2.3 }, { 18.2, 1.2, 5.5, 4.8, -3.2 } };
float *p = list[0]; // 指向数组第一行的指针
float max, min, sum = 0;
max = *p; min = *p; // 初始化最大和最小值为数组第一元素
for(int i=0; i<2; i++) { // 遍历二维数组的两行
for(int j=0; j<5; j++) { // 遍历每行的5个元素
if(*p > max) max = *p; // 更新最大值
if(*p < min) min = *p; // 更新最小值
sum += *p; // 累加每元素求和
p++; // 指针移到下一元素
}
}
float average = sum / 10; // 求平均值,10个元素
printf("%.3f\n", max);
printf("%.3f\n", min);
printf("%.3f\n", average);
}
在解决数组问题时应注意: