You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言小测实现斐波那契、公式计算、排序功能的代码问题求助

C语言小测代码问题修正

存在的错误汇总

  • 公式计算模块语法错误:C语言中乘法运算不能省略乘号,代码中2i属于非法写法,需要改为2 * i;同时整数直接运算会发生精度截断,需要转成浮点运算避免结果错误
  • 公式计算参数类型错误:迭代次数R为正整数,不应使用float类型接收
  • 斐波那契计算逻辑错误:当前实现循环逻辑混乱,存在重复打印、输出结果不符合斐波那契数列定义的问题
  • 主函数分支判断错误:未对选项3做单独校验,用户输入非1/2的数值都会直接进入排序功能,不符合需求
  • 菜单流程逻辑错误:用户首次输入-1时未直接重新展示菜单,不符合题目要求

修正后完整代码

#include <stdio.h>
#include <stdlib.h>

// 计算第numForFibonacci项斐波那契值,F(1)=1、F(2)=1
int fibonacci(int numForFibonacci)
{
    if (numForFibonacci <= 0) {
        printf("输入项数不能小于1\n");
        return 0;
    }
    if (numForFibonacci == 1 || numForFibonacci == 2) {
        printf("第%d项斐波那契值为:1\n", numForFibonacci);
        return 1;
    }
    int a = 1, b = 1, res = 0;
    for (int i = 3; i <= numForFibonacci; i++) {
        res = a + b;
        a = b;
        b = res;
    }
    printf("第%d项斐波那契值为:%d\n", numForFibonacci, res);
    return res;
}

// 计算累乘公式结果,R为迭代上限
float theEquation(int numR)
{
    float multipl, result = 1.0f;
    for (int i = 1; i <= numR; i++) {
        multipl = (2.0f * i + 4) / (1.0f * i * i);
        result *= multipl;
    }
    printf("公式计算结果为:%f\n", result);
    return result;
}

// 将n个整数升序排序输出
int ascending(int n)
{
    int k = 0, i = 0, j = 0, number[4];
    for (int w = 0; w < n; w++) {
        scanf("%d", &number[w]);
    }
    for (i = 0; i < n; ++i) {
        for (j = i + 1; j < n; ++j) {
            if (number[i] > number[j]) {
                k = number[i];
                number[i] = number[j];
                number[j] = k;
            }
        }
    }
    printf("升序排序结果:\n");
    for (i = 0; i < n; ++i) {
        printf("%d ", number[i]);
    }
    printf("\n");
    return i;
}

int main()
{
    int choice, choiceFibo, choiceR;
    do
    {
        printf("\n=== 功能菜单 ===\n");
        printf("[1] 计算指定项的斐波那契值\n");
        printf("[2] 计算累乘公式结果\n");
        printf("[3] 输入4个整数并升序排序\n");
        printf("请输入您的选择(输入-1重新展示菜单):\n");
        scanf("%d", &choice);

        if (choice == -1) {
            continue;
        } else if (choice == 1) {
            printf("请输入要计算的斐波那契项数:\n");
            scanf("%d", &choiceFibo);
            fibonacci(choiceFibo);
        } else if (choice == 2) {
            printf("请输入公式迭代次数R:\n");
            scanf("%d", &choiceR);
            theEquation(choiceR);
        } else if (choice == 3) {
            printf("请输入4个整数(空格分隔):\n");
            ascending(4);
        } else {
            printf("输入选项无效,请重新输入\n");
        }

        printf("如果需要继续操作请输入-1,输入其他数值退出程序:\n");
        scanf("%d", &choice);
    } while (choice == -1);

    return 0;
}

内容的提问来源于stack exchange,提问作者Oğuz Arapkirli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 02:39:04