《算法笔记》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;
}
相关推荐
╭⌒心岛初晴4 分钟前
JAVA练习题(2) 找素数
java·开发语言·算法·java练习题·判断素数/质数
懒懒小徐14 分钟前
2023华为od统一考试B卷【二叉树中序遍历】
数据结构·算法·华为od
自小吃多22 分钟前
FreeRTOS Semaphore信号量-笔记
笔记·stm32
axinawang28 分钟前
python笔记和练习----少儿编程课程【阶段二(二)】
笔记
Timmer丿39 分钟前
kafka学习笔记(四、生产者、消费者(客户端)深入研究(三)——事务详解及代码实例)
java·笔记·学习·kafka
ghie90901 小时前
Kotlin中Lambda表达式和匿名函数的区别
java·算法·kotlin
_Itachi__1 小时前
LeetCode 热题 100 138. 随机链表的复制
算法·leetcode·链表
嘉图明1 小时前
《从数据殖民到算法正义:破解AI垄断的伦理与技术路径》
人工智能·算法
清风来点灯2 小时前
Ubuntu22.04安装显卡驱动/卸载显卡驱动
linux·笔记·ubuntu
S01d13r3 小时前
LeetCode 解题思路 47(最长回文子串、最长公共子序列)
算法·leetcode·职场和发展