當前位置:九游会j9娱乐平台-九游ag登录中心网址 » 編程語言 » c語言編寫加減乘除

c語言編寫加減乘除-九游会j9娱乐平台

發布時間: 2024-01-12 15:09:32

① 用c語言怎樣實現計算器加減乘除功能

  1. 我學c 時寫的

    #include
    #include "string"

    int count(int a,int b,char c)
    {
    if(c==' ') return a b;
    if(c=='-') return a-b;
    if(c=='/') return a/b;
    if(c=='*') return a*b;

    }

    void main()
    {
    char str[100];
    cin>>str;
    int number[10]={0};
    char sign[10];

    int i,j=0,k=0,m;
    int strlong=strlen(str);//#include "string"
    cout< for(i=0;i {
    if(str[i]>='0'&&str[i]<='9')
    number[j]=number[j]*10 str[i]-48;

    else
    {j ;
    sign[k]=str[i];
    k ;}
    }
    j ;
    //cout< for(i=0;i cout< for(i=0;i cout<
    for( i=0;i{
    if(sign[i]=='/'||sign[i]=='*')
    {number[i]=count(number[i],number[i 1],sign[i]);
    cout< for(m=i;m {sign[m]=sign[m 1];number[m 1]=number[m 2];}
    k--;i--;}
    }
    for( i=0;i{ if(sign[i]==' '||sign[i]=='-')
    {number[i]=count(number[i],number[i 1],sign[i]);
    cout< for(m=i;m {sign[m]=sign[m 1];number[m 1]=number[m 2];}
    k--;i--;}

    }

    for (i=0;i<3;i )
    {cout<}
    cout<}


2.堆棧

#include "string"
#include "iostream"
#include
#include
#include
using namespace std;
//自定義類型 用於存儲 兩種數據類型
class newtype
{
public:
bool flag;//true 為f false 為 c
union
{
float f;
char c;
}data;
};

//將字元串轉換為 數字數組和字元數組 (通用提取字元串中數字)
bool couvert(string str,vector &numbers,vector &chars,vector &all)//這里要使用引用
{
int len=str.length();
bool flag=true;
int pos=0;

for(int i=0;i {
if(str[i]>='0'&&str[i]<='9'||str[i]=='.')
{
if (flag)
{
string substr=str.substr(i,len) ;
float f=atof(substr.data());
numbers.push_back(f);
//添加f到all向量中
newtype n;
n.data.f=f;
n.flag=true;
all.push_back(n);

}
flag=false;
}
else
{
//chars.push_back(str[i]);
chars.push_back(str[i]);
newtype n;
n.data.c=str[i];
n.flag=false;
all.push_back(n);
flag=true;
}
}//for
return true;
}

//計算沒有括弧的表達式
bool calculate(vector numbers,
vector chars,float &value)
{
//計算四者表達式 無括弧類型 1 2*3 4
int ii=0;
//先計算乘除
while(ii //注意while(ii<(chars.size()-2)) 和while(ii {
switch(chars[ii])
{
case '*':
numbers[ii]=numbers[ii]*numbers[ii 1];
numbers.erase(numbers.begin() ii 1); //移除number[ii]後面的數
chars.erase(chars.begin() ii); //移除chars[ii]
ii--;
break;
case '/':
numbers[ii]=numbers[ii]/numbers[ii 1];
numbers.erase(numbers.begin() ii 1);
chars.erase(chars.begin() ii);
ii--;
break;
}
ii ;
}

//只剩下加減 計算加減
ii=0;
while(ii //注意while(ii<(chars.size()-2)) 和while(ii {
switch(chars[ii])
{
case ' ':
// cout<<" ::"< numbers[ii]=numbers[ii] numbers[ii 1];
numbers.erase(numbers.begin() ii 1); //移除number[ii]後面的數
chars.erase(chars.begin() ii); //移除chars[ii]
break;
case '-':
// cout<<"-::"< numbers[ii]=numbers[ii]-numbers[ii 1];
numbers.erase(numbers.begin() ii 1);
chars.erase(chars.begin() ii);
break;
}
// ii ;
}

value=numbers[0];//得到值
return true;
}

//計算帶括弧的表達式

int calculate1( vector all,float &value)
{
int pos=0;
vector numbers;
vector chars;
float va=0;

for(int i=0;i {
if (all[i].flag)//判斷是數字還是字元
{
cout<<"數字"< }
else
{
cout<<"字元"< if (all[i].data.c==')') //如果是右括弧 將之前的()之間的括弧內容
{ //用calculate計算 並替換

for (int j=pos 1;j {
if (all[j].flag)
{
numbers.push_back(all[j].data.f);
} else{
chars.push_back(all[j].data.c);
}
}

calculate(numbers,chars,va);
numbers.clear();
chars.clear();

newtype ne;
ne.data.f=va;

all.erase(all.begin() pos,all.begin() i 1);
all.insert(all.begin() pos,ne);

i=pos 1;

}
else if (all[i].data.c=='(')
{
pos=i;//記錄此時左括弧的位置
}
}//else
}//for
for(int kk=0;kk {
if (all[kk].flag)
{
numbers.push_back(all[kk].data.f);
} else{
chars.push_back(all[kk].data.c);
}
}

for( i=0;i {
if (all[i].flag)
{
cout< } else
{
cout< }

}
calculate(numbers,chars,value);

return 1;
} void main()
{
//
string str="10 (2*3 8) (10*2)";
vector numbers;
vector chars;
vector all;
couvert(str, numbers, chars,all);
for(int i=0;i {
if (all[i].flag)
{
cout< } else
{
cout< }

}
float value,value1;
// calculate(numbers,chars,value);
calculate1(all,value1);
cout<

}


這是我翻家底找到的 .

② c語言的加減乘除是怎麼實現的

本質上都是位運算。 加法通過異或、且和左移遞歸實現。

設a,b為兩個二進制數,則a b = a^b (a&b)<<1;

典型的實現代碼:

//遞歸版本的加法
intadd(inta,intb)
{
returnb?add(a^b,(a&b)<<1):a;
}
//迭代版本
intadd_iter(inta,intb)
{
intans;
while(b)
{
ans=a^b;
b=(a&b)<<1;
a=ans;
}
returnans;
}

再用加法和移位就能模擬乘除和減法

減法:a-b = a (-b)

乘法運算:原理上還是通過加法計算,將b個a相加。

除法運算:除法運算是乘法的逆。看a最多能減去多少個b

③ 用c語言設計一個簡單的加減乘除計算器 具體需要這樣做

1、打開visual c 6.0-文件-新建-文件-c source file。

2、輸入預處理命令和主函數:#include /*函數頭:輸入輸出頭文件*/,void main()/*空類型:主函數*/。

3、定義變數:int a,b,d; /*定義變數的數據類型為整型*/,char c;/*定義變數的數據類型為字元型*/。

4、輸入四則運算式:printf(輸入如「3*4」或「5 2」的四則運算式:);/*輸出文字提示*/scanf(%d%c%d,&a,&c,&b);/*輸入四則運算式*/。

5、判斷運算符號:switch(c) /*判斷運算符號*/{case' ':d=a b;break;/*進行加法6、運算*/case'-':d=a-b;break;/*進行減法運算*/case'*':d=a*b;break;/*進行乘法運算*/case'/':d=a/b;break; /*進行除法運算*/}。

7、輸出結果:printf(%d%c%d=%d\n,a,c,b,d);/*輸出結果*/。

熱點內容
愛奇藝正義聯盟為啥不能緩存 發布:2024-01-20 00:52:13 瀏覽:248
caccess查詢資料庫 發布:2024-01-20 00:43:10 瀏覽:769
xp文件夾圖標更改 發布:2024-01-20 00:43:03 瀏覽:19
python和node 發布:2024-01-20 00:37:12 瀏覽:194
android拖拉 發布:2024-01-20 00:00:49 瀏覽:583
少兒編程課程體系介紹 發布:2024-01-20 00:00:48 瀏覽:846
我說你做下載ftp 發布:2024-01-20 00:00:47 瀏覽:8
安卓驅動培訓哪裡好 發布:2024-01-19 23:55:41 瀏覽:987
python轉為字元串 發布:2024-01-19 23:51:39 瀏覽:272
合同文件夾 發布:2024-01-19 23:50:52 瀏覽:740
网站地图