您的位置:首页 > 职场人生

黑马程序员—C学习笔记—数组的求最大值和反转

2015-03-25 16:33 267 查看
———–Java培训、Android培训、IOS培训、.Net培训、期待与您交流!————

本节是个人学习过程中的笔记,供初学者一起学习,大神勿喷。

数组的求最大值和反转,其中一些细节问题,代码注释都有提到,代码如下:

#include <stdio.h>

int main()
{
int a1[]={1,2,3,5,246,34,21,67,90,777};
int length = sizeof(a1)/sizeof(a1[0]);
int totalBits = sizeof(a1);
int maxIndex = 0;
//测试数组地址和元素地址

printf("a1数组地址为:%p\n",a1);
printf("a1数组大小为:%d,长度即数组元素个数为%d\n",totalBits,length);
for (int i=0;i<length;i++)
{
printf("a[%d]地址为:%p,值为:%d\n",i,&(a1[i]),a1[i]);
}

//声明求出数组最大值的函数
int maxNumIndex(int array[],int arraylength);
//int maxNumIndex();也可以声明函数

maxIndex = maxNumIndex(a1,length);
printf("a1数组元素最大值为:%d,是数组的第%d个元素\n",a1[maxIndex],maxIndex+1);

void printArray();//输出数组元素
void reverseArray();//逆转数组元素

printArray(a1,length);
reverseArray(a1,length);
printArray(a1,length);

return 0;
}

void printArray(int array[],int arraylength)
{
printf("数组遍历结果为:");
for (int i=0;i<arraylength;i++)
{
printf("%d,",array[i]);
}
printf("\n");
}

void reverseArray(int array[],int arraylength)
//此处利用数组地址传递,无返回值,以后可以写指针类型的函数,返回目标指针
{
int half = arraylength/2;//从两边向中间收尾交换,无论奇偶数
for (int i=0;i<=half;i++)
{
int temp = array[i];
array[i] = array[arraylength-1-i];
array[arraylength-1-i] = temp;
}
printf("数组逆转操作成功!\n");
}

int maxNumIndex(int* array,int arraylength)
//int* array 等价于 int array[],如此就没有警告了
{
int maxIndex = 0;
int size = sizeof(array);
//int index = 0;
printf("array指针大小为:%d,指向数组的长度即数组元素个数为%d\n",
size,arraylength);//sizeof(array[])是错误的写法
for(int i=0;i<arraylength;i++)
{
if(array[maxIndex]<array[i]) //此处大小,也容易混淆,所以勤快测试
{
maxIndex = i;
}
}

return maxIndex;
}


程序运行结果如下(编辑器突然不能上传图片,那么copy出来了):

MacdeMacBook-Pro:abc mac$ ./array
a1数组地址为:0x7fff5e7ecbe0
a1数组大小为:40,长度即数组元素个数为10
a[0]地址为:0x7fff5e7ecbe0,值为:1
a[1]地址为:0x7fff5e7ecbe4,值为:2
a[2]地址为:0x7fff5e7ecbe8,值为:3
a[3]地址为:0x7fff5e7ecbec,值为:5
a[4]地址为:0x7fff5e7ecbf0,值为:246
a[5]地址为:0x7fff5e7ecbf4,值为:34
a[6]地址为:0x7fff5e7ecbf8,值为:21
a[7]地址为:0x7fff5e7ecbfc,值为:67
a[8]地址为:0x7fff5e7ecc00,值为:90
a[9]地址为:0x7fff5e7ecc04,值为:777
array指针大小为:8,指向数组的长度即数组元素个数为10
a1数组元素最大值为:777,是数组的第10个元素
数组遍历结果为:1,2,3,5,246,34,21,67,90,777,
数组逆转操作成功!
数组遍历结果为:777,90,67,21,246,34,5,3,2,1,
MacdeMacBook-Pro:abc mac$
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐