[北大OJ](1003)宿醉

题目要求:

img

样本输入

img

水题

按照题目要求:从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;
}

待优化代码编译正确,但是裁定错误,原因还未找到...

本文链接:

https://nullcode.fun/87.html
1 + 5 =
快来做第一个评论的人吧~