#include <iostream> //换一种形式的开头吧 using namespace std;//想试用一下c++语法的开头,狗血的是,c++的语法开头,内容竟然是c语言的结构体嗝呵,这里使用了一个关于叫“类”的语句 int main() { int n; //n代表沙漏打印的个数 char c; //c是自行选择的符号 scanf("%d %c",&n,&c); int sum=1;//表示沙漏需要的字符个数 int i=1;//i代表行数 while(sum<=n)//使用while循环段对沙漏两层进行编译 { sum+=2*(2*(i+1)-1);//2*(i+1)-1代表上半部分的符号个数,乘以2代表两半部分 if(sum<=n) i++; } int j,k; for(j=0;j<i;j++) { for(k=0;k<j;k++) printf(" "); //记得将空格打印出来还是最重要的,因为没有空格,等腰三角形状是出不来的 for(k=0;k<2*(i-j)-1;k++) { printf("%c",c); } printf(" "); }//至此为止是对上半部分进行打印 for(j=2;j<=i;j++) { for(k=0;k<i-j;k++) printf(" "); for(k=0;k<2*j-1;k++) { printf("%c",c); } printf(" "); }//至该处即对下半部分进行打印 printf("%d",n-(sum-2*(2*(i+1)-1)));//输出没有用掉的符号 }
```
2.流程思维图
3.运行结果正确截图