Excel如何設置動態求和 Excel設置動態求和方法
703
2025-04-06
/* 在BC31下編譯 */
/* compile under Borland C++ 3.1 */
/*
對四則混合運算所提取的形式化表達式(生成式)
*/
#include
#include
char token; /*全局標志變量*/
/*遞歸調用的函數原型*/
int exp( void );
int term( void );
int factor( void );
void error( void ) /*報告出錯信息的函數*/
{
fprintf( stderr, "錯誤\n");
exit( 1 );
}
void match( char expectedToken ) /*對當前的標志進行匹配*/
{
if( token == expectedToken ) token = getchar(); /*匹配成功,獲取下一個標志*/
else error(); /*匹配不成功,報告錯誤*/
}
void Message(void)
{
printf("================================================================\n");
printf("* 遞歸實現的四則運算表達式求值程序 *\n");
printf("****************************************************************\n");
printf("使用方法:請從鍵盤上直接輸入表達式,以回車鍵結束.如45*(12-2)[回車]\n");
printf("*****************************************************************\n\n");
}
main()
{
int result; /*運算的結果*/
Message();
printf(" >> 請輸入表達式: ");
token = getchar(); /*載入第一個符號*/
result = exp(); /*進行計算*/
if( token == '\n' ) /* 是否一行結束 */
printf( " >> 表達式的計算結果為 : %d\n", result );
else error(); /* 出現了例外的字符 */
puts("\n\n 請按任意鍵退出 ...\n");
getch();
return 0;
}
int exp( void )
{
int temp = term(); /*計算比加減運算優先級別高的部分*/
while(( token == '+' ) || ( token == '-' ))
switch( token ) {
case '+': match('+'); /*加法*/
temp += term();
break;
case '-': match('-');
temp -= term(); /*減法*/
break;
}
return temp;
}
int term( void )
{
int div; /*除數*/
int temp = factor(); /*計算比乘除運算優先級別高的部分*/
while(( token == '*' ) || ( token == '/' ))
switch( token ) {
case '*': match('*'); /*乘法*/
temp *= factor();
break;
case '/': match('/'); /*除法*/
div = factor();
if( div == 0 ) /*需要判斷除數是否為0*/
{
fprintf( stderr, "除數為0.\n" );
exit(1);
}
temp /= div;
break;
}
return temp;
}
int factor( void )
{
int temp;
if( token == '(' ) /*帶有括號的運算*/
{
match( '(' );
temp = exp();
match(')');
}
else if ( isdigit( token )) /*實際的數字*/
{
ungetc( token, stdin ); /*將讀入的字符退還給輸入流*/
scanf( "%d", &temp ); /*讀出數字*/
token = getchar(); /*讀出當前的標志*/
}
else error(); /*不是括號也不是數字*/
return temp;
}
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。