|
|
|
@ -0,0 +1,218 @@
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
#include <math.h>
|
|
|
|
|
void fac(int n){
|
|
|
|
|
int i;
|
|
|
|
|
unsigned long long res=1;
|
|
|
|
|
for(i=1; i<=n; i++){
|
|
|
|
|
res*=i;
|
|
|
|
|
}
|
|
|
|
|
printf("%d!=%llu",n,res);
|
|
|
|
|
}//n的阶乘
|
|
|
|
|
void judge_prime(int n){
|
|
|
|
|
int i;
|
|
|
|
|
int k=sqrt(n);
|
|
|
|
|
for(i=2; i<=k; i++){
|
|
|
|
|
if(n%i==0){
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(i>k){
|
|
|
|
|
printf("This is prime!");
|
|
|
|
|
}else{
|
|
|
|
|
printf("This is not prime!");
|
|
|
|
|
}
|
|
|
|
|
} //判断素数
|
|
|
|
|
void V_sphere(int r){
|
|
|
|
|
printf("The volume of the ball is%f",(4*r*r*r)/3.0);
|
|
|
|
|
}//球的体积
|
|
|
|
|
long long fic(int n){
|
|
|
|
|
long long y;
|
|
|
|
|
if(n==1||n==2){
|
|
|
|
|
y=1;
|
|
|
|
|
}else{
|
|
|
|
|
y=fic(n-1)+fic(n-2);
|
|
|
|
|
}
|
|
|
|
|
return y;
|
|
|
|
|
}//求斐波那契数列的第n项值
|
|
|
|
|
/*double index1(int x,int n){
|
|
|
|
|
int i;
|
|
|
|
|
double result;
|
|
|
|
|
if(n=0){
|
|
|
|
|
result=1;
|
|
|
|
|
}else if(n>0){
|
|
|
|
|
for(i=0; i<n; i++){
|
|
|
|
|
result*=x;
|
|
|
|
|
}
|
|
|
|
|
}else{
|
|
|
|
|
result=1/index(-x,n);
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}//求x的n次方*/
|
|
|
|
|
int GCD(int a, int b){
|
|
|
|
|
int t;
|
|
|
|
|
while(a%b){
|
|
|
|
|
t=b;
|
|
|
|
|
b=a%b;
|
|
|
|
|
a=b;
|
|
|
|
|
}
|
|
|
|
|
return b;
|
|
|
|
|
}//求最大公约数
|
|
|
|
|
void LCM(int a, int b){
|
|
|
|
|
int i;
|
|
|
|
|
int t,loc=0;
|
|
|
|
|
if(a>b){
|
|
|
|
|
t=a;
|
|
|
|
|
a=b;
|
|
|
|
|
b=t;
|
|
|
|
|
}
|
|
|
|
|
for(i=2; i<=a; i++){
|
|
|
|
|
if(a%i==0&&b%i==0){
|
|
|
|
|
printf("%d与%d的最小公倍数为%d",a,b,i);
|
|
|
|
|
loc=1;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(loc==0){
|
|
|
|
|
printf("%d与%d的最小公倍数为1",a,b);
|
|
|
|
|
}
|
|
|
|
|
}//求最小公倍数
|
|
|
|
|
void swap(int *a,int *b){
|
|
|
|
|
int t;
|
|
|
|
|
t=*a;
|
|
|
|
|
*a=*b;
|
|
|
|
|
*b=t;
|
|
|
|
|
}//交换两个数的值
|
|
|
|
|
void sort(int a[],int len){
|
|
|
|
|
int i,j,t;
|
|
|
|
|
for(i=0; i<len; i++){
|
|
|
|
|
for(j=i+1; j<len; j++){
|
|
|
|
|
if(a[i]>a[j]){
|
|
|
|
|
t=a[i];
|
|
|
|
|
a[i]=a[j];
|
|
|
|
|
a[j]=t;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}//数组从小到大排序
|
|
|
|
|
int main(int argc, char *argv[]) {
|
|
|
|
|
int n;
|
|
|
|
|
int a[1000000];
|
|
|
|
|
int k,i;
|
|
|
|
|
int x1,x2;
|
|
|
|
|
long long y;
|
|
|
|
|
double z;
|
|
|
|
|
printf("请输入你要进行的运算:\n");
|
|
|
|
|
printf("1.四则运算\n");
|
|
|
|
|
printf("2.求模运算\n");
|
|
|
|
|
printf("3.求n的阶乘\n");
|
|
|
|
|
printf("4.判断素数\n");
|
|
|
|
|
printf("5.求半径为n的球的体积\n");
|
|
|
|
|
printf("6.求斐波那契数列的第n项值\n");
|
|
|
|
|
printf("7.求x的n次方\n");
|
|
|
|
|
printf("8.求两个数最大的公约数\n");
|
|
|
|
|
printf("9.求两个数的最小公倍数\n");
|
|
|
|
|
printf("10.交换两个数\n");
|
|
|
|
|
printf("11.对输入的n个数排序\n");
|
|
|
|
|
scanf("%d",&n);
|
|
|
|
|
switch(n){
|
|
|
|
|
case 1:
|
|
|
|
|
printf("请选择你要进行的运算方式\n");
|
|
|
|
|
printf("1.加法\n");
|
|
|
|
|
printf("2.减法\n");
|
|
|
|
|
printf("3.乘法\n");
|
|
|
|
|
printf("4.除法\n");
|
|
|
|
|
scanf("%d",&k);
|
|
|
|
|
if(k==1){
|
|
|
|
|
printf("请输入两个加数:\n");
|
|
|
|
|
scanf("%d%d",&x1,&x2);
|
|
|
|
|
printf("%d+%d=%d\n",x1,x2,x1+x2);
|
|
|
|
|
}else if(k==2){
|
|
|
|
|
printf("请输入被减数与减数:\n");
|
|
|
|
|
scanf("%d%d",&x1,&x2);
|
|
|
|
|
printf("%d-%d=%d\n",x1,x2,x1-x2);
|
|
|
|
|
}else if(k==3){
|
|
|
|
|
printf("请输入两个乘数:\n");
|
|
|
|
|
scanf("%d%d",&x1,&x2);
|
|
|
|
|
printf("%d*%d=%d\n",x1,x2,x1*x2);
|
|
|
|
|
}else if(k==4){
|
|
|
|
|
out:
|
|
|
|
|
printf("请输入被除数与除数:\n");
|
|
|
|
|
scanf("%d%d",&x1,&x2);
|
|
|
|
|
if(x2==0){
|
|
|
|
|
printf("输入错误,无法计算,请重新输入\n");
|
|
|
|
|
goto out;
|
|
|
|
|
}else{
|
|
|
|
|
printf("%d÷%d=%f\n",x1,x2,x1/(double)x2);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
printf("请输入取模的两个数:\n");
|
|
|
|
|
scanf("%d%d",&x1,&x2);
|
|
|
|
|
printf("%d%%%d=%d\n",x1,x2,x1%x2);
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
printf("请输入要求阶乘的数字:\n");
|
|
|
|
|
scanf("%d",&x1);
|
|
|
|
|
fac(x1);
|
|
|
|
|
break;
|
|
|
|
|
case 4:
|
|
|
|
|
printf("请输入数字:\n");
|
|
|
|
|
scanf("%d",&x1);
|
|
|
|
|
judge_prime(x1);
|
|
|
|
|
break;
|
|
|
|
|
case 5:
|
|
|
|
|
printf("请输入半径:\n");
|
|
|
|
|
scanf("%d",&x1);
|
|
|
|
|
V_sphere(x1);
|
|
|
|
|
break;
|
|
|
|
|
case 6:
|
|
|
|
|
printf("请问需要求斐波那契数列的第几项值:\n");
|
|
|
|
|
scanf("%d",&x1);
|
|
|
|
|
y=fic(x1);
|
|
|
|
|
printf("斐波那契数列的第%d项值为%lld",x1,y);
|
|
|
|
|
break;
|
|
|
|
|
case 7:
|
|
|
|
|
printf("请依次输入x和n的值:\n");
|
|
|
|
|
scanf("%d%d",&x1,&x2);
|
|
|
|
|
//z=index1(x1,x2);
|
|
|
|
|
z=pow(x1,x2);
|
|
|
|
|
printf("%d的%d次方为%f",x1,x2,z);
|
|
|
|
|
break;
|
|
|
|
|
case 8:
|
|
|
|
|
printf("请输入两个数:\n");
|
|
|
|
|
scanf("%d%d",&x1,&x2);
|
|
|
|
|
y=GCD(x1,x2);
|
|
|
|
|
printf("%d和%d最大公约数为%lld",x1,x2,y);
|
|
|
|
|
break;
|
|
|
|
|
case 9:
|
|
|
|
|
printf("请输入两个数:\n");
|
|
|
|
|
scanf("%d%d",&x1,&x2);
|
|
|
|
|
LCM(x1,x2);
|
|
|
|
|
break;
|
|
|
|
|
case 10:
|
|
|
|
|
printf("请输入需要交换的两个数:\n");
|
|
|
|
|
scanf("%d%d",&x1,&x2);
|
|
|
|
|
swap(&x1,&x2);
|
|
|
|
|
printf("%d %d",x1,x2);
|
|
|
|
|
break;
|
|
|
|
|
case 11:
|
|
|
|
|
printf("请问需要对几个数进行排序:\n");
|
|
|
|
|
scanf("%d",&k);
|
|
|
|
|
printf("请输入这些数字并用空格隔开:\n");
|
|
|
|
|
for(i=0; i<k; i++){
|
|
|
|
|
scanf("%d",&a[i]);
|
|
|
|
|
}
|
|
|
|
|
sort(a,k);
|
|
|
|
|
printf("排序完成,输出为:\n");
|
|
|
|
|
for(i=0; i<k; i++){
|
|
|
|
|
printf("%d ",a[i]);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
printf("\n");
|
|
|
|
|
printf("运算完毕.");
|
|
|
|
|
return 0;
|
|
|
|
|
}
|