注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

jiyinyiyong

/chenyong/, 1991, dreamer, coder

 
 
 

日志

 
 
关于我

http://tiye.me

文章分类
网易考拉推荐

before0111洛书演示  

2011-01-11 23:57:26|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

#include<stdio.h>

struct couple

{

int a,b;

};

struct couple choose(int a)

{

struct couple c;

switch(a)

{

case 1:c.a=1;c.b=0;break;

case 2:c.a=-1;c.b=-1;break;

case 3:c.a=0;c.b=1;break;

case 4:c.a=-1;c.b=1;break;

case 5:c.a=0;c.b=0;break;

case 6:c.a=1;c.b=-1;break;

case 7:c.a=0;c.b=-1;break;

case 8:c.a=1;c.b=1;break;

case 9:c.a=-1;c.b=0;break;

}

return c;

}

struct couple chu(int a)

{

struct couple b;

b.a=a/10;

b.b=a%10;

return b;

}

struct couple getin()

{

int i;

struct couple out,s,ten;

ten.a=0;

ten.b=0;

out.a=0;

out.b=0;

scanf("%d",&ten.a);

for(i=1;ten.a>0;i*=3)

{

ten=chu(ten.a);

s=choose(ten.b);

out.a+=i*s.a;

out.b+=i*s.b;

}

return out;

}

int backchoo(struct couple a)

{

int d;

switch(a.a)

{

case 1:switch(a.b)

{

case 1:d=8;break;

case 0:d=1;break;

case -1:d=6;break;

};break;

case 0:switch(a.b)

{

case 1:d=3;break;

case 0:d=5;break;

case -1:d=7;break;

};break;

case -1:switch(a.b)

{

case 1:d=4;break;

case 0:d=9;break;

case -1:d=2;break;

};break;

}

return d;

}

struct couple yu(struct couple a)

{

switch(a.a%3)

{

case 2:

{

a.b=-1;

a.a=a.a/3+1;

};

break;

case -2:

{

a.b=1;

a.a=a.a/3-1;

};

break;

default:

{

a.b=a.a%3;

a.a=a.a/3;

};

break;

};

return a;

}

int back(struct couple a)

{

int d=0,i;

struct couple c,ca,cb;

ca.a=a.a;

cb.a=a.b;

for(i=1;ca.a!=0||cb.a!=0;i*=10)

{

ca=yu(ca);

cb=yu(cb);

c.a=ca.b;

c.b=cb.b;

d+=i*backchoo(c);

}

if(d==0)d=5;

return d;

}

struct couple plu(struct couple a,struct couple b)

{

struct couple c;

c.a=a.a+b.a;

c.b=a.b+b.b;

return c;

}

struct couple min(struct couple a,struct couple b)

{

struct couple c;

c.a=a.a-b.a;

c.b=a.b-b.b;

return c;

}

struct couple mul(struct couple a,struct couple b)

{

struct couple c;

c.a=a.a*b.a-a.b*b.b;

c.b=a.a*b.b+a.b*b.a;

return c;

}

struct couple unc(struct couple a,struct couple b)

{

struct couple c;

c.a=(a.a*b.a+a.b*b.b)/(b.a*b.a+b.b*b.b);

c.b=(a.b*b.a-a.a*b.b)/(b.a*b.a+b.b*b.b);

return c;

}

int main(void)

{

printf("\"洛书\"涵义见前文,每一个不含'0'且不以'5'开头的十进制对应洛书值,且一一对应全平面位置;\n程序中为避免溢出请勿选择过大数字;不按要求输入将导致程序异常,已设定异常情况最多循环100次;\n程序经粗略调试,由于能力原因,不支持小数点,除法部分没有准确值,我未来将改进;\n本程序经GCC-4.5调试;\n\n");

int d,k=0;

begin:k+=1;

struct couple one,two,plus,minus,multiply,unclear;

printf("请输入一个洛书:");

one=getin();

d=back(one);

printf("对应坐标:(%d,%d);",one.a,one.b);

printf("返回校准:%d",d);

printf("\n请再输入一个洛书:");

two=getin();

d=back(two);

printf("对应坐标:(%d,%d);",two.a,two.b);

printf("返回校准:%d\n",d);

plus=plu(one,two);

printf("\n和对应坐标:(%d,%d);",plus.a,plus.b);

d=back(plus);

printf("\t和是:%d;\n",d);

minus=min(one,two);

printf("差对应坐标:(%d,%d);",minus.a,minus.b);

d=back(minus);

printf("\t差是:%d;\n",d);

multiply=mul(one,two);

printf("积对应坐标:(%d,%d);",multiply.a,multiply.b);

d=back(multiply);

printf("\t积是:%d;\n",d);

if(two.a!=0&&two.b!=0)

{

unclear=unc(one,two);

printf("整除商对应坐标(%d,%d);",unclear.a,unclear.b);

d=back(unclear);

printf("\t整除商模糊值:%d;\n",d);

}

printf("\n周期结束:退出请按'0',其余键继续:");

scanf("%d",&d);

if(d!=0&&k<100)

{

printf("开始下一循环:\n\n");

goto begin;

}

printf("已退出..\n");

return 0;

}
  评论这张
 
阅读(262)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017