c語言計算器加減乘除
① 簡單的用c語言寫一個計算器程序,加減乘除能用就好
#include"stdio.h"
void
main()
{
float
a,b,c;
char
e;
printf("input
a,e,b\n");/*輸入兩個數和符號,例如3+8*/
scanf("%f%c%f",&a,&e,&b);
switch(e)
{
case
'+':c=a+b;break;
case
'-':c=a-b;break;
case
'*':c=a*b;break;
case
'/':
if(b==0.0)
printf("error\n");
else
c=a/b;break;
}
printf("%f%c%f=%f",a,e,b,c);
}
② c語言計算器加減乘除
#include<stdio.h>
intmain(){
doublea,b,d=0.0;
charc;
while(1){
printf("輸入一個算式,如:1+2:");
scanf("%lf%c%lf",&a,&c,&b);
intf=1;
switch(c){
case'-':
d=a-b;
break;
case'+':
d=a+b;
break;
case'*':
d=a*b;
break;
case'/':
d=a/b;
break;
default:
f=0;
printf("沒有這個運算符號! ");
break;
}
if(f==1){
printf("結果:%lf ",d);
}
}
return0;
}
③ 用C語言怎樣實現計算器加減乘除功能
我有個VC++的
任意進制轉換----棧的鏈接存儲
/*
棧的鏈接存儲----任意進制轉換*/
#include
#include
typedef
int
ElemType;
struct
SNode
{
ElemType
data;
SNode*
next;
};
void
InitStack(SNode*&
HS)
{
HS
=
NULL;
}
//
壓棧
插入元素
void
Push(SNode*&
HS,
const
ElemType&
item)
{
SNode*
newptr
=
new
SNode;
/*
獲取動態結點*/
newptr->data
=
item;
/*給新分配的結點賦值*/
newptr->next
=
HS;
/*
向棧頂壓入新結點*/
HS
=
newptr;
}
//從棧中刪除一個元素並返回該元素
ElemType
Pop(SNode*&
HS)
{
if(HS==NULL)
{
cerr<<"無法從空棧中刪除元素,退出運行
!"<
next;
ElemType
temp
=
p->data;
delete
p;
return
temp;
}
//讀取棧頂元素
ElemType
Peek(SNode*
HS)
{
if(HS==NULL)
{
cerr<<"無法從空鏈棧中讀取元素,退出運行
!"<
data;
}
bool
EmptyStack(SNode*
HS)
{
return
HS
==
NULL;
}
void
ClearStack(SNode*&
HS)
{
SNode
*mp,
*np;
mp
=
HS;
while(mp!=NULL)
{
np
=
mp->next;
delete
mp;
mp
=
np;
}
HS
=
NULL;
}
void
Transform(long
number,
int
r)
{
SNode
*a;
InitStack(a);
while(number!=0)
{
int
k
=
number%r;
Push(a,k);
number
=
number/r;
}
while(!EmptyStack(a))
{
if(r!=16)
cout<
>n;
cout<<"長整數
"<
評論
0
0
0
載入更多
④ 用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);/*輸出結果*/。
⑤ 請問怎麼用c語言寫一個可以實現加減乘除四則運算的計算器!
#include<stdio.h>
void
js(float*i,intj,charc)
{
floatm;
scanf("%f",&m);
if(c=='*')
i[j]=i[j]*m;
else
i[j]=i[j]/m;
}
voidjs2(float*i,char*c,intj,intk)
{
intl=0;
for(into=0;o<=k;o++)
{
if(c[o]=='+')
i[l+1]=i[l]+i[l+1];
else
i[l+1]=i[l]-i[l+1];
l++;
}
}
int
main(void)
{
intic=0,j=0,k=0;
floati[100];
charc[100];
while(1)
{
if(ic==0)
{
scanf("%f",&i[j++]);
ic=1;
}
if(ic=1)
{
c[k++]=getchar();
if(c[k-1]=='*'||c[k-1]=='/')
{
js(i,j-1,c[k-1]);
k--;
continue;
}
elseif(c[k-1]==' ')
break;
ic=0;
}
}
js2(i,c,j-1,k-2);
printf("%f",i[j-1]);
return0;
}
演算法流程:
1,如果讀入數字就把它存入數組中,
2,如果讀入加,減號就存如另一個數組用,如果讀入乘除號,就再讀入一個數字,從存數字的數組拿出兩個數字進行乘除運算。把結果存入數組中,這么重復直到讀入回車鍵的符號。
3,讀到回車符號後,就從存符號的數組中拿出一個符號,再從存數字的數組中拿出兩個數字進行相應計算,接著再拿出一個數字一個符號和之前計算結果進行相應計算,一直重復,直到所有符號都拿出來了。
4,剩下的最後一個數字就是計算結果。
註:這個是我是我很久之前回答別人的,地址是https://..com/question/454652508527253645
⑥ 求用C語言編寫一簡單計算器程序,要求:實現簡單地加減乘除就行了
#include<stdio.h>
intjisuan(inta,intb,charfu)
{
if(fu=='+')returna+b;
if(fu=='-')returna-b;
if(fu=='*')returna*b;
if(fu=='/')returna/b;
}
intfun(char*ss,intn)
{
inti,flag=0;
if(n==1)returnss[0]-'0';
for(i=0;i<n;i++)
{
if((ss[i]=='+')||(ss[i]=='-'))//掃描加減號
{
flag=1;
returnjisuan(fun(ss,i),fun(ss+i+1,n-i-1),ss[i]);
}
}
if(flag==0)//如果算數中沒有+-
{
for(i=0;i<n;i++)
if((ss[i]=='*')||(ss[i]=='/'))
{
returnjisuan(fun(ss,i),fun(ss+i+1,n-i-1),ss[i]);
}
}
}
voidmain(void)
{
chars[50];
intn;
printf("輸入算數:");
scanf("%s",s);
n=strlen(s);
printf("=%d ",fun(s,n));
}
用的遞歸,這樣省去很多麻煩
⑦ 計算器的C語言代碼.就進行簡單的加減乘除的運算,可以循環的,謝謝大神了!
#include <stdio.h>
char chooseOprate;
void input(char choose){
float result,numA,numB;
printf("請輸入第一個操作數:");
scanf("%2f",&numA);
printf("請輸入第二個操作數:");
scanf("%2f",&numB);
printf("請輸入操作符(1.+、2.-、3.*、4./):");
scanf("%c",&choose);
chooseOprate = choose;
if (choose == '1')) {
result = numA + numB;
printf("numA + numB = %2f",result);
}else if (choose=='2') {
result = numA - numB;
printf("numA - numB = %2f",result);
}else if (choose == '3'){
result = numA * numB;
printf("numA * numB =%2f ",result);
}else if (choose == '4') {
result = numA / numB;
printf("numA / numB = %2f",result);
}else{
printf("輸入錯誤,請重新輸入!\n");
printf(" ");
input(choose);
}
}
inputAnswer(){
char answer;
input(chooseOprate);
printf(" ");
printf("是否繼續?(Y/N)");
scanf("%c",answer);
if (answer == 'y' || answer =='Y') {
input(chooseOprate);
inputAnswer();
printf("是否繼續?(Y/N)");
}else if(answer == 'n' || answer == 'N')){
printf("程序結束!");
}else{
printf("輸入錯誤,請重新輸入!\n");
printf("\n");
inputAnswer();
}
printf("是否繼續?(Y/N)");
}
void main() {
inputAnswer();
}
⑧ 用c語言編一個簡單的能計算加減乘除的小計算器,要是能把思路附上最好,謝啦!
#include <stdio.h>
#include<conio.h>
int main()
{
int i,num1,num2,sum,count;
char ch,op;
printf("1 2 3 + - \n");
printf("4 5 6 * / \n");
printf("7 8 9 = # \n\n");
{
printf("0");
ch=getch();
while(ch<'0' || ch>'9')//輸入的不是數字,重新輸入
ch=getch();
printf("\b%c",ch);
count=1;
num1=ch-'0';
while(ch=getch(),ch>='0' && ch<='9')
{
putchar(ch);
num1=num1*10+ch-'0';
count++;
}
while(1)
{
op=ch;//符號
ch=getch();
while(ch<'0' || ch>'9')//輸入的不是數字,重新輸入
ch=getch();
for(i=0;i<count;i++)//回到行首
putchar('\b');
for(i=0;i<count;i++)//用空格覆蓋
putchar(' ');
for(i=0;i<count;i++)//回到行首
putchar('\b');
putchar(ch);
count=1;
num2=ch-'0';
while(ch=getch(),ch>='0' && ch<='9')
{
putchar(ch);
num2=num2*10+ch-'0';
count++;
}
switch(op)
{
case '+':
sum=num1+num2;
break;
case '-':
sum=num1-num2;
break;
case '*':
sum=num1*num2;
break;
case '/':
sum=num1/num2;
break;
default :
break;
}
for(i=0;i<count;i++)//回到行首
putchar('\b');
for(i=0;i<count;i++)//用空格覆蓋
putchar(' ');
for(i=0;i<count;i++)//回到行首
putchar('\b');
printf("%d",sum);
num1=sum;
count=1;
while(sum/=10)
count++;
if(ch=='#')
break;
}
}
}
⑨ 用C語言怎樣實現計算器加減乘除功能
我學c++時寫的
#include<iostream.h>
#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<<strlong;
for(i=0;i<strlong;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<<j<<k;
for(i=0;i<j;i++)
cout<<number[i]<<endl;
for(i=0;i<k;i++)
cout<<sign[i]<<endl;
for( i=0;i<k;i++)
{
if(sign[i]=='/'||sign[i]=='*')
{number[i]=count(number[i],number[i+1],sign[i]);
cout<<number[i];
for(m=i;m<k-i;m++)
{sign[m]=sign[m+1];number[m+1]=number[m+2];}
k--;i--;}
}
for( i=0;i<k;i++)
{ if(sign[i]=='+'||sign[i]=='-')
{number[i]=count(number[i],number[i+1],sign[i]);
cout<<number[i];
for(m=i;m<k-i;m++)
{sign[m]=sign[m+1];number[m+1]=number[m+2];}
k--;i--;}
}
for (i=0;i<3;i++)
{cout<<number[i];
}
cout<<k;
}
2.堆棧
#include "string"
#include "iostream"
#include<vector>
#include<list>
#include<cstdlib>
using namespace std;
//自定義類型 用於存儲 兩種數據類型
class newType
{
public:
bool flag;//true 為f false 為 c
union
{
float f;
char c;
}data;
};
//將字元串轉換為 數字數組和字元數組 (通用提取字元串中數字)
bool couvert(string str,vector<float> &numbers,vector<char> &chars,vector<newType> &all)//這里要使用引用
{
int len=str.length();
bool flag=true;
int pos=0;
for(int i=0;i<len;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<float> numbers,
vector<char> chars,float &value)
{
//計算四者表達式 無括弧類型 1+2*3+4
int ii=0;
//先計算乘除
while(ii<chars.size())
//注意while(ii<(chars.size()-2)) 和while(ii<chars.size()-2) 區別
{
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<chars.size())
//注意while(ii<(chars.size()-2)) 和while(ii<chars.size()-2) 區別
{
switch(chars[ii])
{
case '+':
// cout<<"+::"<<numbers[ii]<<chars[ii]<<numbers[ii+1]<<endl;
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]<<chars[ii]<<numbers[ii+1]<<endl;
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<newType> all,float &value)
{
int pos=0;
vector<float> numbers;
vector<char> chars;
float va=0;
for(int i=0;i<all.size();i++)
{
if (all[i].flag)//判斷是數字還是字元
{
cout<<"數字"<<i<<":"<<all[i].data.f<<endl;
}
else
{
cout<<"字元"<<i<<":"<<all[i].data.c<<endl;
if (all[i].data.c==')') //如果是右括弧 將之前的()之間的括弧內容
{ //用calculate計算 並替換
for (int j=pos+1;j<i;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<all.size();kk++)
{
if (all[kk].flag)
{
numbers.push_back(all[kk].data.f);
} else{
chars.push_back(all[kk].data.c);
}
}
for( i=0;i<all.size();i++)
{
if (all[i].flag)
{
cout<<all[i].data.f<<" ";
} else
{
cout<<all[i].data.c<<" ";
}
}
calculate(numbers,chars,value);
return 1;
} void main()
{
//
string str="10+(2*3+8)+(10*2)";
vector<float> numbers;
vector<char> chars;
vector<newType> all;
couvert(str, numbers, chars,all);
for(int i=0;i<all.size();i++)
{
if (all[i].flag)
{
cout<<all[i].data.f<<" ";
} else
{
cout<<all[i].data.c<<" ";
}
}
float value,value1;
// calculate(numbers,chars,value);
calculate1(all,value1);
cout<<value1;
}
這是我翻家底找到的 .
⑩ C語言作業,編寫一個簡單的計算器,實現加減乘除運算,謝謝大家
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
intcls()
{
system("cls");
return0;
}
intpause()
{
system("pause");
return0;
}
intswitchs(doublea,doubleb,chars)
{
switch(s)
{
case'+':
{
cls();
printf("a+b ");
Sleep(500);
printf("=%0.3lf+%0.3lf ",a,b);
Sleep(500);
printf("=%0.3lf 07",a+b);
Sleep(500);
}break;
case'-':
{
cls();
printf("a-b ");
Sleep(500);
printf("=%0.3lf-%0.3lf ",a,b);
Sleep(500);
printf("=%0.3lf 07",a-b);
Sleep(500);
}break;
case'*':
{
cls();
printf("a*b ");
Sleep(500);
printf("=%0.3lf*%0.3lf ",a,b);
Sleep(500);
printf("=%0.3lf 07",a*b);
Sleep(500);
}break;
case'/':
{
if(b==0)
{
cls();
printf("³ýÊý²»ÄÜΪ0£¡ 07");
Sleep(500);
gotoR;
}
else
{
cls();
printf("a/b ");
Sleep(500);
printf("=%0.3lf/%0.3lf ",a,b);
Sleep(500);
printf("=%0.5lf 07",a/b);
Sleep(500);
}
}break;
default:
{
cls();
printf("error! 07");
Sleep(500);
pause();
cls();
gotoR;
}
}
R:;
}
intmain(void)
{
charc;
doublea,b;
chars;
R: printf("