#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();
}
评论