c语言调用函数画三角形 c语言使用三角函数

C语言调用函数输出任意行数,任意字符的等腰三角形

#includeint main(){ int m, n; int i, j; int cur; printf("intput n : "); scanf("%d", n); cur = 0; for(i = n; i = 1; --i){ for(j = 1; j 9) cur = 0; } printf("\n"); } return 0;}

创新互联建站专注于阜城企业网站建设,成都响应式网站建设,成都商城网站开发。阜城网站建设公司,为阜城等地区提供建站服务。全流程按需网站制作,专业设计,全程项目跟踪,创新互联建站专业和态度为您提供的服务

C语言画三角形的函数

用tc编译器,其中的头文件graphics.h中包含画图的很多函数,直接调用库函数就能画出自己想要的图形了!

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语言调用函数求三角形周长和面积

1、海伦公式:

假设在平面内,有一个三角形,边长分别为a、b、c,三角形的面积S可由以下公式求得:

S=√[p(p-a)(p-b)(p-c)]

而公式里的p为半周长:

p=(a+b+c)/2

2、例程:

#include

#include

void main()

{

float a,b,c,s,area;

printf("依次输入a,b,c(空格识别一个数):");

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

s=(float)0.5*(a+b+c);

area = (float)sqrt(s*(s-a)*(s-b)*(s-c));

printf("面积为:%f",area);

}

怎么用c语言编写三角形

#include stdio.h

int main(void){

int n,i,j;

printf("输入三角的行数(1-26):\n");

scanf("%d",n);

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

{

for(j=1;ji;j++)

{

printf(" ");

}

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

{

printf("%c",j);

}

printf("\n");

}

return 0;

}

用C语言做个三角形

#includestdio.h

main(){

int n,i,j;

while(scanf("%d",n)n!=0){/*输入n行数,n=0退出*/

for(i=0; in; i++){//列数循环

for(j=0; ji; j++)//行数循环

printf("%d ",j+1);//输出数字

printf("\n");//换行

}

}

}


分享名称:c语言调用函数画三角形 c语言使用三角函数
网站地址:http://myzitong.com/article/hhoeip.html