文章目录
一、打印三角形二、打印圆形三、打印心形一、打印三角形
题目:用∗号打印一个三角形\color{purple}{题目:用 * 号打印一个三角形}题目:用∗号打印一个三角形
基本五种不同形式的三角形
正三角形
#include<stdio.h>int main(){int i,j,k,n;printf("输入底边边长:"); scanf("%d",&n);for(i = 0;i <= n / 2;i++){for(j = n / 2 + 1 - i;j >= 1;j--){printf(" ");}for(k = n / 2 + 2 - i;k <= n / 2 + 2 + i;k++){printf("*");}printf("\n");}return 0;}
效果展示:
输入底边边长:9*************************
左下三角形
#include<stdio.h>int main(){int i,j,k;printf("输入底边边长:"); scanf("%d",&k);for(i=1;i<=k;i++){for(j=1;j<=i;j++){printf("*");}printf("\n");}return 0;}
效果展示:
输入底边边长:9*********************************************
左上三角形
#include<stdio.h>int main(){int i = 0, j = 0,n;printf("输入底边边长:"); scanf("%d",&n);for(i=n;i>=1;i--){for(j=1;j<=i;j++){printf("*");}printf("\n");}return 0;}
效果展示:
输入底边边长:9*********************************************
右上三角形
#include<stdio.h>int main(){int i = 0, j = 0,n;printf("输入底边边长:"); scanf("%d",&n);for(i=n;i>=1;i--){for(j=n;j>=1;j--){if(j>i){printf(" ");}else{printf("*");}}printf("\n");}return 0;}
效果展示:
输入底边边长:9*********************************************
右下三角形
#include<stdio.h>int main(){int i = 0, j = 0, k = 0,n;printf("输入底边边长:"); scanf("%d",&n);for(i=1;i<=n;i++){for(k=1;k<=n-i;k++){printf(" ");}for(j=i;j>=1;j--){printf("*");}printf("\n");}return 0;}
效果展示:
输入底边边长:9*********************************************
二、打印圆形
题目:用∗号打印一个空心圆\color{purple}{题目:用 * 号打印一个空心圆}题目:用∗号打印一个空心圆
思路分析
找点每行打印两个 * 号
首先要找出每行两个 *号的位置;然后打印;
假设现在在i行
第一个点为:万事俱备,开始实操r−r2−(r−i)2r-\sqrt{r^2-(r-i)^2} r−r2−(r−i)2第二个点为:
r−r2−(r−i)2r-\sqrt{r^2-(r-i)^2} r−r2−(r−i)2
#include<stdio.h>#include<math.h>int yuan(int r)//绘制圆{int i,j; // r 圆的半径 int y1_1=-1,y1_2=-1; // y1_1 记录第一个点上一行的位置 y1_2 记录第一个点上上一行的位置 int y2_1=-1,y2_2=-1; // y2_1 记录第二个点上一行的位置 y2_2 记录第二个点上上一行的位置 for(i=0;i<=2*r;i++){for(j=1;j<=2*2*r;j++) //因为每行要打印两个星号 {//打印每行第一个星号 if((int)sqrt(pow(r,2)-pow(r-i,2))==(r-j/2)&&(r-j/2)!=y1_1&&(r-j/2)!=y1_2){printf("*");y1_2=y1_1;y1_1=r-j/2;j++;}//打印每行第二个星号 else if((int)sqrt(pow(r,2)-pow(r-i,2))==(j/2-r)&&(j/2-r)!=y2_1&&(j/2-r)!=y2_2) {printf("*");y2_2=y2_1;y2_1=j/2-r;j++;}else{printf(" ");} }printf("\n");} }int main(){int r;printf("输入圆的半径:");scanf("%d",&r);yuan(r);return 0;}
效果展示:
三、打印心形
题目:用∗号打印一个心形\color{purple}{题目:用 * 号打印一个心形}题目:用∗号打印一个心形
思考
上干货如何把运用数学公式更简易的让 C 把图案表达出来
心形公式:
pow((pow(x,2)+pow(y,2)-1),3)-pow(x,2) * pow(y,3)
#include<stdio.h>#include<windows.h>void aixing(){float x,y,a;for(y=1.3;y>-1.3;y-=0.1){for(x=-1.5;x<1.5;x+=0.04){a=x*x+y*y-1;//心形公式 (x*x+y*y-1)的三次方减去x*x*y*y*yputchar(a*a*a-x*x*y*y*y<=0.0?'*':' ');}Sleep(50);system("color 0c"); //改变 * 号的颜色putchar('\n');}}int main(){aixing();return 0;}
效果展示:
当然,可以直接用printf()
输出
- - -< END >- - -