程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> C翻轉

C翻轉

編輯:關於C
前言 北郵的上機題我見一道就必須ac一道,當年被刷的場景和心情一直是這一年多我拼的動力之一,挺好!   題目描述: 首先輸入一個5 * 5的數組,然後輸入一行,這一行有四個數,前兩個代表操作類型,後兩個數x y代表需操作數據為以x y為左上角的那幾個數據。 操作類型有四種:   1 2 表示:90度,順時針,翻轉4個數   1 3 表示:90度,順時針,翻轉9個數   2 2 表示:90度,逆時針,翻轉4個數   2 3 表示:90度,逆時針,翻轉9個數  輸入: 輸入有多組數據。 每組輸入一個5 * 5的數組,然後輸入一行,這一行有四個數,前兩個代表操作類型,後兩個數x y代表需操作數據為以x y為左上角的那幾個數據。 輸出: 輸出翻轉後的數組。 樣例輸入: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 1 3 1 1 樣例輸出: 11 6 1 4 5 12 7 2 9 10 13 8 3 14 15 16 17 18 19 20 21 22 23 24 25   考察重點 主要是考察矩陣的翻轉,可以參考我之前的一篇博客:http://blog.csdn.net/zinss26914/article/details/8514920   AC代碼 [cpp]   #include <stdio.h>   #include <stdlib.h>       void turn904(int (*a)[5], int (*b)[5], int row, int column, int type);   void turn909(int (*a)[5], int (*b)[5], int row, int column, int type);       int main()   {       int i, j, t1, t2, row, column;       int a[5][5], b[5][5];           while(scanf("%d", &a[0][0]) != EOF)       {           //接收矩陣           for(i = 0; i < 5; i ++)           {               for(j = 0; j < 5; j ++)               {                   if(i == 0 && j == 0)                   {                       continue;                   }else                   {                       scanf("%d", &a[i][j]);                   }               }           }               //接收旋轉參數           scanf("%d%d%d%d", &t1, &t2, &row, &column);           row -= 1;           column -= 1;                           //矩陣旋轉           if(t1 == 1 && t2 == 2)           {               //90度4個數               turn904(a, b, row, column, 0);           }else if(t1 == 1 && t2 == 3)           {               //90度9個數               turn909(a, b, row, column, 0);           }else if(t1 == 2 && t2 == 2)           {               //逆90度4個數               turn904(a, b, row, column, 1);           }else if(t1 == 2 && t2 == 3)           {               //逆90度9個數               turn909(a, b, row, column, 1);           }               //打印輸出           for(i = 0; i < 5; i ++)           {               for(j = 0; j < 5; j ++)               {                   if(j == 4)                   {                       printf("%d\n", b[i][j]);                   }else                   {                       printf("%d ", b[i][j]);                   }               }              }       }           return 0;   }       void turn904(int (*a)[5], int (*b)[5], int row, int column, int type)   {       int i, j;           for(i = 0; i < 5; i ++)       {           for(j = 0; j < 5; j ++)           {               if((i == row || i == row + 1) && (j == column || j == column + 1))               {                   switch(type)                   {                       case 0:                           //順時針                           b[i][j] = a[2 - 1 - j][i];                           break;                       case 1:                           //逆時針                           b[i][j] = a[j][2 - 1 - i];                           break;                   }               }else               {                   b[i][j] = a[i][j];               }           }       }   }           void turn909(int (*a)[5], int (*b)[5], int row, int column, int type)   {       int i, j;           for(i = 0; i < 5; i ++)       {           for(j = 0; j < 5; j ++)           {               if((i == row || i == row + 1 || i == row + 2) && (j == column || j == column + 1 || j == column + 2))               {                   switch(type)                   {                       case 0:                           //順時針                           b[i][j] = a[3 - 1 - j][i];                           break;                       case 1:                           //逆時針                           b[i][j] = a[j][3 - 1 - i];                           break;                   }               }else               {                   b[i][j] = a[i][j];               }           }       }   }   /**************************************************************      Problem: 1171      User: wangzhengyi      Language: C      Result: Accepted      Time:10 ms      Memory:908 kb  ****************************************************************/    
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved