文档详情

[2018年最新整理]2010上机测试(二)答案.doc

发布:2018-02-17约4.23千字共14页下载文档
文本预览下载声明
上机测试(二) 1. 找出一个二维数组(4*4)中的鞍点,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。 //第一种解法 void main() { int a[4][4]={{21,23,54,32}, {32,45,64,55}, {32,54,70,76}, {22,4,70,76}}; int i,j,k,max,min,flag=0; for(i=0;i4;i++) { max=a[i][0]; for(j=1;j4;j++) if(a[i][j]max) { max=a[i][j]; k=j; } min=a[0][k]; for(j=1;j4;j++) { if(a[j][k]min) min=a[j][k]; } if(max==min) { flag=1; printf(The result is %d,its in row%d,colum%d,min,i,k); } } if(flag==0) printf(Do not exist such a data.); } //第二种解法 void main() { int i,j; int a[4][4]={{1,4,6,2} ,{2,4,7,11} ,{1,5,9,13} ,{7,22,8,8}}; int flag=0; for(i=0;i4;i++) for(j=0;j4;j++) { if((a[i][j]=a[i][0])(a[i][j]=a[i][1]) (a[i][j]=a[i][2])(a[i][j]=a[i][3]) (a[i][j]=a[0][j])(a[i][j]=a[1][j]) (a[i][j]=a[2][j])(a[i][j]=a[3][j])) { printf(the row is:%d\nthe column is:%d\n,i,j); flag=1; } } if(ad_flag==0) printf(No an dian!); } //改进算法 #define M 4 #define N 4 void main() { int h=0,i,j,k,m; int a[M][N]={{1,4,6,2}, {2,4,7,11}, {1,5,9,13}, {7,22,8,8}}; for(i=0;iM;i++) for(j=0;jN;j++) { m=0; for(k=0;kN;k++) { if(a[i][j]=a[i][k]) m++; } if(m!=N) continue; else { m=0; for(k=0;kM;k++) { if(a[i][j]=a[k][j]) m++; } if(m==M) { printf(第%d行第%d列%4d是鞍点\n,i+1,j+1,a[i][j]); h++; } else continue; } } if(h==0) { printf(没有鞍点); } else { printf(一共有%d个鞍点,h); } } //第三种解法 #define N 4 int i,j,flag=0; int arr[N][N]; int arr_max(int arr[N][N]); int arr_min(int arr[N][N]); void main() { printf(请输入一个四维数组:\n); for(i=0;iN;i++) { printf(请输入第%d行的数字:,i+1); for(j=0;jN;j++) { scanf(%d,arr[i][j]); } } for(i=0;iN;i++) for(j=0;jN;j++) if(arr_max(arr)arr_min(arr)) { printf(鞍点为:%d,在数组的第%d行,第%d列\n,arr[i][j],i+1,j+1); flag=1; } if(!flag) printf(该数组不存在鞍点
显示全部
相似文档