【C语言】打印图案——三角形、菱形等

问题一:
输入正整数n,输出n行字符图案。
例如n=5时输出:
在这里插入图片描述
分析:
每行都是5个字符。
第n行之前,空格逐行减少1,*逐行增加1
第n行之后,空格逐行增加1,*逐行减少1

#include <stdio.h>

int main()
{
	int n, i, j;
	
	scanf("%d", &n);
	for(i=1; i<=2*n-1; i++)
	{
		if(i<=n)
		{
			for(j=1; j<=n-i; j++) printf(" ");
			for( ; j<=n; j++) printf("*");
			printf("\n");
		}
		else
		{
			for(j=1; j<=i-n; j++) printf(" ");
			for( ; j<=n; j++) printf("*");
			printf("\n");
		}
	}
}

问题二:
输入正整数n,要求输出如下2*n+1行的菱形图案。(菱形右边不留多余空格)
例如n=2时输出:
在这里插入图片描述

#include <stdio.h>

int main()
{
	int n, i, j, k, t;
	
	scanf("%d", &n);
	
	for(i=1, j=n; i<=n+1; i++, j--)
	{
		for(k=1; k<=j; k++) printf(" ");
		for(t=k; t<=2*n+1-j; t++) printf("*");
		printf("\n");
	}
	for(i=n+2, j=1; i<=2*n+1; i++, j++)
	{
		for(k=1; k<=j; k++) printf(" ");
		for(t=k; t<=2*n+1-j; t++) printf("*");
		printf("\n");
	}
}

问题3:
输入正整数n,输出如下中间数字为n的菱形图案。(菱形右边不留多余空格)
例如n=4时输出:
在这里插入图片描述

#include <stdio.h>

int main()
{
	int n, i, j, k, t, p;
	
	scanf("%d", &n);
	
	for(i=1, j=n-1; i<=n; i++, j--)
	{
		for(k=1; k<=j; k++) printf(" ");
		for(t=1; t<=i; t++) printf("%d", t);
		for(t=t-2; t>=1; t--) printf("%d", t);
		printf("\n");
	}
	for(i=n+1, j=1, p=n-1; i<=2*n-1; i++, j++, p--)
	{
		for(k=1; k<=j; k++) printf(" ");
		for(t=1; t<=p; t++) printf("%d", t);
		for(t=t-2; t>=1; t--) printf("%d", t);
		printf("\n");
	}
}
### C语言打印不同模式的星号 以下是几种常见模式的星号打印方法及其对应的C语言实现代码。 #### 1. 打印直角三角形 这是最基础的一种星号图案,其形状类似于直角三角形。 ```c #include <stdio.h> int main() { int rows; printf("请输入行数:"); scanf("%d", &rows); for(int i = 1; i <= rows; i++) { for(int j = 1; j <= i; j++) { printf("* "); } printf("\n"); } return 0; } ``` 此代码通过嵌套循环实现了逐层增加星号的效果[^1]。 --- #### 2. 打印倒置的直角三角形 这种图案是从上到下逐渐减少每一行的星号数量。 ```c #include <stdio.h> int main() { int rows; printf("请输入行数:"); scanf("%d", &rows); for(int i = rows; i >= 1; i--) { for(int j = 1; j <= i; j++) { printf("* "); } printf("\n"); } return 0; } ``` 该代码利用外层循环控制行数递减来完成倒置效果[^1]。 --- #### 3. 打印等腰三角形 等腰三角形的特点是对称分布,顶部只有一个星号,底部宽度最大。 ```c #include <stdio.h> int main() { int rows, spaces, stars; printf("请输入行数:"); scanf("%d", &rows); for(int i = 1; i <= rows; i++) { // 输出空格部分 for(spaces = 1; spaces <= (rows - i); spaces++) { printf(" "); } // 输出星号部分 for(stars = 1; stars <= (2 * i - 1); stars++) { printf("*"); } printf("\n"); } return 0; } ``` 这里的关键在于合理分配每行前后的空白区域以及中心位置的星号数目[^1]。 --- #### 4. 打印完整的菱形 完整菱形由两个部分组成——上方为正向排列的部分,下方则为反向排列的部分。 ```c #include <stdio.h> int main() { int n, i, j, space; printf("请输入菱形的行数(奇数最佳):"); scanf("%d", &n); // 上半部分 space = n / 2; for(i = 1; i <= ((n + 1) / 2); i++) { for(j = 1; j <= space; j++) printf(" "); for(j = 1; j <= (2 * i - 1); j++) printf("*"); printf("\n"); space--; } // 下半部分 space = 1; for(i = 1; i <= ((n - 1) / 2); i++) { for(j = 1; j <= space; j++) printf(" "); for(j = 1; j <= (2 * (((n + 1) / 2) - i) - 1); j++) printf("*"); printf("\n"); space++; } return 0; } ``` 这段代码分为上下两部分分别处理,并调整了空间填充逻辑以形成对称图形。 --- #### 5. 使用`do-while`循环打印简单重复图案 如果希望尝试其他形式的循环语句,则可以考虑采用 `do-while` 来构建类似的输出流程。下面的例子展示了如何用它创建一个固定高度的小型矩形框: ```c #include <stdio.h> void printRectangle(int width, int height){ int row = 0; do{ int col = 0; do{ if(row == 0 || row == height -1 || col == 0 || col == width -1 ){ putchar('*'); }else{ putchar(' '); } col++; }while(col<width); putchar('\n'); row++; }while(row<height); } int main(){ int w,h; printf("输入宽高:"); scanf("%d%d",&w,&h); printRectangle(w,h); return 0; } ``` 此处运用到了双重 `do-while` 结构,在边界处放置星号而在内部留白[^4]。 --- ### 总结 以上提供了多种基于C语言的不同星号图案打印方式,涵盖了从简单的直角三角形至复杂的全菱形等多种样式。这些例子均依赖于恰当设置内外部循环次数及相应条件判断达成目标布局设计需求。 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值