您的位置:

c语言图案求图,C语言实现图

本文目录一览:

c语言,求输出一个圆的图形的程序

#include math.h

#include graphics.h /*预定义库函数*/

void circlePoint(int x,int y) /*八分法画圆程序*/

{

circle(320 x*20,240 y*20,3);

circle(320 y*20,240 x*20,3);

circle(320-y*20,240 x*20,3);

circle(320-x*20,240 y*20,3);

circle(320-x*20,240 y*20,3);

circle(320-x*20,240-y*20,3);

circle(320-y*20,240-x*20,3);

circle(320 y*20,240-x*20,3);

circle(320 x*20,240-y*20,3);

}

void MidBresenhamcircle(int r) /* 中点Bresenham算法画圆的程序 */

{

int x,y,d;

x=0;y=r;d=1-r; /* 计算初始值 */

while(xy)

{ circlePoint(x,y); /* 绘制点(x,y)及其在八分圆中的另外7个对称点 */

if(d0) d =2*x 3; /* 根据误差项d的判断,决定非最大位移方向上是走还是不走 */

else

{ d =2*(x-y) 5;

y--;

}

x ;

delay(900000);

} /* while */

}

main()

{

int i,j,r,graphmode,graphdriver;

detectgraph(graphdriver,graphmode);

initgraph(graphdriver,graphmode," ");

printf("中点Bresenhamcircle算法画圆的程序\n"); /*提示信息*/

printf("注意 |r|=11");

printf("\n输入半径值 r:");

scanf("%d",r);

printf("按任意键显示图形...");

getch();

cleardevice();

setbkcolor(BLACK);

for(i=20;i=620;i =20) /*使用双循环画点函数画出表格中的纵坐标*/

for(j=20;j=460;j )

putpixel(i,j,2);

for(j=20;j=460;j =20) /*使用双循环画点函数画出表格中的横坐标*/

for(i=20;i=620;i )

putpixel(i,j,2);

outtextxy(320,245,"0"); /*原点坐标*/

outtextxy(320-5*20,245,"-5");circle(320-5*20,240,2); /*横坐标值*/

outtextxy(320 5*20,245,"5");circle(320 5*20,240,2);

outtextxy(320-10*20,245,"-10");circle(320-10*20,240,2);

outtextxy(320 10*20,245,"10");circle(320 10*20,240,2);

outtextxy(320-15*20,245,"-15");circle(320-15*20,240,2);

outtextxy(320 15*20,245,"15");circle(320 15*20,240,2);

outtextxy(320,240-5*20,"-5");circle(320,240-5*20,2); /*纵坐标值*/

outtextxy(320,240 5*20,"5");circle(320,240 5*20,2);

outtextxy(320,240-10*20,"-10");circle(320,240-10*20,2);

outtextxy(320,240 10*20,"10");circle(320,240 10*20,2);

outtextxy(20,10,"The center of the circle is (0,0) "); /*坐标轴左上角显示提示信息*/

setcolor(RED); /*标记坐标轴*/

line(20,240,620,240); outtextxy(320 15*20,230,"X");

line(320,20,320,460); outtextxy(330,20,"Y");

setcolor(YELLOW);

MidBresenhamcircle(r);

setcolor(BLUE); /*绘制圆*/

circle(320,240,r*20);

setcolor(2);

getch();

closegraph();

}

C语言简单图形题

/*编写一程序P211.C实现以下功能

根据输入的n在屏幕上显示对应的以#组成的菱形图案。编程可用素材:printf("Please input n: ")...。

程序的运行效果应类似地如图1和图2所示,图1中的1和图2中的5是从键盘输入的内容。

*/

#include stdio.h

int main(void)

{

int n, i=1, j, m,k=1;

printf("Please input n: ");

scanf("%d", n);

do

{

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

{

printf(" ");

}

for (m=1;m = 2*i-1;m++)

{

printf("#");

}

printf("\n");

i++;

}while (i = n+1);

do

{

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

{

printf(" ");

}

for (m=1;m = 2*n-1;m++)

{

printf("#");

}

printf("\n");

n--;k++;

}while (n);

return 0;

}

//德昂当同学的说法确实是你的错误所在,这就是你成功的一半了。

/*其实笔者建议你将上面的那个图抽象成为一个线性规划的问题:建立一个坐标系,之后提取出来更方便的数学关系式,例如上面的方程则是:| i-j |=n;和| i+j |n;之后将i,j分别当做两个行列变量进行解决。请作者予以尝试!*/

如何用C语言画基本图形

下面举一个用drawpoly()函数画箭头的例子。#include

#include

int main()

{

int gdriver, gmode, i;

int arw[16]={200,102,300,102,300,107,330,br/100,300,93,300,98,200,98,200,102};

gdriver=DETECT;

initgraph(gdriver, gmode, "c:\\caic\\bgi");

setbkcolor(BLUE);

cleardevice();

setcolor(12); /*设置作图颜色*/

drawpoly(8, arw); /*画一箭头*/

getch();

closegraph();

return 0;

}

设定线型函数

在没有对线的特性进行设定之前,TURBO C 用其默认值,即一点宽的实线,但TURBO C 也提供了可以改变线型的函数。线型包括:宽度和形状。其中宽度只有两种选择:一点宽和三点宽。而线的形状则有五种。下面介绍有关线型的设置函数。

void far setlinestyle(intlinestyle,unsigned upattern,int thickness); 该函数用来设置线的有关信息,其中linestyle是线形状的规定,

见下表:

有关线的形状(linestyle)

━━━━━━━━━━━━━━━━━━━━━━━━━

符号常数 数值 含义

─────────────────────────

SOLID_LINE 0 实线

DOTTED_LINE 1 点线

CENTER_LINE 2 中心线

DASHED_LINE 3 点画线

USERBIT_LINE 4 用户定义线

━━━━━━━━━━━━━━━━━━━━━━━━━

有关线宽(thickness)

thickness是线的宽度,见下表。

━━━━━━━━━━━━━━━━━━━━━━━━━

符号常数 数值 含义

─────────────────────────

NORM_WIDTH 1 一点宽

THIC_WIDTH 3 三点宽

━━━━━━━━━━━━━━━━━━━━━━━━━

对于upattern,只有linestyle选USERBIT_LINE 时才有意义 (选其它线型,uppattern取0即可)。此进uppattern的16位二进制数的每一位代表一个象元,如果那位为1,则该象元打开,否则该象元关闭。 void far getlinesettings(struct linesettingstypefar *lineinfo);该函数将有关线的信息存放到由lineinfo 指向的结构中,表中linesettingstype的结构如下:

 struct linesettingstype

 {

 int linestyle;

 unsigned upattern;

 int thickness;

 }

用c语言求多种图形中任何一种图形的面积。

#include stdio.h

#include math.h

double trianglearea( float a, float b, float c );

double squarearea( float a, float b );

double roundarea( float r );

int main()

{

    int    index = 0;

    float  a, b, c, r;

    double S;

    

    while(1)

    {

        printf("请输入图的类型,三角形请输入1,矩形请输入2,圆形请输入3。按0退出\n");

        printf("请输入图形序号:");

        scanf("%d", index);

        

        if(index == 0)

            break;

        else if(index == 1)

        {

            printf("输入三角形三边长:");

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

            S = trianglearea(a, b, c);

        }

        else if(index == 2)

        {

            printf("输入矩形的长和宽:");

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

            S = squarearea(a, b);

        }

        else if(index == 3)

        {

            printf("%输入圆形的半径:");

            scanf("%f", r);

            S = roundarea(r);

        }

        else 

            ;

        printf("所求面积为%lf\n\n", S);

    }

    printf("\nbye bye\n");

    

    return 0;

}

double trianglearea( float a, float b, float c )

{

    double p = 0;

    

    if( !(a+bc  a+cb  b+ca) )

    {

        printf("这三条边无法组成三角形。\n");

        return 0;

    }

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

    

    return sqrt(p*(p-a)*(p-b)*(p-c));

}

double squarearea( float a, float b )

{

    return a*b;

}

double roundarea( float r )

{

    return 3.14*r*r;

}

C语言输出一个菱形图案(有程序)

菱形,就是如下所示的图形,总行数与总列数相等:

写一个程序,根据用户输入的总行数,打印出菱形。

这个题目主要是找出规律,考察读者的逻辑思维。

你可以从第一行开始,遍历所有的列,也可以从第一列开始,遍历所有的行。

下面的程序从第一行开始,遍历所有的列。

设菱形的总行数为line,总列数为column,当前行为i,当前列为j。上半部分与下半部分的规律不一样,应该分开讨论。

我们着眼于星号(*),思考什么条件下输出星号,总结出如下的规律。

1) 对于上半部分(包括中间一行),当前行与当前列满足如下关系输出星号:

j=(column+1)/2-(i-1)     (column+1)/2-(i-1)为第i行最左边的星号

j=(column+1)/2+(i-1)    (column+1)/2+(i-1)为第i行最右边的星号

2) 对于下半部分,当前行与当前列满足如下关系输出星号:

j=(column+1)/2-(line-i)     (column+1)/2-(line-i)为第i行最左边的星号

j=(column+1)/2+(line-i)    (column+1)/2+(line-i)为第i行最右边的星号

不满足上述条件,则输出空格。

于是写出如下的代码:纯文本复制

#include stdio.h#include stdlib.hint main(){int line;  // 菱形总行数int column;  // 菱形总列数int i;  // 当前行int j;  // 当前列printf("请输入菱形的行数(奇数):");scanf("%d", line);if(line%2==0){  // 判断是否是奇数printf("必须输入奇数!\n");exit(1);}column = line;  // 总行数和总列数相同for(i=1; i=line; i++){  // 遍历所有行if(i(line+1)/2+1){  // 上半部分(包括中间一行)for(j=1; j=column; j++){  // 遍历上半部分的所有列if( (column+1)/2-(i-1)=j j=(column+1)/2+(i-1) ){printf("*");}else{printf(" ");}}}else{  // 下半部分for(j=1; j=column; j++){  // 遍历下半部分的所有列if( (column+1)/2-(line-i)=j j=(column+1)/2+(line-i) ){printf("*");}else{printf(" ");}}}printf("\n");}return 0;}

运行结果:请输入菱形的行数(奇数):11

*

***

*****

*******

*********

***********

*********

*******

*****

***

*