C语言实现简单的四则运算计算器


前言

这是我学习C语言过程中的一个小练习,后续应该会对计算器进行功能添加和优化
本文主要介绍编程过程中遇到的问题、原因和解决办法

一、编程过程中遇到的错误

1.第二个scanf函数()不等输入就自动执行
2. 编译时报错函数重定义,不同的基类型
3. switch误拼写成swith

二、错误解析

1.经调试可以看出变量a读入了换行符’\n’,查找资料可知:
在scanf()语句中:
-对于参数%d:会忽略缓冲区开头的空白符(空格、回车、制表符等)(无论有几个);
-对于参数 %c:直接读取缓冲区的第一个字符(无论这个字符是什么);[^1]
故在第一个scanf()语句后使用getchar()来读入’\n’。
2.自定义函数未声明就使用了
将函数放到主函数前,或在include语句和宏定义后加上声明
3.低级拼写错误,还仔细看了好久才发现拼写错了
[^1]此部分参考尘鞅cy的博客

三、代码

代码如下:

#include<stdio.h>
void menu()
{
	printf("简易计算器\n");
	printf("\n");
}
double calc()
{
	double num1, num2;
	char a;
	while (1)
	{
		printf("请输入第一个数:\n");
		scanf("%lf", &num1);
		getchar();//吃掉\n
		printf("请输入运算符(+ - * /): \n");
		scanf("%c", &a);
		printf("请输入第二个数: \n");
		scanf("%lf", &num2);
		switch (a)
		{
		case'+':
			printf("%lf + %lf = %lf\n", num1, num2, num1 + num2);
			break;
		case'-':
			printf("%lf - %lf = %lf\n", num1, num2, num1 - num2);
			break;
		case'*':
			printf("%lf * %lf = %lf\n", num1, num2, num1 * num2);
			break;
		case'/':
			if (num2 == 0)
			{
				printf("除数不能为0\n");
			}
			else
			{
				printf("%lf / %lf = %lf\n", num1, num2, num1 / num2);
			}
			break;
		default:
			break;
		}
	}
	return 0.0;
}
int main()
{
	menu();
	calc();
	return 0;
}

总结

这是我的第一篇博客,希望以后也能够坚持下去!


版权声明:本文为m0_55813643原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。