星号沙漏

康个题先

傻帽看到鼠标繁忙的时候是一个沙漏符号,正好大家都在学C++,你的任务就是帮他编一个程序打印一个沙漏符号。
输入5及打印

*****
 ***
  *
 ***
*****

分析与解答

我们先打上部分,及从x开始,每次循环x-=2

for(register int i=1;i<=n/2+1;i++){
	for(register int j=1;j<i;j++) cout<<' ';
	for(register int j=x;j>=1;j--) cout<<'*';
	cout<<endl;x-=2;
}	x=3;

最后在中间输出一个星号
再打下部分的,及从3开始每次循环依次加2

for(register int i=n/2+2;i<=n;i++){
	for(register int j=0;j<n-i;j++) cout<<' ';
	for(register int j=0;j<x;j++) cout<<'*';
	cout<<endl;x+=2;

}

代码

#include<bits/stdc++.h>
//#pragma GCC optimize (3)
using namespace std;
inline int read(){	//无聊的快读
    int s=0,w=1;
    char c=getchar();
    while(!isdigit(c)) w=-1,c=getchar();
    while(isdigit(c)) s=s*10+(c^48),c=getchar();
    return s*w;
}
//快写被出题人干掉了 
int main()
{
	int n=read(),x=n;
	for(register int i=1;i<=n/2+1;i++){
		for(register int j=1;j<i;j++) cout<<' ';
		for(register int j=x;j>=1;j--) cout<<'*';
		cout<<endl;x-=2;
	}	x=3;
	for(register int i=n/2+2;i<=n;i++){
		for(register int j=0;j<n-i;j++) cout<<' ';
		for(register int j=0;j<x;j++) cout<<'*';
		cout<<endl;x+=2;
	}
    return 0;
}
/*
*****
 ***
  *
 ***
*****
*/

posted @   Euouae  阅读(57)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示