程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> 筆試題目:順時針打印矩陣

筆試題目:順時針打印矩陣

編輯:關於C
筆試的一道題目,筆試的時候還是差一點,但是大體思路是正確的: 1.根據輸入的行與列確定該矩陣由多少個矩形組成矩形層數level=( n>m? n:m)/2得出。 2.每一層矩形,按順時針方向設置組成矩形的值 3.打印 重點:1.動態定義數組 [plain]   <pre name="code" class="plain">//開辟內存空間動態建立二維數組。       matrix=(int **)calloc(n,sizeof(int *));       for(i=0;i<n;i++)       {           matrix[i]=(int *)calloc(m,sizeof(int));       }</pre><br>   2.當前層數包含的值的范圍以及矩形四條邊包含的值的范圍的劃分。 [plain]  rectLength=(m-i*2);           rectWidth=(n-i*2);              right=rectLength+rectWidth-1;           bottom=rectLength+rectWidth-1+rectLength-2;           left=(rectLength+rectWidth-2)*2;     [plain] view plaincopy #include<stdlib.h>   void show(int m,int n) //m =chang n=kuang   {       int **matrix;       int i,j;//i為當前層,j為當前矩形的當前位置       int rectLength,rectWidth;//矩形的長和寬       int level;       int sum=0;       int topL,rightL,bottomL,leftL,right,bottom,left;       if(!n || !m)           return ;       //開辟內存空間動態建立二維數組。       matrix=(int **)calloc(n,sizeof(int *));       for(i=0;i<n;i++)       {           matrix[i]=(int *)calloc(m,sizeof(int));       }       level=n>m ?n:m;       level=level/2; //矩形層數       sum=1;       for(i=0;i<=level;i++)  //修改每一層矩形的內容       {           rectLength=(m-i*2);           rectWidth=(n-i*2);              right=rectLength+rectWidth-1;           bottom=rectLength+rectWidth-1+rectLength-2;           left=(rectLength+rectWidth-2)*2;              for(j=1;j<= left;j++) //           {                  if(j<=rectLength) //上邊               {                      matrix[i][j-1+i]=sum++;                   continue;               }               else if(j > rectLength && j<=right) //右邊                 {                   matrix[j-rectLength+i][m-i-1]=sum++;                   continue;               }               else if( j >right && j<= bottom) //下邊               {                   matrix[n-i-1][bottom-j+1+i]=sum++;                   continue;               }               else if( j > bottom && j<= left ) //左邊               {                   matrix[left-j+1+i][i] =sum++;                   continue;               }               if(sum > n*m -1)                   break;           }       }       for(i=0;i<n;i++)       {           printf("\n");           for(j=0;j<m;j++)               printf("%4d",matrix[i][j]);       }       printf("\n");   }      void main()   {       int i,j;       printf("please input length and width ");       scanf("%d %d",&i,&j);       show(i,j);   }          
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved