//《C语言综合项目实战》项目二//
//关于四则运算计算器以及二元一次方程的运用问题,首先,应先构建一个可视化表面,进行运算。
#include<stdio.h>
#include<math.h>//头文件<math.h>,因为需要使用sqrt函数,以及pow函数。
int main() {
int a, b;//声明整形变量a,b,用于计算
int d;//声明整形变量d,用于用户使用的计算方式。
char c,answer='y';//声明字符变量c,answer,c用于四则运算的宣增,answer用于用户是否重复使用计算器.
float e;//声明单精度型浮点变量e,用于倒数计算。
float A=0, B=0, C=0,D=0,E=0,F=0;//声明单精度型浮点变量A,B,C,D,E,F,用于二元一次方程的计算。
//使用do—while循环,以answer是否为y为条件,对计算器的是否重复使用进行循环。
do {
//输出一个用户想选择计算方式的可视化列表。
printf("如果想进行平方根的计算,请输入1\n如果想进行倒数请输入2\n如果想进行幂次方的计算请输入3\n如果想进行四则运算请输入4\n如果想进行二元一次方程请输入5\n");
scanf_s("%d", &d);//输入用户想选择的方式所代表的数字。
if (d == 1) {
//if条件,d==1,代表用户想进行平方根计算。
printf("请输入数字进行平方根计算:");
scanf_s("%d", &a);
printf("%f\n", (double)sqrt(a));//因为平方根可能会出现小数的情况,所以对sqrt函数进行double型转换。
}
if (d == 2) {
//if条件,d==2,代表用户想进行倒数计算。
printf("请输入数字进行倒数计算:");
scanf_s("%f", &e);
printf("%f\n", 1/e);//因为倒数可能会出现小数的情况,所以将输入的数据定义为浮点数据。
//并且将输出的数据也定义为浮点数据。
}
if (d == 3) {
//if条件,d==3,代表用户想进行对数字进行X的N次方计算。
printf("请输入数字进行X的N次方计算:");
scanf_s("%d%d", &a,&b);
printf("%f\n", pow(a,b));//使用pow(a,b)函数,对a的b次方进行计算。
}
if (d == 4) {
//if条件,d==4,代表用户想进行四则计算。
scanf_s("%d%c%d", &a,&c,1,&b);//输入用户想进行计算的式子。
switch (c) {
//使用switch条件,
case '+':printf("%d+%d=%d\n", a, b, a + b); break;
//如果C为+,则说明要进行加法计算,并且不再执行后面语句。
case '-':printf("%d-%d=%d\n", a, b, a - b); break;
//如果C为-,则说明要进行减法计算,并且不再执行后面语句。
case '*':printf("%d*%d=%d\n", a, b, a * b); break;
//如果C为*,则说明要进行加乘法计算,并且不再执行后面语句。
case '/':("%d/%d=%d\n", a, b, a / b); break;
//如果C为/,则说明要进行除法计算,并且不再执行后面语句。
default:printf("输入的计算符未知,发生错误\n"); break;
//如果C均不为上值,则说明C为未知符号,出于安全考虑,应当不再执行,或者重新输入。
}
}
if (d == 5) {
//if条件,如果d==5,则说明用户想要进行二元一次方程计算。
printf("请输入第一个方程x,y的系数以及E的值\n");//Ax+By=E;
scanf_s("%f %f %f", &A, &B,&E);
printf("请输入第二个方程x,y的系数以及F的值\n");//Cx+Dy=F;
scanf_s("%f %f %f", &C, &D, &F); //因为x=(E * D - B * F) / (A * D - B * C)
//因为y=(E * C - A * F) / (B * C - A * D)
printf("x的值为:%lf,y的值为:%lf\n", (E * D - B * F) / (A * D - B * C), (E * C - A * F) / (B * C - A * D));
}
printf("是否还需要计算,需要则输入y,否则则输入n\n");
scanf_s(" %c", &answer, 1);//如果用户想不再进行运算,则answer=n,则不符合answer=y的条件
//跳出当前do-while循环。
} while (answer == 'y');
//总结:在输入输出数据时,数据的类型所对应的输入输出字符,在部分变量的时候,应该进行初始化。