【 tulaoshi.com - 编程语言 】
                             
                            问题的提出:我们在编制程序时,经常要用到清屏处理,如dos下的cls,Turbo C下的clrscr()等都具有清屏功能,但这些均为一般意义的清屏,并未显示其清屏规律。而有时为了达到清屏的艺术美观,往往对清屏有一些具体要求,如:开幕清屏、闭幕清屏、上清屏、下清屏、中清屏。为此,这里用C语言编制了几个子函数,用于程序中时,既可达到清屏的目的,有能增加屏幕的艺术美观。  
  子函数及演示程序:   
  #include<stdio.h> 
  #include<dos.h>
  #include<conio.h>   
  void goto_xy(int x,int y); 
  void dcls(int x1,int x2,int y1,int y2); 
  void bcls(int x1,int x2,int y1,int y2); 
  void kcls(int x1,int x2,int y1,int y2); 
  void recls(int x1,int x2,int y1,int y2); 
  void zcls(int x1,int x2,int y1,int y2); 
  void puta(void);     
  /*--------------演示程序---------------------*/ 
  main() 
  { 
   puta(); 
   getch(); 
   dcls(0,4,0,79); 
   getch(); 
   puta(); 
   getch(); 
   bcls(0,25,0,79); 
   getch(); 
   puta(); 
   getch(); 
   zcls(0,25,0,79); 
   getch(); 
  } 
  /*********center clear screen(中心清屏)***********/ 
  void zcls(int x1,int x2,int y1,int y2) 
  { 
   int x00,y00,x0,y0,i,d; 
   if((y2-y1)(x2-x1)){ 
  d=(x2-x1)/2; 
  x0=(x1+x2)/2; 
  y0=y1+d; 
  y00=y2-d; 
  for(i=0;i(d+1);i++) 
   recls((x0-i),(x00+i),(y0-i),(y00+i)); 
   delay(10); 
   } 
   else{ 
  d=(y2-y1)/2; 
  y0=(y1+y2)/2; 
  x0=x1+d; 
  x00=x2-d; 
  for(i=0;id+1;i++) 
   recls(x0-i,x00+i,y0-i,y00+i); 
   delay(10); 
   } 
  }   
  /************* clear rectangle side(矩形边清屏)***********************/   
  void recls(int x1,int x2,int y1,int y2) 
  { 
   int i,j; 
   for(i=y1;iy2;i++){ 
  goto_xy(x1,i); 
  putchar(' '); 
  goto_xy(x2,i); 
  putchar(' '); 
  delay(10); 
   } 
   for(j=x1;jx2;j++){ 
  goto_xy(i,y1); 
  putchar(' '); 
  goto_xy(j,y2); 
  putchar(' '); 
  delay(10); 
   } 
  } 
  /******************open screen clear(开屏式清屏)*********************/   
  void kcls(int x1,int x2,int y1,int y2) 
  { 
   int t,s,i,j; 
   t=s=(y1+y2)/2; 
   for(;t=y2;t++,s--) 
  for(j=x1;jx2;j++){ 
   goto_xy(j,t); 
   putchar(' '); 
   goto_xy(j,s); 
   putchar(' '); 
   delay(10); 
  } 
  } 
  /*****************close screen clear*****闭幕式清屏*******************/   
  void bcls(int x1,int x2,int y1,int y2) 
  { 
   int t,s,j; 
   t=y1; 
   s=y2; 
   for(t=y1;t(y1+y2)/2;t++,s--) 
  for(j=x1;jx2;j++){ 
   goto_xy(j,t); 
   putchar(' '); 
   goto_xy(j,s); 
   putchar(' '); 
   delay(10); 
  } 
  } 
  /******************bottom screen clear(自下清屏)********************/   
  void dcls(int x1,int x2,int y1,int y2) 
  { 
   int t,s,j,i; 
   t=s=(y1+y2)/2; 
   for(j=x2;jx1;j--) 
  for(i=y1;iy2;i++){ 
   goto_xy(j,i); 
   putchar(' '); 
   delay(10); 
  } 
  } 
  /******************设置光标子函数******************/   
  void goto_xy(int x,int y) 
  { 
   union REGS r; 
   r.h.ah=2; 
   r.h.dl=y; 
   r.h.dh=x; 
   r.h.bh=0; 
   int86(0x10,&r,&r); 
  }   
  /**********************在屏幕上打出一连串的a字母用于演示程序******************/        
  void puta(void) 
  { 
   int i,j; 
   for(i=0;i24;i++){ 
  for(j=0;j79;j++){ 
   goto_xy(i,j); 
   printf("a"); 
  } 
   } 
  }  

 更多内容请看C/C++进阶技术文档专题,或