中易网

一道简单的C语言问题求N!

答案:3  悬赏:30  
解决时间 2021-05-24 09:14

#include <stdio.h>
int main()
{
int jieceng(int n);
int n,b;
printf("please input a number:\n");
scanf("%d",&n);
b=jieceng(n);
printf("%d的阶层是%d",n,b);
return 0;

}
int jieceng(int n)
{
 int f;
 if(n<0)printf("data error!");
 else if(n==0||n==1)f=1;//问题就在这,如果我把这句替换成 else if(n==0||n==1)printf(”0和1的阶层都是1“);就错了  为什么
 else if(n>0) f=jieceng(n-1)*n;  

return f;
}

最佳答案
楼主,这个是递归,要有返回值!如果求阶乘,数比较大,建议用双精度或字符串处理。
全部回答

问题就在这,如果我把这句替换成 else if(n==0||n==1)printf(”0和1的阶层都是1“);就错了  为什么
楼主你要用{}把f=1;跟printf("0和1的阶乘都是1");括起来   像  {f=1;

    printf("0和1的阶乘都是1");}  这样子.

试下是不是这个问题

条件语句还有循环语句下的多语句执行都是要这样子的.

#include <stdio.h>

int main() {  int jiecheng(int n);  int n,b;  printf("please input a number : ");  scanf("%d",&n);  b = jiecheng(n);  printf("%d! = %d\n",n,b);  return 0; }

int jiecheng(int n) {  if(n < 0) printf("data error!");  else if(n==0||n==1) return 1;  return jiecheng(n-1)*n;  }

我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
联通是不是有个3元300兆的业务?
开始:他很爱她;也很疼她;她也很爱点解短短
路北区厚德蜂胶健康中心这个地址怎么能查询到
人有多少大门牙颗牙
宽带到底是装电信还是网通呢
农历92年10月初四是什么座!
财付通支付密码忘记了 ,我没有绑定手机 也没
香河县源术广告地址在什么地方,想今天过去办
2011年有什么新电影出来?
怎么我的手机QQ老是自己刷新
太阁立志传5中小西屋进行货物限制导致物价飞
我知道一句歌词,这是什么歌啊
我上个月十六号来月经二十二号结束现在二十八
啥叫刷固件????
我的显示器的问题
推荐资讯
三普ST6018手机怎么设置黑名单?
我QQ修改密码的问题忘记了,我以前也没有改过
谁有钢壳都市中菲丽图
夏天怎样保护自己皮肤?
镇平县人生终点一条龙服务站在哪里啊,我有事
石家庄桥东区武装部在哪儿啊?
喜欢一个人久了...、?
招财罐应该放什么风水
我现在17岁不念书了,该干点什么工作好呢?我
江汉区名发世家广埠屯旗舰店地址在哪里啊
我下载的CAB版本手机QQ游戏大厅。打开后半个
高速行驶用英语怎么说
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?