• Dynamic Morphing Square(动态变形矩阵)


    题目描述:

    解题思路:

    先对输入的N进行判断,是否不小于3,如果小于3,需要继续输入一个新的数,知道输入的N比3大。

    第一个打印的矩阵,*号为最外面一圈,其余全为-。

    第二个打印的矩阵,*号向内缩减了一圈。

    依次递减,直到*号缩到最内部,然后又开始往外扩张。

    所以我们设置max和min变量记录每次需要打印*的位置,和第几次打印也是有关的。所以设置变量run记录打印的次数。

    n阶矩阵当打印了n次后,继续循环,所以将run重置为0;

    n的阶数如果是奇数,需要多循环一次。

    代码如下:

     1 #include "stdio.h" 
     2 #include "windows.h"
     3 
     4 int pattern(int n){
     5     int i, j, run;
     6     int max, min;
     7     run = 0;
     8     max = n - 1;
     9     min = 0;
    10 
    11     while(1){
    12         for (i = 0; i < n; i++){
    13 
    14             for (j = 0; j < n; j++)
    15             {
    16                 if ((min <= max && min <= i && i <= max && min <= j && j <= max) && (i == min || i == max || j == min || j == max))
    17                     printf("*");//每次打印,只有一圈*号,既a[i][i]和a[n-i][n-i]之间
    18                 else
    19                     printf("-");
    20             }
    21             printf("
    ");
    22         }
    23         printf("
    ");
    24         if (run < n / 2){
    25             max--;
    26             min++;
    27         }
    28         if (run >= n / 2){
    29             max++;
    30             min--;
    31         }
    32         Sleep(500);//延迟0.5s打印下一个矩阵
    33         run++;
    34         if (run > n-1 && n%2==0)
    35             run = 0;
    36         if (n % 2 != 0 && run>=n-1)//判断输入n的奇偶,是基数提前将run重置成0
    37             run = 0;
    38     }
    39 
    40 }
    41 void main(){
    42     int n;
    43     printf("Input pattern size N :");
    44         
    45     while(scanf_s("%d",&n)){
    46         
    47         if (n < 3){
    48             printf("warning: pattern size should be at least 3!
    ");
    49             printf("Input pattern size N :");
    50         }
    51         else
    52             break;
    53     }
    54 
    55     pattern(n);
    56     
    57     scanf_s("%d", &n);
    58 }

     运行结果:

    源码下载地址:

    http://pan.baidu.com/s/1bnDhl1t 

  • 相关阅读:
    linux下的内存映射函数mmap详解及示例代码
    Android平台上使用属性系统(property system)
    Android筆記
    Android Prelink
    DataGridView BindingSource BindNavigator
    可排序的ListView
    开源2D绘图组件ZedGraph
    BackgroundWorker示例
    级联datagridview 利用datarelation和bindingsource
    继承DataGridView
  • 原文地址:https://www.cnblogs.com/SeekHit/p/4949642.html
Copyright © 2020-2023  润新知