#include<stdio.h>
typedef struct
{
int id;
int xl;
int xr;
int yb;
int yu;
}loc_club; /*单个九宫格的编号以及位置数据*/
typedef struct
{
int w;
int h;
}size_club;/*单个九宫格的大小*/
typedef struct
{
int w;
int t;
int a;
int l;
int h;
int p;
int b;
int q;
}size_menu;
void init(size_club *a,size_menu *b)/*根据菜单数据计算单个九宫格的大小*/
{
a->w=(b->w-2*b->a-b->t-b->l)/3;
a->h=(b->h-2*b->b-b->p-b->q)/3;
}
void find_loc_club(int n,loc_club *lc,size_club *sc,size_menu *bc)/*计算第n个九宫格的位置,并保存到a指向的结构体变量中*/
{
int row=(n-1)/3,col=(n-1)%3;
lc->id=n;
lc->xl=bc->t+col*(bc->a+sc->w);
lc->xr=lc->xl+sc->w;
lc->yu=bc->p+row*(bc->b+sc->h);
lc->yb=lc->yu+sc->h;
}
void input_size_menu(size_menu *b)/*输入菜单大小基本数据*/
{
scanf("%d%d",&b->w,&b->h);/*输入菜单宽和高*/
scanf("%d%d%d",&b->t,&b->a,&b->l);/*输入九宫格水平间隔*/
scanf("%d%d%d",&b->p,&b->b,&b->q);/*输入九宫格垂直间隔*/
}
void print_loc_club(const loc_club *lc)
{
printf("No.%d\n",lc->id);
printf("Left:%d\t\tTop:%d\n",lc->xl,lc->yu);
printf("Right:%d\t\tBottom:%d\n",lc->xr,lc->yb);
}
int main(void)
{
size_club sc;
size_menu sm;
loc_club lc;
int n;
input_size_menu(&sm);/*输入菜单的大小和九宫格的间距,保存到sm中*/
init(&sc,&sm);
printf("n=");
scanf("%d",&n);
find_loc_club(n,&lc,&sc,&sm);
print_loc_club(&lc);
return 0;
}
温馨提示:答案为网友推荐,仅供参考