首先感谢指导我的朋友们。
刚刚学了函数,于是想练练手,但程序编完以后发现一个问题。
若是独立的三个程序,他们都可以运行,但是合并后,问题却出现了,就是无法输出正确答案。
程序的目的是为了求组合问题,
main()
{
int a,b,c,d;
float sum;
int frist(int a);
int second(int a,int b);
scanf("%i,%i",&a,&b);
c=frist(a);
d=second(a,b);
sum=c/d;
printf("the sum is %f",sum);
getch();
}
int second(int a,int b)
{
int sum,j;
sum=1;
scanf("%i,%i",&a,&b);
j=b;
while(b>=j-a+1)
{
sum=sum*b;
--b;
}
return(sum);
}
int frist(int a)
{
int sum;
sum=1;
scanf("%i",&a);
while (a!=0)
{
sum=sum*a;
--a;
}
return(sum);
}
----------------解决方案--------------------------------------------------------
出现除法时最好把分子或分母其中一个强制转换成float型,否则结果会是int型的
----------------解决方案--------------------------------------------------------
首先感谢指导我的朋友们。
刚刚学了函数,于是想练练手,但程序编完以后发现一个问题。
若是独立的三个程序,他们都可以运行,但是合并后,问题却出现了,就是无法输出正确答案。
程序的目的是为了求组合问题,
main()
{
int a,b,c,d;
float sum;
int frist(int a);
int second(int a,int b);
scanf("%i,%i",&a,&b); \*此处已经输入了a,b
c=frist(a); \*且此处也传递了!
d=second(a,b);
sum=c/d;
printf("the sum is %f",sum);
getch();
}
int second(int a,int b)
{
int sum,j;
sum=1;
scanf("%i,%i",&a,&b);
j=b;
while(b>=j-a+1)
{
sum=sum*b;
--b;
}
return(sum);
}
int frist(int a)
{
int sum;
sum=1;
scanf("%i",&a); \*这里为何还要输入?看不明白!
while (a!=0)
{
sum=sum*a;
--a;
}
return(sum);
}
整形数相除结果仍为整数,且采用向0取整的方法取整
借问一句:%i 是什么型数?
----------------解决方案--------------------------------------------------------
main()
{
int a,b,c,d; /*b c d 整形的*/
float sum; /*sum 实型的,难道要用实型的数据空间,来存放整形的和*/
int frist(int a);
int second(int a,int b);
scanf("%i,%i",&a,&b);
c=frist(a);
d=second(a,b);
sum=c/d; /*整形的数除法要小心,因为没有小数*/
printf("the sum is %f",sum);
getch();
}
这几处就不正确
----------------解决方案--------------------------------------------------------
首先感谢指导我的朋友们。
刚刚学了函数,于是想练练手,但程序编完以后发现一个问题。
若是独立的三个程序,他们都可以运行,但是合并后,问题却出现了,就是无法输出正确答案。
程序的目的是为了求组合问题,
main()
{
int a,b,c,d;
float sum;
int frist(int a);
int second(int a,int b);
scanf("%i,%i",&a,&b); // %i 有符号十进制整数(与%d相同)
c=frist(a);
d=second(a,b);
sum= (float) c / d;
printf("the sum is %f",sum);
getch();
}
int second(int a,int b)
{
int sum,j;
sum=1;
scanf("%i,%i",&a,&b); // 这里好象多此一举了
j=b;
while(b>=j-a+1)
{
sum=sum*b;
--b;
}
return(sum);
}
int frist(int a)
{
int sum;
sum=1;
scanf("%i",&a); // 这里好象多此一举了
while (a!=0)
{
sum=sum*a;
--a;
}
return(sum);
}
----------------解决方案--------------------------------------------------------
整形数相除结果仍为整数,且采用向0取整的方法取整
借问一句:%i 是什么型数?
记得好想等于%d
----------------解决方案--------------------------------------------------------
郁郁郁闷.....
----------------解决方案--------------------------------------------------------
不好意思,因为是把三个程序合编的,整合过程中,出现了
这么低级的错误,对不起
----------------解决方案--------------------------------------------------------
在国外的书籍中%i与%d是可以通用的
----------------解决方案--------------------------------------------------------
由于学校网络问题,所以发表帖子以后一直没能上网
刚刚上来后,看到还是有这么多朋友热心指教,
非常感动,经过slong的指正,程序得到正常的运行。
我不禁感觉到,在编程的道路上,仔细才是王道。
在此,我再一次感谢那些曾经帮助过我的朋友们
----------------解决方案--------------------------------------------------------