#include<math.h> tian(int x){ int y; if (x<=48&&x>0) /*输入的等级数要小于等于48或大于0,否则不合QQ要求*/ { y=x*x+4*x; return y; } else return 0;}deng(int y){ int x,i,a[49],max; if (y>2496||y<=0) /*输入的天数要小于等于48级对应的2496天并大于0*/ return 0; for(x=1;x<=48;x++) if (x*x+4*x==y) break; if (x==49) /*因为在上面的循环里用了x++,所如果没有一个等级符合要求,那么X值会变为49*/ { for(x=1,i=1;x<=48&&i<=48;x++,i++) a[i]=abs(x*x+4*x-y); /*abs函数是库函数,功能是取绝对值*/ if (a[1]<a[2]) max=1; else max=2; for(i=3;i<=48;i++) if (a[i]<a[max]) /*比较出数组中最小的那个,它的下标符也就是等级的值*/ max=i; return max; } else return x;}main(){ int n,d; char m;a: printf("a:输入等级计算输出天数\n"); printf("b:输入天数计算输出最接近的等级\n"); printf("e:退出\n"); printf("请选择:"); scanf("%c",&m); switch(m) { case'a': printf("输入等级:"); scanf("%d",&n); if (tian(n)!=0) printf("%d级对应的是%d天",n,tian(n)); else printf("输入错误!可能输入等级大于48或等于小于0"); break; case'b': printf("输入天数:"); scanf("%d",&d); if (deng(d)!=0) printf("%d天最接近%d级",d,deng(d)); else printf("输入错误!可能输入天数大于2496或小于等于0"); break; case'e': exit(0); default: printf("请重新选择");goto a; } getch();}

评论