❶ c語言結構標識符後面的圓括弧表示什麼意思
c語言標示符由字母、下劃線、數字組成,不能以數字開頭
這是基礎的知識
另外變數名中不可出現除「_」以外的符號,就像b選項中「.」
❷ 查找c程序中的基本語法錯誤如圓括弧方括弧花括弧的不匹配,如單引號和雙引號要能顯示錯誤信息和錯誤行數
這個不是20分能解決的問題,牽扯的問題太多了。
如果只是圓括弧、方括弧、花括弧不匹配的問題還好,可後面的「等」字把問題搞的復雜得多。
這樣的話C語言里那麼多東西,結構體,數組,變數類型,這些都是基本語法錯誤,可真要面面俱到也就是寫一個預編譯器了。
❸ C語言運算符中圓括弧是單目運算符還是雙目運算符
() 單目 參數表 任何類型 任何類型 15 自左向右
[] 單目 數組下標 任何類型 任何類型 15 自左向右
http://liuyunfeng484.blog.163.com/blog/static/668317152009817739170/
這個裡面有張運算符表,你可以參照上面的判斷你所指的運算符是哪種類型的。
❹ 求一段c語言計算程序代碼,要能正確處理裡面運算符的優先計算順序和圓括弧的優先順序。
看來這個問題還沒有搞定啊,我來幫你搞定吧,稍等~
好了,現在搞定,發給你吧~
為了你方便看,就寫在一個cpp文件里了,比較長,三百多行。我已經編譯通過,也做了簡單測試,沒詳細測,如果有bug,你就自己改一下吧。表達式輸入完了之後直接回車,就出結果了,跟平時輸入字元串一樣。
/**********************************************
算術表達式求值的算符優先順序演算法
利用棧來實現括弧匹配和表達式求值
演算法的詳細說明,請查看清華大學出版社《數據結構》,嚴蔚敏&吳偉民著,3.3節
***********************************************/
#include<stdlib.h>
#include<stdio.h>
#include<ctype.h>
#defineSTACK_INIT_SIZE100//存儲空間初始分配量
#defineSTACKINCREMENT10//存儲空間分配增量
#defineOK0
#defineERROR127
//定義一個順序棧
typedefstruct
{
int*base;//在棧構造之前和銷毀之後,base的值為NULL
int*top;//棧頂指針
intstacksize;//當前已分配的存儲空間,以元素為單位
}SqStack;intInitStack(SqStack*S)
{
//構造一個空棧
S->base=(int*)malloc(STACK_INIT_SIZE*sizeof(SqStack));
if(NULL==S->base)
{//內存分配失敗
returnERROR;
}
S->top=S->base;
S->stacksize=STACK_INIT_SIZE;
returnOK;
}
charGetTop(SqStack*S,char*element)
{
//若棧不空,取棧頂元素,用element返回
if(S->base==S->top)
{
returnERROR;
}
*element=*(S->top-1);
return*element;
}
intPush(SqStack*S,intelement)
{
//插入元素element為新的棧頂元素
if((S->top-S->base)>S->stacksize)
{//棧滿,追加空間
S->base=(int*)realloc(S->base,(STACK_INIT_SIZE+STACKINCREMENT)*sizeof(SqStack));
if(NULL==S->base)
{
returnERROR;
}
S->top=S->base+S->stacksize;
S->stacksize+=STACKINCREMENT;
}
*S->top++=element;
returnOK;
}
intPop(SqStack*S,int*element)
{
//若棧不為空,則刪除棧頂元素,用element返回其值
if(S->top==S->base)
{
returnERROR;
}
*element=*(--S->top);
returnOK;
}
intPopOPTR(SqStack*S,char*element)
{
if(S->top==S->base)
{
returnERROR;
}
*element=*(--S->top);
returnOK;
}
//判斷字元c是否在集合OP中
intInOP(charc,charOP[7])
{
for(inti=0;i<7;i++)
{
if(c==OP[i])
{
returnOK;
}
}
returnERROR;
}
//判斷運算符的優先順序
intCompare(inta,intb)
{
if('+'==a)
{
switch(b)
{
case'+':
return'>';
case'-':
return'>';
case'*':
return'<';
case'/':
return'<';
case'(':
return'<';
case')':
return'>';
case' ':
return'>';
}
}
if('-'==a)
{
switch(b)
{
case'+':
return'>';
case'-':
return'>';
case'*':
return'<';
case'/':
return'<';
case'(':
return'<';
case')':
return'>';
case' ':
return'>';
}
}
if('*'==a)
{
switch(b)
{
case'+':
return'>';
case'-':
return'>';
case'*':
return'>';
case'/':
return'>';
case'(':
return'<';
case')':
return'>';
case' ':
return'>';
}
}
if('/'==a)
{
switch(b)
{
case'+':
return'>';
case'-':
return'>';
case'*':
return'>';
case'/':
return'>';
case'(':
return'<';
case')':
return'>';
case' ':
return'>';
}
}
if('('==a)
{
switch(b)
{
case'+':
return'<';
case'-':
return'<';
case'*':
return'<';
case'/':
return'<';
case'(':
return'<';
case')':
return'=';
}
}
if(')'==a)
{
switch(b)
{
case'+':
return'>';
case'-':
return'>';
case'*':
return'>';
case'/':
return'>';
case')':
return'>';
case' ':
return'>';
}
}
if(' '==a)
{
switch(b)
{
case'+':
return'<';
case'-':
return'<';
case'*':
return'<';
case'/':
return'<';
case'(':
return'<';
case' ':
return'=';
}
}
returnERROR;
}
//簡單計算
intCalculate(intleft,charoper,intright)
{
intresult=0;
switch(oper)
{
case'+':
result=left+right;
break;
case'-':
result=left-right;
break;
case'*':
result=left*right;
break;
case'/':
result=left/right;
break;
}
returnresult;
}
/**********************************************
算術表達式求值的算符優先順序演算法,設OPTR和OPND分別為運算符棧和運算數棧
OP為運算符集合
**********************************************/
intmain()
{
SqStackOPTR,OPND;
intelement=0;
charOPTR_element;
intleftNum,rightNum;
charinput;//獲取輸入
charOP[7]={'+','-','*','/','(',')',' '};
InitStack(&OPTR);
Push(&OPTR,' ');
InitStack(&OPND);
printf("請輸入表達式 ");
input=getchar();
while(' '!=input||' '!=GetTop(&OPTR,&OPTR_element))
{
inttemp=0;
if(isdigit(input))
{//如果是數字
ungetc(input,stdin);//返回給輸入流
scanf("%d",&temp);
Push(&OPND,temp);//數字就進OPND棧
input=getchar();
continue;
}
if(OK==InOP(input,OP))
{
GetTop(&OPTR,&OPTR_element);
switch(Compare(OPTR_element,input))
{
case'<'://棧頂元素優先順序低
Push(&OPTR,input);//運算符進OPTR棧
input=getchar();
break;
case'='://脫括弧
PopOPTR(&OPTR,&OPTR_element);
input=getchar();
break;
case'>'://退棧,並將運算結果入棧
PopOPTR(&OPTR,&OPTR_element);
Pop(&OPND,&rightNum);
Pop(&OPND,&leftNum);
Push(&OPND,Calculate(leftNum,OPTR_element,rightNum));
break;
default:
printf("表達式括弧不匹配 ");
returnERROR;
}//switch
}//if
else
{
printf("表達式內有未知字元,即將退出 ");
returnERROR;
}
}//while
intvalue;
Pop(&OPND,&value);
printf("結果=%d ",value);
returnOK;
}//end
❺ C語言中,條件運算符和圓括弧那個優先等級高
括弧優先順序高,但是比如a==0&&(b==1)這個還是先計算a==0,如果是(1+2)*3當然是先1+2
你要了解原理去看看計算機是怎麼處理這些式子的,和堆和棧有關系,這樣你這么就理解了,就不會搞錯。
❻ c語言中的界符有哪些
界符就是限制界限所用,一般都是成對的雙界符,如 () { } [ ] " " ' ' 等。
C語言雙界符包括以下幾種符號:
花括符{和}
尖括符<和>
圓括符(和)
方括符[和]
注釋符/*和*/
雙引號"
單引號'
❼ 編寫程序,查找C語言中的基本語法錯誤,如圓括弧,方括弧,花括弧的不匹配,單引號,雙引號等。
記得大學學編譯原理的時候做過一個C語言編譯器,能夠詞法分析,語法分析,語義分析,還能調用C編譯器生成exe
現在都忘差不多了
❽ C語言里圓括弧算作運算符嗎
是運算符 單目 優先順序是1
[ ]數組下標 ( )圓括弧 .成員選擇 ->成員選擇 ++ --(後自增 自減)都是優先順序為1的單目運算符
❾ 匯編中圓括弧與方括弧的區別
方括弧是指以方括弧里的值為地址取值。圓括弧是用來做偏移的,意思就是圓括弧裡面的值要加上外面的值