c语言新手问题~

[复制链接]
查看11 | 回复3 | 2008-2-1 23:22:28 | 显示全部楼层 |阅读模式
int a; //a应该是double的吧//////////////////////////////////////////////scanf("%ld",&b); //scanf("%lf",&b)b是double
回复

使用道具 举报

千问 | 2008-2-1 23:22:28 | 显示全部楼层
#include "stdio.h"int fact(int b,int m);int main(void){ int a,n,product; puts("请输入数字和指数:(a,n)"); scanf("%d%d",&a,&n); product=fact(a,n); printf("%d的%d次方位%d",a,n,product); return 0;}int fact(int b,int n){ if(n==0)b=1; elseb=b*fact(b,n-1); return b;}
回复

使用道具 举报

千问 | 2008-2-1 23:22:28 | 显示全部楼层
首先 把int a;中的int 改double另外 你定义的函数是错的 double fact(double b,int n) { int a; if (n==1) a=b; else a=b*fact(b,n-1); return a; } 这样在执行 else 后的语句时 n-1可能小于0所以函数定义修改如下double fact(double b,int n) { double a;int i;if (n==1) a=b; else while (idouble fact(double b,int n){ if(!n)return 1;if(n==1)return b;elsereturn b*fact(b,n-1);}int main(){ double a=0.0,b=0.0; int n=0;printf("Input b and n:"); fflush(stdin);scanf("%lf %d",&b,&n);a=fact(b,n);printf("%lf\n",a);getch();return 0;}
回复

使用道具 举报

千问 | 2008-2-1 23:22:28 | 显示全部楼层
#includedouble fact(double b,int n) { if(!n) return 1; if(n==1) return b; else return b*fact(b,n-1); } int main() { double a=0.0,b=0.0; int n=0; printf("Input b and n:"); fflush(stdin);scanf("%lf %d",&b,&n); a=fact(b,n); printf("%lf\n",a); getchar(); return 0; }
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行