• 2018年第九届省赛C/C++A组第5题——打印图形


    标题:打印图形

    如下的程序会在控制台绘制分形图(就是整体与局部自相似的图形)。

    当n=1,2,3的时候,输出如下:

    在这里插入图片描述

    请仔细分析程序,并填写划线部分缺少的代码。

    #include <stdio.h>
    #include <stdlib.h>
     
    void show(char* buf, int w){
    	int i,j;
    	for(i=0; i<w; i++){
    		for(j=0; j<w; j++){
    			printf("%c", buf[i*w+j]==0? ' ' : 'o');
    		}
    		printf("\n");
    	}
    }
     
    void draw(char* buf, int w, int x, int y, int size){
    	if(size==1){
    		buf[y*w+x] = 1;
    		return;
    	}
    	
    	int n = _________________________ ; //填空
    	draw(buf, w, x, y, n);
    	draw(buf, w, x-n, y ,n);
    	draw(buf, w, x+n, y ,n);
    	draw(buf, w, x, y-n ,n);
    	draw(buf, w, x, y+n ,n);
    }
     
    int main()
    {
    	int N = 3;
    	int t = 1;
    	int i;
    	for(i=0; i<N; i++) t *= 3;
    	
    	char* buf = (char*)malloc(t*t);
    	for(i=0; i<t*t; i++) buf[i] = 0;
    	
    	draw(buf, t, t/2, t/2, t);
    	show(buf, t);
    	free(buf);
    	
    	return 0;
    }
    
    

    代码

    #include <stdio.h>
    #include <stdlib.h>
    #include <iostream>
    using namespace std;
    
    void show(char* buf, int t)
    {
    	int i,j;
    	for(i=0; i<t; i++)
    	{
    		for(j=0; j<t; j++)
    		{
    			printf("%c", buf[i*t+j]==0? ' ' : 'o');
    		}
    		printf("\n");
    	}
    }
    
    void draw(char* buf, int t, int x, int y, int size)
    {
    //一开始的时候size=t=27
    	if(size==1)
    	{
    		buf[y*t+x] = 1;
    		return;
    	}
    //边界条件是size=0,所以int肯定对size做改变
    //	int n = _________________________ ; //填空
    	int n=size/3;
    	draw(buf, t, x, y, n);
    	draw(buf, t, x-n, y ,n);
    	draw(buf, t, x+n, y ,n);
    	draw(buf, t, x, y-n ,n);
    	draw(buf, t, x, y+n ,n);
    }
    
    int main()
    {
    	int N = 3;
    	int t = 1;
    	int i;
    	for(i=0; i<N; i++) t *= 3;//t=27
    	char* buf = (char*)malloc(t*t);//申请空间
    	for(i=0; i<t*t; i++) buf[i] = 0;//将一维数组全部初始化为0
    
    	draw(buf, t, t/2, t/2, t);
    	show(buf, t);
    	free(buf);//释放空间
    
    	return 0;
    }
    
  • 相关阅读:
    给JFinal添加 Sqlite 数据库支持
    超强、超详细Redis数据库入门教程
    HTML5实现多文件的上传示例代码
    JAVA 使用Dom4j 解析XML
    【VBA研究】Excel VBA利用ADODB访问数据库使用小结
    JFinal 部署在 Tomcat 下推荐方法
    Java WebService 简单实例
    关于XML的验证(DTD与XSD)一点实践
    基于机器学习的web异常检测
    30万奖金!还带你奔赴加拿大相约KDD!?阿里聚安全算法挑战赛带你飞起!
  • 原文地址:https://www.cnblogs.com/AlexKing007/p/12338534.html
Copyright © 2020-2023  润新知