1樓:匿名使用者
我公司使用的編碼規範,不方便發太多,你借鑑一下吧【規則 6-2】在表示式中使用括號,使表示式的運算順序更清晰。由於將運算子的優先順序與結合律熟記是比較困難的,為了防止產生歧義並提高可讀性,即使不加括號時運算順序不會改變,也應當用括號確定表示式的操作順序。正例:
if (((iyear % 4 == 0) && (iyear % 100 != 0)) || (iyear % 400 == 0)) 反例:if (iyear % 4 == 0 && iyear % 100 !
= 0 || iyear % 400 == 0) 【規則 6-3】避免表示式中的附加功能,不要編寫太複雜的複合表示式。正例:aivar[1] = aivar[2] + aivar[3];aivar[4]++;iresult = aivar[1] + aivar[4];aivar[3]++; 反例:
iresult = (aivar[1] = aivar[2] + aivar[3]++) + ++aivar[4] ;
2樓:匿名使用者
#include using namespace std; #define maxsize 99 void trans(char str,char exp) op;
char ch;
int i = 0, t = 0;
op.top = -1;
ch = str[i];
i++;
while (ch != '\0')
op.top--;
break;
case'+':
case'-':
while (op.top != -1 && op.data[op.top] != '(')
op.top++;
op.data[op.top] = ch;
break;
case'*':
case'/':
while (op.top == '/' || op.top == '*')
op.top++;
op.data[op.top] = ch;
break;
case' ':
break;
default:
while (ch >= '0' && ch <= '9')
i--;
exp[t] = '#';
t++;
}ch = str[i];
i++;
}while (op.top != -1)
exp[t] = '\0'; }
float compvalue(char exp) st;
float d;
char ch;
int t = 0;
st.top = -1;
ch = exp[t];
t++;
while (ch != '\0')
st.top--;
break;
default:
;d = 0;
while (ch >= '0' && ch <= '9')
st.top++;
st.data[st.top] = d;
}ch = exp[t];
t++;
}return st.data[st.top]; } int main()
c正規表示式
轉義字元 可接收字元 不可接受字元 匹配前後表示式 分組 連字元 0次或n次 1次或n次 0次或一次 起始字元 結束字元 只能輸入n個字元 至少輸入n個字元 輸入n到m個字元 匹配任何字元除 n 換行字元 d 匹配當個數字 0 9 d 非數字 w 匹配 0 9a za z 第二體 就是一個一個分析就...
表示式求值
從演算法來說,要考慮中綴的運算子優先順序,括號等,可以使用簡單語法制導翻譯,去看編譯原理書吧,從資料結構來說,可以使用二元樹和棧。使用二元樹就是先建立表示式的樹,然後後根遍歷即可。難點在建立樹。使用棧的演算法也很多,說個好想的。假設表示式的字元來自輸入流in,建立棧a存放運算子,b存放結果,從in讀...
C語言的一些表示式,求c語言表示式大全
是給leap 這個物件賦值,賦的值是一個布林型的變數 可以用括號讓表示式明確點。year 4 0 year 100 0 year 400 0 是求餘。意思就是。變數year 對對4整除但是又不對100整除。或者對400整除。本質是求year是否為閏年。如果是閏年,則leap true,否則則leap...