我编写了一个C程序来计算使用函数从n个不同对象中选择k个对象的方法的数量.
#include<stdio.h>
long f(int a)
{
if(a==1||a==0)return(0);
else return(a*f(a-1));
}
int combination(int N,int K)
{
long int NF,KF,NMKF;
NF=f(N);
KF=f(K);
NMKF=f(N-K);
return(NF/(KF*NMKF));
}
int main()
{
int n,k;
scanf("%d%d",&n,&k);
combination(n,k);
}
Run Code Online (Sandbox Code Playgroud)
但编译器显示以下错误消息
floating point exception (core dumped)
Run Code Online (Sandbox Code Playgroud)
怎么避免呢?
给出一系列n-1个不同的正整数,所有这些整数都小于或等于整数'n'.你必须找到范围[1,2,...,n]中缺少的整数.在不使用数组的情况下解决问题.
输入格式:包含整数'n'的一行,其中2 <= n <= 10,000第一行后跟一系列'n-1'个不同的正整数.请注意,序列可能没有任何特定顺序.
我通过使用数组获得了代码
#include<stdio.h>
int main()
{
int i,j,n[9999],m,t;
scanf("%d",&m);
for(i=1;i<m;i++)
{
scanf("%d",&n[i]);
}
for(i=1;i<m;i++)
{
for(j=1;j<i;j++)
{
if(n[j]>n[j+1])
{
t=n[j];
n[j]=n[j+1];
n[j+1]=t;
}
}
}
for(i=2;i<m;i++)
{
if(n[i-1]!=n[i]-1)
{
printf("%d",n[i]-1);
break;
}
}
return(0);
}
Run Code Online (Sandbox Code Playgroud)
如何在不使用数组的情况下执行相同操作?