《算法笔记》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;
}
相关推荐
Jerry14 小时前
LeetCode 160. 相交链表
算法
Jerry15 小时前
LeetCode 19. 删除链表的倒数第 N 个结点
算法
金銀銅鐵15 小时前
费马小定理
python·数学·算法
Piko61416 小时前
H3C IRF2 堆叠实战:打造高可靠核心交换网络
运维·网络·笔记
技术不好的崎鸣同学16 小时前
[ACTF2020 新生赛]Exec 思路及解法
算法·安全·web安全
Full Stack Developme18 小时前
Java LRU 与 LFU 算法及应用
java·开发语言·算法
Jerry19 小时前
LeetCode 707. 设计链表
算法
C语言小火车19 小时前
C++ 堆排序深度精讲:基于完全二叉树的选择排序进化,最坏情况 O(n log n) 的稳定王者
开发语言·c++·算法·排序算法·堆排序
weixin_4000056019 小时前
Vision-Language-Action:LMDrive双损失函数训练模块与 LangAuto 基准评测框架
人工智能·深度学习·算法·机器学习·自动驾驶