• 历届试题 PREV-2 打印十字图


    问题描述
    小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:
    
    ..$$$$$$$$$$$$$..
    ..$...........$..
    $$$.$$$$$$$$$.$$$
    $...$.......$...$
    $.$$$.$$$$$.$$$.$
    $.$...$...$...$.$
    $.$.$$$.$.$$$.$.$
    $.$.$...$...$.$.$
    $.$.$.$$$$$.$.$.$
    $.$.$...$...$.$.$
    $.$.$$$.$.$$$.$.$
    $.$...$...$...$.$
    $.$$$.$$$$$.$$$.$
    $...$.......$...$
    $$$.$$$$$$$$$.$$$
    ..$...........$..
    ..$$$$$$$$$$$$$..
    对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。
    
    输入格式
    一个正整数 n (n<30) 表示要求打印图形的层数。
    输出格式
    对应包围层数的该标志。
    样例输入1
    1
    样例输出1
    ..$$$$$..
    ..$...$..
    $$$.$.$$$
    $...$...$
    $.$$$$$.$
    $...$...$
    $$$.$.$$$
    ..$...$..
    ..$$$$$..
    样例输入2
    3
    样例输出2
    ..$$$$$$$$$$$$$..
    ..$...........$..
    $$$.$$$$$$$$$.$$$
    $...$.......$...$
    $.$$$.$$$$$.$$$.$
    $.$...$...$...$.$
    $.$.$$$.$.$$$.$.$
    $.$.$...$...$.$.$
    $.$.$.$$$$$.$.$.$
    $.$.$...$...$.$.$
    $.$.$$$.$.$$$.$.$
    $.$...$...$...$.$
    $.$$$.$$$$$.$$$.$
    $...$.......$...$
    $$$.$$$$$$$$$.$$$
    ..$...........$..
    ..$$$$$$$$$$$$$..
    提示
    请仔细观察样例,尤其要注意句点的数量和输出位置。
    
    #include<bits/stdc++.h>
    using namespace std;
    int main(){
    	int n;
    	cin>>n;
    	
    	// n=0,5
    	// n=1,9
    	//  
    	int sum = 5+4*n;
    	int **a = new int *[sum];
    	
    	for(int i=0;i<sum;i++){
    		a[i] = new int[sum];
    		for(int j=0;j<sum;j++){
    			a[i][j] = 0;
    		}
    	}
    	int cen = (sum-1)/2;
    	// 打印左上角的图形( 分成a,b,c 三部分)(然后利用对称赋值输出)
    	// 打印a 部分
    	for (int i = cen; i > 0; i = i - 2)	
    	{
    		a[i][i] = 1;
    		a[i-1][i] = 1;
    		a[i][i-1] = 1;
    	}
    	// 打印b部分 
    	int x = 0;
    	for (int y = 0; y <= (cen - 2); y = y + 2)
    	{
    		x = x + 2;
    		for (int i = x; i <= cen; i++)
    		{
    			a[i][y] = 1;
    		}
    	}
    	// 打印c 部分 
    	int y = 0;
    	for (int x = 0; x <= (cen - 2); x = x + 2)
    	{
    		y = y + 2;
    		for (int i = y; i <= cen; i++)
    		{
    			a[x][i] = 1;
    		}
    	}
    	// y轴对称	左上半部分对应左下半部分
    
    	for (int y = 0; y <= cen;y++)
    	for (int x = sum - 1; x > cen; x--)
    	{
    		a[x][y] = a[sum - 1 - x][y];
    	}
    
    	// x轴对称  左半部分 对应右半部分
    
    	for (int x = 0; x < sum;x++)
    	for (int y = sum - 1; y>cen; y--)
    	{
    		a[x][y] = a[x][sum-1- y];
    	}
    	// 输出 图形
    
    	for (int i = 0; i < sum; i++)
    	{
    		for (int j = 0; j < sum; j++)
    		{
    			if(a[i][j]==0){
    				cout<<".";
    			}else{
    				cout<<"$";
    			}
    		}
    		cout<<endl;
    	}
    	
    	return 0;
    }
    

    在这里插入图片描述

  • 相关阅读:
    javascript运算符
    javascript字符串转数字
    javascript的变量声明和数据类型
    javascript的历史和入门
    CSS中定位
    CSS中盒子模型
    CSS操作表格的边框和表格的属性示例代码
    常用的CSS样式示例代码
    CSS伪类选择器
    CSS选择器
  • 原文地址:https://www.cnblogs.com/ZCWang/p/12507456.html
Copyright © 2020-2023  润新知