科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件C语言程序开发经典实例之七

C语言程序开发经典实例之七

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

打印出杨辉三角形

作者:佚名 来源:唯c世界 2007年10月28日

关键字: Linux

  • 评论
  • 分享微博
  • 分享邮件
【程序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 ; i<MAXPTS ; ++i ){ /* Determine circle intercepts */
  rads = (double)angle * PI / 180.0; /* Convert angle to radians */
  points[i].x = xcenter + (int)( cos(rads) * radius );
  points[i].y = ycenter - (int)( sin(rads) * radius * AspectRatio );
  angle += step; /* Move to next increment */
 }
 circle( xcenter, ycenter, radius ); /* Draw bounding circle */
 for( i=0 ; i<MAXPTS ; ++i ){ /* Draw the cords to the circle */
  for( j=i ; j<MAXPTS ; ++j ){ /* For each remaining intersect */
   moveto(points[i].x, points[i].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();
}

  【程序66】

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

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

  2.程序源代码:

/*pointer*/
main()
{
 int n1,n2,n3;
 int *pointer1,*pointer2,*pointer3;
 printf("please input 3 number: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("the sorted numbers are:%d,%d,%d\n",n1,n2,n3);
}
swap(p1,p2)
int *p1,*p2;
{
 int p;
 p=*p1;*p1=*p2;*p2=p;
}

  【程序67】

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

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

  2.程序源代码:

main()
{
 int number[10];
 input(number);
 max_min(number);
 output(number);
}
input(number)
int number[10];
{
 int i;
 for(i=0;i<9;i++)
  scanf("%d,",&number[i]);
  scanf("%d",&number[9]);
}
max_min(array)
int array[10];
{
 int *max,*min,k,l;
 int *p,*arr_end;
 arr_end=array+10;
 max=min=array;
 for(p=array+1;p<arr_end;p++)
  if(*p>*max) max=p;
  else if(*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)
int array[10];
{
 int *p;
 for(p=array;p<array+9;p++)
  printf("%d,",*p);
 printf("%d\n",array[9]);
}

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章