当前位置:首页 » 编程语言 » 物品折旧计算器c语言设计思想
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

物品折旧计算器c语言设计思想

发布时间: 2022-07-20 03:18:10

‘壹’ 用C语言做一个简单的计算器的思路

1、输入,输出处理;
2、基本运算处理;

‘贰’ C语言编一个计算器的思想

表达式求值,说起来很复杂,我有源代码,你自己研究研究

#include<stdio.h>
#include<stdlib.h>
#define MaxSize 99
void translate(char str[],char exp[]) /*将算术表达式转换成后缀表达式*/
{
struct
{
char data[MaxSize];
int top; /*top为栈顶*/
}op; /*定义一个含data和top的结构体*/
char ch;
int i = 0,t = 0;
op.top = -1;
ch = str[i]; /*将str的每一个数转换成ch*/
i++;
while(ch != '\0') /*ch对应不同的符号的时候对应的转换情况*/
{
switch(ch)
{
case '(': /*当是(的时候,将此括号存入栈op*/
op.top++;op.data[op.top]=ch;
break;
case ')':
while(op.data[op.top] != '(') /*括号内的转换优先级最高,故先提取表达式*/
{
exp[t]=op.data[op.top];
op.top--;
t++;
}
op.top--;
break;
case '+':
case '-':
while(op.top != -1&&op.data[op.top] != '(')
{
exp[t] = op.data[op.top];
op.top--;
t++;
}
op.top++; /*恢复可插入位置*/
op.data[op.top] = ch;
break;
case '*':
case '/':
while(op.top == '/'||op.top == '*') /*优先级*/
{
exp[t] = op.data[op.top];
op.top--;
t++;
}
op.top++;
op.data[op.top] = ch;
break;
case ' ': /*忽略空格,排除误操作*/
break;
default:
while(ch >= '0'&&ch <= '9')
{
exp[t] = ch;t++;
ch = str[i];i++;
}
i--;
exp[t] = '#'; /*分隔操作数,为了美观,也为了以后好分隔操作数,呵呵*/
t++;
}
ch = str[i];
i++;
}
while(op.top != -1) /*得到剩下的部分*/
{
exp[t] = op.data[op.top];
t++;
op.top--;
}
exp[t] = '\0'; /*表达式结束*/
}
float cal_value(char exp[])
{
struct
{
float data[MaxSize];
int top;
}st; /*操作数栈*/
float d;
char ch;
int t = 0;
st.top = -1;
ch = exp[t];
t++;
while(ch != '\0')
{
switch(ch) /*运算主体*/
{
case '+':
st.data[st.top-1] = st.data[st.top-1]+st.data[st.top];
st.top--;
break;
case '-':
st.data[st.top-1] = st.data[st.top-1]-st.data[st.top];
st.top--;
break;
case '*':
st.data[st.top-1] = st.data[st.top-1]*st.data[st.top];
st.top--;
break;
case '/':
if(st.data[st.top] != 0)
st.data[st.top-1]=st.data[st.top-1]/st.data[st.top];
else
{
printf("\n\t除0是错误的");
}
st.top--;
break;
default:
d=0;
while(ch >= '0'&&ch <= '9') /*从后缀表达式中获取操作数,#作用在此体现*/
{
d = 10*d+ch-'0';
ch = exp[t];
t++;
}
st.top++;
st.data[st.top] = d;
}
ch = exp[t];
t++;
}
return st.data[st.top];
}
int main() /*可以提到前面去*/
{
char str[MaxSize],exp[MaxSize]; /*str为算术表达式,exps为后缀表达式*/
printf("请输入一个求值表达式\n");
printf("表达式:");
gets(str); /*输入一个算术表达式*/
printf("原表达式是:%s\n",str);
translate(str,exp); /*将算术表达式转换成后追表达式*/
printf("后缀表达式:%s\n",exp);
printf("计算结果:%g\n",cal_value(exp));/*通过后缀表达式来求值*/
system("pause");
return 0;
}

‘叁’ 求用C语言写计算器程序的思路

说一下我以前写的一个计算器的思路吧,虽然不是最好,但是很好理解。

先找出输入的字符串里最后一个出现(的位置,标记下来。从这里开始向后找运算符,如果找到第一个子串为sin...,cos...则先把这一段子串提出,用MATH函数计算它的值,再把值通过itoa函数转换成字符串替代到原字符串里。再继续向后寻找,如果找到了第一个*或者/的位置,则再进行倒退寻找,找到这个*或者/的第一个操作数的最高位,将第一个数的字符串提出,用atoi函数转换成数字存放在某个变量里,再提取运算符放在一个变量里,继续向后寻找,把运算符后面的数字字符串存储起来,再用atoi函数转换成数字,两数通过对运算符的switch case得到运算结果放在另一个变量里,再将这个结果转换成字符串替换原字符串里两个数包括运算符在内的所有字符,假如整个括号内只有数字没有运算符的话,将包括括号在内的整个字符串用括号内的字符串代替。
如果整个式子没有括号的话,那么可以直接找sin,cos,*,/进行上述同样的操作。
将整体做成一个循环,当整个式子最后变成一个数字以后,那么就是你要的结果,再break;跳出循环

‘肆’ C语言设计计算器的思路

如果是控制台情况下,就需要选择语句套函数了,用if也可以,不过最好用swicth语句
根据不同情况调用不同的函数,来完成不同的计算功能~整体再套个死循环,整个判断是否继续计算的语句来,决定是否结束计算,推出程序~
如果是win32下的窗口程序。。那就需要API的知识了~~

‘伍’ 设计一个多功能计算器<用C语言程序设计>

思想:
用一个for循环,控制程序流程,在用if语句判断(加、减、乘、除)或switch语句即可,这是很基础的,
没有什么技术性,