ADD file via upload

main
psfpur5z4 2 years ago
parent 218a500330
commit d3004aa5f5

218
main.c

@ -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;
}
Loading…
Cancel
Save