牛客网上收藏题目总结及重写(C语言)(3)

每日一言

如果预计中的不幸没有发生的话,我们就会收获意外的喜悦。 --人生的智慧


题目BC84

在这里插入图片描述
错因:忘记要使用小数除法
代码

#include <stdio.h>
int main()
{
    int i = 0;
    int n = 0;
    scanf("%d",&n);
    double sum = 0;
    for(i=1;i<=n;i++)
    {
        sum+=1.0/i;//使用小数除法
    }
    printf("%lf",sum);
    return 0;
}

题目BC85

在这里插入图片描述
找到规律就迎刃而解
其实原式=1+1/(-2)+1/(3)+1/(-4)…

正确代码

#include <stdio.h>
#include <math.h> 
int main()
{
    int n = 0;
    scanf("%d",&n);
    int i = 0;
    double sum = 0;
    int flag = 1;
    for(i=1;i<=n;i++)
    {
        sum+=1.0/(i*flag);
        flag=-flag;
    }
    printf("%.3lf",sum);
    return 0;
}

题目BC86

在这里插入图片描述
正确代码
分开求和再相加

#include<stdio.h>
int main()
{
    int n = 0;
    scanf("%d",&n);
    int i = 0;
    int sum = 0;
    int sum1 = 0;
    for(int j=1;j<=n;j++)
    {
        sum=0;
        for(i=1;i<=j;i++)
        {
            sum+=i;
        }
        sum1+=sum;
    }
    printf("%d",sum1);
    return 0;
}

再简化一下

#include<stdio.h>
int main()
{
    int n = 0;
    scanf("%d",&n);
    int i = 0;
    int sum = 0;
    for(int j=1;j<=n;j++)
    {
        for(i=1;i<=j;i++)
        {
            sum+=i;
        }
    }
    printf("%d",sum);
    return 0;
}

再换一种解法

#include<stdio.h>
int main()
{
    int n = 0;
    scanf("%d",&n);
    int sum = 0;
    int i = 0;
    for(int j=1;j<=n;j++)
    {
        sum+=j;
        i+=sum;
    }
    printf("%d",i);
    return 0;
}

题目BC89

在这里插入图片描述
正确代码

#include<stdio.h>
int main()
{
    int i = 0;
    int tmp = 0;
    int sum =  0;
    for(i=9;i<=2019;i++)
    {
        tmp = i;
        while(tmp)
        {
            if(tmp%10==9)
            {
                sum++;
                break;
            }
            tmp/=10;
        }
    }
    printf("%d",sum);
    return 0;
}

改进一下

#include<stdio.h>
int main()
{
    int i = 0;
    int sum =  0;
    for(i=9;i<=2019;i++)
    {
        if(i%10==9||i/10%10==9||i/100%10==9)
        //因为1~2019中9只可能出现在个位,十位,百位上
        sum++;
    }
    printf("%d",sum);
    return 0;
}

题目BC90

在这里插入图片描述
正确代码

#include <stdio.h>
int main()
{
    int n = 0;
    scanf("%d",&n);
    int y = 0;
    int sum = 0;
    int a = 0;
    for(int i=1;i<=3*n;i++)
    {
        scanf("%d",&y);
        sum+=y;
        if(i%3==0)
        {
            if(sum<180)//三科之和小于60*3即为不及格
            a++;
            sum=0;
        }
    }
    printf("%d",a);
    return 0;
}

题目BC92

在这里插入图片描述

#include <stdio.h>

int main()
{
    int i = 0;
    for(i=10000;i<=99999;i++)
    {
        if(i==(i%10)*(i/10)+(i%100)*(i/100)+(i%1000)*(i/1000)+(i%10000)*(i/10000))
        {
            printf("%d ",i);
        }
    }
}

换一种写法

#include <stdio.h>

int main()
{
    int i = 0;
    for(i=10000;i<=99999;i++)
    {
        int sum = 0;
        for(int j=10;j<=10000;j*=10)
        {
            sum+=(i/j)*(i%j);
        }
        if(sum==i)
        printf("%d ",i);
    }
    return 0;
}

结语

请给自己些耐心,一口吃不成胖子。
山外青山楼外楼,莫把百尺当尽头。
想成为大佬那就保持空杯心态加油努力吧!


都看到这里啦!真棒(*^▽^*)

可以给作者一个免费的赞赞吗,这将会鼓励我继续创作,谢谢大家

编程小白写作,如有纰漏或错误,欢迎指正


  • 14
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月临水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值