C20201114菱形钻石图案打印作业题

打印菱形钻石图案

第一篇博客。

说明:大一C语言作业题——打印菱形钻石图案,初版代码略微规范了一下命名和代码格式。
先附2020初版代码:关键点是行数在 (line+1)/2 上下分段处理打印。

#include 
#include //打印钻石图案
int main() {//定义变量  line是总行数,row是当前行,col是列int line, row, col;//实现简单交互printf("please input line(odd needed):"); //偶数的even 奇数的odd//接收输入scanf("%d", &line);while (getchar() != '\n') {;}//打印图案功能实现//相关条件的公式均是由以中间行为x轴,左边第一个为原点建直角坐标系找函数关系得出//首先是图案上半部打印for (row = 1; row <= (line + 1) / 2; row++) {for (col = 1; col <= (line + 1) / 2 - row; col++) {printf(" ");}for (col = col; col <= (line - 1) / 2 + row; col++) {printf("*");}printf("\n");}//图案下半部打印for (row = row; row <= line; row++) {for (col = 1; col <= row - (line + 1) / 2; col++) {printf(" ");}for (col = col; col <= (line - 1) / 2 + (line + 1 - row); col++) {printf("*");}printf("\n");}//强制暂停,避免闪退system("pause");return 0;
}

附运行结果截图:
在这里插入图片描述
输入偶数情况时:可以打印输出图案,但不太好看。下半部分需重新设计满足美观的需求。
在这里插入图片描述
2021改进思路:加一次条件判断,使输入奇数时正常打印题目要求的图案,输入偶数时打印美观的伪菱形钻石图案。
改进后代码:关键点是 if (line%2 != 0) 判断总行数奇偶后分别处理。其余部分略有变化。

#include 
#include //打印钻石图案
int main() {//定义变量  line是总行数,row是当前行,col是列int line, row, col;//实现简单交互printf("please input line(odd needed):");//接收输入scanf("%d", &line);while (getchar() != '\n') {;}//打印图案功能实现//相关条件的公式均是由以中间行为x轴,左边第一个为原点建直角坐标系找函数关系得出if (line % 2 != 0) {//行数是奇数时打印for (row = 1; row <= (line + 1) / 2; row++) {for (col = 1; col <= (line + 1) / 2 - row; col++) {printf(" ");}for (col = col; col <= (line - 1) / 2 + row; col++) {printf("*");}putchar(10); //等价于printf("\n");}for (row = row; row <= line; row++) {for (col = 1; col <= row - (line + 1) / 2; col++) {printf(" ");}//col <= (line - 1) / 2 + (line + 1 - row)for (col = col; col <= 3 * (line + 1) / 2 - row - 1; col++) {printf("*");}putchar(10);}}else {//行数是偶数时打印printf("line is even.--打印伪菱形钻石图案\n");for (row = 1; row <= line; row++) {if (row <= line / 2) {for (col = 1; col <= line / 2 - row; col++) {printf(" ");}for (col = col; col <= line / 2 + row - 1; col++){printf("*");}putchar(10);}else {for (col = 1; col <= row - line / 2 - 1; col++) {printf(" ");}for (col = col; col <= 3 * line / 2 - row; col++) {printf("*");}putchar(10);}}}//强制暂停,避免闪退system("pause");return 0;
}

附运行结果截图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
特殊的情况:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
有关奇偶数的范围讨论众说纷纭,但至少我小学时学习的是对自然数(非负整数)才讨论数的奇偶之分,0是偶数,负数不讨论。
最后,代码的改进永无止境,我的代码如何再改进优化,欢迎读者留言,促进我进步。
-待优化-


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部