《算法笔记》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;
}
相关推荐
IronMurphy41 分钟前
【算法三十九】994. 腐烂的橘子
算法
Ares-Wang2 小时前
算法》》旅行商问题 TSP、7座桥问题 哈密顿回路 深度优先 和 宽度优先
算法·深度优先·宽度优先
Liqiuyue2 小时前
Transformer:现代AI革命背后的核心模型
人工智能·算法·机器学习
WolfGang0073212 小时前
代码随想录算法训练营 Day34 | 动态规划 part07
算法·动态规划
Kk.08023 小时前
Linux(十一)fork实例练习、文件操作示例及相关面试题目分享
linux·运维·算法
潇冉沐晴3 小时前
2026CCCC第三次模拟赛 部分题解
算法
WolfGang0073213 小时前
代码随想录算法训练营 Day32 | 动态规划 part05
算法·动态规划
碧海银沙音频科技研究院4 小时前
1-1杰理蓝牙SOC的UI配置开发方法
人工智能·深度学习·算法
啊我不会诶4 小时前
2024CCPC长春邀请赛
算法