|
|
|
@ -0,0 +1,285 @@
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
#include <math.h>
|
|
|
|
|
#define PI 3.14159265358979323846
|
|
|
|
|
//两数相加
|
|
|
|
|
int add(int n,int m) {
|
|
|
|
|
return n + m;
|
|
|
|
|
}
|
|
|
|
|
//两数相减
|
|
|
|
|
int subtract(int n,int m) {
|
|
|
|
|
return n - m;
|
|
|
|
|
}
|
|
|
|
|
//两数相乘
|
|
|
|
|
int multiply(int n,int m) {
|
|
|
|
|
return n * m;
|
|
|
|
|
}
|
|
|
|
|
//两数相除
|
|
|
|
|
double divide(int n,int m) {
|
|
|
|
|
if (m == 0){
|
|
|
|
|
printf("Error!\n");
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
return (double)n/m;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//求模运算
|
|
|
|
|
int modulo(int n,int m) {
|
|
|
|
|
if (m == 0) {
|
|
|
|
|
printf("Error\n");
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
return n % m;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//求n的阶乘
|
|
|
|
|
long long factorial(int n){
|
|
|
|
|
if(n == 0 || n == 1){
|
|
|
|
|
return n;
|
|
|
|
|
}
|
|
|
|
|
else return n * factorial(n - 1);
|
|
|
|
|
}
|
|
|
|
|
//判断n是否为素数
|
|
|
|
|
int prime(int n){
|
|
|
|
|
int i ,j = 1;
|
|
|
|
|
if(n == 1 || n == 0){
|
|
|
|
|
j = 0;
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
for(i = 2;i < n;i++){
|
|
|
|
|
if(n % i == 0){
|
|
|
|
|
j=0;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return j;
|
|
|
|
|
}
|
|
|
|
|
//求半径为n的球的体积
|
|
|
|
|
double volume(int n){
|
|
|
|
|
if(n < 0){
|
|
|
|
|
printf("Error!\n");
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
return 4.0 / 3.0 * PI * n * n * n;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//求斐波那契数列的第n项值
|
|
|
|
|
long long int function(int n){
|
|
|
|
|
if(n <= 0){
|
|
|
|
|
printf("Error!\n");
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
else if(n == 1||n == 2){
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
return function(n-2)+function(n-1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//求x的n次方
|
|
|
|
|
long long int power(int n,int m){
|
|
|
|
|
if(m == 0){
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
else if(m == 1){
|
|
|
|
|
return n;
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
return n * power(n,m-1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//求两个数的最大公约数
|
|
|
|
|
int GCD(int n,int m){
|
|
|
|
|
if(m == 0){
|
|
|
|
|
return n;
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
return GCD(m,n%m);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//求两个数的最小公倍数
|
|
|
|
|
long long int LCM(int n,int m){
|
|
|
|
|
int s=GCD(n,m);
|
|
|
|
|
if(n == 0||m == 0){
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
return n * m / s;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//交换两个数
|
|
|
|
|
void exchange(int *n,int *m){
|
|
|
|
|
int t;
|
|
|
|
|
t = *n;
|
|
|
|
|
*n = *m;
|
|
|
|
|
*m = t;
|
|
|
|
|
}
|
|
|
|
|
//对输入的n个数排序
|
|
|
|
|
//从小到大排序
|
|
|
|
|
void minsort(int a[],int n){
|
|
|
|
|
int i,j,t,min;
|
|
|
|
|
for(i = 0;i < n;i++){
|
|
|
|
|
min = i;
|
|
|
|
|
for(j = i;j<n;j++){
|
|
|
|
|
if(a[j] < a[min]) min = j;
|
|
|
|
|
}
|
|
|
|
|
if(min != i){
|
|
|
|
|
t = a[min];
|
|
|
|
|
a[min] = a[i];
|
|
|
|
|
a[i] = t;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//从大到小排序
|
|
|
|
|
void maxsort(int a[],int n){
|
|
|
|
|
int i,j,t,max;
|
|
|
|
|
for(i = 0;i < n;i++){
|
|
|
|
|
max = i;
|
|
|
|
|
for(j = i;j<n;j++){
|
|
|
|
|
if(a[j] > a[max]) max=j;
|
|
|
|
|
}
|
|
|
|
|
if(max != i){
|
|
|
|
|
t = a[max];
|
|
|
|
|
a[max] = a[i];
|
|
|
|
|
a[i] = t;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int main() {
|
|
|
|
|
int num1, num2, choice;
|
|
|
|
|
double result;
|
|
|
|
|
while (1) { // 无限循环直到用户选择退出
|
|
|
|
|
printf("\n--------菜单--------\n");
|
|
|
|
|
printf("1. 两数相加\n");
|
|
|
|
|
printf("2. 两数相减\n");
|
|
|
|
|
printf("3. 两数相乘\n");
|
|
|
|
|
printf("4. 两数相除\n");
|
|
|
|
|
printf("5. 求模运算\n");
|
|
|
|
|
printf("6. 求n的阶乘\n");
|
|
|
|
|
printf("7. 判断n是否为素数\n");
|
|
|
|
|
printf("8. 求半径为n的球的体积\n");
|
|
|
|
|
printf("9. 求斐波那契数列的第n项值\n");
|
|
|
|
|
printf("10. 求x的n次方\n");
|
|
|
|
|
printf("11. 求两个数的最大公约数\n");
|
|
|
|
|
printf("12. 求两个数的最小公倍数\n");
|
|
|
|
|
printf("13. 交换两个数\n");
|
|
|
|
|
printf("14. 对输入的n个数排序\n");
|
|
|
|
|
printf("0. 退出程序\n");
|
|
|
|
|
printf("----------------------\n");
|
|
|
|
|
printf("请输入你的选择:");
|
|
|
|
|
scanf("%d", &choice);
|
|
|
|
|
|
|
|
|
|
switch (choice) {
|
|
|
|
|
case 0: // 退出程序
|
|
|
|
|
printf("感谢使用本程序,再见!\n");
|
|
|
|
|
return 0;
|
|
|
|
|
case 1: // 两数相加
|
|
|
|
|
printf("请输入两个数:");
|
|
|
|
|
scanf("%d %d", &num1, &num2);
|
|
|
|
|
result = add(num1, num2);
|
|
|
|
|
printf("%lf",result);
|
|
|
|
|
break;
|
|
|
|
|
case 2: // 两数相减
|
|
|
|
|
printf("请输入两个数:");
|
|
|
|
|
scanf("%d %d", &num1, &num2);
|
|
|
|
|
result = (double)subtract(num1, num2);
|
|
|
|
|
printf("%lf",result);
|
|
|
|
|
break;
|
|
|
|
|
case 3: // 两数相乘
|
|
|
|
|
printf("请输入两个数:");
|
|
|
|
|
scanf("%d %d", &num1, &num2);
|
|
|
|
|
result = multiply(num1, num2);
|
|
|
|
|
printf("%lf",result);
|
|
|
|
|
break;
|
|
|
|
|
case 4: // 两数相除
|
|
|
|
|
printf("请输入两个数:");
|
|
|
|
|
scanf("%d %d", &num1, &num2);
|
|
|
|
|
result = divide(num1, num2);
|
|
|
|
|
printf("%lf",result);
|
|
|
|
|
break;
|
|
|
|
|
case 5: // 求模运算
|
|
|
|
|
printf("请输入两个数:");
|
|
|
|
|
scanf("%d%d", &num1, &num2);
|
|
|
|
|
result = modulo(num1, num2);
|
|
|
|
|
printf("%lf",result);
|
|
|
|
|
break;
|
|
|
|
|
case 6://求n的阶乘
|
|
|
|
|
printf("请输入一个数:");
|
|
|
|
|
scanf("%d",&num1);
|
|
|
|
|
result = factorial(num1);
|
|
|
|
|
printf("%lf",result);
|
|
|
|
|
break;
|
|
|
|
|
case 7://判断n是否为素数
|
|
|
|
|
printf("请输入一个数:");
|
|
|
|
|
scanf("%d",&num1);
|
|
|
|
|
result = prime(num1);
|
|
|
|
|
if(result == 1){
|
|
|
|
|
printf("%d是素数",num1);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
printf("%d不是素数",num1);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 8://求半径为n的球的体积
|
|
|
|
|
printf("请输入一个数:");
|
|
|
|
|
scanf("%d",&num1);
|
|
|
|
|
result = volume(num1);
|
|
|
|
|
printf("%lf",result);
|
|
|
|
|
break;
|
|
|
|
|
case 9://求斐波那契数列的第n项值
|
|
|
|
|
printf("请输入一个数:");
|
|
|
|
|
scanf("%d",&num1);
|
|
|
|
|
result = function(num1);
|
|
|
|
|
printf("%lf",result);
|
|
|
|
|
break;
|
|
|
|
|
case 10://求x的n次方
|
|
|
|
|
printf("请输入两个数:");
|
|
|
|
|
scanf("%d %d", &num1, &num2);
|
|
|
|
|
result = power(num1,num2);
|
|
|
|
|
printf("%lf",result);
|
|
|
|
|
break;
|
|
|
|
|
case 11://求两个数的最大公约数
|
|
|
|
|
printf("请输入两个数:");
|
|
|
|
|
scanf("%d %d", &num1, &num2);
|
|
|
|
|
result = GCD(num1,num2);
|
|
|
|
|
printf("%lf",result);
|
|
|
|
|
break;
|
|
|
|
|
case 12://求两个数的最小公倍数
|
|
|
|
|
printf("请输入两个数:");
|
|
|
|
|
scanf("%d %d", &num1, &num2);
|
|
|
|
|
result = LCM(num1,num2);
|
|
|
|
|
printf("%lf",result);
|
|
|
|
|
break;
|
|
|
|
|
case 13://交换两个数
|
|
|
|
|
printf("请输入两个数:");
|
|
|
|
|
scanf("%d %d", &num1, &num2);
|
|
|
|
|
exchange(&num1,&num2);
|
|
|
|
|
printf("%d %d", num1, num2);
|
|
|
|
|
case 14://对输入的n个数排序
|
|
|
|
|
printf("请输入需要排序的数字的个数:");
|
|
|
|
|
scanf("%d",&num1);
|
|
|
|
|
int a[num1];
|
|
|
|
|
printf("请输入%d个数:",num1);
|
|
|
|
|
for(int i = 0;i < num1;i++){
|
|
|
|
|
scanf("%d",&a[i]);
|
|
|
|
|
}
|
|
|
|
|
minsort(a,num1);
|
|
|
|
|
printf("从小到大排序;\n");
|
|
|
|
|
for(int i = 0;i < num1;i++){
|
|
|
|
|
printf("%d ",a[i]);
|
|
|
|
|
}
|
|
|
|
|
printf("\n");
|
|
|
|
|
maxsort(a,num1);
|
|
|
|
|
printf("从大到小排序;\n");
|
|
|
|
|
for(int i = 0;i < num1;i++){
|
|
|
|
|
printf("%d ",a[i]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|