當前位置:首頁 » 編程語言 » 物品折舊計算器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語句即可,這是很基礎的,
沒有什麼技術性,