You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

219 lines
4.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#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;
}