基础版的金字塔勉强能接受,但这个plus版的不会解了,有没有老司机帮解下思路
2条回答 默认 最新
关注 找一个修改修改就行了呀
#include <stdio.h> void PrintNumers(int line) { int i, j, k; int space = 16; // 上三角行循环,由于line与行数相关,故可直接使用line作为范围 for(i = 0; i < line; i ++) { // 输出空格,为了直观,故改空格为星形符号* for(j = space; j > 0; j --) printf(" "); // 输出前一部分1,2,3…… for(k = 0; k < i + 1; k ++) printf("%d",k + 1); // 在当前基础上,重利用k的值,输出后一部分2,1,没0 for(k = k - 1;k > 0; k --) printf("%d", k); // 每输出完一行内容,就减去一个空位,也就是星形符号,以便下一行可以新增一个数字 space --; // 每输出完一行就换行 printf("\n"); } // 在当前基础上,重利用space的值,因为上一步最后space--了,所以这次利用需要对space加两次,若加一次则和上三角最后的行等长 space += 2; // 下三角行循环 for(int i = line - 1; i > 0; i --) { // 输出空格,为了直观,故改空格为星形符号* for(j = space; j > 0; j --) printf(" "); // 输出前一部分1,2,3…… for(k = 0; k < i; k ++) printf("%d",k + 1); // 输出后一部分2,1,没0 for(k = k - 1;k > 0; k --) printf("%d", k); // 每输出完一行内容,就增加一个空位,也就是星形符号,以便下一行可以减少一个数字 space ++; // 每输出完一行就换行 printf("\n"); } } main(){ int a; scanf("%d",&a); PrintNumers(a); }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
- ¥15 gdf格式的脑电数据如何处理matlab
- ¥20 重新写的代码替换了之后运行hbuliderx就这样了
- ¥100 监控抖音用户作品更新可以微信公众号提醒
- ¥15 UE5 如何可以不渲染HDRIBackdrop背景
- ¥70 2048小游戏毕设项目
- ¥20 mysql架构,按照姓名分表
- ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
- ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
- ¥15 linux驱动,linux应用,多线程