[北大OJ](1003)宿醉
题目要求:
样本输入
水题
按照题目要求:从1/2开始,分母递增,直到大于输入的值,则计算递增了多少次,这里的递增就是叠加的卡片
思路:
- 输入测试值,为浮点类型
- 判断输入值是否为0.00,否则进入循环
- 进入循环后进入内嵌循环从1/2开始加,分母递增,分母用浮点型变量所代替,直到递增的数额大于输入项则退出循环
- 输出分母的数值,由于分母是从2开始,则减2输入。
- 再次输入测试值,转回第一步
答案代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{
float b, a, i;
scanf("%f", &b);
while (b != 0)
{
i = 2;
a = 0;
while (b > a)
{
a = a + 1 / i;
i++;
}
printf("%d crad(s)\n",(int)i - 2);
scanf("%f", &b);
}
return 0;
}
待优化代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int puta(float);
int main()
{
float b;
int i[10] = { 0 }, j = 0;
scanf("%f", &b);
for(;b!=0;)
{
if (i[j] == NULL)
{
i[j] = puta(b);
j++;
}
scanf("%f", &b);
}
j = 0;
printf("\n");
while (i[j] != NULL)
{
printf("%d card(s)\n", i[j]);
j++;
}
return 0;
}
int puta(float b)
{
float a = 0;
int i;
for (i = 2; i < 410; i++)
{
a = a + (float)1 / i;
if (a >= b)
{
break;
}
}
return i - 1;
}
待优化代码编译正确,但是裁定错误,原因还未找到...