#include <graphics.h>
#include <stdlib.h>
#define SIZE (sizeof(struct List))
void Mouse(int,int); //鼠标控制
void MNumber(int,int,int,int,int,int);//输出
void Welcome(); //初始化界面
void Draw(int,int,int,int,int); //在指定地点绘制
void Game(); //计算开始
void Deal(int); //处理各种链表关系
void Output(int); //输出结果到屏幕
const int num[]={63,6,91,79,102,109,125,7,127,111,128};//0-9 和 .
const int mark[]={10,20,30,40,50,60}; // = + - * / <-
/*输出屏幕数字的链表结构*/
typedef struct List {
int number;
int x,y; //= + - * /
struct List *next;
}Lis;
struct DYuan{
int size;
Lis *head;
}Yuan;
void Welcome()
{
initgraph(340,410);
setcolor(WHITE);
for(int y=0;y<410;y++)
line(0,y,340,y);
setcolor(BLUE);
rectangle(10,10,335,60); //整体框架
rectangle(10,80,250,320);
rectangle(255,80,335,400);
rectangle(10,330,250,400);
line(10,160,250,160); //数字键盘
line(10,240,250,240);
line(90,80,90,320);
line(170,80,170,320);
line(90,330,90,400);
for(y=60;y<=240;y+=60)
line(255,80+y,335,80+y);
line(170,330,170,400);
MNumber(10,80,num[1],20,1,40);MNumber(90,80,num[2],20,1,40);
MNumber(170,80,num[3],20,1,40);MNumber(10,160,num[4],20,1,40);
MNumber(90,160,num[5],20,1,40);MNumber(170,160,num[6],20,1,40);
MNumber(10,240,num[7],20,1,40);MNumber(90,240,num[8],20,1,40);
MNumber(170,240,num[9],20,1,40);MNumber(10,320,num[0],20,1,40);
MNumber(90,320,num[10],20,1,40);MNumber(170,320,mark[0],20,1,40);
MNumber(255,80,mark[1],20,1,40);MNumber(255,140,mark[2],20,1,40);
MNumber(255,200,mark[3],20,1,40);MNumber(255,260,mark[4],20,1,40);
MNumber(255,340,mark[5],30,1,40);
}
/************************///链表操作
int Empty(struct DYuan yuan) //判断空表
{
if(yuan.size == 0) return(1);
else return(0);
}
Lis* Creat(Lis *head,int number) //创建链表
{
head = (Lis*)malloc(SIZE);
head->number = number;
head->x = -10;
head->y = 5;
head->next=NULL;
Yuan.size+=1;
return(head);
}
Lis* Add(Lis *head,int number) //插入元素
{
Lis *p = head;
Lis *p1 = (Lis*)malloc(SIZE);
p1->next=NULL;
while(p->next != NULL)
p=p->next;
p->next = p1;
p1->number = number;
p1->x = p->x+30;
p1->y=5;
Yuan.size+=1;
return(head);
}
void Del(Lis *head) //删除屏幕从最后开始
{
Lis *DEL = head;
Lis *p;
while(DEL->next != NULL)
p = DEL,DEL=DEL->next;
if(DEL->number==128) MNumber(DEL->x,DEL->y,DEL->number,10,0,20);
else MNumber(DEL->x,DEL->y,DEL->number,10,0,40);
if(head==DEL) Yuan.size=0;
else {
free(DEL);
#include <stdlib.h>
#define SIZE (sizeof(struct List))
void Mouse(int,int); //鼠标控制
void MNumber(int,int,int,int,int,int);//输出
void Welcome(); //初始化界面
void Draw(int,int,int,int,int); //在指定地点绘制
void Game(); //计算开始
void Deal(int); //处理各种链表关系
void Output(int); //输出结果到屏幕
const int num[]={63,6,91,79,102,109,125,7,127,111,128};//0-9 和 .
const int mark[]={10,20,30,40,50,60}; // = + - * / <-
/*输出屏幕数字的链表结构*/
typedef struct List {
int number;
int x,y; //= + - * /
struct List *next;
}Lis;
struct DYuan{
int size;
Lis *head;
}Yuan;
void Welcome()
{
initgraph(340,410);
setcolor(WHITE);
for(int y=0;y<410;y++)
line(0,y,340,y);
setcolor(BLUE);
rectangle(10,10,335,60); //整体框架
rectangle(10,80,250,320);
rectangle(255,80,335,400);
rectangle(10,330,250,400);
line(10,160,250,160); //数字键盘
line(10,240,250,240);
line(90,80,90,320);
line(170,80,170,320);
line(90,330,90,400);
for(y=60;y<=240;y+=60)
line(255,80+y,335,80+y);
line(170,330,170,400);
MNumber(10,80,num[1],20,1,40);MNumber(90,80,num[2],20,1,40);
MNumber(170,80,num[3],20,1,40);MNumber(10,160,num[4],20,1,40);
MNumber(90,160,num[5],20,1,40);MNumber(170,160,num[6],20,1,40);
MNumber(10,240,num[7],20,1,40);MNumber(90,240,num[8],20,1,40);
MNumber(170,240,num[9],20,1,40);MNumber(10,320,num[0],20,1,40);
MNumber(90,320,num[10],20,1,40);MNumber(170,320,mark[0],20,1,40);
MNumber(255,80,mark[1],20,1,40);MNumber(255,140,mark[2],20,1,40);
MNumber(255,200,mark[3],20,1,40);MNumber(255,260,mark[4],20,1,40);
MNumber(255,340,mark[5],30,1,40);
}
/************************///链表操作
int Empty(struct DYuan yuan) //判断空表
{
if(yuan.size == 0) return(1);
else return(0);
}
Lis* Creat(Lis *head,int number) //创建链表
{
head = (Lis*)malloc(SIZE);
head->number = number;
head->x = -10;
head->y = 5;
head->next=NULL;
Yuan.size+=1;
return(head);
}
Lis* Add(Lis *head,int number) //插入元素
{
Lis *p = head;
Lis *p1 = (Lis*)malloc(SIZE);
p1->next=NULL;
while(p->next != NULL)
p=p->next;
p->next = p1;
p1->number = number;
p1->x = p->x+30;
p1->y=5;
Yuan.size+=1;
return(head);
}
void Del(Lis *head) //删除屏幕从最后开始
{
Lis *DEL = head;
Lis *p;
while(DEL->next != NULL)
p = DEL,DEL=DEL->next;
if(DEL->number==128) MNumber(DEL->x,DEL->y,DEL->number,10,0,20);
else MNumber(DEL->x,DEL->y,DEL->number,10,0,40);
if(head==DEL) Yuan.size=0;
else {
free(DEL);