C程序开发经典实例之6

  • 来源: C++研究网 作者: sevenleaf   2010-04-28/11:02
  • 【程序61】

          题目:打印出杨辉三角形(要求打印出10行如下图)

          1.程序分析:

    1

    11

    121

    1331

    14641

    15101051

          2.程序源代码:

    main()

    {

    inti,j;

    inta[10][10];

    printf("\n");

    for(i=0;i<10;i++)

    {

    a[i][0]=1;

    a[i][i]=1;

    }

    for(i=2;i<10;i++)

    for(j=1;j<10;j++)

    a[i][j]=a[i-1][j-1]+a[i-1][j];

    for(i=0;i<10;i++)

    {

    for(j=0;j<=i;j++)

    printf("%5d",a[i][j]);

    printf("\n");

    }

    }

    【程序62】

          题目:学习putpixel画点。

          1.程序分析:

          2.程序源代码:

    #include"stdio.h"

    #include"graphics.h"

    main()

    {

    inti,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"

    /*欢迎访问C++Builder研究-www.ccrun.com*/

    main()

    {

    intx=360,y=160,driver=VGA,mode=VGAHI;

    intnum=20,i;

    inttop,bottom;

    initgraph(&driver,&mode,"");

    top=y-30;

    bottom=y-30;

    for(i=0;i<num;i++)

    {

    ellipse(250,250,0,360,top,bottom);

    top-=5;

    bottom+=5;

    }

    getch();

    }

    【程序64】

          题目:利用ellipseandrectangle画图。

          1.程序分析:

          2.程序源代码:

    #include"stdio.h"

    #include"graphics.h"

    #include"conio.h"

    main()

    {

    intdriver=VGA,mode=VGAHI;

    inti,num=15,top=50;

    intleft=20,right=50;

    initgraph(&driver,&mode,"");

    for(i=0;i<num;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"

    #defineMAXPTS15

    #definePI3.1415926

    structPTS

    {

    intx,y;

    };

    /*636372756E2E636F6D*/

    doubleAspectRatio=0.85;

    voidLineToDemo(void)

    {

    structviewporttypevp;

    structPTSpoints[MAXPTS];

    inti,j,h,w,xcenter,ycenter;

    intradius,angle,step;

    doublerads;

    printf("MoveTo/LineToDemonstration");

    getviewsettings(&vp);

    h=vp.bottom-vp.top;

    w=vp.right-vp.left;

    xcenter=w/2;/*Determinethecenterofcircle*/

    ycenter=h/2;

    radius=(h-30)/(AspectRatio*2);

    step=360/MAXPTS;/*Determine#ofincrements*/

    angle=0;/*Beginatzerodegrees*/

    for(i=0;i<MAXPTS;i++)

    {

    rads=(double)angle*PI/180.0;/*Convertangletoradians*/

    points[i].x=xcenter+(int)(cos(rads)*radius);

    points[i].y=ycenter-(int)(sin(rads)*radius*AspectRatio);

    angle+=step;/*Movetonextincrement*/

    }

    circle(xcenter,ycenter,radius);/*Drawboundingcircle*/

    for(i=0;i<MAXPTS;i++)

    {

    for(j=i;j<MAXPTS;j++)

    {

    moveto(points[i].x,points[i].y);/*Movetobeginningofcord*/

    lineto(points[j].x,points[j].y);/*Drawthecord*/

    }

    }

    }

    main()

    {

    intdriver,mode;

    driver=CGA;mode=CGAC0;

    initgraph(&driver,&mode,"");

    setcolor(3);

    setbkcolor(GREEN);

    LineToDemo();

    }

    【程序66】

          题目:输入3个数a,b,c,按大小顺序输出。

          1.程序分析:利用指针方法。

          2.程序源代码:

    /*pointer*/

    main()

    {

    intn1,n2,n3;

    int*pointer1,*pointer2,*pointer3;

    printf("pleaseinput3number:n1,n2,n3:");

    scanf("%d,%d,%d",&n1,&n2,&n3);

    pointer1=&n1;

    pointer2=&n2;

    pointer3=&n3;

    if(n1>n2)

    swap(pointer1,pointer2);

    if(n1>n3)

    swap(pointer1,pointer3);

    if(n2>n3)

    swap(pointer2,pointer3);

    printf("thesortednumbersare:%d,%d,%d\n",n1,n2,n3);

    }

    swap(p1,p2)

    int*p1,*p2;

    {

    intp;

    p=*p1;*p1=*p2;*p2=p;

    }

    【程序67】

          题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

          1.程序分析:谭浩强的书中答案有问题。

          2.程序源代码:

    main()

    {

    intnumber[10];

    input(number);

    max_min(number);

    output(number);

    }

    input(number)

    intnumber[10];

    {

    inti;

    for(i=0;i<9;i++)

    scanf("%d,",&number[i]);

    scanf("%d",&number[9]);

    }

    /*欢迎访问C++Builder研究-www.ccrun.com*/

    max_min(array)

    intarray[10];

    {

    int*max,*min,k,l;

    int*p,*arr_end;

    arr_end=array+10;

    max=min=array;

    for(p=array+1;p<10;p++)

    if(*p>*max)max=p;

    elseif(*p<*min)min=p;

    k=*max;

    l=*min;

    *p=array[0];

    array[0]=l;

    l=*p;

    *p=array[9];

    array[9]=k;

    k=*p;

    return;

    }

    output(array)

    intarray[10];

    {

    int*p;

    for(p=array;p<10;p++)

    printf("%d,",*p);

    printf("%d\n",array[9]);

    }

    【程序68】

          题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数

          1.程序分析:

          2.程序源代码:

    main()

    {

    intnumber[20],n,m,i;

    printf("thetotalnumbersis:");

    scanf("%d",&n);

    printf("backm:");

    scanf("%d",&m);

    for(i=0;i<20;i++)

    scanf("%d,",&number[i]);

    scanf("%d",&number[n-1]);

    move(number,n,m);

    for(i=0;i<20;i++)

    printf("%d,",number[i]);

    printf("%d",number[n-1]);

    }

    move(array,n,m)

    intn,m,array[20];

    {

    int*p,array_end;

    array_end=*(array+n-1);

    for(p=array+n-1;p>array;p--)

    *p=*(p-1);

    *array=array_end;

    m--;

    if(m>0)

    move(array,n,m);

    }

    【程序69】

          题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

          1.程序分析:

          2.程序源代码:

    #definenmax50

    main()

    {

    inti,k,m,n,num[nmax],*p;

    printf("pleaseinputthetotalofnumbers:");

    scanf("%d",&n);

    p=num;

    for(i=0;i<nmax;i++)

    *(p+i)=i+1;

    i=0;

    k=0;

    m=0;

    while(m<nmax)

    {

    if(*(p+i)!=0)k++;

    if(k==3)

    {

    *(p+i)=0;

    k=0;

    m++;

    }

    i++;

    if(i==n)i=0;

    }

    while(*p==0)p++;

    printf("%disleft\n",*p);

    }

    【程序70】

          题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。

          1.程序分析:

          2.程序源代码:

    main()

    {

    intlen;

    char*str[20];

    printf("pleaseinputastring:\n");

    scanf("%s",str);

    len=length(str);

    printf("thestringhas%dcharacters.",len);

    }

    length(p)

    char*p;

    {

    intn;

    n=0;

    while(*p!='\0')

    {

    n++;

    p++;

    }

    returnn;

    }


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多