當前位置:首頁 » 編程語言 » c語言表達式計算簡單的
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言表達式計算簡單的

發布時間: 2023-03-25 23:47:24

c語言 算術表達式

1.算術運算符
用於各類數值運算。包括加(+)、減(-)、乘(*)、除(/)、求余(或稱模運算,%)、自增(++)、自減(--)共七種。
2.關系運算符
用於比較運算。包括大於(>)、小於(=)、小於等於(<=)和不等於(!=)六種。
3.邏輯運算符
用於邏輯運算。包括與(&&)、或(||)、非(!)三種。
4.位操作運算符
參與運算的量,按二進制位進行運算。包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<>)六種。
5.賦值運算符
用於賦值運算,分為簡單賦值(=)、復合算術賦值(+=,-=,*=,/=,%=)和復合位運算賦值(&=,|=,^=,>>=,<<=)三類共十一種。
6.條件運算符
這是一個三目運算符,用於條件求值(:)。
7.逗號運算符
用於把若干表達式組合成一個表達式(,)。
8.指針運算符
用於取內容(*)和取地址(&)二種運算。
9.求位元組數運算符
用於計算數據類型所佔的位元組數(sizeof)。
10.特殊運算符
有括弧(),下標[],成員(→,.)等幾種。

⑵ c語言的邏輯表達式運算

第一個,算術運算>邏輯運算,首先計算b+c=9
b-c=-1
這樣三個值都為非0
故而結果不管怎麼樣都是ture(1)
第二個,考察了更多的優先順序問題。首先括弧之外,表達式裡面的!運算優先順序最高,所以有
!7+c-1&&6.5
有0+11&&6.5
11&&6.5
兩側都是非0
故而結果也為ture(1)

⑶ 如何用C語言數據結構的格式實現簡單的算術表達式求值程序

用棧把中綴表達式(輸入的式子)按優先順序轉為後綴表達式(逆波蘭式,即運算符在前,操作數在後),再利用棧變計算邊保存結果用於下一步計算,最後算出式子的答案
以下代碼輸入一個式子(以
=
作為輸入結束標志),輸出結果,負數如-3用0-3表示,支持高位運算
#include
<stdio.h>
#include
<stdlib.h>
#include
<math.h>
#include
<malloc.h>
#define
OK
1
#define
ERROR
-1
typedef
char
SElemType;
typedef
char
Status;
#define
STACK_INIT_SIZE
100000
#define
STACKINCREMENT
2
struct
SqStack
{
SElemType
*base;
SElemType
*top;
int
stacksize;
};
struct
SqStack1
{
int
*base;
int
*top;
int
stacksize;
};
SqStack
OPTR;
SqStack1
OPND;
char
Precede(char
c1,char
c2)
{
if(c1=='+'
||
c1=='-')
{
if(c2=='+'
||
c2=='-'
||
c2==')'
||
c2=='=')
return
'>';
else
return
'<';
}
else
if(c1=='*'
||
c1=='/')
{
if(c2=='(')
return
'<';
else
return
'>';
}
else
if(c1=='(')
{
if(c2==')')
return
'=';
else
return
'<';
}
else
if(c1==')')
return
'>';
else
if(c1=='=')
{
if(c2=='=')
return
'=';
else
return
'<';
}
else
return
'\0';
}
int
In(char
c)
{
if(c=='+'
||
c=='-'
||
c=='*'
||
c=='/'
||
c=='('
||
c==')'
||
c=='=')
return
1;
else
return
0;
}
int
Operrate(int
m,char
b,int
n)
{
switch(b)
{
case
'+':return
m+n;
case
'-':return
m-n;
case
'*':return
m*n;
case
'/':return
m/n;
}
return
0;
}
//操作數
int
InitStack1(SqStack1
&S)
{
S.base=(int
*)malloc(STACK_INIT_SIZE*sizeof(int));
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return
OK;
}
int
Push1(SqStack1
&S,int
e)
{
if(S.top-S.base>=S.stacksize)
{
S.base=(int
*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int));
S.top=S.base+S.stacksize;
S.stacksize=S.stacksize+STACKINCREMENT;
}
*S.top++=e;
return
OK;
}
int
Pop1(SqStack1
&S,int
&e)
{
if(S.top==S.base)
return
ERROR;
e=*
--S.top;
return
OK;
}
int
GetTop1(SqStack1
S)
{
if(S.top==S.base)
return
ERROR;
return
*(S.top-1);
}
//算符
int
InitStack(SqStack
&S)
{
S.base=(SElemType
*)malloc(STACK_INIT_SIZE*sizeof(SElemType));
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return
OK;
}
int
Push(SqStack
&S,SElemType
e)
{
if(S.top-S.base>=S.stacksize)
{
S.base=(SElemType
*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));
S.top=S.base+S.stacksize;
S.stacksize=S.stacksize+STACKINCREMENT;
}
*S.top++=e;
return
OK;
}
int
Pop(SqStack
&S,SElemType
&e)
{
if(S.top==S.base)
return
ERROR;
e=*
--S.top;
return
OK;
}
Status
GetTop(SqStack
S)
{
if(S.top==S.base)
return
ERROR;
return
*(S.top-1);
}
int
Calculate()
{
char
c,theta,p;
int
a,b,i=0,ans,x;
InitStack(OPTR);
Push(OPTR,'=');
InitStack1(OPND);
c=getchar();
while(c!='='
||
GetTop(OPTR)!='=')
{
if(!In(c)
&&
c>='0'
&&
c<='9')
{
Push1(OPND,c-'0');
c=getchar();
while(c>='0'
&&
c<='9')
{
Pop1(OPND,x);
Push1(OPND,x*10+c-'0');
c=getchar();
}
}
else
if(In(c))
{
switch(Precede(GetTop(OPTR),c))
{
case
'<':
Push(OPTR,c);
c=getchar();
break;
case
'=':
Pop(OPTR,p);
c=getchar();
break;
case
'>':
Pop(OPTR,theta);
Pop1(OPND,b);
Pop1(OPND,a);
ans=Operrate(a,theta,b);
Push1(OPND,ans);
break;
}
}
else
{
c=getchar();
}
}
return
GetTop1(OPND);
}
int
main()
{
int
ans;
ans=Calculate();
printf("%d\n",ans);
return
0;
}

⑷ C語言表達式怎麼計算

這個就是考察運算符優先順序,也就是先計算誰,後計算誰, 可以看我下面的截圖,優先順序從上到下從高變低, 高優先順序的優先運算。

1+3>3&&5%2==1 可以等價這個((1+3)> 3)&& ((5%2)== 1)

這個上面加括弧是因為括弧的優先順序最高, 這樣不知你能理解不。


⑸ C語言 從鍵盤輸入一個簡單的數學表達式,計算並顯示該表達式的值 求演算法和程序

我理解的簡單的數學表達式:純數字+運算符+純數字+(回車)
而且這里的運算符指 +,-,*,/ 四種之一,純數字是指整數
如下:
#include <stdio.h>
#define NUMSIZE 10 //操作數長度
int ch_to_num(char a[]); //多位數字元到數值的轉換

void main()
{
char var1[NUMSIZE+1]; //存放第一個操作數字元串,最後一位存放結束符'\0'
char var2[NUMSIZE+1]; //存放第二個操作數字元串,最後一位存放結束符'\0'
char var_op; //存放操作數字元

bool flag1 = false; //用來標記是否已經輸入第一個操作數字元串
bool flag2 = false; //用來標記是否已經輸入第二個操作數字元串
bool flag_op = false; //用來標記是否已經輸入操作符

int num1; //存放第一個操作數值
int num2; //存放第二個操作數值
double result0; //存放運算結果

char current_char;
int i = 0;

printf("請輸入簡單表達式!\n");
scanf("%c", ¤t_char);
while (current_char >= '0' && current_char <= '9')
{//輸入第一個變數
var1[i++] = current_char;
scanf("%c", ¤t_char);
}
if ( i > 0 )
{//第一個操作數合格
flag1 = true; //保存好第一個操作數,改變標記
var1[i] = '\0'; //加入結束符
}
else
{
printf("輸入格式有錯!");
return;
}

if (current_char =='+'||current_char =='-'||current_char =='*'||current_char =='/')
{//操作符為加減乘除,合格
var_op = current_char; //保存操作符
flag_op = true; //改變標記符
}
else
{
printf("輸入格式有錯!");
return;
}

scanf("%c", ¤t_char);
i = 0;
while (current_char >= '0' && current_char <= '9')
{//輸入第二個變數
var2[i++] = current_char;
scanf("%c", ¤t_char);
}
if ( i > 0 )
{//第二個操作數合格
flag2 = true; //保存好第二個操作數,改變標記
var2[i] = '\0'; //加入結束符
}
else
{
printf("輸入格式有錯!");
return;
}

//計算:
num1 = ch_to_num(var1);
num2 = ch_to_num(var2);
switch(var_op)
{
case '+' :
result0 = num1 + num2;
printf("\n%d+%d=%f\n",num1,num2,result0);
break;
case '-' :
result0 = num1 - num2;
printf("\n%d-%d=%f\n",num1,num2,result0);
break;
case '*' :
result0 = num1 * num2;
printf("\n%d*%d=%f\n",num1,num2,result0);
break;
case '/' :
result0 = (num1 + 0.0) / num2;
printf("\n%d/%d=%f\n",num1,num2,result0);
break;
default:
break;
}
}
int ch_to_num(char input[])
{
int sum = 0;
int i = 0;
char ch;
ch = input[i];
while ( ch != '\0')
{
sum = sum * 10 +ch - '0';
i++;
ch = input[i];
}
return sum;
}

⑹ C語言表達式計算步驟

強制轉換的優先順序高於運算符
剩下的就是括弧和四則運算次序了
a+(int)(b/3*(int)
(a+c)/2)%4
1、(int)
(a+c)
強制轉換
2、b/3*(int)
(a+c)/2
自左向右依次進行
3、(int)(b/3*(int)
(a+c)/2
強制轉換
4、(int)(b/3*(int)
(a+c)/2)%4
數據取余
5、a+(int)(b/3*(int)
(a+c)/2)%4

⑺ C語言怎麼進行加法計算給個簡單的程序來

#include"stdio.h"
voidmain()
{
inta,b,c;
scanf("%d%d",&a,&b);
c=a+b;
printf("%d ",c);
getch();
}

⑻ C語言中表達式的值怎麼算

此式即等同於 (4!=3)&&(2)&&(4+1<5)

1代表真,0代表非,則原式即 1&&1&&0 所以值為0。

例如:

-12/5 = -2 只為這個是整數運算,結果只取整數部分。

62 1*(6+7) + 7 *(6+1) = 13 +49 62

3.2 *(6+7+1) = 44.8

(8)c語言表達式計算簡單的擴展閱讀:

一個表達式的賦值和算符的定義以及數值的定義域是有關聯的。

兩個表達式若被說是等值的,表示對於自由變數任意的定值,兩個表達式都會有相同的輸出,即它們代表同一個函數。

一個表達式必須是合式的。亦即,其每個算符都必須有正確的輸入數量,在正確的地方。如表達式2+3便是合式的;而表達式*2+則不是合式的,至少不是算術的一般標記方式。

表達式和其賦值曾在20世紀30年代由阿隆佐·邱奇和Stephen Kleene在其λ演算中被公式化。λ演算對現代數學和電腦編程語言的發展都曾有過重大的影響。