急急急问问问~~~~~~~~~~~~~~~````
#include "stdio.h "
#include "conio.h "
#include "dos.h "
#define ESC 0x1b
#define UP 0x48
#define DOWN 0x50
#define LEFT 0x4b
#define RIGHT 0x4d
#define PGUP 0x49
#define PGDN 0x51
#define DEL 0x53
void clear(int x1,int y1,int x2,int y2,int c)
{
int a,b;
setbkcolor(c);
for(a=y1;a <=y2;a++)
{
for(b=x1;b <=x2;b++)
{
gotoxy(a,b);
cprintf( " ");
}
}
}
main()
{
int y,m,d,l,h,i,k,r,tj=1;
char p;
int a[]={31,28,31,30,31,30,31,31,30,31,30,31};
char *b[]={ "Sun ", "Mon ", "Tue ", "Wed ", "Thr ", "Fri ", "Sat "};
char buff[960];
struct date curdate;
getdate(&curdate);
y=curdate.da_year;
m=curdate.da_mon;
l=wherex();
h=wherey();
gettext(21,1,59,11,buff);
while(tj)
{
clear(21,1,59,11,BLACK);
gotoxy(34,2);
textcolor(WHITE);
cprintf( "%dyear %dmon date ",y,m);
a[1]=((y%4==0&&y%100!=0||y%400==0))?29:28;
d=y+(y-1)/4+(y-1)/400-(y-1)/100;
if(m> 1)
{
for(i=0;i <=m-2;i++)
d=d+a[i];
}
k=d%7;
clear(21,3,59,3,GREEN);
for(i=0;i <=6;i++)
{
gotoxy(5*k+24,3);
if(i==0||i==6)
textcolor(RED);
else textcolor(WHITE);
cputs(b[i]);
}
textbackground(BLUE);
r=4;
for(i=1;i <=a[m-1];i++)
{
gotoxy(5*k+25,r);
if(k==0||k==6)
textcolor(RED);
else textcolor(WHITE);
cprintf( "%2d ",i);
++k;
if(k> 6);
{
k=0;
r++;
}
}
clear(21,10,59,10,GREEN);
gotoxy(27,10);
cprintf( "↑/↓:year ←/→:min ESC ");
p=getch();
switch(p)
{
case UP:--y;
break;
case DOWN:++y;
if(y <1840)
y=1840;
break;
case PGUP:y-=20;
break;
case PGDN:y+=20;
if(y <1840)
y=1840;
break;
case RIGHT:++m;
if(m> 12)
m=1;
break;
case LEFT:--m;
if(m <1)
m=12;
break;
case DEL:y=curdate.da_year;
m=curdate.da_mon;
break;
case ESC:tj=0;
}
}
puttext(21,1,59,11,buff);
gotoxy(l,h);
}
这道运行不了,帮忙运行看看.谢谢
[解决办法]
帮顶
[解决办法]
用图形时得在主程序中加载一个函数 如下。
int gdriver = DETECT, gmode;
initgraph(&gdriver, &gmode, " ");
[解决办法]
while 循环中存在问题 ..
单步调试一下
[解决办法]
帮顶
记得给分
分在管理里面给
要输入密码!!!
[解决办法]
为什么使用系统的实现函数(就是带_开头的),一般不倡导使用此类函数~
[解决办法]
#include <dos.h>
#include <stdio.h>
void show_mouse()
{
union REGS ireg;
ireg.x.ax=1;
int86(0x33,&ireg,&ireg);
}
void hid_mouse()
{
union REGS ireg;
ireg.x.ax=2;
int86(0x33,&ireg,&ireg);
}
char left_pressed()
{
union REGS ireg,oreg;
ireg.x.ax=3;
int86(0x33,&ireg,&oreg);
return(oreg.x.bx&1);
}
int reset()
{
union REGS ireg,oreg;
ireg.x.ax=0;
int86(0x33,&ireg,&oreg);
if(oreg.x.ax==0) return(0);
else return(1);
}
void set_xy(int x,int y)
{
union REGS ireg;
ireg.x.ax=4;
ireg.x.cx=x;
ireg.x.dx=y;
int86(0x33,&ireg,&ireg);
}
void get_xy(int *x,int *y)
{
union REGS ireg,oreg;
ireg.x.ax=3;
int86(0x33,&ireg,&oreg);
*x=oreg.x.cx;
*y=oreg.x.dx;
}
void button_pressed_status(int button,int *counter,int *x,int *y)
{
union REGS ireg,oreg;
ireg.x.ax=5;
ireg.x.bx=button;
int86(0x33,&ireg,&oreg);
*counter=oreg.x.bx;
*x=oreg.x.cx;
*y=oreg.x.dx;
}
void button_released_status(int button,int *counter,int *x,int *y)
{
union REGS ireg,oreg;
ireg.x.ax=6;
ireg.x.bx=button;
int86(0x33,&ireg,&oreg);
*counter=oreg.x.bx;
*x=oreg.x.cx;
*y=oreg.x.dx;
}
int motion(int *x,int *y)
{
union REGS ireg,oreg;
ireg.x.ax=11;
int86(0x33,&ireg,&oreg);
*x=oreg.x.cx;
*y=oreg.x.dx;
return(*x||*y);
}
int get_storage_req()
{
union REGS ireg,oreg;
ireg.x.ax=21;
int86(0x33,&ireg,&oreg);
return(oreg.x.bx);
}
void save_mouse_state(void *buf)
{
union REGS ireg;
struct SREGS isreg;
ireg.x.ax=22;
ireg.x.dx=FP_OFF(buf);
segread(&isreg);
isreg.es=ireg.ds;
int86(0x33,&ireg,&isreg);
}
void restore_mouse_state(void *buf)
{
union REGS ireg;
struct SREGS isreg;
ireg.x.ax=23;
ireg.x.dx=FP_OFF(buf);
segread(&isreg);
isreg.es=ireg.ds;
int86(0x33,&ireg,&isreg);
}
应该够用了吧