努力向前♡ 2022-01-07 08:47 采纳率: 100%
浏览 140
已结题

pta7-5到底有多二运行时错误

img

运行时错误
我的解答思路和尝试过的方法
#include<stdio.h>
#include<string.h>
int main()
{
    int j,o=1;
    double r,p=1,c=0;
    char s[50];
    gets(s);
    int n=strlen(s);
    if(s[n-1]=='0'||s[n-1]=='2'||s[n-1]=='4'||s[n-1]=='6'||s[n-1]=='8')
        o=2;
    for(j=0;j<n;j++)
    {if(s[j]=='2')
            c++;
    }
    if(s[0]=='-')
    {p=1.5;
    n=n-1;}
    r=c/n*p*o*100;
    printf("%.2lf%%\n",r);
    return 0;
}

我想要达到的结果
  • 写回答

2条回答 默认 最新

  • 关注

    结尾无空行,printf("%.2lf%%\n",r);这里的\n删掉。
    C语言变量的声明放在最前面,把变量n的声明放在前面。
    用下面的代码试试:

    #include<stdio.h>
    #include<string.h>
    int main()
    {
        int j,o=1;
        double r,p=1;
        int n,c=0; //这里c改成了int类型
        char s[50];
        gets(s);
        n=strlen(s);
        if(s[n-1]=='0'||s[n-1]=='2'||s[n-1]=='4'||s[n-1]=='6'||s[n-1]=='8')
            o=2;
        for(j=0;j<n;j++)
        {
            if(s[j]=='2')
            c++;
        }
        if(s[0]=='-')
        {
            p=1.5;
            n=n-1;
        }
        r=1.0*c/n*p*o*100; //这里计算的时候用1.0乘以,转成double类型
        printf("%.2lf%%",r);
        return 0;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月15日
  • 已采纳回答 1月7日
  • 创建了问题 1月7日