假设下列数组含有一周24小时的温度读数,数组的每一行是某一天的读数:
int temperatures[7][24] ;
编写语句,使用search函数在整个temperatures数组中寻找值32。
#include <stdio.h>
#define TRUE 1
#define FALSE 0
typedef int Bool;
/* 使用二维数组时要把列数写出来(我也不知道为什么一定要写,不写就会报错)*/
Bool search(int a[][24], int m, int n, int key);
main(){
int temperatures[7][24] = {
{ 7, 7, 7, 6, 5, 5, 5, 5, 5, 7, 10, 13, 13, 14, 15, 15, 15, 15, 13, 11, 10, 9, 8, 8},
{ 7, 7, 6, 6, 6, 6, 5, 5, 5, 7, 12, 13, 14, 14, 16, 17, 17, 15, 13, 11, 10, 9, 9, 8},
{ 8, 8, 7, 6, 4, 4, 4, 5, 5, 8, 8, 9, 9, 10, 10, 11, 10, 10, 9, 9, 9, 9, 8, 8},
{ 7, 7, 8, 8, 8, 9, 9, 9, 14, 14, 17, 18, 20, 24, 22, 21, 21, 14, 13, 11, 10, 9, 8, 8},
{ 7, 7, 7, 6, 5, 7, 11, 14, 15, 20, 24, 28, 30, 32, 34, 32, 25, 25, 18, 12, 10, 9, 8, 8},
{ 8, 8, 6, 6, 7, 8, 11, 15, 15, 17, 20, 23, 26, 29, 25, 25, 18, 15, 13, 11, 10, 9, 8, 7},
{ 7, 7, 7, 6, 7, 8, 9, 11, 15, 17, 20, 23, 27, 29, 32, 31, 25, 25, 18, 11, 10, 9, 8, 8}
};
int *p, num, i = 0, result;
printf("Number to search for:");
scanf("%d", &num);
printf("Enter a message:\n");
for(p = &temperatures[0][0]; p <= &temperatures[6][23]; p++) {
printf("%-3d", *p);
i++;
if(i % 24 == 0) printf("\n");
}
result = search(temperatures, 7, 24, num);
printf("Result( 1 = TRUE, 0 = FALSE): %d", result);
return 0;
}
Bool search(int a[][24], int m, int n, int key){
int *p;
for(p = &a[0][0]; p <= &a[m - 1][n - 1]; p++) {
if(key == *p)
return TRUE;
}
return FALSE;
}
程序运行结果如下:
![](https://img-blog.csdnimg.cn/img_convert/95de16ba7078a1d4ac23a263558afc64.png)