编写程序输出图案。输入一个数值,输出2n-1行的指定字符,组成菱形、梯形、三角形图案。其中菱形每行中间对齐,梯形后n-1行的每行内容相同,三角形后n-1行依次递减。图形符号以及中间的分割符都可以设置。比如图形符号为、#、$等;分割符为1个空格、2个空格、制表符等。
比如输入:2,*,空格
一道C++题,请各位专家解答 !
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 技术专家团-小桥流水 2021-10-21 16:11关注
你这个题目说的不清楚,如果用制表符分割的话,是不好中间对齐的。
如有帮助,请帮忙采纳一下,谢谢。
代码如下:代码
#include <iostream> #include <string> using namespace std; int main() { int i,j,n,t; char ss,ch,sp[10],buf[100]; cin >> n; cin.get(); //过滤逗号 ch = cin.get();//接收显示符号 cin.get();//过滤逗号 cin.getline(sp,9); //接收分割符 //菱形 cout << "选择菱形输出:"<<endl; int maxl = n+(n-1)*strlen(sp); //最大长度 for (i=0;i<2*n-1;i++) { memset(buf,0,100); t = 0; if(i<n) { for(j=0;j<=i;j++) { sprintf(buf+t,"%c",ch); t+=1; if(j<i) { sprintf(buf+t,"%s",sp); t+=strlen(sp); } } }else { for (j=0;j<2*n-1-i;j++) { sprintf(buf+t,"%c",ch); t+=1; if(j<2*n-2-i ) { sprintf(buf+t,"%s",sp); t+=strlen(sp); } } } for(j=0;j< (maxl-strlen(buf))/2;j++) cout <<" "; cout << buf; for(j = 0;j< maxl-(maxl-strlen(buf))/2;j++) cout <<" "; cout << endl; } cout << "选择三角形输出:"<<endl; for (i=0;i<2*n-1;i++) { if(i<n) { for(j=0;j<=i;j++) { if(j<i) cout << ch << sp; else cout << ch << endl; } }else { for(j=0;j<2*n-1-i;j++) { if(j<2*n-2-i) cout << ch <<sp; else cout << ch<<endl; } } } cout << "选择梯形输出:"<<endl; for(i=0;i<2*n-1;i++) { if(i<n) { for(j=0;j<=i;j++) { if(j<i) cout << ch <<sp; else cout << ch << endl; } }else { for(j=0;j<n;j++) { if(j<n-1) cout << ch << sp; else cout << ch << endl; } } } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用
悬赏问题
- ¥15 ansys fluent计算闪退
- ¥15 有关wireshark抓包的问题
- ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
- ¥15 向数据表用newid方式插入GUID问题
- ¥15 multisim电路设计
- ¥20 用keil,写代码解决两个问题,用库函数
- ¥50 ID中开关量采样信号通道、以及程序流程的设计
- ¥15 U-Mamba/nnunetv2固定随机数种子
- ¥15 vba使用jmail发送邮件正文里面怎么加图片
- ¥15 vb6.0如何向数据库中添加自动生成的字段数据。