http://blog.csdn.net/itcastcpp//details/39277193
題目:隨機生成1024個數,存入一段內存,用指針實現獲取1024個數的最大數地址,最小數地址,具體實現如下:
[cpp]?view plain?copy
- #include<stdlib.h>??
- #include<stdio.h>??
- #include<time.h>??
- int?FindMaxMinByIndex(int?*?pInput,?int?nLen,?int?**?ppMax,?int?**?ppMin)??
- {??
- ????if?(!ppMax)??
- ????{??
- ????????return?0;??
- ????}??
- ????if?(!ppMin)??
- ????{??
- ????????return?0;??
- ????}??
- ????if?(!pInput)??
- ????{??
- ????????return?0;??
- ????}??
- ????int?i?=?0;??
- ????int?*?pMax?=?&pInput[0];??
- ????int?*?pMin?=?&pInput[0];??
- ????for?(i?=?0;?i?<?nLen;?i++)??
- ????{??
- ????????if?(*pMax?<?pInput[i])??
- ????????{??
- ????????????pMax?=?pInput?+?i;??
- ????????}??
- ????????if?(*pMin?>?pInput[i])??
- ????????{??
- ????????????pMin?=?pInput?+?i;??
- ????????}??
- ????}??
- ????*ppMax?=?pMax;??
- ????*ppMin?=?pMin;??
- ????return?1;??
- }??
- int?FindMaxMinByPtr(int?*?pInput,?int?nLen,?int?**?ppMax,?int?**?ppMin)??
- {??
- ????if?(!pInput?||?!ppMax?||?!ppMin)??
- ????{??
- ????????return?0;??
- ????}??
- ????int?*?pCurPtr?=?pInput;??
- ????int?*?pEndPtr?=?pInput?+?nLen;??
- ????int?*?pMax?=?pInput;??
- ????int?*?pMin?=?pInput;??
- ????for?(;?pCurPtr?<?pEndPtr;?pCurPtr++)??
- ????{??
- ????????if?(*pMax?<*pCurPtr)??
- ????????{??
- ????????????pMax?=?pCurPtr;??
- ????????}??
- ????????if?(*pMin?>?*pCurPtr)??
- ????????{??
- ????????????pMin?=?pCurPtr;??
- ????????}??
- ????}??
- ????*ppMax?=?pMax;??
- ????*ppMin?=?pMin;??
- ????return?1;??
- }??
- int?main()??
- {??
- ????int?Data[1024]?=?{?0?};??
- ????int?i?=?0;??
- ????srand(time(NULL));??
- ????for?(i?=?0;?i?<?1024;?i++)??
- ????{??
- ????????Data[i]?=?rand()?%?10;??
- ????}??
- ????printf("數據:\n");??
- ????for?(i?=?0;?i?<?1024;?i++)??
- ????{??
- ????????printf("%d??",?Data[i]);??
- ????}??
- ????printf("\n");??
- ????int?*?pMax?=?NULL;??
- ????int?*?pMin?=?NULL;??
- ????if?(FindMaxMinByIndex(Data,?1024,?&pMax,?&pMin)?==?0)??
- ????{??
- ????????printf("查找失敗.\n");??
- ????}??
- ????else??
- ????{??
- ????????printf("最大數:%d,最小數:%d,最大數地址:%p,最小數地址:%p\n",?*pMax,?*pMin,?pMax,?pMin);??
- ????}??
- ????if?(FindMaxMinByPtr(Data,?1024,?&pMax,?&pMin)?==?0)??
- ????{??
- ????????printf("查找失敗.\n");??
- ????}??
- ????else??
- ????{??
- ????????printf("最大數:%d,最小數:%d,最大數地址:%p,最小數地址:%p\n",?*pMax,?*pMin,?pMax,?pMin);??
- ????}??
- ??
- ????system("pause");??
- ????return?0;??
- }??