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

c語言的中括弧運算

發布時間: 2023-04-06 15:40:04

A. c語言中中括弧用什麼表示啊

你的意思可能是,比如數學里有個表達式:
{[(1+2)*2+3]+5}*5,那麼()叫小括弧、【】叫做中括弧、{ }叫大括弧,對吧?
C語言中是沒有中括弧這種說法,全部都只用()小括弧表示,比如要把上面那個數學表達式表示成C語言的表達式時,只需把所有的中括弧和大括弧換成小括弧:(( (1+2)*2+3 )+ 5 )*5. 程序執行的時候從最裡面的小括弧開始執行,一個個向外。

B. C語言中括弧運算符的問題

哈哈,你這是一個逗號表達式。
它將以逗號為界,從左到右依次計算每個表達式的值,最後返回最右邊的表達式的值。
阿明白??

C. c語言中的括弧表達式

括弧表達式計算順序是從左到右,然後整個表達式返回的是最右邊表達式的值,如第一個表達式,先算最內層的括弧表達式的最左邊的值,再把其最右邊的值返回並賦值給b,所以b在此次運算之後變為3,之後b+2=5(但5隻是一個臨時值,b值還是3),之後15+b=18,並且這個值由於是最右的表達式會作為整個大括弧表達式的返回值,即b再一次被賦值為18,然後現計算b+=18得到36;
如此第二個就是-30吧,對了,賦值表達式是從右到左賦值的

D. 用簡單的C語言實現帶括弧的四則運算

#include<stdio.h> /*庫文件包含*/
#include<string.h> /*用於字元串操作*/
#include<stdlib.h> /*用於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�0�8;

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");
}

E. C語言中的括弧運算

理論上來說

增加括弧只會增加編譯的時間 並且對運行的時間是沒有差別的

也就是增加了把你從c/c++代碼變成exe的時間,但是不會影響exe運行的時間

而且 增加一兩個括弧 對於計算機編譯時間的影響是微乎其微的

計算機一秒計算數量以億算 怎麼會差這一個括弧呢

關於代碼運行效率 更應該注意的是演算法,而不是這些語句 那個才能從本質上提高程序運行效率

多行的代碼 運行效率就不一定比單行的要低

作為源代碼重要的一是演算法 二是可讀性 增加括弧和增加有必要的換行不但不會降低運行效率,反而會使代碼更加容易理解 減少歧義的產生

F. c語言中中括弧什麼意思[ ]

該中括弧為數組標識。

int a[6];就是定義一個一維數組,這個數組名叫做 a ,共有6個元素;同理int b[6][6];就是定義一個二維數組,這個數組共有6*6個元素。

定義之後,就可以引用該數組的元素,但不能直接用 a[6] ,a此時包含的元素只有a[0],a[1],a[2],a[3],a[4],a[5]這6個。

C語言支持定義一系列相同連續的變數空間,其定義形式為type name[N];代表定義個數為N,每個元素類型均為type型的數組變數name。

在C中規定,數組元素的下標n是從0開始計數的,所以對於定義的a[100], 其合法的元素為a[0], a[1],.... , a[99]。

(6)c語言的中括弧運算擴展閱讀

標識符(identifier)是指用來標識某個實體的一個符號,在不同的應用環境下有不同的含義。在計算機編程語言中,標識符是用戶編程時使用的名字。

用於給變數、常量、函數、語句塊等命名,以建立起名稱與使用之間的關系。標識符通常由字母和數字以及其它字元構成。

G. C語言,計算器中的括弧怎麼做

用堆棧實現。將含有多重括弧的中綴表達式翻譯成後綴表達式,然後進行計算。步驟是:
從左到右依次檢查每個字元
1.如果該字元是數字,直接加入到輸出隊列中
2.如果該字元是左括弧(,將其加入堆棧
3.如果該字元是右括弧),開始出棧,將棧中元素依次加入到輸出隊列中,直到碰到左括弧'('。左括弧本身不加入隊列。如果棧中沒有左括弧,返回匹配錯誤。
4.如果該字元是非括弧運算符,將該字元的優先順序和棧頂元素作比較。如果優先順序高於棧頂元素則入棧,否則添加到輸出隊列中。
表達式全部檢查完畢後,將棧中所有剩餘元素加入到輸出隊列中。如果棧中含有括弧,返回匹配錯誤。
最後得到的輸出隊列就是後綴表達式。

H. c語言加括弧問題

大括弧{ }用於定義函數體,構成復合語句(語句塊)、聲明聯合(union)及結構體變數。也用於初始化數組、結構體等類型的變數。

中括弧[]用於指明數組下標;在聲明數組時,用於確定數組長度。

小括弧用於聲明函數參數列表,改變表達式運算的方向,向函數傳遞參數。除了上述這些作用外,小括弧也具有在代數運算中相同的作用,另外,在C語言中,代數運算時的中、大括弧都用小括弧代替。