1.大小与参数传递
#include//参数也可以是:int br[],int n void print_ar(int (*br)[4],int row,int col) //void print_ar(int [3][4],int row,int col) //void print_ar(int [][4],int row,int col) { sizeof(br); for(int i=0;i |
结果:
1 2 3 4 5 6 7 8 9 10 11 12 8 482.练习题
#include#include int main() { int ar[5][2]={1,2,3,4,5,6,7,8,9,10}; int (*p)[2]=&ar[1];/ ++i; } if(i == row) return -1; int j= col-1; while(j>=0 && val
=0&&val == br[i][j]) { pos=i*col+j; } return pos; } int main() { int ar[4][5]= { 2,4,6,8,10, 12,14,16,18,20, 24,27,29,32,33, 38,45,56,78,90 }; int val; scanf("%d",&val); int pos=findvalue(ar,4,5,val); if(pos !=-1) { printf("第%d个元素n",pos+1); printf("行数:%d 列数:%dn",pos/5+1,pos%5+1);} }结果:
90 第20个元素 行数:4 列数:54.折半查询
#include#include int findvalue(int (*br)[5],int row,int col,int val) { assert(br !=NULL); int * ip = (int*)br; int left=0,right=row*col-1; int pos=-1; while(left <= right) { int mid=(right-left)/2+left; if(val ip[mid]) { left=mid+1; } else { pos=mid; break; } } return pos; } int main() { int ar[4][5]= { 2,4,6,8,10, 12,14,16,18,20, 24,27,29,32,33, 38,45,56,78,90 }; int val; scanf("%d",&val); int pos=findvalue(ar,4,5,val); if(pos !=-1) { printf("第%d个元素n",pos+1); printf("行数:%d 列数:%dn",pos/5+1,pos%5+1);} }



