刚开始接触编程也能轻松写的计算器代码(VS2019)(c语言)

今天教大家写的计算器很简单,是刚入坑的萌新,看的之后,也能写的。

废话不多说,给大家看一看效果先:

计算器

大家看完效果感觉还可以的话,可以继续学下去,毕竟是得萌新学的,所以说代码挺简单的,并且非常详细,保证看了就会。

 

 

老套路了,先分步骤

1.定义头文件

2.定义主函数

3.定义需要的值

4.定义计算函数

5.定义第1次的计算

6.定义之后几次是否计算的判定函数

7.定义之后几次的判定

8.打印最后的结果

9.完整代码


1.定义头文件

        这里我们需要定义一个头文件,老熟人了,想必大家都会吧。
 

#include//定义stdio.h头文件

2.定义主函数

        其实我感觉这两步都可以省略了。

int mian()//主函数不用讲了吧?
{
    return 0;
}

3.定义需要的值

        这里我们需要定义第1个计算数与第2个计算数,和我们的判决数与运算符号。

{
    float one_sum,//定义第1个计算数-用float类型可以打印小数
		  two_sum;//定义第2个计算数-用float类型可以打印小数
	short shi_fou;//定义判定数-判定数不需要小数,可以用int类型,但是用short,省空间
	char  yun_suan_fu;//定义运算符号-运算符号是字符,所以说需要用char类型
}

4.定义计算函数

        这个函数需要传进两个运算数,与一个运算字符,用switch()函数来判定加减乘除,顺便别人不小心打错的话, 可以报个错,保留上一次的值。

        (float) 强制转换类型以防报错。

        注意,有return,就不需要break了。

float JiSuan(const float one_sum, const float two_sum,const char yun_suan_fu)//定义计算函数
{
	switch(yun_suan_fu)//写switch()函数用来判定运算符号
	{
	case'+'://加
		return (float)(one_sum + two_sum);//返回第1个计算数加第2个计算数的值
	case'-'://减
		return (float)(one_sum - two_sum);//返回第1个计算数减第2个计算数的值
	case'*'://乘
		return (float)(one_sum * two_sum);//返回第1个计算数乘第2个计算数的值
	case'/'://除
		return (float)(one_sum / two_sum);//返回第1个计算数除第2个计算数的值
	}
	printf("计算错误,结果自动为上一次的运算成果\n");//有人闲的蛋疼,乱打别的东西,所以报个提示
	return one_sum;//返回报错后的值-上一次的结果
}

5.定义第1次的计算

        这名是我们第1次运算的过程,用printf()函数告诉用户该干什么?,用scanf_s()函数用来赋值, 用getchar()函数给运算符号赋值。

        用if()函数,在第1次运算的时候,给第1个计算数赋值,后面就通过第1次的运算结果,与第2个计算数运算。

{
    printf("欢迎打开计算器\n"); //让用户知道登了什么软件
	for (int i = 1;; i++)//一个死循环
	{
		if (i == 1)//第1次进入开始
		{
			printf("请输入您的第一个数:");//打印提示与输入第1个计算数的地方
			scanf_s("%f", &one_sum);//给第1个计算数赋值
		}
		printf("请输入您的运算符:");//打印提示与输入运算符号的地方
		setbuf(stdin, NULL);//清空缓存区-防止下面的赋值赋到回车
		yun_suan_fu = getchar(); //给运算符号赋值
		printf("请输入您的第二个数:");//打印提示与输入第2个计算数的地方
		setbuf(stdin, NULL);//清空缓存区-防止下面的赋值赋到回车
		scanf_s("%f", &two_sum);//给第2个计算数赋值
		one_sum = JiSuan(one_sum, two_sum, yun_suan_fu);//把第1个计算数与第2个计算数计算的结果放到第1个计算数里
		printf("这次的运算成果是%.2f(会自动四舍五入至小数点后两位)\n", one_sum);//打印每一次的运算成果-%.2f-四舍五入至小数点后两位-四舍五入为了美观
}

6.定义之后几次是否计算的判定函数

        首先先声明几句话,然后再让用户选择,然后再传过来就OK了。传进去的i,纯属为了让用户知道计算次数,好让用户知道计算到第几次了,贴心的一批。

short ShiFou(const int i)//定义判定数-声明判定条件函数
{
	short shi_fou;//定义判定数-判定数不需要小数,可以用int类型,但是用short,省空间-因为是局部变量,出去就会被销毁,所以不用担心冲突
	printf("是否继续计算?\n");//打印是否继续
	printf("结束请输0,");//打印-判定条件
	printf("继续请输1,");//打印-判定条件
	printf("重来请输2\n");//打印-判定条件-加回车-为了美观
	printf("%d.请输入:",i);//打印提示与判定数的地方
	setbuf(stdin, NULL);//清空缓存区-防止下面的赋值赋到回车
	scanf_s("%hd", &shi_fou);//给判定数赋值
	return shi_fou;//返回判定数
}

7.定义之后几次的判定

        利用函数的返回值,作判定,等于1是继续,但继续的话不需要任何东西,于是在最后找茬上加个条件不等于1,就可以完美的不出bug。

{
    else//第1次以后判定想不想继续计算-利用判定数判定条件
	{
		shi_fou = ShiFou(i);//储存判定数
		if (shi_fou == 0)//等于0时,终止
			break;//离开这个循环-用于退出
		else if (shi_fou == 2)//不等于0,但等于2时,重新开始
		{
			i = 0;//重置循环,与下面的跳过本次循环连起来一起用,跳过之后他会自加1,所以设置为0不是1
			continue;//跳过本次循环-本次循环下面的代码都不会运作
		}
		else if(shi_fou != 1)//不等于0,不等于2,不等于1时,那他就是故意找茬了,可以用打印函数打印一句,说他闲的话。
		{
			printf("他奶奶地,找茬是不是?\n"); //说他闲的话
			break;//离开这个循环-用于退出
		}
	}
}

8.打印最后的结果

        最后肯定得给用户一个明确的结果。然后就完成了,是不是很简单?

{
	printf("最终的运算成果是%.2f(会自动四舍五入至小数点后两位)\n", one_sum);//打印最终的运算成果-%.2f-四舍五入至小数点后两位-四舍五入为了美观
}

9.完整代码

        应该也只有我会把这么简单的代码讲解这么详细,易懂了,制作不易,求三连。

刚开始接触编程也能轻松写的计算器代码(VS2019)(c语言)_第1张图片

 

#include//定义stdio.h头文件

float JiSuan(const float one_sum, const float two_sum,const char yun_suan_fu)//定义计算函数
{
	switch (yun_suan_fu)//写switch()函数用来判定运算符号
	{
	case'+'://加
		return (float)(one_sum + two_sum);//返回第1个计算数加第2个计算数的值
	case'-'://减
		return (float)(one_sum - two_sum);//返回第1个计算数减第2个计算数的值
	case'*'://乘
		return (float)(one_sum * two_sum);//返回第1个计算数乘第2个计算数的值
	case'/'://除
		return (float)(one_sum / two_sum);//返回第1个计算数除第2个计算数的值
	}
	printf("计算错误,结果自动为上一次的运算成果\n");//有人闲的蛋疼,乱打别的东西,所以报个提示
	return one_sum;//返回报错后的值-上一次的结果
}

short ShiFou(const int i)//定义判定数-声明判定条件函数
{
	short shi_fou;//定义判定数-判定数不需要小数,可以用int类型,但是用short,省空间-因为是局部变量,出去就会被销毁,所以不用担心冲突
	printf("是否继续计算?\n");//打印是否继续
	printf("结束请输0,");//打印-判定条件
	printf("继续请输1,");//打印-判定条件
	printf("重来请输2\n");//打印-判定条件-加回车-为了美观
	printf("%d.请输入:",i);//打印提示与判定数的地方
	setbuf(stdin, NULL);//清空缓存区-防止下面的赋值赋到回车
	scanf_s("%hd", &shi_fou);//给判定数赋值
	return shi_fou;//返回判定数
}

int main()//主函数不用讲了吧?
{
	float one_sum,//定义第1个计算数-用float类型可以打印小数
		  two_sum;//定义第2个计算数-用float类型可以打印小数
	short shi_fou;//定义判定数-判定数不需要小数,可以用int类型,但是用short,省空间
	char  yun_suan_fu;//定义运算符号-运算符号是字符,所以说需要用char类型
	printf("欢迎打开计算器\n"); //让用户知道登了什么软件
	for (int i = 1;; i++)//一个死循环
	{
		if (i == 1)//第1次进入开始
		{
			printf("请输入您的第一个数:");//打印提示与输入第1个计算数的地方
			scanf_s("%f", &one_sum);//给第1个计算数赋值
		}
		else//第1次以后判定想不想继续计算-利用判定数判定条件
		{
			shi_fou = ShiFou(i);//储存判定数
			if (shi_fou == 0)//等于0时,终止
				break;//离开这个循环-用于退出
			else if (shi_fou == 2)//不等于0,但等于2时,重新开始
			{
				i = 0;//重置循环,与下面的跳过本次循环连起来一起用,跳过之后他会自加1,所以设置为0不是1
				continue;//跳过本次循环-本次循环下面的代码都不会运作
			}
			else if(shi_fou != 1)//不等于0,不等于2,不等于1时,那他就是故意找茬了,可以用打印函数打印一句,说他闲的话。
			{
				printf("他奶奶地,找茬是不是?\n"); //说他闲的话
				break;//离开这个循环-用于退出
			}
		}
		printf("请输入您的运算符:");//打印提示与输入运算符号的地方
		setbuf(stdin, NULL);//清空缓存区-防止下面的赋值赋到回车
		yun_suan_fu = getchar(); //给运算符号赋值
		printf("请输入您的第二个数:");//打印提示与输入第2个计算数的地方
		setbuf(stdin, NULL);//清空缓存区-防止下面的赋值赋到回车
		scanf_s("%f", &two_sum);//给第2个计算数赋值
		one_sum = JiSuan(one_sum, two_sum, yun_suan_fu);//把第1个计算数与第2个计算数计算的结果放到第1个计算数里
		printf("这次的运算成果是%.2f(会自动四舍五入至小数点后两位)\n", one_sum);//打印每一次的运算成果-%.2f-四舍五入至小数点后两位-四舍五入为了美观
	}
	printf("最终的运算成果是%.2f(会自动四舍五入至小数点后两位)\n", one_sum);//打印最终的运算成果-%.2f-四舍五入至小数点后两位-四舍五入为了美观
	return 0;
}

你可能感兴趣的:(c语言,visual,studio)