爱板网论坛

查看: 149|回复: 0

[经验] C语言经典算法59-66

[复制链接]

73

主题

0

好友

627

积分

举人

Rank: 4

  • TA的每日心情
    开心
    昨天 10:21
  • 签到天数: 49 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2017-10-9 17:57:58 |显示全部楼层
    【程序59
    题目:画图,综合例子。
    1.程序分析:
    2.程序源代码:
    # define PAI 3.1415926
    # define B 0.809
    # include "graphics.h"
    #include "math.h"
    main()
    {
    int i,j,k,x0,y0,x,y,driver,mode;
    float a;
    driver=CGA;mode=CGAC0;
    initgraph(&driver,&mode,"");
    setcolor(3);
    setbkcolor(GREEN);
    x0=150;y0=100;
    circle(x0,y0,10);
    circle(x0,y0,20);
    circle(x0,y0,50);
    for(i=0;i<16;i++)
    {
    a=(2*PAI/16)*i;
    x=ceil(x0+48*cos(a));
    y=ceil(y0+48*sin(a)*B);
    setcolor(2); line(x0,y0,x,y);}
    setcolor(3);circle(x0,y0,60);
    /* Make 0 time normal size letters */
    settextstyle(DEFAULT_FONT,HORIZ_DIR,0);
    outtextxy(10,170,"press a key");
    getch();
    setfillstyle(HATCH_FILL,YELLOW);
    floodfill(202,100,WHITE);
    getch();
    for(k=0;k<=500;k++)
    {
    setcolor(3);
    for(i=0;i<=16;i++)
    {
    a=(2*PAI/16)*i+(2*PAI/180)*k;
    x=ceil(x0+48*cos(a));
    y=ceil(y0+48+sin(a)*B);
    setcolor(2); line(x0,y0,x,y);
    }
    for(j=1;j<=50;j++)
    {
    a=(2*PAI/16)*i+(2*PAI/180)*k-1;
    x=ceil(x0+48*cos(a));
    y=ceil(y0+48*sin(a)*B);
    line(x0,y0,x,y);
    }
    }
    restorecrtmode();
    }
    ==============================================================
    【程序60
    题目:画图,综合例子。
    1.程序分析:
    2.程序源代码:
    #include "graphics.h"
    #define LEFT 0
    #define TOP 0
    #define RIGHT 639
    #define BOTTOM 479
    #define LINES 400
    #define MAXCOLOR 15
    main()
    {
    int driver,mode,error;
    int x1,y1;
    int x2,y2;
    int dx1,dy1,dx2,dy2,i=1;
    int count=0;
    int color=0;
    driver=VGA;
    mode=VGAHI;
    initgraph(&driver,&mode,"");
    x1=x2=y1=y2=10;
    dx1=dy1=2;
    dx2=dy2=3;
    while(!kbhit())
    {
    line(x1,y1,x2,y2);
    x1+=dx1;y1+=dy1;
    x2+=dx2;y2+dy2;
    if(x1<=LEFT||x1>=RIGHT)
    dx1=-dx1;
    if(y1<=TOP||y1>=BOTTOM)
    dy1=-dy1;
    if(x2<=LEFT||x2>=RIGHT)
    dx2=-dx2;
    if(y2<=TOP||y2>=BOTTOM)
    dy2=-dy2;
    if(++count>LINES)
    {
    setcolor(color);
    color=(color>=MAXCOLOR)?0:++color;
    }
    }
    closegraph();
    }
    【程序61
    题目:打印出杨辉三角形(要求打印出10行如下图)
    1.程序分析:
    1
    1 1
    1 2 1
    1 3 3 1
    1 4 6 4 1
    1 5 10 10 5 1
    2.程序源代码:
    main()
    {int i,j;
    int a[10][10];
    printf("\n");
    for(i=0;i<10;i++)
    {a[0]=1;
    a=1;}
    for(i=2;i<10;i++)
    for(j=1;j a[j]=a[i-1][j-1]+a[i-1][j];
    for(i=0;i<10;i++)
    {for(j=0;j<=i;j++)
    printf("]",a[j]);
    printf("\n");
    }
    }
    ==============================================================
    【程序62
    题目:学习putpixel画点。
    1.程序分析:
    2.程序源代码:
    #include "stdio.h"
    #include "graphics.h"
    main()
    {
    int i,j,driver=VGA,mode=VGAHI;
    initgraph(&driver,&mode,"");
    setbkcolor(YELLOW);
    for(i=50;i<=230;i+=20)
    for(j=50;j<=230;j++)
    putpixel(i,j,1);
    for(j=50;j<=230;j+=20)
    for(i=50;i<=230;i++)
    putpixel(i,j,1);
    }
    ==============================================================
    【程序63
    题目:画椭圆ellipse
    1.程序分析:
    2.程序源代码:
    #include "stdio.h"
    #include "graphics.h"
    #include "conio.h"
    main()
    {
    int x=360,y=160,driver=VGA,mode=VGAHI;
    int num=20,i;
    int top,bottom;
    initgraph(&driver,&mode,"");
    top=y-30;
    bottom=y-30;
    for(i=0;i{
    ellipse(250,250,0,360,top,bottom);
    top-=5;
    bottom+=5;
    }
    getch();
    }
    ==============================================================
    【程序64
    题目:利用ellipse and rectangle 画图。
    1.程序分析:
    2.程序源代码:
    #include "stdio.h"
    #include "graphics.h"
    #include "conio.h"
    main()
    {
    int driver=VGA,mode=VGAHI;
    int i,num=15,top=50;
    int left=20,right=50;
    initgraph(&driver,&mode,"");
    for(i=0;i{
    ellipse(250,250,0,360,right,left);
    ellipse(250,250,0,360,20,top);
    rectangle(20-2*i,20-2*i,10*(i+2),10*(i+2));
    right+=5;
    left+=5;
    top+=10;
    }
    getch();
    }
    ==============================================================
    【程序65
    题目:一个最优美的图案。
    1.程序分析:
    2.程序源代码:
    #include "graphics.h"
    #include "math.h"
    #include "dos.h"
    #include "conio.h"
    #include "stdlib.h"
    #include "stdio.h"
    #include "stdarg.h"
    #define MAXPTS 15
    #define PI 3.1415926
    struct PTS {
    int x,y;
    };
    double AspectRatio=0.85;
    void LineToDemo(void)
    {
    struct viewporttype vp;
    struct PTS points[MAXPTS];
    int i, j, h, w, xcenter, ycenter;
    int radius, angle, step;
    double rads;
    printf(" MoveTo / LineTo Demonstration" );
    getviewsettings( &vp );
    h = vp.bottom - vp.top;
    w = vp.right - vp.left;
    xcenter = w / 2; /* Determine the center of circle */
    ycenter = h / 2;
    radius = (h - 30) / (AspectRatio * 2);
    step = 360 / MAXPTS; /* Determine # of increments */
    angle = 0; /* Begin at zero degrees */
    for( i=0 ; irads = (double)angle * PI / 180.0; /* Convert angle to radians */
    points.x = xcenter + (int)( cos(rads) * radius );
    points.y = ycenter - (int)( sin(rads) * radius * AspectRatio );
    angle += step; /* Move to next increment */
    }
    circle( xcenter, ycenter, radius ); /* Draw bounding circle */
    for( i=0 ; ifor( j=i ; jmoveto(points.x, points.y); /* Move to beginning of cord */
    lineto(points[j].x, points[j].y); /* Draw the cord */
    } } }
    main()
    {int driver,mode;
    driver=CGA;mode=CGAC0;
    initgraph(&driver,&mode,"");
    setcolor(3);
    setbkcolor(GREEN);
    LineToDemo();}

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /1 下一条

    手机版|爱板网 |网站地图  

    GMT+8, 2017-12-16 03:52 , Processed in 0.116267 second(s), 9 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部