鱼C论坛

 找回密码
 立即注册
查看: 988|回复: 2

求助

[复制链接]
发表于 2023-11-19 15:47:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一个整数“犯二的程度”定义为该数字中包含2的个数与其位数的比值。如果这个数是负数,则程度增加0.5倍;如果还是个偶数,则再增加1倍。例如数字-13142223336是个11位数,其中有3个2,并且是负数,也是偶数,则它的犯二程度计算为:3/11×1.5×2×100%,约为81.82%。本题就请你计算一个给定整数到底有多二。

输入格式:
输入第一行给出一个不超过50位的整数N。

输出格式:
在一行中输出N犯二的程度,保留小数点后两位。
以下是我写的代码,麻烦帮忙看看哪里有问题
#include <stdio.h>
#include<string.h>
int main()
{
        char a[50];
        double x=0,y,count=0;
        int i;
        gets(a);
        for(i=0;a[i]!='\0';i++)
        {
                if(a[i]=='2'){
                        count++;
                }
        }
        if((a[i-1]-48)%2==0)
        {
                x+=2.0;
        }
        if(a[0]=='-')
        {
                x+=0.5;
                y=(count/(double)(i-1.0))*x*2.0*0.01;
        }
        else
        {
                y=(count/(double)i)*x*2.0*0.01;
        }
        printf("%.2lf",y);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-19 15:47:53 | 显示全部楼层
#include <stdio.h>
#include <string.h>
int main()
{
    char a[51];  // 修改数组长度为51,以容纳最长的50位整数和字符串结尾的'\0'
    double x = 0, y, count = 0;
    int i;
    gets(a);
    for (i = 0; a[ i] != '\0'; i++)
    {
        if (a[ i] == '2')
        {
            count++;
        }
    }
    if ((a[i - 1] - 48) % 2 == 0)  // 修改为a[i - 1] - '0'以获取最后一位数字
    {
        x += 2.0;
    }
    if (a[0] == '-')
    {
        x += 0.5;
        y = (count / (double)(i - 1.0)) * x * 2.0 * 0.01;
    }
    else
    {
        y = (count / (double)i) * x * 2.0 * 0.01;
    }
    printf("%.2lf", y);
}

在您的代码中,有几个问题需要修复:

1. 由于输入的整数可能是50位,因此需要将数组长度增加到51,以便容纳最长的整数和字符串结尾的'\0'。
2. 在计算最后一位数字时,应该使用 a[i - 1] - '0' 而不是 a[i - 1] - 48 。
3. 在计算犯二程度时,应该使用 (count / (double)i) 而不是 (count / (double)(i - 1.0)) ,因为 (i - 1.0) 实际上是数组中的'\0'的位置,而不是整数的位数。

以上是修改后的代码,应该可以正确计算给定整数的犯二程度并输出结果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-19 15:48:16 | 显示全部楼层
timeout of 2000ms exceeded
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 15:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表