输出字符回形阵

来源:互联网 发布:网络连接设备包括 编辑:程序博客网 时间:2024/05/04 11:27

【题】

输出字符回形阵


输入图形行数N和中心字符,输出如图所示回形方阵。
例如,输入:5 Z
输出如下图形:
X  X  X  X  X
X  Y  Y  Y  X  
X  Y  Z  Y  X
X  Y  Y  Y  X
X  X  X  X  X

注:N<24,且N是奇数。


 测试输入关于“测试输入”的帮助期待的输出关于“期待的输出”的帮助时间限制关于“时间限制”的帮助内存限制关于“内存限制”的帮助额外进程关于“{$a} 个额外进程”的帮助测试用例 1以文本方式显示
  1. 5 Z↵
以文本方式显示
  1. X X X X X↵
  2. X Y Y Y X↵
  3. X Y Z Y X↵
  4. X Y Y Y X↵
  5. X X X X X↵
无限制64M0测试用例 2以文本方式显示
  1. 3 a↵
以文本方式显示
  1. z z z↵
  2. z a z↵
  3. z z z↵
无限制64M0测试用例 3以文本方式显示
  1. 2 b↵
以文本方式显示
  1. 2 is not a odd number!↵
无限制64M0
【代码】

#include <stdio.h>#define N 100void Output(char arr[][N],int n);void Init(char arr[][N], int n);void Func(char arr[][N], int n, char ch);int main( ){    int n;    char ch, arr[N][N];scanf("%d", &n);getchar();ch = getchar();//putchar(ch);    if(n % 2 == 0)    {        printf("%d is not a odd number!\n", n);        return 0;    }    Init(arr, n);//Output(arr, n);    Func(arr, n, ch);    Output(arr, n);return 0;}void Func(char arr[][N], int n, char ch){    int i, j;    char tmpCh;    for(i = 0; i <= n / 2; i++){    if(ch >= 'A' && ch <= 'Z')            tmpCh = (ch - 'A' - (n/2-i) + 26*(n/2/26+ 1)) % 26 + 'A';        else            tmpCh = (ch - 'a' - (n/2-i) + 26*(n/2/26+ 1)) % 26 + 'a';    for(j = 0; j < n; j++)          //上侧            if(arr[i][j] == '\0')                arr[i][j] = tmpCh;        for(j = 0; j < n; j++)          //右侧            if(arr[j][n-1-i] == '\0')                arr[j][n-1-i] = tmpCh;        for(j = 0; j < n; j++)          //左侧            if(arr[j][i] == '\0')                arr[j][i] = tmpCh;        for(j = 0; j < n; j++)          //下侧            if(arr[n-1-i][j] == '\0')                arr[n-1-i][j] = tmpCh;}}void Init(char arr[][N], int n){    int i, j;    for(i = 0; i < n; i++){    for(j = 0; j < n; j++)            arr[i][j] = '\0';}}void Output(char arr[][N], int n){    int i, j;    for(i = 0; i < n; i++){    for(j = 0; j < n-1; j++)            printf("%c ", arr[i][j]);        printf("%c\n", arr[i][j]);}}



原创粉丝点击