菱形及其变形
- 前言
- 1、打印菱形——中间对齐版
- 2、打印菱形——上左下左对齐版
- 3、打印菱形——上右下右对齐版
- 4、打印菱形——上左下右对齐版
- 5、打印菱形——上右下左对齐版
- 总结
前言
菱形是一种特殊的平行四边形,定义见百度百科
本文主要是写关于菱形的练习题,在屏幕上打印菱形。
1、打印菱形——中间对齐版
上一篇练习过打印上三角、下三角,因此,将打印上三角中间版、下三角中间版的代码合并可打印出菱形:
int main()
{int n = 0;scanf("%d", &n);for (int i = 0; i < n; i++){int j = 0;for (j = 0; j < n - 1 - i; j++){printf(" ");}//打印*for (j = 0; j < 2 * i + 1; j++){printf("*");}printf("\n");}//打印下半部分 for (int i = 0; i < n; i++){int j = 0;for (j = 0; j <= i; j++){printf(" ");}//打印*for (j = 0; j < (2*n - 1 - i* 2 ); j++){printf("*");}printf("\n");}return 0;
}
结果见下图,中间两行有错位:
因此不能简单的合并,对下三角的代码进行修改:
//打印菱形,没有空格版
int main()
{int n = 0;scanf("%d", &n);//打印上半部分 nfor (int i = 0; i < n; i++){//打印一行//打印空格int j = 0;for (j = 0; j < n - 1 - i; j++){printf(" ");}//打印*for (j = 0; j < 2 * i + 1; j++){printf("*");}printf("\n");}//打印下半部分 n-1for (int i = 0; i < n - 1; i++){//打印一行//打印空格int j = 0;for (j = 0; j <= i; j++){printf(" ");}//打印*for (j = 0; j < (n - 1 - i) * 2 - 1; j++){printf("*");}printf("\n");}return 0;
}
结果见下图:
2、打印菱形——上左下左对齐版
//打印菱形,上左 下左版
int main()
{int n = 0;scanf("%d", &n);//打印上半部分 for (int i = 0; i < n; i++){int j = 0;//打印*for (j = 0; j < 2 * i + 1; j++){printf("*");}printf("\n");}//打印下半部分 for (int i = 0; i < n - 1; i++){int j = 0;//打印*for (j = 0; j < (n - 1 - i) * 2 - 1; j++){printf("*");}printf("\n");}return 0;
}
结果见下图,上下三角都是左对齐,实际就是一个三角形了:
3、打印菱形——上右下右对齐版
//打印菱形, 上右下右对齐版
int main()
{int n = 0;scanf("%d", &n);//打印上半部分 nfor (int i = 0; i < n; i++)//一共n行{int j = 0;for (j = 0; j < (2 * n - 1) - (2 * i + 1); j++)//每一行开始打印几个空格{printf(" ");}//打印*for (j = 0; j < 2 * i + 1; j++)//每一行打印几个 *{printf("*");}printf("\n");//换行}//打印下半部分 for (int i = 0; i < n-1; i++){//打印一行//打印空格int j = 0;for (j = 0; j <= 2*i+1; j++){printf(" ");}//打印*for (j = 0; j < (n - 1 - i) * 2 - 1; j++){printf("*");}printf("\n");}return 0;
}
结果见下图,上下三角都是右对齐,实际也是一个三角形了:
4、打印菱形——上左下右对齐版
//打印菱形, 上左下右对齐版
int main()
{int n = 0;scanf("%d", &n);//打印上半部分 for (int i = 0; i < n; i++){int j = 0;//打印*for (j = 0; j < 2 * i + 1; j++){printf("*");}printf("\n");}//打印下半部分 n-1for (int i = 0; i < n - 1; i++){//打印一行//打印空格int j = 0;for (j = 0; j <= 2 * i + 1; j++){printf(" ");}//打印*for (j = 0; j < (n - 1 - i) * 2 - 1; j++){printf("*");}printf("\n");}return 0;
}
结果见下图:
5、打印菱形——上右下左对齐版
//打印菱形, 上右下左对齐版
int main()
{int n = 0;scanf("%d", &n);//打印上半部分 nfor (int i = 0; i < n; i++)//一共n行{//打印一行//打印空格int j = 0;for (j = 0; j < (2 * n - 1) - (2 * i + 1); j++)//每一行开始打印几个空格{printf(" ");}//打印*for (j = 0; j < 2 * i + 1; j++)//每一行打印几个 *{printf("*");}printf("\n");//换行}//打印下半部分 n-1for (int i = 0; i < n-1; i++){//打印一行//打印空格int j = 0;//打印*for (j = 0; j < (n - 1 - i) * 2 - 1; j++){printf("*");}printf("\n");}return 0;
}
结果见下图:
总结
本文练习打印菱形及其变形,主要练习了:
- 外循环、内循环的应用
- 注意行数、空格数、符号*数之间的数学关系式