C语言写题目遇到一点问题,求助!

wkr145 2017-12-05 09:52:03
有两个程序都能编译运行,但是不论输入多少,输出都是0.
第一个:
#include "stdafx.h"
long fibonacci(int month)
{
if (month == 3 || month == 2)
{
return 1;
}
else
{
return fibonacci(month - 1) + fibonacci(month - 2);
}
}


int main()
{
int month;
double number;
printf("Please input the moth:"); //*只能输入3到12月份*//
scanf_s("%d", &month);
if (month < 3 || month>12)
{
printf("Enter Error!");
}
number = fibonacci(month);
printf("This you have : %ld", number);
return 0;
}
这是一个斐波那契数列的兔子问题。


第二个:
#include "stdafx.h"
double Jie(int n);


int main()
{
int n;
double result;
printf("Please input the number u want:");
scanf_s("%d", &n);
result = Jie(n);
return 0;
}

double Jie(int n)
{
int i, j;
double a;
a = 1;
for (i = 1;i <= n;i++)
{
for (j = 1;j <= i;j++)
{
a *= j;
}
printf("%d! = %ld\n",i, a);
}
return 0;
}
这是一个显示阶层的问题。

两个程序都能以我需要的格式输出,但是结果都是0. 求帮助。。。。
...全文
180 7 点赞 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Intel0011 2017-12-07
引用 3 楼 wkr145 的回复:
首先谢谢,第一个题解决了,但是第二个题有点问题,改成 long a 之后如图。
#include <stdio.h>

long Jie(int n);

 int main()
 {
   int n;
   long result;
   printf("Please input the number u want:");
   scanf_s("%d", &n);
   result = Jie(n);
   return 0;
 }

long Jie(int n)
{
   int i, j;
   long a;
   a = 1;
   for (i = 1;i <= n;i++)
   {
      //for (j = 1;j <= i;j++)
      {
         a *= i;
      }
      printf("%d! = %ld\n",i, a);
   }
   return 0;
}
  • 打赏
  • 举报
回复
赵4老师 2017-12-07
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
  • 打赏
  • 举报
回复
求阶乘不是只需要第一个for语句吗?第二个不是有多吗????
  • 打赏
  • 举报
回复
wkr145 2017-12-06
首先谢谢,第一个题解决了,但是第二个题有点问题,改成 long a 之后如图。
  • 打赏
  • 举报
回复
weixin_36208943 2017-12-06
double 类型输入用%lf,输出用%f %lf都行。不过你为什么要用double类型,明明计算结果和返回值都是int 类型啊
  • 打赏
  • 举报
回复
lzb4207123 2017-12-06
第一题 输出语句的数据类型不对了两种改法: 一种是把 double number; 改成 long number; 另一种是把printf("This you have : %ld", number); 改成 printf("This you have : %f", number); //输出浮点型数 第二题 也是输出语句的数据类型不对了两种改法: 一种是把 double a; 改成 long a; 另一种是把printf("%d! = %ld\n",i, a);改成 printf("%d! = %f\n",i, a);//输出浮点型数
  • 打赏
  • 举报
回复
自信男孩 2017-12-06
引用 4 楼 cfjtaishan 的回复:
第一个改一下数据类型就可以。将double改成long或者改一下输出格式用%.0lf输出。 第二个是改一下输出格式%.0lf; 这两个问题主要是浮点数和整型数在内存里的存放格式不一样。因此应该用
应该用对应的格式输出对应的数据。
  • 打赏
  • 举报
回复
自信男孩 2017-12-06
第一个改一下数据类型就可以。将double改成long或者改一下输出格式用%.0lf输出。 第二个是改一下输出格式%.0lf; 这两个问题主要是浮点数和整型数在内存里的存放格式不一样。因此应该用
  • 打赏
  • 举报
回复
相关推荐
发帖
C语言
加入

6.5w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2017-12-05 09:52
社区公告
暂无公告