【发布时间】:2021-03-06 15:13:28
【问题描述】:
这个程序是一个简单的计算器。 起初很抱歉我的英语不好,我想知道'\a'和'%2.f'的含义是什么 我知道 %f 是双倍的,但为什么是'2'。在'f'前面? 就在最后我们将“dgt”设置为“c-48”我想知道为什么是“-48” 我是一名信息专业的学生,我是初学者,你有什么特别的建议给我吗?
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
printf("Simple Calculator: \nValid inputs are +-*/=and digits 0,...,9\n");
printf("Your input: \n");
double r = 0.0;
double dgt = 0.0;
char lst_opt = '+';
const int nxt_dgt = 1;
const int nxt_opt = 2;
int nxt_npt = nxt_dgt;
while (1)
{
char c = _getch();
switch (c)
{
case '+':
case '-':
case '*':
case '/':
if (nxt_npt != nxt_opt)
{
printf("\a");
break;
}
printf("%c", c);
lst_opt = c;
nxt_npt = nxt_dgt;
break;
case '=':
if (nxt_npt != nxt_opt)
{
printf("\a");
break;
}
printf("\n=%.2f", r); //double, but why .2?
nxt_npt = nxt_opt;
break;
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
if (nxt_npt != nxt_dgt)
{
printf("\a");
break;
}
printf("%c", c);
dgt = c-48;
switch (lst_opt)
{
case '+': r += dgt; break;
case '-': r -= dgt; break;
case '*': r *= dgt; break;
case '/': r /= dgt; break;
}
nxt_npt = nxt_opt;
break;
}
}
_getch();
}
【问题讨论】:
-
48 应该是 '0'
标签: c visual-studio performance variables calculator