C语言数学公式计算器:二次方程、勾股定理、三角形面积等
"#include" <stdio.h> "#include" <stdlib.h> "#include" <math.h>
#define PI 3.1415926
tydef struct Formula { char name[100]; char content[100]; struct Formula *next; } Formula;
void quadraticEquation(); void pythagoreanTheorem(); void areaOfTriangle(); void volumeOfCylinder(); void SOfBall(); void volumeOFBall(); void daoshu(); void addNewFormula(); void deleteFormula();
Formula *head = NULL;
int main() { int a; // 第一级选择 while (1) { printf("\n"); printf("\n请选择以下几个选项\n"); printf("1.常见公式查询\n"); printf("2.部分公式计算\n"); printf("3.退出程序\n"); printf("\n"); printf("您的选项是:\n"); scanf("%d", &a);
if (a == 3)
return 0;
if (a == 1 || a == 2)
;
else
printf("您输入的选项不合法!请重试\n");
while (a == 1) {
printf("\n请在以下选项中选择您要查询的公式:\n");
printf("1.常见函数的导数\n");
printf("2.正弦定理\n");
printf("3.余弦定理\n");
printf("4.辅助角定理\n");
printf("5.球的表面积公式\n");
printf("6.球的体积公式\n");
printf("7.添加新公式或查询已添加的公式\n");
printf("0.返回上一级\n");
int b; // 第二级选择
scanf("%d", &b);
switch (b) {
case 0:
b = 0;
a = 0;
break;
case 1:
daoshu();
break;
case 2:
printf("a/sin A=b/sin B=c/sin C=2R\n");
printf("R外三角形的外接圆半径\n");
break;
case 3:
printf("cos A=b*b+c*c-a*a/2bc\n");
break;
case 4:
printf("asinx+bcosx=√ (a2+b2)sin [x+arctan (b/a)]\n");
break;
case 5:
printf("S=4ΠR*R\n");
break;
case 6:
printf("V=4ΠR*R*R/3\n");
break;
case 7:
addNewFormula();
break;
default:
printf("无效的选项,请重新输入。\n");
break;
}
}
int choice; // 第二级选择
while (a == 2) {
printf("\n请选择要查询的数学公式:\n");
printf("1. 二次方程\n");
printf("2. 勾股定理\n");
printf("3. 三角形面积\n");
printf("4. 圆柱体体积\n");
printf("5.球的表面积\n");
printf("6.球的体积\n");
printf("0. 返回上一级\n");
printf("请输入选项:\n");
scanf("%d", &choice);
switch (choice) {
case 0:
choice = 0;
a = 0;
break;
case 1:
quadraticEquation();
break;
case 2:
pythagoreanTheorem();
break;
case 3:
areaOfTriangle();
break;
case 4:
volumeOfCylinder();
break;
case 5:
SOfBall();
break;
case 6:
volumeOFBall();
break;
default:
printf("无效的选项,请重新输入。\n");
break;
}
}
} return 0; }
// 二次方程函数 void quadraticEquation() { double a, b, c; double discriminant; double root1, root2;
printf("\n请输入二次方程的系数:\n");
printf("a = ");
scanf("%lf", &a);
printf("b = ");
scanf("%lf", &b);
printf("c = ");
scanf("%lf", &c);
discriminant = b * b - 4 * a * c;
if (discriminant > 0) {
root1 = (-b + sqrt(discriminant)) / (2 * a);
root2 = (-b - sqrt(discriminant)) / (2 * a);
printf("方程的两个根为:%.2lf和%.2lf\n", root1, root2);
} else if (discriminant == 0) {
root1 = -b / (2 * a);
printf("方程的两个根相等,为:%.2lf\n", root1);
} else {
double realPart = -b / (2 * a);
double imaginaryPart = sqrt(-discriminant) / (2 * a);
printf("方程的两个复根为:%.2lf + %.2lfi和%.2lf - %.2lfi\n", realPart, imaginaryPart, realPart, imaginaryPart);
}
}
// 勾股定理函数 void pythagoreanTheorem() { double a, b, c;
printf("\n请输入三角形的两条直角边的长度:\n");
printf("a = ");
scanf("%lf", &a);
printf("b = ");
scanf("%lf", &b);
c = sqrt(a * a + b * b);
printf("斜边的长度为:%.2lf\n", c);
}
// 三角形的面积计算函数 void areaOfTriangle() { double base, height;
printf("\n请输入三角形的底和高:\n");
printf("底 = ");
scanf("%lf", &base);
printf("高 = ");
scanf("%lf", &height);
double area = 0.5 * base * height;
printf("三角形的面积为:%.2lf\n", area);
}
// 圆柱体体积函数 void volumeOfCylinder() { double radius, height;
printf("\n请输入圆柱体的底面半径和高:\n");
printf("半径 = ");
scanf("%lf", &radius);
printf("高 = ");
scanf("%lf", &height);
double volume = PI * radius * radius * height;
printf("圆柱体的体积为:%.2lf\n", volume);
}
// 球的表面积函数 void SOfBall() { printf("请输入球的半径:\n"); int r; double S; scanf("%d", &r); S = 4 * PI * r * r; printf("球的表面积为:%.21f\n", S); }
// 球的体积函数 void volumeOFBall() { printf("请输入球的半径:\n"); int r; double V; scanf("%d", &r); V = 4 * PI * r * r * r / 3; printf("球的表面积为:%.21f\n", V); }
// 常见导数的函数 void daoshu() { printf("(C) ′=0, C为常数\n"); printf("x ′=1\n"); printf("(In x) ′=1/x\n"); printf("sin x ′=cos x\n"); printf("cos x ′=(-sin x)\n"); }
// 添加新公式函数 void addNewFormula() { printf("您已添加的公式有:\n"); Formula *current = head; int count = 1; while (current != NULL) { printf("%d. %s: %s\n", count, current->name, current->content); current = current->next; count++; }
printf("1.添加新公式\n");
printf("2.删除已添加公式\n");
printf("3.退出\n");
int x;
scanf("%d", &x);
if (x == 3) {
return;
} else if (x == 1) {
Formula *newFormula = (Formula *)malloc(sizeof(Formula));
if (newFormula == NULL) {
printf("内存分配失败!\n");
return;
}
printf("请输入要添加的公式名称:\n");
scanf("%s", newFormula->name);
printf("请输入公式的内容:\n");
scanf("%s", newFormula->content);
newFormula->next = head;
head = newFormula;
printf("公式已成功添加!\n");
} else if (x == 2) {
deleteFormula();
} else {
printf("您输入的选项不合法,请重试\n");
}
}
// 删除已添加公式函数 void deleteFormula() { printf("您已添加的公式有:\n"); Formula *current = head; int count = 1; while (current != NULL) { printf("%d. %s: %s\n", count, current->name, current->content); current = current->next; count++; }
printf("请输入要删除的公式序号:\n");
int deleteNum;
scanf("%d", &deleteNum);
if (deleteNum < 1 || deleteNum > count) {
printf("无效的序号,请重新输入。\n");
return;
}
Formula *prev = NULL;
current = head;
int i = 1;
while (current != NULL && i < deleteNum) {
prev = current;
current = current->next;
i++;
}
if (current == NULL) {
printf("没有找到要删除的公式。\n");
return;
}
if (prev == NULL) {
head = current->next;
} else {
prev->next = current->next;
}
free(current);
printf("公式已成功删除!\n");
}
原文地址: https://www.cveoy.top/t/topic/pSEG 著作权归作者所有。请勿转载和采集!