教你夺冠


私信TA

用户名:835685327

访问量:157490

签 名:

相互交流 相互学习

等  级
排  名 15
经  验 22633
参赛次数 0
文章发表 84
年  龄 0
在职情况 学生
学  校 辣鸡施工大学
专  业

  自我简介:

努力刷题 熟能生巧!

看了别人的方法再看自己写的方法...真是觉得好傻逼

啥都不说了...继续努力刷题吧


连续错了几次都是因为输出格式的问题,真是很气!

以下是我的方法,复杂化了...搞了两个循环

sum和a[n]都是long long类型,最后输出格式符是%lld(我就是错在这里)!

#include <stdio.h>

//最好不要用递归
/*
long long jiecheng(int n)
{
    if (n == 1)
        return 1;
    else
        return n * jiecheng(n - 1);
}
*/

int main()
{
    int n;
    scanf("%d", &n);
    
    //当n不超过20时才计算
    if (n > 0 && n <= 20)
    {
        long long sum = 0; //总和
        long long an[n]; //定义一个数组存放每一项

        int i, j;
        for (i = 1; i <= n; i++)
        {
            //先计算每一项的值
            an[i] = 1; 
            for (j = 1; j <= i; j++)
            {
                an[i] = an[i] * j;
            }
            //求和
            sum += an[i];
        }
        printf("%lld\n", sum);
    }

    return 0;
}

以下是看到的其他同学的办法,比我的清楚多了!!

#include <stdio.h>

int main()
{
    int n;
    scanf("%d", &n);

    if (n > 0 && n <= 20)
    {
        long long sum = 0;
        long long an = 1;
        
        int i;
        for (i = 1; i <= n; i++)
        {
            an *= i;
            sum += an;
        }
        printf("%lld\n",sum);
    }

    return 0;
}


 

0.0分

0 人评分

新上线《蓝桥杯辅导》课程,近五年的蓝桥杯省赛与国赛真题都有,从读题开始理解题意、梳理思路、实现代码再提交评测全过程,可有效提升获奖比例甚至进国赛!课程介绍、试听请猛击这里

  评论区

  • «
  • »