C语言典范编程

题目:一个最精妙的图案.   
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" );
gainviewsettings( &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]);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值