资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

c语言用函数画三角形的高 c语言画三角形图形

用c#编程:编写程序求三角形的面积(三角形的底和高由键盘输入)

三角形面积=底×高

创新互联建站2013年开创至今,先为罗田等服务建站,罗田等地企业,进行企业商务咨询服务。为罗田企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

然后在代码写上这个公式

static void Main(string[] args)

{

Console.WriteLine("请输入三角形的底:");

int a = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("请输入三角形的高:");

int b = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("三角形的面积为:" + a * b + "\r\n");

}

超急!给出三角形的高,如何用C语言编写一个三角形

晕 看错题目了

#include stdio.h

#include math.h

void main()

{

float a,b,c,p,s,ah,bh,ch;/*边a,b,c,海伦公式参数p,各边高ah,bh,ch*/

printf("input a,b,c:");

scanf("%f%f%f",a,b,c);

p=(a+b+c)/2;

s=sqrt(p*(p-a)*(p-b)*(p-c));

ah=2*s/a;

bh=2*s/b;

ch=2*s/c;

printf("\nah=%f,bh=%f,ch=%f\n",ah,bh,ch);

}

用C语言编程输入一个数据,有该数据决定其三角形的高度,输入其三角形的图形

#include "stdio.h"

main()

{

int n,i,j,t;

printf("input n=");

scanf("%d",n);

printf("\n");

for(i=1;i=n;i++)

{

for(j=1;j=n-i;j++)

printf(" ");

t=(2*(i-1)+1);

while(t--)

printf("*");

printf("\n");

}

}

input n= 7

*

***

*****

*******

*********

***********

*************

C语言基础问题,画三角形

你描述的输入不清,我调整了一下。

其实最重要是分解程序编程一个一个操作。

首先要有个画板,

然后程序能画线,

最后对三角形填充。

就是这么简单,三种操作。

先来个短的代码:

#include stdio.h

#include math.h

#include string.h

using namespace std;

const int bsize = 64; // 最大画板大小

const double eps = 1e-6; // 精度控制

char board[bsize][bsize]; // 画板

int bw, bh; // 画板宽高

int main()

{

void printBoard(); // 输出画板内容

int iw, ih;

double x[3], y[3];

double v0x, v0y, v1x, v1y, v2x, v2y;

double d00, d01, d11, d20, d21, denom, v, u, w;

scanf("%d%d", ih, iw);

bw = iw + 2; // 你边缘多出了边框,所以+2

bh = ih + 2;

scanf("%lf%lf%lf%lf%lf%lf", x, y, x + 1, y + 1, x + 2, y + 2);

// 清空画板

for (int i = 0; i  bh; i++)

for (int j = 0; j  bw; j++)

board[i][j] = ' ';

// 利用质心坐标求值

v0x = x[1] - x[0], v0y = y[1] - y[0];

v1x = x[2] - x[0], v1y = y[2] - y[0];

for (int i = 0; i  bh; i++)

for (int j = 0; j  bw; j++)

{

v2x = i - x[0], v2y = j - y[0];

 d00 = v0x*v0x + v0y*v0y;

 d01 = v0x*v1x + v0y*v1y;

 d11 = v1x*v1x + v1y*v1y;

 d20 = v2x*v0x + v2y*v0y;

 d21 = v2x*v1x + v2y*v1y;

 denom = d00*d11 - d01*d01;

 v = (d11*d20 - d01*d21) / denom;

 u = (d00*d21 - d01*d20) / denom;

 w = 1 - u - v;

 if (0 = v  v = 1  0 = u  u = 1  0 = w  w = 1)

 board[bh - 1 - i][j] = '*';

}

// 画边框

for (int i = 0; i  bw; i++)

{

board[0][i] = '-';

board[bh - 1][i] = '-';

}

for (int i = 0; i  bh; i++)

{

board[i][0] = '|';

board[i][bw - 1] = '|';

}

board[0][0] = board[bh - 1][0] = board[0][bw - 1] = board[bh - 1][bw - 1] = '+';

printBoard();

return 0;

}

void printBoard()

{

int i, j;

for (j = 0; j  bh; j++)

{

for (i = 0; i  bw; i++)

putc(board[j][i], stdout);

putc('\n', stdout);

}

}

就是枚举三角形点来画的。

运行效果:

然后给你一份通用示例吧,

这可以画任意边型,

都有注释了,

不懂可以再询问。

代码如下:

#include stdio.h

#include math.h

#include string.h

using namespace std;

const int bsize = 64; // 最大画板大小

const double eps = 1e-6; // 精度控制

char board[bsize][bsize]; // 画板

int bw, bh; // 画板宽高

int main()

{

void clearBoard(char brush); // 清空画板

void drawBorder(); // 画边框的

void drawLine(double x0, double y0, double x1, double y1, char brush); // 画线的

void fillArea(char brush); // 填充的

void printBoard(); // 输出画板内容

int w, h;

double x[3], y[3];

scanf("%d%d", h, w);

bw = w + 2; // 你边缘多出了边框,所以+2

bh = h + 2;

scanf("%lf%lf%lf%lf%lf%lf", x, y, x + 1, y + 1, x + 2, y + 2);

// 初始化画板

clearBoard(' ');

drawBorder();

// 画三角形

drawLine(x[0], y[0], x[1], y[1], '*');

drawLine(x[1], y[1], x[2], y[2], '*');

drawLine(x[2], y[2], x[0], y[0], '*');

// 填充输出

fillArea('*');

printBoard();

return 0;

}

void printBoard()

{

int i, j;

for (j = 0; j  bh; j++)

{

for (i = 0; i  bw; i++)

putc(board[j][i], stdout);

putc('\n', stdout);

}

}

// 填充 brush 围成的区域

void fillArea(char brush)

{

int i, j, b, e;

for (j = 0; j  bh; j++)

{

b = e = -1;

for (i = 0; i  bw; i++)

if (board[j][i] == brush)

if (b == -1) b = i;

else e = i;

for (i = b; i = e; i++)

board[j][i] = brush;

}

}

// 填充单个像素

void fillPixel(int x, int y, char brush)

{

int tx, ty;

// 对坐标的转换

tx = x;

ty = bh - y - 1;

if (tx = 0  tx  bw  ty = 0  ty  bh) // 如果超出画板就不用画了

board[ty][tx] = brush;

}

// 符号函数 整数返回1,负数返回-1,零返回0

int sign(double v)

{

if (fabs(v)  eps) return 0;

else if (v  0) return 1;

else return -1;

}

// 交换用

void sawp(double *a, double *b)

{

double t;

t = *a, *a = *b, *b = t;

}

/*

* Bresenham 直线算法,请自行搜索

*/

void drawLine(double x0, double y0, double x1, double y1, char brush)

{

int x, y;

double deltax, deltay, error, deltaerr, t;

if (x0  x1) sawp(x0, x1), sawp(y0, y1);

deltax = x1 - x0;

deltay = y1 - y0;

error = 0;

if (fabs(deltax)  eps)

{

// 垂直线斜率不存在,要特殊处理

x = round(x0);

t = round(fmax(y0, y1));

for (y = round(fmin(y0, y1)); y = t; y++)

fillPixel(x, y, brush);

return;

}

// Bresenham 直线算法

deltaerr = fabs(deltay / deltax);

y = round(y0);

for (x = round(x0); x = x1; x++)

{

fillPixel(x, y, brush);

error += deltaerr;

while (error = 0.5)

{

fillPixel(x, y, brush);

y = y + sign(y1 - y0);

error -= 1.0;

}

}

}

void drawBorder()

{

// 画四条边

drawLine(1, 0, bw - 2, 0, '-');

drawLine(1, bh - 1, bw - 2, bh - 1, '-');

drawLine(0, 1, 0, bh - 2, '|');

drawLine(bw - 1, 1, bw - 1, bh - 2, '|');

// 画四个角落

fillPixel(0, 0, '+');

fillPixel(bw - 1, 0, '+');

fillPixel(bw - 1, bh - 1, '+');

fillPixel(0, bh - 1, '+');

}

void clearBoard(char brush)

{

// 逐个填充

int i, j;

for (j = 0; j  bh; j++)

for (i = 0; i  bw; i++)

board[j][i] = brush;

}

运行效果:


分享标题:c语言用函数画三角形的高 c语言画三角形图形
地址分享:http://www.cdkjz.cn/article/ddjopoj.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220