亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? chap24.lst

?? These files contain all of the code listings in C: The Complete Reference, 4th Edition The so
?? LST
字號:
listing 1
#define DELIMITER 1
#define VARIABLE  2
#define NUMBER    3

extern char *prog;  /* points to the expression to be analyzed */
char token[80];
char tok_type;

/* Return the next token. */
void get_token(void)
{
  register char *temp;

  tok_type = 0;
  temp = token;
  *temp = '\0';

  if(!*prog) return; /* at end of expression */
  while(isspace(*prog)) ++prog;  /* skip over white space */

  if(strchr("+-*/%^=()", *prog)){
    tok_type = DELIMITER;
    /* advance to next char */
    *temp++ = *prog++;
  }
  else if(isalpha(*prog)) {
    while(!isdelim(*prog)) *temp++ = *prog++;
    tok_type = VARIABLE;
  }
  else if(isdigit(*prog)) {
    while(!isdelim(*prog)) *temp++ = *prog++;
    tok_type = NUMBER;
  }

  *temp = '\0';
}

/* Return true if c is a delimiter. */
int isdelim(char c)
{
  if(strchr(" +-/*%^=()", c) || c==9 || c=='\r' || c==0)
    return 1;
  return 0;
}

listing 2
/* This module contains a simple expression parser
   that does not recognize variables.
*/

#include <stdlib.h>
#include <ctype.h>
#include <stdio.h>
#include <string.h>

#define DELIMITER 1
#define VARIABLE  2
#define NUMBER    3

extern char *prog;   /* holds expression to be analyzed */
char token[80];
char tok_type;

void eval_exp(double *answer), eval_exp2(double *answer);
void eval_exp3(double *answer), eval_exp4(double *answer);
void eval_exp5(double *answer), eval_exp6(double *answer);
void atom(double *answer);
void get_token(void), putback(void);
void serror(int error);
int isdelim(char c);

/* Parser entry point. */
void eval_exp(double *answer)
{
  get_token();
  if(!*token) {
    serror(2);
    return;
  }
  eval_exp2(answer);

  if(*token) serror(0); /* last token must be null */
}

/* Add or subtract two terms. */
void eval_exp2(double *answer)
{
  register char  op;
  double temp;

  eval_exp3(answer);
  while((op = *token) == '+' || op == '-') {
    get_token();
    eval_exp3(&temp);
    switch(op) {
      case '-':
        *answer = *answer - temp;
        break;
      case '+':
        *answer = *answer + temp;
        break;
    }
  }
}

/* Multiply or divide two factors. */
void eval_exp3(double *answer)
{
  register char op;
  double temp;

  eval_exp4(answer);
  while((op = *token) == '*' || op == '/' || op == '%') {
    get_token();
    eval_exp4(&temp);
    switch(op) {
      case '*':
        *answer = *answer * temp;
        break;
      case '/':
        if(temp == 0.0) {
          serror(3); /* division by zero */
          *answer = 0.0;
        } else *answer = *answer / temp;
        break;
      case '%':
        *answer = (int) *answer % (int) temp;
        break;
    }
  }
}

/* Process an exponent */
void eval_exp4(double *answer)
{
  double temp, ex;
  register int t;

  eval_exp5(answer);

  if(*token == '^') {
    get_token();
    eval_exp4(&temp);
    ex = *answer;
    if(temp==0.0) {
      *answer = 1.0;
      return;
    }
    for(t=temp-1; t>0; --t) *answer = (*answer) * (double)ex;
  }
}

/* Evaluate a unary + or -. */
void eval_exp5(double *answer)
{
  register char  op;

  op = 0;
  if((tok_type == DELIMITER) && *token=='+' || *token == '-') {
    op = *token;
    get_token();
  }
  eval_exp6(answer);
  if(op == '-') *answer = -(*answer);
}

/* Process a parenthesized expression. */
void eval_exp6(double *answer)
{
  if((*token == '(')) {
    get_token();
    eval_exp2(answer);
    if(*token != ')')
      serror(1);
    get_token();
  }
  else
    atom(answer);
}

/* Get the value of a number. */
void atom(double *answer)
{
  if(tok_type == NUMBER) {
    *answer = atof(token);
    get_token();
    return;
  }
  serror(0);  /* otherwise syntax error in expression */
}

/* Return a token to the input stream. */
void putback(void)
{
  char *t;

  t = token;
  for(; *t; t++) prog--;
}

/* Display a syntax error. */
void serror(int error)
{
  static char *e[]= {
      "Syntax Error",
      "Unbalanced Parentheses",
      "No Expression Present",
      "Division by Zero"
  };
  printf("%s\n", e[error]);
}

/* Return the next token. */
void get_token(void)
{
  register char *temp;

  tok_type = 0;
  temp = token;
  *temp = '\0';

  if(!*prog) return; /* at end of expression */
  while(isspace(*prog)) ++prog; /* skip over white space */

  if(strchr("+-*/%^=()", *prog)){
    tok_type = DELIMITER;
    /* advance to next char */
    *temp++ = *prog++;
  }
  else if(isalpha(*prog)) {
    while(!isdelim(*prog)) *temp++ = *prog++;
    tok_type = VARIABLE;
  }
  else if(isdigit(*prog)) {
    while(!isdelim(*prog)) *temp++ = *prog++;
    tok_type = NUMBER;
  }

  *temp = '\0';
}

/* Return true if c is a delimiter. */
int isdelim(char c)
{

  if(strchr(" +-/*%^=()", c) || c==9 || c=='\r' || c==0)
    return 1;
  return 0;
}

listing 3
/* Parser demo program. */
#include <stdlib.h>
#include <ctype.h>
#include <stdio.h>
#include <string.h>

char *prog;
void eval_exp(double *answer);

int main(void)
{
  double answer;
  char *p;

  p = (char *) malloc(100);
  if(!p) {
    printf("Allocation failure.\n");
    exit(1);
  }

  /* Process expressions until a blank line
     is entered.
  */
  do {
    prog = p;
    printf("Enter expression: ");
    gets(prog);
    if(!*prog) break;
    eval_exp(&answer);
    printf("Answer is: %.2f\n", answer);
  } while(*p);

  return 0;
}

listing 4
/* Return the value of a variable. */
double find_var(char *s)
{
  if(!isalpha(*s)){
    serror(1);
    return 0;
  }
  return vars[toupper(*token)-'A'];
}

listing 5
/* Get the value of a number or a variable. */
void atom(double *answer)
{
  switch(tok_type) {
    case VARIABLE:
      *answer = find_var(token);
      get_token();
      return;
    case NUMBER:
      *answer = atof(token);
      get_token();
      return;
    default:
      serror(0);
  }
}

listing 6
/* Process an assignment. */
void eval_exp1(double *result)
{
  int slot, ttok_type;
  char temp_token[80];

  if(tok_type == VARIABLE) {
    /* save old token */
    strcpy(temp_token, token);
    ttok_type = tok_type;

    /* compute the index of the variable */
    slot = toupper(*token) - 'A';

    get_token();
    if(*token != '=') {
      putback(); /* return current token */
      /* restore old token - not assignment */
      strcpy(token, temp_token);
      tok_type = ttok_type;
    }
    else {
      get_token(); /* get next part of exp */
      eval_exp2(result);
      vars[slot] = *result;
      return;
    }
  }

  eval_exp2(result);
}

listing 7
/* Return a token to the input stream. */
void putback(void)
{
  char *t;

  t = token;
  for(; *t; t++) prog--;
}

listing 8
/* This module contains the recursive descent
   parser that recognizes variables.
*/

#include <stdlib.h>
#include <ctype.h>
#include <stdio.h>
#include <string.h>

#define DELIMITER 1
#define VARIABLE  2
#define NUMBER    3

extern char *prog; /* points to the expression to be analyzed */
char token[80];
char tok_type;

double vars[26] = { /* 26 user variables,  A-Z */
 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
 0.0, 0.0, 0.0, 0.0, 0.0, 0.0
};

void eval_exp(double *answer), eval_exp2(double *answer);
void eval_exp1(double *result);
void eval_exp3(double *answer), eval_exp4(double *answer);
void eval_exp5(double *answer), eval_exp6(double *answer);
void atom(double *answer);
void get_token(void), putback(void);
void serror(int error);
double find_var(char *s);
int isdelim(char c);

/* Parser entry point. */
void eval_exp(double *answer)
{
  get_token();
  if(!*token) {
    serror(2);
    return;
  }
  eval_exp1(answer);
  if(*token) serror(0); /* last token must be null */
}

/* Process an assignment. */
void eval_exp1(double *answer)
{
  int slot;
  char ttok_type;
  char temp_token[80];

  if(tok_type == VARIABLE) {
    /* save old token */
    strcpy(temp_token, token);
    ttok_type = tok_type;
    /* compute the index of the variable */
    slot = toupper(*token) - 'A';

    get_token();
    if(*token != '=') {
      putback(); /* return current token */
      /* restore old token - not assignment */
      strcpy(token, temp_token);
      tok_type = ttok_type;
    }
    else {
      get_token(); /* get next part of exp */
      eval_exp2(answer);
      vars[slot] = *answer;
      return;
    }
  }
  eval_exp2(answer);
}

/* Add or subtract two terms. */
void eval_exp2(double *answer)
{
  register char op;
  double temp;

  eval_exp3(answer);
  while((op = *token) == '+' || op == '-') {
    get_token();
    eval_exp3(&temp);
    switch(op) {
      case '-':
        *answer = *answer - temp;
        break;
      case '+':
        *answer = *answer + temp;
        break;
    }
  }
}

/* Multiply or divide two factors. */
void eval_exp3(double *answer)
{
  register char op;
  double temp;

  eval_exp4(answer);
  while((op = *token) == '*' || op == '/' || op == '%') {
    get_token();
    eval_exp4(&temp);
    switch(op) {
      case '*':
        *answer = *answer * temp;
        break;
      case '/':
        if(temp == 0.0) {
          serror(3); /* division by zero */
          *answer = 0.0;
        } else *answer = *answer / temp;
        break;
      case '%':
        *answer = (int) *answer % (int) temp;
        break;
    }
  }
}

/* Process an exponent */
void eval_exp4(double *answer)
{
  double temp, ex;
  register int t;

  eval_exp5(answer);
  if(*token == '^') {
    get_token();
    eval_exp4(&temp);
    ex = *answer;
    if(temp==0.0) {
      *answer = 1.0;
      return;
    }
    for(t=temp-1; t>0; --t) *answer = (*answer) * (double)ex;
  }
}

/* Evaluate a unary + or -. */
void eval_exp5(double *answer)
{
  register char  op;

  op = 0;
  if((tok_type == DELIMITER) && *token=='+' || *token == '-') {
    op = *token;
    get_token();
  }
  eval_exp6(answer);
  if(op == '-') *answer = -(*answer);
}

/* Process a parenthesized expression. */
void eval_exp6(double *answer)
{
  if((*token == '(')) {
    get_token();
    eval_exp2(answer);
    if(*token != ')')
      serror(1);
    get_token();
  }
  else atom(answer);
}

/* Get the value of a number or a variable. */
void atom(double *answer)
{
  switch(tok_type) {
    case VARIABLE:
      *answer = find_var(token);
      get_token();
      return;
    case NUMBER:
      *answer = atof(token);
      get_token();
      return;
    default:
      serror(0);
  }
}

/* Return a token to the input stream. */
void putback(void)
{
  char *t;

  t = token;
  for(; *t; t++) prog--;
}

/* Display a syntax error. */
void serror(int error)
{
  static char *e[]= {
      "Syntax Error",
      "Unbalanced Parentheses",
      "No Expression Present",
      "Division by Zero"
  };
  printf("%s\n", e[error]);
}

/* Return the next token. */
void get_token(void)
{
  register char *temp;

  tok_type = 0;
  temp = token;
  *temp = '\0';

  if(!*prog) return; /* at end of expression */

  while(isspace(*prog)) ++prog; /* skip over white space */

  if(strchr("+-*/%^=()", *prog)){
    tok_type = DELIMITER;
    /* advance to next char */
    *temp++ = *prog++;
  }
  else if(isalpha(*prog)) {
    while(!isdelim(*prog)) *temp++ = *prog++;
    tok_type = VARIABLE;
  }
  else if(isdigit(*prog)) {
    while(!isdelim(*prog)) *temp++ = *prog++;
    tok_type = NUMBER;
  }

  *temp = '\0';
}

/* Return true if c is a delimiter. */
int isdelim(char c)
{
  if(strchr(" +-/*%^=()", c) || c==9 || c=='\r' || c==0)
    return 1;
  return 0;
}

/* Return the value of a variable. */
double find_var(char *s)
{
  if(!isalpha(*s)){
    serror(1);
    return 0.0;
  }
  return vars[toupper(*token)-'A'];
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩成人免费看| 偷拍自拍另类欧美| 日韩亚洲欧美高清| 欧美精品v国产精品v日韩精品| 色婷婷一区二区三区四区| youjizz久久| 91视频一区二区三区| 色综合天天视频在线观看 | 3d动漫精品啪啪1区2区免费 | 欧美伊人久久久久久久久影院| 99国产欧美另类久久久精品| av成人老司机| 在线国产电影不卡| 欧美精品777| 精品国产成人系列| 中文字幕欧美日本乱码一线二线| 国产精品婷婷午夜在线观看| 亚洲啪啪综合av一区二区三区| 亚洲精品老司机| 日韩高清在线观看| 国产精品69久久久久水密桃| 不卡的看片网站| 欧美日韩精品一区二区三区四区| 日韩天堂在线观看| 国产女人aaa级久久久级| 亚洲免费看黄网站| 乱一区二区av| 91影院在线免费观看| 欧美天天综合网| 国产日韩欧美综合在线| 亚洲欧洲av在线| 天涯成人国产亚洲精品一区av| 久久9热精品视频| 92国产精品观看| 欧美一级夜夜爽| 亚洲女厕所小便bbb| 美女视频一区在线观看| www.亚洲在线| 日韩欧美国产麻豆| 亚洲欧美日韩久久精品| 热久久国产精品| 色综合亚洲欧洲| 久久尤物电影视频在线观看| 一区二区欧美精品| 国产一区二区中文字幕| 91美女在线观看| 国产午夜亚洲精品午夜鲁丝片 | 欧美三区在线观看| 国产精品午夜在线观看| 免费成人你懂的| 欧美视频在线一区| 国产精品久久久久久久久免费桃花 | 国产一区二区在线观看免费| 欧洲在线/亚洲| 成人欧美一区二区三区小说 | 成人成人成人在线视频| 精品国产亚洲一区二区三区在线观看| 亚洲情趣在线观看| 成人毛片老司机大片| 欧美成人在线直播| 天天影视色香欲综合网老头| 91免费观看视频在线| 国产精品视频线看| 国产成人精品影视| 久久久久久久久免费| 久久av中文字幕片| 日韩无一区二区| 日本免费新一区视频| 欧美精品18+| 天天色天天爱天天射综合| 欧美午夜片在线观看| 一区二区三区成人在线视频| 一本色道亚洲精品aⅴ| 最新日韩在线视频| 97久久超碰国产精品| 1000精品久久久久久久久| 不卡视频免费播放| 亚洲欧洲国产日韩| 日本精品视频一区二区| 亚洲精品国产品国语在线app| 成人高清视频在线| 亚洲欧美在线视频| 一本大道久久a久久精二百| 亚洲激情六月丁香| 91麻豆精品国产91久久久资源速度 | 欧美裸体一区二区三区| 婷婷丁香久久五月婷婷| 欧美一区二区三区四区高清| 麻豆成人在线观看| 久久久夜色精品亚洲| www.亚洲色图.com| 亚洲午夜久久久| 欧美不卡激情三级在线观看| 国产精品99久久不卡二区| 一区二区三区在线视频免费观看| 99久久久久久| 五月天国产精品| 久久久精品国产免费观看同学| 粉嫩久久99精品久久久久久夜| 国产精品久久久一本精品| 欧美亚州韩日在线看免费版国语版| 奇米色一区二区| 国产午夜亚洲精品不卡| 在线看日本不卡| 精品一区二区三区在线播放 | 欧美a级理论片| 国产精品丝袜黑色高跟| 在线观看一区不卡| 九九热在线视频观看这里只有精品| 久久久久久久综合日本| 色94色欧美sute亚洲线路二| 美女被吸乳得到大胸91| 国产精品国产精品国产专区不蜜| 欧美私模裸体表演在线观看| 国产风韵犹存在线视精品| 亚洲一区日韩精品中文字幕| 日韩精品自拍偷拍| 色婷婷激情综合| 国产一区二区三区电影在线观看 | 精品美女在线观看| 一本色道**综合亚洲精品蜜桃冫| 美国欧美日韩国产在线播放| 国产精品久久久久一区二区三区| 欧美精品丝袜中出| 91性感美女视频| 国产福利91精品一区二区三区| 亚洲超碰97人人做人人爱| 中文子幕无线码一区tr| 欧美一区二区三区四区视频| 日本精品视频一区二区| 风间由美一区二区三区在线观看| 亚洲成人午夜电影| 亚洲免费伊人电影| 中文一区在线播放| www一区二区| 日韩欧美电影一区| 91精品久久久久久久99蜜桃| 日本乱码高清不卡字幕| 99re8在线精品视频免费播放| 国产精品亚洲第一| 国产精品一区二区在线看| 美女在线一区二区| 日韩成人av影视| 亚洲777理论| 亚洲成人免费在线观看| 亚洲综合男人的天堂| 亚洲色图19p| 一区二区三区在线观看网站| 亚洲天堂成人在线观看| 国产精品女主播在线观看| 国产日韩欧美精品一区| 久久久噜噜噜久久人人看| 日韩一级片网站| 欧美成人一区二区| 精品国产91九色蝌蚪| 26uuu亚洲综合色欧美 | 国产aⅴ精品一区二区三区色成熟| 日韩中文字幕亚洲一区二区va在线 | 色综合色狠狠天天综合色| www.66久久| 一本大道久久a久久精二百| 在线视频你懂得一区| 欧美日韩国产高清一区二区三区 | 亚洲主播在线观看| 一区二区三区四区不卡在线| 一区二区国产视频| 丝袜亚洲另类欧美综合| 久久99国产精品免费| 国产乱码精品1区2区3区| 国产精品一区二区免费不卡| 国产精品一区二区在线观看网站 | 亚洲日本va午夜在线电影| 亚洲欧美日韩系列| 丝袜美腿亚洲一区| 紧缚捆绑精品一区二区| 成人激情小说乱人伦| 91热门视频在线观看| 欧美丰满少妇xxxbbb| 欧美r级在线观看| 亚洲欧洲精品天堂一级| 天天色天天操综合| 国产美女精品人人做人人爽| 91丨九色丨国产丨porny| 在线电影一区二区三区| 久久中文字幕电影| 一区二区三区中文字幕在线观看| 婷婷综合久久一区二区三区| 国产成人一区二区精品非洲| 色综合亚洲欧洲| 欧美www视频| 亚洲一区二区三区在线看| 激情丁香综合五月| 91国内精品野花午夜精品| 日韩免费观看高清完整版在线观看| 国产精品私人自拍| 日本亚洲视频在线| 成人av手机在线观看| 欧美电影免费观看高清完整版在线 | 国产精品入口麻豆九色| 日本va欧美va欧美va精品|