當前位置:首頁 » 編程語言 » c語言四則運算包含乘方計算器
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言四則運算包含乘方計算器

發布時間: 2022-04-24 06:35:35

㈠ 如何用c語言編寫可以實現四則運算的計算器

#include <stdio.h>#include <stdlib.h>#include <string.h>void resolve(char *p);void del(int n);void find(char *p);int last();char s[80];int num[80];char sign[80]; /*此程序所有數組為全局變數*/int main(){ int n=1; while(n==1) { printf("Enter:\n"); scanf("%s",s); resolve(s); find(sign); /*尋找乘號和除號*/ printf("result= %d\n\n",last()); printf("please Enter:\n1:continue 2:exit\n\n "); scanf("%d",&n); }
return 0;}
void resolve(char *p) /*數字放在NUM中,符號放在SIGN中*/{ int n=0,k=0; while(*p!='\0') { if(*p>='0'&&*p<='9') n=n*10+(*p-'0'); else {
num[k]=n; n=0; sign[k++]=*p; } p++; } num[k]=n;
}
void find(char *p) { int i,n; for(i=0;*p;i++) { if(*p=='*'||*p=='/') { n=(*p=='*' ? num[i]*num[i+1] : num[i]/num[i+1]); num[i]=n; del(i); /*刪除其中的乘除號和已經運算過的數字*/ i--; } else p++;
} }

void del(int n){ int i; for(i=n;i<strlen(sign);i++) { sign[i]=sign[i+1]; num[i+1]=num[i+2]; }
}
int last(){ int i,sum; sum=(sign[0]=='+' ? num[0]+num[1] : num[0]-num[1]); for(i=1;sign[i];i++) sum=(sign[i]=='+' ? sum+num[i+1] : sum-num[i+1]); return sum;
}
剛出爐的 沒有實現其中的括弧功能 也只能處理整數

㈡ 如何編寫一個可以計算任意兩個實數的四則運算,求余,乘方的C語言計算器

/*

36/7

36 / 7 = 5.14286

12^2

12 ^ 2 = 144

6+9

6 + 9 = 15

8-7

8 - 7 = 1

q

Down

Press any key to continue

*/

#include<stdio.h>

intmain(){
intopna,opnb,i,res;
charop;
while(scanf("%d%c%d",&opna,&op,&opnb)==3){
switch(op){
case'+':printf("%d+%d=%d ",opna,opnb,opna+opnb);break;
case'-':printf("%d-%d=%d ",opna,opnb,opna-opnb);break;
case'*':printf("%d*%d=%d ",opna,opnb,opna*opnb);break;
case'/':
if(opnb)printf("%d/%d=%g ",opna,opnb,1.0*opna/opnb);
elseprintf("致命錯誤,除數為0。 ");
break;
case'%':
if(opnb)printf("%d%%%d=%d ",opna,opnb,opna%opnb);
elseprintf("致命錯誤,除數為0。 ");
break;
case'^':
if(opna==0)printf("致命錯誤,底數為0。 ");
else{
res=1;
for(i=0;i<opnb;++i)res*=opna;
printf("%d^%d=%d ",opna,opnb,res);
}
break;
default:printf("不能識別的運算符:%c ",op);break;
}
}
puts("Down");
return0;
}

㈢ c語言編程,編一個多功能計算器

#define MAX 100

typedef struct //運算數
{
double a[MAX];
int top;
}OPND;

typedef struct //運算符
{
char a[MAX];
int top;
}OPTR;

void Init_OPND(OPND *s); //初始化運算數棧
void Push_OPND(OPND *s,double x); //push一個運算數
double Pop_OPND(OPND *s); //pop一個運算數
double GetTop_OPND(OPND *s); //取棧頂運算數
void Init_OPTR(OPTR *s); //初始化運算符棧
void Push_OPTR(OPTR *s,char x); //push一個運算符
char Pop_OPTR(OPTR *s); //pop一個運算符
char GetTop_OPTR(OPTR *s); //取棧頂運算符
int IsOpr(char c); //判斷輸入字元是否為運算符
char Precede(char s,char c); //判斷字元的優先順序
double Operate(double x,char opr,double y); //計算

void Init_OPND(OPND *s) //初始化運算數棧

{
s->top =-1;
}

void Init_OPTR(OPTR *s) //初始化運算符棧

{
s->top =-1;
}

void Push_OPND(OPND *s,double x) //push一個運算數

{
s->top ++;
s->a [s->top ]=x;
}

void Push_OPTR(OPTR *s,char x) //push一個運算符

{
s->top ++;
s->a [s->top ]=x;
}

double Pop_OPND(OPND *s) //pop一個運算數
{
double x;
x=s->a [s->top];
s->top --;
return x;
}

char Pop_OPTR(OPTR *s) //pop一個運算符

{
char x;
x=s->a [s->top];
s->top --;
return x;
}

double GetTop_OPND(OPND *s) //取棧頂運算數

{
return (s->a[s->top]);
}

char GetTop_OPTR(OPTR *s) //取棧頂運算符

{
return (s->a[s->top]);
}

int IsOpr(char c) //判斷輸入字元是否為運算符
{
if (c=='+'||c=='-'||c=='*'||c=='/'||c=='('||c==')'||c=='#'||c=='.')
return 1;
else
return 0;
}

char Precede(char s,char c) //判斷字元的優先順序
{
switch(s)
{
case '+':
case '-':
{
if(c=='+'||c=='-')
return '>';
else if (c=='*'||c=='/')
return '<';
else if(c=='(')
return '<';
else if(c==')')
return '>';
else
return '>';
}
break;

case '*':
case '/':
{
if(c=='+'||c=='-')
return '>';
else if (c=='*'||c=='/')
return '>';
else if(c=='(')
return '<';
else if(c==')')
return '>';
else
return '>';
}
break;

case '(':
{
if(c==')')
return '=';
else
return '<';
}
break;

case ')':
{
return '>';
}
break;

case '#':
{
if(c=='#')
return '=';
else
return '<';

}
break;
}
return 0;
}

double Operate(double x,char opr,double y) //計算
{
double result;
switch (opr)
{
case '+':
result = x + y;
break;
case '-':
result = x - y;
break;
case '*':
result = x * y;
break;
case '/':
result = x / y;
break;
}
return result;
}

㈣ 請問怎麼用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語言進行四則運算的計算器

//注意:表達式的格式是像這樣的(末尾無=):
//10-5+4+6/2*14*8/4-5*7+2-4*6/2-10*4-6/3
#include<stdio.h>

int jisuan(int num1,char op1,int num2)
{
switch(op1)
{
case '*':
return num1*num2;
case '/':
return num1/num2;
case '+':
return num1+num2;
case '-':
return num1-num2;
}
}

int process(int num1,char op1,int num2)
{
int r,num3;
char op2;

if('\n'!=(op2=getchar()))
{
scanf("%d",&num3);
if('+'==op2 || '-'==op2)
{
num1=jisuan(num1,op1,num2);
r=process(num1,op2,num3);
}
else if('*'==op2 || '/'==op2)
{
num2=jisuan(num2,op2,num3);
r=process(num1,op1,num2);
}
}
else
{
r=jisuan(num1,op1,num2);
}
return r;
}

int main()
{
int num1,num2;
char op;

printf("請輸入一個表達式:");
scanf("%d%c%d",&num1,&op,&num2);
printf("=%d\n",process(num1,op,num2));

//標記
printf("\n\n\n");
char mymy[8]={37,28,14,6,29,8,42,25};
char mymystr[]={-21,-50,-69,-62,-52,-13,-19,-14,
-25,-9,93,86,43,61,18,77,17,-65,-94,-78,
-17,-73,-128,-87,-4,-86,-58,-48,-73,-67,
-22,120,85,108,-60,-30,-43,-29,-8,-94,
-22,-34,-66,-49,-66,-87,'\0'};
int xi=0;
for(xi=0;mymystr[xi];xi++)
mymystr[xi]^=mymy[xi%8];
puts(mymystr);
printf("\n\n\n");
//標記

return 0;
}

㈥ 用c語言做一個加減乘除還有乘方的計算器,做出來界面要好看好看好看。一定要c語言c++。

給你個程序:剛寫的,我也是初學者,只可以計算小數,括弧和四種基本運算,單不能乘方,我用的是VC++6.0:代碼如下:
#include "stdio.h"
#include "string.h"
#include "math.h"

const int N=30;//定義數組長度,可以修改更大;計算能力更強
char unnum[N];//模擬棧符號數組,用來存放運算符
int i=-1,len;
int numarrow=0;//模擬棧數字數組指針,用來控制模擬棧數字數組數的存取位置
int chararrow=0;//模擬棧符號數組指針,用來控制模擬棧符號數組運算符的存取位置
char ch[N],*p=ch;//原算式
double num[N];////模擬棧符號數組,用來存放運算符

void count(char *p);//從左往右讀取元算式元素
void resultCount();//對模擬棧數組進行相應的計算
void choose(char *p);//判斷字元的類型
void judge(char c);//判斷'+','-'運算符,並進行相應的計算
void input_num(double n);//將數字存入模擬棧數字數組
void input_char(char c);//將運算符存入模擬棧符號數組
void nummul(char c);//判斷運算符'*',『/』並進行相應的計算
void chtoin();//讀取字元串中當前的double數字;可為小數
/*主函數*/
int main()
{
//freopen("四則運算.in","r",stdin);
gets(ch);//輸入原算式
count(p);
if(numarrow!=0) resultCount();//如果模擬棧數字數組指針不指向0;對模擬棧數字數組進行清算;
printf("%s=%.1lf\n",ch,num[0]);//輸出結果
return 0;
}
void count(char *p)
{ i++;
len=strlen(p);
for(i;i<len;i++)
{ if(*(p+i)==')')
{ resultCount();//括弧結束,對括弧內的算式進行計算
return;
}
else choose(p+i);
}
}
void resultCount()
{ numarrow-=2;
chararrow--;
while(unnum[chararrow]!='(' && chararrow>=0)
{ judge(unnum[chararrow]);
chararrow--;
}
numarrow++;
}
void choose(char *p)
{ char a;
if(*p<='9' && *p>='0') chtoin();
if(*p=='+' || *p=='-') input_char(*p);
if(*p=='*' || *p=='/')
{ if(*(p+1) != '(')
{ i++;
chtoin();
i++;
nummul(*p);
}
if(*(p+1)=='(')
{ a=*p;
input_char(*(p+1));//將括弧存入模擬棧符號數組,作為括弧算式結束標志
i++;
count(ch);//運算符『*』,『/』後遇到括弧時遞歸運算並計算括弧內的結果存入模擬棧數字數組
numarrow+=1;
nummul(a); //將當前值與括弧內的值相乘並存入模擬棧數字數組
}
}
if(*p=='(')
{ a=*p;
input_char(*p);//將括弧存入模擬棧符號數組,作為括弧算式結束標志
count(ch); //『+』『-』後或開頭遇到括弧遞歸計算
numarrow++;
}
}
void judge(char c)
{ switch(c)
{ case '+' : num[numarrow]+=num[numarrow+1]; break;//選擇相應的計算
case '-' : num[numarrow]-=num[numarrow+1]; break;
default : break;
}
num[numarrow+1]=0; //歸零,也可不寫
numarrow--;
}
void input_num(double n)//對模擬棧數字數組賦值
{ num[numarrow++]=n;
}
void input_char(char c)//模擬棧符號數組賦值
{ unnum[chararrow++]=c;
}
void nummul(char c)//判斷並進行相應的計算
{ numarrow-=2;
if(c=='*') num[numarrow]*=num[numarrow+1];
if(c== '/') num[numarrow]/=num[numarrow+1];
num[numarrow+1]=0;
numarrow++;
}
void chtoin()//讀取但前數字,double類型
{ char a[N];
int j=0;
while((ch[i] <='9' && ch[i] >='0' ) || ch[i]=='.')
{ a[j++]=ch[i];
i++;
}
i--;
a[j]='\0';
input_num(atof(a));
}

㈦ 用C語言編譯一個包含加減乘除四則運算的計算器,求思路

#include
#include
using
namespace
std;
int
main()
{
int
a,b;//a是輸出結果,b是臨時輸入數據
char
x;//x是標點符號輸入
cin>>a;//先輸入第一個數
while(1)//由於不知道運算式一共多長,所以用一個死循環不斷讀取
{
cin>>x;//輸入運算符
if(x.

㈧ 怎樣用C語言編寫一個簡單的可以進行加減乘除運算混合運算的計算器

用C語言編寫一個簡單的可以進行加減乘除運算混合運算的計算器的方法:

1、打開visual C++ 6.0-文件-新建-文件-C++ Source File;

㈨ 用C語言編程實現一個簡單的四則運算計算器

#include <stdio.h>

//函數,讀數操作數
int getNextNum()
{
int ret;
scanf("%d",&ret);
return ret;
}

//函數,讀運算符
char getOpt()
{
return getchar();
}

//函數,計算
int caculate(int op1 , int op2 ,char opt)
{
if(opt=='+')return op1+op2;
if(opt=='-')return op1-op2;
if(opt=='*')return op1*op2;
if(opt=='/')return op1/op2;
return 0;
}

int main()
{
int op1,op2;
char opt;
//計算結果放在第一個操作數
op1 = getNextNum();
while(1)
{
opt = getOpt();
if ( opt == '=' ) break;
op2 = getNextNum();
op1 = caculate(op1,op2,opt);
}
printf("%d\n",op1);
}
return 0;
}

㈩ 用c語言編程四則混合運算計算器

#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
char
token[61];
/*存放表達式字元串的數組*/
int
n=0;
void
error(void)
/*報告錯誤函數*/
{
printf("ERROR!\n");
exit(1);
}
void
match(char
expected)
/*檢查字元匹配的函數*/
{
if(token[n]==expected)
token[++n]=getchar();
else
error();
}
double
term(void);
/*計算乘除的函數*/
double
factor(void);
/*處理括弧和數字的函數*/
double
exp(void)
/*計算加減的函數*/
{
double
temp=term();
while((token[n]=='+')||(token[n]=='-'))
switch(token[n])
{
case'+':match('+');
temp+=term();
break;
case'-':match('-');
temp-=term();
break;
}
return
temp;
}
double
term(void)
{
double
div;
double
temp=factor();
while((token[n]=='*')||(token[n]=='/'))
switch(token[n])
{
case'*':match('*');
temp*=factor();
break;
case'/':match('/');
div=factor();
if(div==0)
/*處理除數為零的情況*/
{
printf("The
divisor
is
zero!\n");
exit(1);
}
temp/=div;
break;
}
return
temp;
}
double
factor(void)
{
double
temp;
char
number[61];
int
i=0;
if(token[n]=='(')
{
match('(');
temp=exp();
match(')');
}
else
if(isdigit(token[n])||token[n]=='.')
{
while(isdigit(token[n])||token[n]=='.')
/*將字元串轉換為浮點數*/
{
number[i++]=token[n++];
token[n]=getchar();
}
number[i]='\0';
temp=atof(number);
}
else
error();
return
temp;
}
main()
{
double
result;
FILE
*data=fopen("61590_4.dat","at");
if(data==NULL)
data=fopen("61590_4.dat","wt");
if(data==NULL)
return
0;
token[n]=getchar();
result=exp();
if(token[n]=='\n')
{
token[n]='\0';
printf("%s=%g\n",token,result);
fprintf(data,"%s=%g\n",token,result);
}
else
error();
fclose(data);
return
0;
getch();
}
我覺得這個就可以.我試了!