zoukankan      html  css  js  c++  java
  • 练习7-8 方阵循环右移

    本题要求编写程序,将给定n×n方阵中的每个元素循环向右移m个位置,即将第0、1、⋯、n1列变换为第nm、nm+1、⋯、n1、0、1、⋯、nm1列。

    输入格式:

    输入第一行给出两个正整数m和n(1)。接下来一共n行,每行n个整数,表示一个n阶的方阵。

    输出格式:

    按照输入格式输出移动后的方阵:即输出n行,每行n个整数,每个整数后输出一个空格。

    输入样例:

    2 3
    1 2 3
    4 5 6
    7 8 9
    
     

    输出样例:

    2 3 1 
    5 6 4 
    8 9 7 
     1 #include<stdio.h>
     2 #include<math.h>
     3 #include<stdlib.h>
     4 #include<string.h>
     5 int main() {
     6     int n = 0;
     7     int m = 0;
     8     int** a;
     9     scanf("%d%d", &m, &n);
    10     a = (int**)malloc(n * sizeof(int*));
    11     for (int i = 0; i < n; i++) {
    12         a[i] = (int*)malloc(n * sizeof(int));
    13         for (int j = 0; j < n; j++) {
    14             scanf("%d", &a[i][j]);
    15         }
    16     }
    17 
    18     m = m % (2 * n);        //举个例子,99 和 4 肯定要先99%8=3 
    19     m = abs(m - n);                        //向左 m 个单位长度
    20     //m %= n;                //可能值很大,我们需要把他们缩小到<n的范围
    21 
    22     for (int i = 0; i < n; i++) {
    23         for (int j = m; j < n; j++) {
    24             printf("%d ", a[i][j]);
    25         }
    26         for (int j = 0; j < m; j++) {
    27             printf("%d ", a[i][j]);
    28         }
    29         printf("
    ");
    30 
    31     }
    32     /*for (int i = 0; i < n; i++) {
    33         for (int j = 0; j < n; j++) {
    34             printf("%d ", a[i][j]);
    35         }
    36         printf("
    ");
    37     }*/
    38     return 0;
    39 }

    做了这个题目,我才深深意识到了,数学逻辑以及数学模型的重要性。!!!

    我希望大家在做题之前,先算,算各种情况它对应的数值,怎么算出来的,把他用代码表示就ok啦!!

  • 相关阅读:
    对于 redux 的一些理解-1.基础
    css 优化
    HTML 理解标签
    css 理解盒模型
    json2.js JSON解析程序
    DOM 核心
    居中
    Director.js
    jquery-2.0.3 源码分析 整体架构
    Zookeeper安装
  • 原文地址:https://www.cnblogs.com/KeithTee/p/13910465.html
Copyright © 2011-2022 走看看