鱼C论坛

 找回密码
 立即注册
查看: 1973|回复: 9

[已解决]请大佬帮忙对我这道题做出改正

[复制链接]
发表于 2022-9-28 22:33:29 | 显示全部楼层 |阅读模式

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

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

x
我的代码是:
#include<stdio.h>

int main()
{
        int n;

        printf("你想知道斐波那契数列前几项?(1<= n <=46)");
        scanf("%d", &n);
        int i,j;
        int num[46], sum = 0;
        num[0] = 1;
        int flag = 0;

        for (i = 1;i <= ((n % 5) + 1);i++)
        {
                for(j = 1;j <= 5;j++)
                {
                        sum += num;
                        num[flag] = sum;
                        printf("%d", num);
                        flag++;
                }
                putchar('\n');
        }

        return 0;
}
"exm1.c" 42L, 392C                                                                         18,1-8       顶端
最佳答案
2022-9-28 22:51:57
  1. #include <stdio.h>

  2. int main() {
  3.     printf("你想知道斐波那契数列前几项?(1<= n <=46): ");
  4.     int n;
  5.     scanf("%d", &n);
  6.     int num[46];
  7.     num[0] = 1;
  8.     num[1] = 1;
  9.     for(size_t i = 2; i < n; ++i) {
  10.         num[i] = num[i - 1] + num[i - 2];
  11.     }
  12.     for(size_t i = 0; i < n; ++i) {
  13.         if(i != 0 && i % 5 == 0) puts("");
  14.         printf("%d ", num[i]);
  15.     }
  16.     puts("");
  17.     return 0;
  18. }
复制代码

是这道题

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

使用道具 举报

发表于 2022-9-28 22:51:57 | 显示全部楼层    本楼为最佳答案   
  1. #include <stdio.h>

  2. int main() {
  3.     printf("你想知道斐波那契数列前几项?(1<= n <=46): ");
  4.     int n;
  5.     scanf("%d", &n);
  6.     int num[46];
  7.     num[0] = 1;
  8.     num[1] = 1;
  9.     for(size_t i = 2; i < n; ++i) {
  10.         num[i] = num[i - 1] + num[i - 2];
  11.     }
  12.     for(size_t i = 0; i < n; ++i) {
  13.         if(i != 0 && i % 5 == 0) puts("");
  14.         printf("%d ", num[i]);
  15.     }
  16.     puts("");
  17.     return 0;
  18. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-28 22:53:55 | 显示全部楼层
本帖最后由 jackz007 于 2022-9-28 22:58 编辑
  1. #include <stdio.h>

  2. int fib(int n)
  3. {
  4.         return (n < 3) ? 1 : fib(n - 1) + fib(n - 2)           ;
  5. }

  6. int main(void)
  7. {
  8.         int d[50] , i , n                                      ;
  9.         printf("你想知道斐波那契数列前几项 (1 <= n <= 46) : ") ;
  10.         scanf("%d" , & n)                                      ;
  11.         for(i = 1 ; i < n + 1 ; i ++) d[i - 1] = fib(i)        ;
  12.         for(i = 0 ; i < n ; i ++) {
  13.                 if(i % 5) printf(" , " , d[i])                 ;
  14.                 if(i && ! (i % 5)) printf("\n")                ;
  15.                 printf("%10d" , d[i])                          ;
  16.         }
  17.         printf("\n")                                           ;
  18. }
复制代码

        编译、运行实况:
  1. D:\[00.Exerciese.2022]\C>g++ -o x x.c

  2. D:\[00.Exerciese.2022]\C>x
  3. 你想知道斐波那契数列前几项 (1 <= n <= 46) : 35
  4.          1 ,          1 ,          2 ,          3 ,          5
  5.          8 ,         13 ,         21 ,         34 ,         55
  6.         89 ,        144 ,        233 ,        377 ,        610
  7.        987 ,       1597 ,       2584 ,       4181 ,       6765
  8.      10946 ,      17711 ,      28657 ,      46368 ,      75025
  9.     121393 ,     196418 ,     317811 ,     514229 ,     832040
  10.    1346269 ,    2178309 ,    3524578 ,    5702887 ,    9227465

  11. D:\[00.Exerciese.2022]\C>
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-9-28 23:05:16 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-28 23:07:10 | 显示全部楼层
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <errno.h>

  4. int main() {
  5.     printf("你想知道斐波那契数列前几项?(1<= n <=46): ");
  6.     size_t n;
  7.     scanf("%lu", &n);
  8.     if(n < 1 || n > 46) {fputs("输入错误!\n", stderr); exit(-EINVAL);}
  9.     size_t num[3] = {0, 1, 1};
  10.     for(size_t i = 0; i < n; ++i) {
  11.         num[0] = num[1];
  12.         num[1] = num[2];
  13.         num[2] = num[0] + num[1];
  14.         if(i != 0 && i % 5 == 0) puts("");
  15.         printf("%lu ", num[0]);
  16.     }
  17.     puts("");
  18.     return 0;
  19. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-28 23:09:40 | 显示全部楼层

雾草这个也得劲
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-28 23:10:21 | 显示全部楼层

大佬为什么习惯用++i不用i++呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-28 23:11:00 | 显示全部楼层

改一改,我查了一下,size_t 对应的是 %zu
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <errno.h>

  4. int main() {
  5.     printf("你想知道斐波那契数列前几项?(1<= n <=46): ");
  6.     size_t n;
  7.     scanf("%zu", &n);
  8.     if(n < 1 || n > 46) {fputs("输入错误!\n", stderr); exit(-EINVAL);}
  9.     size_t num[3] = {0, 1, 1};
  10.     for(size_t i = 0; i < n; ++i) {
  11.         num[0] = num[1];
  12.         num[1] = num[2];
  13.         num[2] = num[0] + num[1];
  14.         if(i != 0 && i % 5 == 0) puts("");
  15.         printf("%zu ", num[0]);
  16.     }
  17.     puts("");
  18.     return 0;
  19. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-28 23:16:45 | 显示全部楼层
折折星 发表于 2022-9-28 23:10
大佬为什么习惯用++i不用i++呀

这个习惯来自于C++
在C语言中 i++ 和 ++i 没有区别
在C++中,如果 i 是一个 class 的话,一般来说 ++i 的效率要高于 i++,如果 i 不是 class 的话,和C语言中的一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-28 23:36:12 | 显示全部楼层
人造人 发表于 2022-9-28 23:16
这个习惯来自于C++
在C语言中 i++ 和 ++i 没有区别
在C++中,如果 i 是一个 class 的话,一般来说 ++i  ...

哦哦哦好,我明白了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 17:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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