小明画星号C语言
时间: 2025-05-27 19:20:20 浏览: 20
### 使用C语言绘制星号图案
在C语言中,`printf`函数是一种简单而有效的方式来创建基于字符的艺术图形。以下是使用嵌套循环结构来实现星号 (`*`) 图案的一个示例。
#### 基本思路
通过控制外层和内层循环的数量以及条件判断语句,可以构建不同样式的星号图案。例如,三角形、菱形或其他几何形状都可以通过调整循环逻辑轻松实现[^1]。
#### 示例代码:打印直角三角形星号图案
以下代码展示了如何用星号生成一个右对齐的直角三角形:
```c
#include <stdio.h>
int main() {
int i, j, rows;
printf("请输入要显示的行数: ");
scanf("%d", &rows);
for (i = 1; i <= rows; ++i) {
// 打印空格使星星向右移动形成直角效果
for (j = 1; j <= rows - i; ++j) {
printf(" ");
}
// 打印当前行所需的星号数量
for (j = 1; j <= 2 * i - 1; ++j) {
printf("*");
}
printf("\n"); // 换行到下一行
}
return 0;
}
```
此程序会提示用户输入希望看到多少行星号组成的三角形,并按照指定大小输出相应的图案[^1]。
#### 另一种样式:心形图案
如果想尝试更复杂的图案比如爱心,则需要定义特定坐标位置上的点是否应该被填充为星号。这里给出一个简化版的心型图案制作方法:
```c
#include<stdio.h>
#include<math.h>
void drawHeart(int size){
double y,x,radianFactor= M_PI /180 ;
for(y=size;y>=-(size);y--){
for(x=-9*size;x<=9*size ;x++){
float distanceFromCenter=sqrt((pow(((fabs(x)-2),2)+ pow((y-4 ),2)));
if(distanceFromCenter<(float)(sqrt(fabs(x)*fabs(x)+(y+3)*(y+3))-7)<distanceFromCenter+(float)size/5 ){
putchar('*');
}else{
putchar(' ');
}
}
puts("");
}
}
int main(){
int s;
printf("Enter the scale factor:");
scanf("%d",&s);
drawHeart(s);
return 0;
}
```
注意该算法涉及到一些基本数学运算如平方根计算 `sqrt()` 和绝对值获取 `fabs()` ,还有角度转换成弧度的过程[M_PI代表π常量,在某些编译器可能需自行定义]^[].
阅读全文
相关推荐












