本题要求编写程序,根据公式
![](https://i-blog.csdnimg.cn/blog_migrate/8092fc8b75c68d840bb8c38f9773932a.jpeg)
算出从n个不同元素中取出m个元素(m≤n)的组合数。
输入格式:
输入在一行中给出两个正整数m和n,以空格分隔。
如果输入数据负数,能输出提示不能负数
如果输入数据出发非法数据,能输出提示请输入数值 (数值异常处理)
输出格式:
按照格式result = 组合数计算结果输出。
输入样例:
2 7
输出样例:
result=21.00
网上大多都是python的写法,这里是用java写的
import java.util.Scanner;
public class Main{
public static int liu(int n){
int i;
int sum=1;
for(i=1;i<=n;i++){
sum=sum*i;
}
return sum;
}
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
char a[]=str.toCharArray();
int i,j;
int a1,a2;
a1=0;a2=0;
j=0;
int k=0;
int m=0;
int n=0;
int p=0;
for(i=0;i<str.length();i++){
if(a[i]<'0'||a[i]>'9'){
if(a[i]!=' '&&a[i]!='-'){
System.out.println("请输入数值");
j=1;
break;
}
}
}
if(j==0){
for(i=0;i<str.length();i++){
if(a[i]==' '){
k=1;
}
else if(a[i]>='0'&&a[i]<='9'){
if(k==0){
a1=a1*10+Integer.valueOf(a[i])-'0';//m
p=1;
}
else{
a2=a2*10+Integer.valueOf(a[i])-'0';//n
n=1;
}
}
else if(a[i]=='-'){
m=1;
}
}
if(m==1&&n==1&&p==1){
System.out.println("不能负数");
}
else if(m==1&&n==0||m==1&&p==0){
System.out.println("请输入数值");
}
if(m!=1){
double sum=liu(a2)/(liu(a1)*liu(a2-a1));
if(n==1&&p==1)
System.out.printf("result=%.2f\n",sum);
}
}
}
}