将一个5*5的矩阵中最大的元素放在中心,四个角分别放四个最小的元素(顺序从左到右,从上到下顺序依次从小到大存放),写一个函数实现之。用main函数调用。
2013-05-12 15:13
1016 查看
/************************************************************** * Copyright (c) 2013, 西华师范大学计算机学院 * All rights reserved. * 作 者: 曾舜尧 * 完成日期:2013 年 05 月 12 日 * 工 具:VC6.0 * * 输入描述: * 问题描述:将一个5*5的矩阵中最大的元素放在中心,四个角分别放 * 四个最小的元素(顺序从左到右,从上到下顺序依次从小 * 到大存放),写一个函数实现之。用main函数调用。 * 程序输出: * 问题分析:略 * 算法设计:略 **************************************************************/ #include <stdio.h> #include <stdlib.h> int main(){ void print_array5(int source[5][5]); void adjustAry5(int source[5][5] ); int i,j; int b[5][5]={{35,34,33,32,31},{30,29,28,27,26},{25,24,23,22,21},{20,19,18,17,16},{15,14,13,12,11}}; printf("Please input data? (Array[5][5])\n"); for( i=0;i<5;i++){ for(j=0;j<5;j++){ /*scanf("%d",&b[i][j]);*/} } print_array5(b); adjustAry5(b); print_array5(b); printf("Press any key to exit"); getchar(); //system("exit"); return 0; } void adjustAry5(int source[5][5]){ //void print_array5(int source[5][5]); int N=5,LOOP=4;/*N */ int *pMax,*pAry[4];/*pMax=max;pAry[4] statistics 4 min numbers*/ int i,j,k,z,ibreak,zbreak,tmp;/* */ pMax=pAry[0]=&source[0][0]; for(i=0;i<N;i++){/* max and min data ptr*/ for(j=0;j<N;j++){ if(source[i][j] > *pMax){ /*search the maximum number*/ pMax=&source[i][j]; } else if (source[i][j] < *pAry[0]){/*search the minimum number */ pAry[0]=&source[i][j];} } }/* modify array by max data and min data*/ if(pMax==&source[0][0]){/* before replacement check pMax position,lest cover source[0][0] */ pMax=pAry[0]; } tmp=source[0][0];source[0][0]=*pAry[0];*pAry[0]=tmp;pAry[0]=&source[0][0];/*min replace source[0][0],pArys[0]: min number*/ tmp=source[2][2];source[2][2]=*pMax;*pMax=tmp;pMax=&source[2][2];/*max replace source[2][2],pMax: max number*/ /*printf("%2d\t",*pMax);*/ for (k=1;k<LOOP;k++){/* from 1 to 3 */ pAry[k]=pMax;/*PAry[K] = max*/ ibreak=0; for (i=0;i<N;i++){/* traversal */ /* second */ for (j=0;j<N;j++){ /* Third */ if((source[i][j]<*pAry[k]) && (source[i][j] >= *pAry[k-1])){/* search lessthan Known minimum and more than *pAry[k-1](min) */ zbreak=0; for (z=k-1;z>-1;z--){/* fourth */ if (pAry[z]== &source[i][j]){/* &source[i][j]==pAry[] whether exist(appear) */ zbreak=1; break;/* jump out of the loop */ } } if(zbreak==1) continue;/* end of this cycle(fourth) */ pAry[k]=&source[i][j]; if(*pAry[k]==*pAry[k-1] ){/* optimize */ ibreak=1; break;/* jump out of Third */ } } } if(ibreak==1) break;/* jump out of second */ }/* modify array from array 1 to 3 data*/ switch(k){ case 1: tmp=source[0][4];source[0][4]=*pAry[k];*pAry[k]=tmp;pAry[k]=&source[0][4];/*printf("The %d:\n",k+1);print_array5(source);*/ break; case 2: tmp=source[4][0];source[4][0]=*pAry[k];*pAry[k]=tmp;pAry[k]=&source[4][0];/*printf("The %d:\n",k+1);print_array5(source);*/ break; case 3: tmp=source[4][4];source[4][4]=*pAry[k];*pAry[k]=tmp;pAry[k]=&source[4][4];/*printf("The %d:\n",k+1);print_array5(source);*/ break; } } } void print_array5(int source[5][5]) { int i,j; for( i=0;i<5;i++){ for(j=0;j<5;j++){ printf("%2d ",source[i][j]);} printf("\n"); } printf("\n"); }
相关文章推荐
- 习题 8.10 将一个5*5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放),写一函数实现之。用main函数调用。
- 8.10 将一个5X5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放),写一函数实现之。用main函数调用。
- 将一个5*5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下顺序依次从小到大存放),写一函数实现之。
- 将一个5*5的矩阵中最大的元素放在中心,四个角分别放四个最小的元素
- 将一个5*5 矩阵中最大的放在中间,四个角分别放最小的数据,顺序分别是左右上下,通过函数完成。
- 将一个5*5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素
- 将一个5*5的矩阵中最大的元素放在中心,4个角分别放在4个最小的元素
- 5*5的矩阵中最大的元素放在中心,写一个函数实现
- 将一个5*5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(对比两个程序)
- C语言:将一个5x5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素....
- 函数调用输出一个一维数组中的最大值、最小值、全部元素的和,并将此数组中的值按逆序重新存放。
- 实验9 指针1 、程序填空:下列程序在数组中同时查找最大元素和最小元素的下标,分别存放在 main()函数的max 和 min 变量中。要求:根据运行结果分析程序和填空,并注释说明填充依
- 实验9(1)程序填空:下列程序在数组中同时查找最大元素和最小元素的下标,分别存放在 main()函数的max 和 min 变量中。要求:根据运行结果分析程序和填空,并注释说明填充依据。
- 5*5最大的元素放在中心,4个角分别最小的元素
- 实验9 指针1 1、程序填空:下列程序在数组中同时查找最大元素和最小元素的下标,分别存放在 main()函数的max 和 min 变量中。要求:根据运行结果分析程序和填空,并注释说明填充依据。
- 实现一个函数,传递一个有10个已经排好序的整形元素数组(数组大小实际为11)中,将一个指定的值按顺序插入,并在main函数中将插入后的数组输出。
- 实验九指针1、程序填空:下列程序在数组中同时查找最大元素和最小元素的下标,分别存放在 main()函数的max 和 min 变量中。要求:根据运行结果分析程序和填空,并注释说明填充依据。
- 实现一个栈(元素遵守先入后出顺序),能够通过 min 方法在 O(1)时间内获取栈中的最小元素。同时,栈的基本操作:入栈(Push)、出栈(Pop),也是在O(1)时间内完成的
- 请实现一个队列,既可以存放整数,又可以存放字符串。简单的说,队列是一种数据结构,按照先进先出的顺序管理进、出队列的元素
- 设一个长度为10的整型数组, 0)要求每个元素的值通过scanf输入,输入完成后, 1)请顺序输出这些整数, 2)请倒序输出这些整数, 3)输出这些数中的最大值, 4)输出这些数中的最小值