#C语言学习笔记#计算器问题

//《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');
//总结:在输入输出数据时,数据的类型所对应的输入输出字符,在部分变量的时候,应该进行初始化。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值