题目:开辟一个二维数组,有10*8个元素,用随机数填充,按照下面的方法用函数实现查找一个数是否存在。
具体实现如下:
- #include <stdlib.h>
- #include <stdio.h>
- #include <time.h>
- int find(int * pInput, int nLen, int nKey, int * pOut)
- {
- if (!pInput)
- {
- return 0;
- }
- if (!pOut)
- {
- return 0;
- }
- int * pCurPos = pInput;
- int * pEndPos = pInput + nLen;
- *pOut = 0;
- while (pCurPos < pEndPos)
- {
- if (*pCurPos == nKey)
- {
- *pOut = 1;
- break;
- }
- pCurPos++;
- }
- return 1;
- }
- int main()
- {
- int * p = (int *)malloc(sizeof(int)* 10);
- if (!p)
- {
- printf("内存分配失败.\n");
- return 0;
- }
- int i = 0;
- srand(time(NULL));
- for (i = 0; i < 10; i++)
- {
- p[i] = rand() % 10;
- }
- printf("数组元素:\n");
- for (i = 0; i < 10; i++)
- {
- printf("%d ", p[i]);
- }
- printf("\n");
- int nTemp = 0;
- int nFind = 0;
- printf("请输人要查询的数据:\n");
- scanf("%d", &nTemp);
- if (find(p, 10, nTemp, &nFind) == 0)
- {
- printf("查询失败.\n");
- }
- else
- {
- if (nFind == 0)
- {
- printf("未找到元素:%d\n", nTemp);
- }
- else
- {
- printf("已经找到元素:%d\n", nTemp);
- }
- }
- if (p)
- {
- free(p);
- }
- system("pause");
- return 0;
- }
图1 运行效果