2018年第九届省赛C/C++A组第5题——打印图形
生活随笔
收集整理的這篇文章主要介紹了
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=27if(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=27char* buf = (char*)malloc(t*t);//申請空間for(i=0; i<t*t; i++) buf[i] = 0;//將一維數組全部初始化為0draw(buf, t, t/2, t/2, t);show(buf, t);free(buf);//釋放空間return 0; }總結
以上是生活随笔為你收集整理的2018年第九届省赛C/C++A组第5题——打印图形的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2018年第九届省赛C/C++A组第4题
- 下一篇: 1128:图像模糊处理