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
相关产品推荐
相关产品推荐

