當前位置:首頁 » 編程軟體 » 編程四則運算

編程四則運算

發布時間: 2023-01-03 09:11:24

1. 用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;
}

2. 關於c語言四則運算的簡單編程

大致看了下 你if後面有2個語句 得加花括弧
if (c=43) {answer=a+b;printf("answer=%d",answer);}
ni shishi kan
對了 還要改等號

3. C語言編寫程序四則運演算法

1234567891011121314151617# include <stdio.h>int main(void){ int a,b,s; char c; scanf("%d%c%d",&a,&c,&b); switch(c) { case '+':s=a+b;break; case '-':s=a-b;break; case '*':s=a*b;break; case '/':s=a/b;break; default:return -1; } printf("%d",s); return 0;}

如果還要判斷除數為0的情況 再添個if即可

4. C語言四則運算

/*在TC2 和 VC6下都可以順利運行。
做了一個下午。一定要用我這個噢。
有簡單的輸入錯誤檢測。有完整的說明和
注釋*/

#include /*庫文件包含*/
#include /*用於字元串操作*/
#include /*用於exit函數*/

/**************************************************************************
int check(char *c)
輸入參數:
char *c: 輸入的字元串
返回參數:
0:字元串中有不符合規定的字元
1: 字元串字元符合規定,沒有不符合規定的字元.
功能:
檢查字元串中有否除了 0-9, +,-,*,/,(,),之外的其他字元,
如果有,則返回0, 表示出現錯誤。
若沒有,則返回1,表式字元串符合規定。
**************************************************************************/
int check(char *c)
{
int k=0;
while(*c!='\0')
{
if((*c>='0' && *c<='9') || *c=='+' ||
*c=='-' || *c=='*' || *c=='/' ||
*c=='.' || *c=='(' || *c==')' )
{

}
else
{
printf("input error, there have the char not the math expression char!\n");
return 0;
}

if(*c=='(')
k++;
else if(*c==')')
k--;

c++;
}
if(k!=0)
{
printf("input error, there is not have correct bracket '()'!\n");
return 0;
}
return 1;
}

/**************************************************************************
void move(char *f, double *s,int p)

輸入參數:
char *f : 運算符數組
double *s: 數值數組
int p: 當前運算符數組位置。
返回參數:

功能:
將當前已經完成運算的運算符消去,同時將數值數組的位置調整以進行下一次運算。
傳入值p若為3
則當前符號的數組位置為3.
f[3]=f[3+1].......f[len-2]=f[len-1] f[len-1]='\0';
s[i]=s[i+1].......s[len-1]=s[len] 因為數值比運算符多一個。
***************************************************************************/

void move(char *f, double *s,int p)
{
int i=0,len=strlen(f);
for(i=p; i<len; i++) /*將已經運算過的符號,空出來的位置用後面的符號來填充,*/
{ /*即把乘和除號的位置用後面的加和減號填充*/
f[i]=f[i+1];
s[i]=s[i+1];
}
s[i]=s[i+1];
f[len-1]='\0';
}
/**************************************************************************
double convnum(char *c)
輸入參數:
char *c :由數字和小數點組成的字元,用以轉換成double型的數值。
返回參數:
num:返回轉換好的值。
功能:
將輸入的字元串先將其小數點以前的部分復制到temp[]數組中,
若有小數點,則將小數點之後的數值,也就是小數部分先進行計算,值存入num中
計算完成後,再對整數部分進行計算,值加上小數部分的值,存入num中。
***************************************************************************/
double convnum(char *c)
{
double num=0.0;
double a=1.0;
int i=0,p=0,len=0;
char temp[100];
int tempi=0;
int start=0;
int f=1; /*正負符號指示器,若為1則為正數,為-1,此數為負數*/

len=strlen&;;

if(c[0]=='-')
{
start=1;
f=-1;
}
for(i=start; i<len; i++)
{
if(c[i]=='.')
{
p=i;
break;
}
temp[tempi++]=c[i]; /*將整數部分復制到temp[]中*/
}
temp[tempi]='\0';

if(p!=0)
{
for(i=p+1;i<len;i++) /*將小數部分計算出來*/
{
if(c[i]=='.') /*如果有多餘的小數點,則表示輸入錯誤*/
{
printf("there is more that one dot '.' in number!error!\n");
exit(0);
}
a=a*0.1;
num+=(a*(c[i]-48));
}
}

a=1.0;

len=strlen(temp); /*計算整數部分*/
for(i=len-1;i>=0; i--)
{
num=num+(a*(temp[i]-48));
a*=10;
}

num=num*f;
return num;
}

/**************************************************************************
double good(char *c)
輸入參數:
char *c :即將進行運算的字元串型數學表達式。如3.5+(2*3/5)
返回參數:
s[0]:計算結果將放入s[0]中
功能:
將輸入的字元串中的數字分別調用convnum(char *c)函數進行數值變換,再將其依
次存入doulbe s[i]中,將加減乘除運算符依次存入字元串符號數組 char f[i]中,
然後如果遇到括弧,則將括弧內的字元串存入另一字元數組中,然後用此
good(char *c) 遞歸函數進行遞歸運算。 然後根據先乘除,後加減的順序對已
存入數組的數值根 據存入字元串符號數組的運算符進行運算。結果存入s[0]中。
返回最終結果。
***************************************************************************/
double good(char *c) /*可遞歸函數*/
{ /*取得數值字元串,並調用convnum轉換成double*/
char g[100],number[30]; /*g,保存當前的表達式串,number保存一個數的所有字元*/
char f[80]; /*保存所有的符號的堆棧*/
int fi=0; /*保存符號的位置指針*/
double s[80]; /*保存當前所有的數的一個堆棧*/
int si=0; /*保存數字位置指針*/
int k=0; /* 若k=1則表示有一對括弧*/
int num=0,i=0; /*num保存新括弧內的字元數,i 保存number里的字元位置*/
int cc=0; /*乘除符號數量*/
int jj=0; /*加減符號數量*/

while(*c!='\0')/*當p==1 和k==0時,表示已經把括弧里的內容全部復制到g[100]中了*/
{
k=0;
num=0;

switch(*c)
{
case '+': /*當前字元為+-乘除時則表示*/
case '-':
case '*':
case'/':
f[fi++]=*c;
if(*c=='*' || *c=='/')
cc++;
else
jj++;
if(*(c-1)!=')')
{
number[i]='\0';
i=0;/*完成一個數字的復制,其位置指針i=0*/

s[si++]=convnum(number);
}
break;
case'(': /*有括弧,則將當前括弧作用范圍內的全部字元保存,作為*/
k++; /*一個新的字元表達式進行遞歸調用good函數計算。*/
while(k>0)
{
c++;
g[num]=*c;
num++;
if(*c==')')
{
k--;
}
else if(*c=='(')
{
k++;
}
}
g[num-1]='\0';
num=0;/*完成一個括弧內容的復制,其位置指針num=0*/
s[si++]=good(g);
break;
default:
number[i++]=*c;

if(*(c+1)=='\0')
{ number[i]='\0';
s[si++]=convnum(number);
}
break;
}

c++;
}

f[fi]='\0';

i=0;
while(cc>0)
{
switch(f[i])
{
case '*': cc--;
s[i+1]=s[i]*s[i+1];
move(f,s,i);
break;
case '/': cc--;
s[i+1]=s[i]/(float)s[i+1];
move(f,s,i);
break;
default:
i++;
break;
}
}

i=0;
while(jj>0)
{
switch(f[i])
{
case '+': s[i+1]=s[i]+s[i+1];
jj--;
move(f,s,i);
break;
case '-': s[i+1]=s[i]-s[i+1];
jj--;
move(f,s,i);
break;
default:
printf("operator error!");
break;
}
}

return s[0];
}

void main()
{
char str[100];
double sum=0;
int p=1;

while(1)
{
printf("enter expression: enter 'exit' end of program\n");
scanf("%s",str);
p=strcmp(str,"exit");
if(p==0)
break;
p=check(str);

if(p==0)
continue;
sum=good(str);
printf("%s=%f",str,sum);
printf("\n");
}
printf("good bye!\n");
}

例:
enter expression: enter 'exit' end of program
3.5+(12.3*15+8-(3/2+1))*2+(3.2*3-5)/6(輸入)
3.5+(12.3*15+8-(3/2+1))*2+(3.2*3-5)/6=384.266667
enter expression: enter 'exit' end of program
china(輸入)
input error, there have the char not the math expression char!
enter expression: enter 'exit' end of program
exit(輸入)
good bye!

5. 編寫一個程序完成兩個數的四則運算

#include<stdio.h>intmain(){
inta,b;
printf("請輸入兩個數 :");
scanf("%d%d",&a,&b);

//加法
printf("%d+%d=%d ",a,b,a+b);

//減法
printf("%d-%d=%d ",a,b,a-b);

//乘法
printf("%d*%d=%d ",a,b,a*b);

//除法
if(0==b)
printf("除數不能為0 ");
else
printf("%d/%d=%.2f ",a,b,(float)a/b);
return0;}

6. 四則運算/編程

假設你的表達式沒有錯誤,和沒有函數
A1,建立三個棧,一個是數值,用來放表達式的數值和括弧,一個是符號,用來放符號;
A2,讀數,是否是最後一個,是到A5,否則到A3
A3,當數是數值,放入數值棧;是符號,+,-放入符號棧,*,/,再讀一數,再從數值棧取一數,兩數結果放入,數值棧;返回A2;當是(,放入數值棧,要是是),到A4;
A4,數值棧取兩數,符號棧取一符號運算結果放入數值棧,檢測數值棧最上面的值是否為(,是,取出(,返回A2;不是,返回A4;
A5,符號棧是否為空,是結束程序,不是取一符號兩數值運算結果入數值棧,返回A5。

===========================
===========================
A1,建立兩個棧,一個是數值,用來放表達式的數值,一個是符號,用來放符號+-*/,到A5;
A2,讀數,是否是換行符,是到A4,否則到A3;
A3,當數是數值,放入數值棧;是符號,+,-放入符號棧,*,/,再讀一數,再從數值出棧一數,兩數算得結果壓入數值棧;返回A2;
A4,符號棧是否為空,是輸出,再到A5;不是出一符號並與兩數值運算結果壓入數值棧,返回A4;
A5,還有新行嗎,有到A2,沒有就結束;

7. c語言里的四則運算

下面是個完整的程序,我測試通過符合你的要求,你在看看,我寫的模塊化實現,給你貼的有些亂,
函數聲明如果在一個.c 文件把所有的子函數都在前面在聲明一下,不是很復雜,

#include <stdio.h>
#include <math.h>
(#include "head.h" ) //自己定義的一定要用雙引號括起來
//如果用尖括弧就會出錯
//這里包含的.h 文件時各個子函數的聲明可以去掉
//函數功能:實現了減加乘除運算
void main()
{
void (*p)(float ,float); //定義指向函數的指針變數
float a,b; //上面的語句有些難度,相當於一個函數
char logo;
puts("輸入兩個數和想要的操作:\n");
scanf("%f%c%f",&a,&logo,&b);
while(1)
{switch(logo)
{
if((logo=='+')&&(logo=='-')&&(logo=='/')&&(logo=='*'))
{case '+': p = sum; (*p)(a,b);break; //這里就把指針給加
case '-': p = subtraction; (*p)(a,b);break; //同上
case '/': p = division; (*p)(a,b);break; //同上 給除
case '*': p = multiplication; (*p)(a,b);break;
default:break;
}
else
printf("輸入錯誤重新輸入")
}

}
}
#include <stdio.h>
#include <math.h>

void division(float a,float b)
{
float div;
div=a/b;
printf("%.3f\n",div);
}
#include <stdio.h>
#include <math.h>
void multiplication(float a,float b)
{
float mul;
mul=a*b;
printf("%.3f\n",mul);
}
#include <stdio.h>
#include <math.h>
void subtraction(float a,float b)
{
float ch;
ch=a-b;
printf("%.3f\n",ch);

}
#include <stdio.h>
#include <math.h>

void sum(float a,float b)
{
float he;
he=a+b;
printf("%.3f\n",he);
}

8. C語言怎麼實現任意兩個數的四則運算

C語言實現任意兩個數的四則運算的方法:

1、閱讀代碼,使用了隨機函數:srand(unsigned( time(NULL)));通過調用隨機函數,將生成的100以內的隨機整數賦給不同的變數,一部分用於四則運算式數據的來源,而賦給變數c的隨機數則用於結合switch語句控製程序跳轉執行 不同的分支,即不同的四則運算,如下:

c = rand() % 5; //隨機產生小於5的非負整數

switch (c)

case 0:

case 1:

...........

case 5:

2、使用while語句控制除數不為0

while (b == 0)

{

b = rand() % 1; //若b=0則重新生成b,直到b不為0

}

3、使用if語句判斷減數與被減數的大小。

if (a > b) //使a<b

{

d = a;

a = b;

b = d;

}

if (m > n) //使m<n

{

d = m;

m = n;

n = d;

}

通過if判斷並賦值的手段保證結果不出現負數

4、 原代碼僅能一次性生成20個隨機的四則運算式,而無法從鍵盤輸入結果並判斷答案正確與否。

5、修改代碼。由於原代碼無法從鍵盤讀入數據,所以對其進行了改進。

(1)增加鍵盤讀入功能

scanf("%d",&x);

從鍵盤讀入輸入的答案

(2)對答案進行正確與否的判斷

if(x == (a+b))

printf("You are right! ");

else

printf("You are wrong! ");

通過比較輸入答案與運算得出的答案告知用戶計算是否正確。

6、上傳源代碼至GitHub。

9. C語言編程問題。實現普通四則運算

#include<stdio.h>
main()
{
inti=1,flag=0;
doublea=0,b=0,result=0;
charsym;
printf("(%d) ",i);
scanf("%lf%c%lf",&a,&sym,&b);
while(sym!='#')
{
switch(sym)
{
case'+':
result=a+b;
break;
case'-':
result=a-b;
break;
case'*':
result=a*b;
break;
case'/':
result=a/b;
break;
default:
if(b==0)flag=2;
}
if(flag==0)
{
printf("%lf ",result);
i++;
}
elseflag=2;
printf("(%d) ",i);
scanf("%lf%c%lf",&a,&sym,&b);
}
}

樓主程序實現能力有待提升啊

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:593
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:888
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:581
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:765
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:684
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1013
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:255
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:114
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:806
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:712