记一道c二级设计题

题目如下在这里插入图片描述

一开始觉得挺简单的,但是就是得不到正确的答案
一开始写的代码如下

#include <stdio.h>
int main()
{
    
       int m,n,k;
    float a=1.0,b=1.0,c=1.0;
	
	scanf("%d%d",&m,&n);
	
	for(;m>0;m--)
		a=a*m;
	for(;n>0;n--)
		b=b*n;
	
	for(k=1;k<=(m-n);k++)
		c=c*k;
	printf("%f",1.0*a/(b*c));
	return 0;
}

左看右看没问题啊 ,但是就是得不到正确答案。

后来调试了一下,发现最后c的值还是1。现在就看第三个循环 。 这时会发现m和n在前两次循环中都变成0了。

只需在输入m,n后把m-n的值存下来即可:

#include <stdio.h>
int main()
{
    
       int m,n,k,h;
    float a=1.0,b=1.0,c=1.0;
	
	scanf("%d%d",&m,&n);
	h=m-n;

	for(;m>0;m--)
		a=a*m;
	for(;n>0;n--)
		b=b*n;
	
	for(k=1;k<=h;k++)
		c=c*k;
	printf("%f",1.0*a/(b*c));
	return 0;
}

官方写的函数如下 更简单,更直观
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/xiaozhazhazhazha/article/details/104217533