关于C语言程序,请大虾们在每一段的代码后面帮我做个注释!我会追加分数的!谢谢!

来源:百度知道 编辑:UC知道 时间:2024/05/27 07:11:48
程序是这样的:
#include <graphics.h>
const int wxl=100,wxr=400,wyb=100,wyt=300;
typedef struct
{
int x1,y1,x2,y2;
}LINE;

int encode(int x,int y)
{
int ret=0;
if(x<wxl) ret|=1<<0;
if(x>wxr) ret|=1<<1;
if(y<wyb) ret|=1<<2;
if(y>wyt) ret|=1<<3;
return ret;
}
void midPoint(int x1,int y1,int x2,int y2,int *xn,int *yn)
{
int mx,my,code1,code2;
while(1)
{
mx=(x1+x2)/2;
my=(y1+y2)/2;
if(abs(x1-mx)+abs(y1-my)<3) break;
else
{
code1=encode(x1,y1);
code2=encode(mx,my);
if((code1&code2)!=0)
{
x1=mx;y1=my;
}
else
{
x2=mx;y2=my;
}
}
}
*xn=mx;
*yn=my;
}
void cs_line(int x1,int y1,int x2,int y2)
{
int code1=0,code2=0,mx,my;
int spx,spy,epx,epy;
LINE l;
setcolor(0x0c);

在直角坐标系下给定直线上两点,绘制直线,默认为红色,要求: ,标示出直线在不同区域的颜色,在给定区域内,直线为白色,在区域外直线为黄色

程序是这样的:
#include <graphics.h>//添加graphics.h头文件
const int wxl=100,wxr=400,wyb=100,wyt=300;//声明参
数,即参考区域
typedef struct//定义直线结构体
{
int x1,y1,x2,y2;//声明变量
}LINE;//LINE现在即为一个过(x1,y1),(x2,y2)的直线

int encode(int x,int y)//编码,用来判断点的位置
{
int ret=0;
if(x<wxl) ret|=1<<0;//ret与(1左移0)后相或,标记横坐//标在区域左侧
if(x>wxr) ret|=1<<1;// 左移1,同上右侧
if(y<wyb) ret|=1<<2;//左移2,标记纵坐标在区域下侧
if(y>wyt) ret|=1<<3;//左移3,同上上侧
return ret;
}
//
void midPoint(int x1,int y1,int x2,int y2,int *xn,int *yn)//求(x1,y1),(x2,y2)中点,*xn,*yn分别为指向中点的指针
{
int mx,my,code1,code2;
while(1)
{
mx=(x1+x2)/2;//mx is the middle of x1,x2
my=(y1+y2)/2;//my 同上
if(abs(x1-mx)+abs(y1-my)<3) break;//如果两点的横纵坐//标距离之和小于6,即 难以区分,退出
else//否则
{
code1=encode(x1,y1);//对其中一点
code2=encode(m