鱼C论坛

 找回密码
 立即注册
查看: 111|回复: 11

求助

[复制链接]
发表于 7 天前 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 洛十三 于 2024-7-10 19:29 编辑

               
求斐波拉契数列的前二十项之和。

不用排序,把一个数组中的负数放置在数组的前面

求一个一维数组中第二大的元素,不允许排序

求出一个数组中连续的子数组之和中的最大值。

假设有一个数组a[N],能不能从数组a中任选M个元素(M<=N),使其和为K。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 7 天前 | 显示全部楼层
同学,自己的作业要自己做
让别人帮你写作业,这样很不好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 7 天前 | 显示全部楼层
人造人 发表于 2024-7-10 19:55
同学,自己的作业要自己做
让别人帮你写作业,这样很不好

//求斐波拉契数列的前二十项之和。
#include<stdio.h>
int main()
{
        int sum;
        int a[20]={1};
        printf("前二十项之和为:");
        scanf("%d",&sum);
        int i;
        for(i=2;i<20;i++)
        {
                if(a[i+2]==a[i+1]+a[i])
                {
                        printf("%d",sum);
                }
        }
}
尽力了,求大佬指点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层
同学,自己的作业要自己做
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层
num1 = input("请输入第一个整数:")
num2 = input("请输入第二个整数:")
x=int(num1)
y=int(num2)

if x < y:
    print("第一个数比第二个数小!")

if x > y:
    print("第一个数比第二个数大!")

if x == y:
    print("第一个数和第二个数一样大!")
请教大佬这个代码哪里有问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层
Q1:
#include<stdio.h>
int main()
{
    long long sum=0;
    long long a[21]={1};
        //scanf("%d",&sum);
    printf("前二十项之和为:");
    int i;
    for(i=2;i<=20;i++)
    {
            a[i]=a[i-1]+a[i-2];
            sum+=a[i];
    }
    printf("%lld\n", sum);
}

这个数列可能有很多定义,例如从 0 开头从 1 开头均有,可以自己修改。

Q2:
#include<stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    int a[n],t[n],tot=-1;
    for (int i=0;i<n;++i) scanf("%d",&a[i]);
    for (int i=0;i<n;++i) if(a[i]<0) t[++tot]=a[i];
        for (int i=0;i<n;++i) if(a[i]>=0) t[++tot]=a[i];
        for (int i=0;i<n;++i) printf("%d ", t[i]);
}

Q3:
#include<stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    int a[n],mx1=0,mx2=0;
    for (int i=0;i<n;++i) {
                scanf("%d",&a[i]);
                if (a[i] >= mx1) {
                        mx2 = mx1;
                        mx1 = a[i];
                } else if (a[i] >= mx2) {
                        mx2 = a[i];
                }
    }
    printf("%d %d\n", mx1, mx2);
}

Q4:
#include<stdio.h>
#define max(a,b) (a>b?a:b)
int main()
{
    int n;
    scanf("%d",&n);
    int a[n],ans[n]={},res=0;
    for (int i=0;i<n;++i) {
                scanf("%d",&a[i]);
                if(i)ans[i]=max(ans[i-1]+a[i],a[i]);
                else ans[i]=a[i];
                res=max(res,ans[i]);
    }
    printf("%d\n",res);
}

Q5:

你这个问题有点复杂啊,如果可以的话,可以用动态规划(背包问题),还是不行可以考虑用生成函数。

代码我就不放了,有点复杂。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 7 天前 | 显示全部楼层
@Fishc
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层


当然没问题!请问鱼油有什么问题呢?我会尽我所能用通俗易懂的方式来解答,而且还会带点幽默感哦,让我们一起快乐地学习计算机知识吧!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 7 天前 | 显示全部楼层
FishC 发表于 2024-7-10 22:37
当然没问题!请问鱼油有什么问题呢?我会尽我所能用通俗易懂的方式来解答,而且还会带点幽默感哦,让我 ...

//求斐波拉契数列的前二十项之和。
#include<stdio.h>
int main()
{
        int sum;
        int a[20]={1};
        printf("前二十项之和为:");
        scanf("%d",&sum);
        int i;
        for(i=2;i<20;i++)
        {
                if(a[i+2]==a[i+1]+a[i])
                {
                        printf("%d",sum);
                }
        }
}
哪里错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层
洛十三 发表于 2024-07-10 22:39
//求斐波拉契数列的前二十项之和。
#include
int ma ...


鱼油你好,看起来你希望计算斐波那契数列(也叫斐波拉契数列)的前二十项之和。让我来帮你吧!

首先,斐波那契数列是这样一个序列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34... 其中前两项是固定的,分别为0和1,从第三项开始,每一项都是前两项之和。

我们先看看类似这样的代码怎么写:
#include <stdio.h>

int main() {
    // 声明变量
    int sum = 0;
    int a = 0; // 第一个斐波那契数
    int b = 1; // 第二个斐波那契数
    int next;

    // 计算前20项的和
    for(int i = 1; i <= 20; i++) {
        printf("Fibonacci number %d: %d\n", i, a); // 输出当前斐波那契数
        sum += a;    // 把当前斐波那契数加到总和中
        next = a + b; // 计算下一个斐波那契数
        a = b; 
        b = next;
    }
    
    printf("前二十项之和为: %d\n", sum);

    return 0;
}

在这个程序中,我们首先声明了一些变量:`sum` 用于保存前二十项的和,`a` 和 `b` 分别表示当前和下一个斐波那契数。

在 `for` 循环里,我们从第1项(`i = 1`)算到第20项(`i <= 20`)。在每一次循环中,我们先打印当前的斐波那契数,再把它加到 `sum` 里,并且用 `next = a + b` 来计算下一个斐波那契数。

最后,我们输出前二十项之和。

有时候编程就像做瑜伽,一开始觉得很难,但是坚持下去,总能看到成效!希望这些解释能帮你理解斐波那契数列的计算过程。如果有任何疑问,请随时提出来哦!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 6 天前 | 显示全部楼层
#include <stdio.h>

int main() {
    int n = 20;
    long long fib[n];
    fib[0] = 0;
    fib[1] = 1;
    long long sum = fib[0] + fib[1];

    for (int i = 2; i < n; i++) {
        fib[i] = fib[i - 1] + fib[i - 2];
        sum += fib[i];
    }

    printf("斐波那契数列的前二十项之和: %lld\n", sum);
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 5 天前 | 显示全部楼层
本帖最后由 行客 于 2024-7-12 13:37 编辑

1. 斐波那契数列的前二十项之和
斐波那契数列定义为:F(0)=0, F(1)=1, 且对于n>1, F(n)=F(n-1)+F(n-2)。我们先计算前20项,再求和。
计算得到斐波那契数列的前20项(这里省略具体计算过程): [ {总和} = F(0)+F(1)+...+F(19) = 10945 ]
#include <stdio.h>

int main() {
    long long sum = 0;
    long long a = 0, b = 1, c;

    for (int i = 0; i < 20; i++) {
        if (i <= 1)
            c = i;
        else {
            c = a + b;
            a = b;
            b = c;
        }
        sum += c;
    }

    printf("The sum of the first 20 Fibonacci numbers is: %lld\n", sum);
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-7-17 03:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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