《算法笔记》3.3小节——入门模拟->图形输出

1036 跟奥巴马一起编程

cpp 复制代码
#include <iostream>
#include <cmath>
using namespace std;

int main() {
    int n,m;
    char c;
    cin>>n>>c;
    for (int i = 0; i < n; ++i) {
        cout<<c;
    }
    cout<<endl;
    m= round(1.0*n/2)-2;//round里面不能直接写n/2,因为n/2已经是一个整数了
    for (int i = 0; i < m; ++i) {
        cout<<c;
        for (int j = 0; j < n-2; ++j) {
            cout<<' ';
        }
        cout<<c<<endl;
    }
    for (int i = 0; i < n; ++i) {
        cout<<c;
    }
    return 0;
}

输出梯形

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int h;
    while(cin>>h){
        for (int i = 0; i < h; ++i) {
            for (int j = 0; j < 2*h-2*(i+1); ++j) {
                cout<<' ';
            }
            for (int j = 0; j < h+2*i; ++j) {
                cout<<'*';
            }
            cout<<endl;
        }
    }
    return 0;
}

Hello World for U

cpp 复制代码
#include <iostream>
#include <cstring>
using namespace std;
const int maxn=81;

int main() {
    char str[maxn];
    cin>>str;
    int len= strlen(str);
    int side=(len+2)/3;
    int mid=len-side*2;
    for (int i = 0; i < side-1; ++i) {
        cout<<str[i];
        for (int j = 0; j < mid; ++j) {
            cout<<' ';
        }
        cout<<str[len-i-1];
        cout<<endl;
    }
    for (int i = side-1; i <=len-side; ++i) {
        //一列有side个字符,所以最后一行起始数字的数组下标为side-1
        //从末尾往前第side个字符的下标是len-side
        cout<<str[i];
    }
    return 0;
}

等腰梯形

  • 注意输出后面的空格
  • 注意第一行的空格数是h-1个
cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int m,h;
    while(cin>>m){
        for (int i = 0; i < m; ++i) {
            cin>>h;
            for (int k = 0; k < h; ++k) {
                for (int j = 0; j < h-k-1; ++j) {
                    cout<<' ';
                }
                for (int j = 0; j < h+2*k; ++j) {
                    cout<<'*';
                }
                for (int j = 0; j < h-k-1; ++j) {
                    cout<<' ';
                }
                cout<<endl;
            }
        }
    }
    return 0;
}

沙漏图形

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int n;
    while(cin>>n){
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < i; ++j) {
                cout<<' ';
            }
            for (int j = 0; j < n-i; ++j) {
                if(j<n-i-1) cout<<'*'<<' ';
                else cout<<'*';
            }
            cout<<endl;
        }
        for (int i = 0; i < n-1; ++i) {
            for (int j = 0; j < (n-2-i); ++j) {
                cout<<' ';
            }
            for (int j = 0; j < i+2; ++j) {
                if(j<i+1) cout<<'*'<<' ';
                else cout<<'*';
            }
            cout<<endl;
        }

    }
    return 0;
}
相关推荐
专注仿真5 小时前
问答大模型技术方案算法实现-RAPTOR树构建算法与BEG集成使用
python·算法
zlinear数据采集卡5 小时前
数据采集卡从入门到精通(10):采样率与分辨率的核心关系——反比律、架构分布与过采样
arm开发·嵌入式硬件·算法·fpga开发·架构·开源
GeekZHR7 小时前
C语言指针进阶补充6:动态内存管理、mem系列内存函数、复杂指针声明,一次补齐指针的“三大盲区“
java·c语言·算法·指针
Herbert_hwt7 小时前
第七章 Java深入理解枚举类型
java·开发语言·算法
小赵AI手记7 小时前
技术拆解(十七)具身智能:机器人动作生成为何走向Diffusion Policy?
人工智能·笔记·python·机器人
.道阻且长.7 小时前
8.LeetCode算法习题讲解--滑动窗口--长度最小的子数组
算法·leetcode·职场和发展
(❁´◡`❁)Jimmy(❁´◡`❁)7 小时前
P1156 [USACO01OPEN] 垃圾陷阱
算法·动态规划
疯狂打码的少年7 小时前
【数据结构】二叉排序树(BST)的定义与操作
数据结构·笔记·算法
蒸蒸yyyyzwd7 小时前
后端面经学习笔记
笔记·学习
lally.7 小时前
整数等差数列超图中的三个非微扰现象
算法