>第 14 章 计算机中数的表示>不同进制之间的换算>习题

俄 kdsfjk@126.com
2010-02-01 18:10:58

" .ahm.rg		ql,e)-n)-b)-glxo`qrdq	x`bb,cKk`mft`fd-x	kdw,kKk`mft`fd-k	fbb,nlxo`qrdqkdw-xx-bx-s`a-b		dwhs/	


皇好 kensfasd@126.com
2010-02-02 17:39:02

%{
#include "y.tab.h"
#include "../../../som/core/types.h"
#include <stdio.h>
#include <string.h>
extern uint8* yylval;
extern uint16 tmpLine;
%}
digit [0-9]
number (digit)+
letter [a-zA-Z]
newline \n
whitespace [" "\t]+
%%
"while" return WHILE;
"if" return IF;
[a-zA-Z]+ {
    yylval = strdup(yytext);
    return VARIABLE;
}
[0-9]+ {
    yylval = strdup(yytext);
    return INTEGER;
}
'[a-zA-Z0-9]+' {
    yylval = strdup(yytext);
    return STRING;
}
">=" return GE;
"<=" return LE;
"==" return EQ;
"!=" return NE;
[-+=;] {
    return *yytext;
}
"print""('"[A-Za-z0-9" "]+"')"/\n {
    yylval = strdup(yytext);
    return PRINT;
}
"print""("[A-Za-z]+")"/\n {
    yylval = strdup(yytext);
    return PRINT;
}
[0-9]+";"/\n {
    yylval = strdup(yytext);
    return FORM;
            }
[<>+@]/\n {
    yylval = strdup(yytext);
    return SOFT_KEY;
}
"["([0-9A-Za-z])*/\n {
    yylval = strdup(yytext);
    return SOFT_KEY;
}
"]"([0-9A-Za-z])*/\n {
    yylval = strdup(yytext);
    return SOFT_KEY;
}
"$""["([0-9A-Za-z])+/\n {
    yylval = strdup(yytext);
    return CHECK_SOFT_KEY;
}
"$""]"([0-9A-Za-z])+/\n {
    yylval = strdup(yytext);
    return CHECK_SOFT_KEY;
}
~((!){0,1})([0-9A-Za-z:])+/\n {
    yylval = strdup(yytext);
    return CHECK_POINT;
}
%[0-9]+"."/\n {
    yylval = strdup(yytext);
    return EXTERNAL_COMMAND;
}
%[0-9]+(..)+/\n {
    yylval = strdup(yytext);
    return EXTERNAL_COMMAND;
}
f[0-9]+/\n {
    yylval = strdup(yytext);
    return HOT_KEY;
}
"^"((!){0,1})"."[ERYGFULS]+"."/\n {
    yylval = strdup(yytext);
    return CHECK_LED_TONE;
}
[{}()] {
    printf("$$$$$$$$$$$$line = %d\n", yylineno); 
    return *yytext;
}
"/*"[A-Za-z0-9" "#]+"*/"/\n {
    yylval = strdup(yytext);
    return COMMENT;
}
\n { 
    return ENTER;
}
[" "\t]+ ;
. { 
    yyerror(yytext);
}
%%
int yywrap()
{
    return 1;

}



皇浩 kensfasd@126.com
2010-02-02 17:58:57

%{
#include <stdio.h>
#include "../../../som/core/types.h"
#include "../def.h"
typedef uint8* string;
#define YYSTYPE string
uint16 checkPointNum;
uint16 counter;
extern int yylineno;
uint8 sequence[1024][256];
uint16 line[1024];
uint16 tmpLine;
%}
%token FORM SOFT_KEY CHECK_SOFT_KEY MENU_REFRESH CHECK_POINT EXTERNAL_COMMAND HOT_KEY CHECK_LED_TONE
%token COMMENT ENTER
%token IF WHILE EXPR
%token PRINT 
%token GE LE EQ NE
%token VARIABLE STRING INTEGER
%%
program:
         program script {} 
        |
;
script:
        stmt {  
                //line[yylineno] = tmpLine; tmpLine = yylineno;
                printf("tmpline = %d yylineno = %d\n", tmpLine, yylineno); 
}
        |while_stmt {  //line[yylineno] = tmpLine; tmpLine = yylineno; 
                //printf("line = %d\n", tmpLine); 
                printf("tmpline = %d yylineno = %d\n", tmpLine, yylineno); 
}
        |if_stmt {  //line[yylineno] = tmpLine; tmpLine = yylineno; 
                //printf("line = %d\n", tmpLine); 
                printf("tmpline = %d yylineno = %d\n", tmpLine, yylineno); 
}
;
while_stmt:
        WHILE"("expr")"while_stmt { printf("**********while Line=%d\n", yylineno);//line[yylineno] = tmpLine; tmpLine = yylineno;
                printf("tmpline = %d yylineno = %d\n", tmpLine, yylineno); 
}
        |WHILE"("expr")"stmt { printf("**********while Line=%d\n", yylineno);//line[yylineno] = tmpLine; tmpLine = yylineno;
                printf("tmpline = %d yylineno = %d\n", tmpLine, yylineno); 
                //printf("line = %d\n", yylineno); 
}
;
if_stmt:
        IF"("expr")"if_stmt { printf("#################if Line=%d\n", yylineno);//line[yylineno] = tmpLine; tmpLine = yylineno;
                printf("tmpline = %d yylineno = %d\n", tmpLine, yylineno); 
                //printf("line = %d\n", yylineno); 
}
        |IF"("expr")"stmt { printf("#################if Line=%d\n", yylineno);//line[yylineno] = tmpLine; tmpLine = yylineno;
                printf("tmpline = %d yylineno = %d\n", tmpLine, yylineno); 
                //printf("line = %d\n", yylineno); 
}
;
expr:
        VARIABLE GE INTEGER
        |VARIABLE LE INTEGER
        |VARIABLE EQ INTEGER
        |VARIABLE NE INTEGER
        |VARIABLE EQ STRING
        |VARIABLE NE STRING
;


慌校 ewrw34@126.com
2010-02-02 18:01:57

stmt:
        FORM {
                printf("Form is %s %d\n", $1, yylineno);//line[yylineno] = tmpLine; tmpLine = yylineno;
                printf("tmpline = %d yylineno = %d\n", tmpLine, yylineno); 
                //printf("line = %d\n", yylineno); 
            }
        |SOFT_KEY{
                printf("tmpline = %d yylineno = %d\n", tmpLine, yylineno); 
                printf("Soft key is %s\n", $1);//line[yylineno] = tmpLine; tmpLine = yylineno;
                //printf("line = %d\n", yylineno); 
            }
        |CHECK_SOFT_KEY{
                checkPointNum++;
                printf("tmpline = %d yylineno = %d\n", tmpLine, yylineno); 
                printf("Check soft key is %s\n", $1);//line[yylineno] = tmpLine; tmpLine = yylineno;
                //printf("line = %d\n", yylineno); 
}
        |CHECK_POINT {
                checkPointNum++;
                printf("tmpline = %d yylineno = %d\n", tmpLine, yylineno); 
                printf("Check point is %s\n", $1);//line[yylineno] = tmpLine; tmpLine = yylineno;
                //printf("line = %d\n", yylineno); 
}
        |EXTERNAL_COMMAND {
                printf("tmpline = %d yylineno = %d\n", tmpLine, yylineno); 
                printf("External command is %s\n", $1);//line[yylineno] = tmpLine; tmpLine = yylineno;
                //printf("line = %d\n", yylineno); 
}
        |HOT_KEY {
                printf("tmpline = %d yylineno = %d\n", tmpLine, yylineno); 
                printf("Hot key = %s\n", $1);//line[yylineno] = tmpLine; tmpLine = yylineno;
                //printf("line = %d\n", yylineno); 
}
        |CHECK_LED_TONE {
                printf("tmpline = %d yylineno = %d\n", tmpLine, yylineno); 
                printf("Check led and tone = %s\n", $1);//line[yylineno] = tmpLine; tmpLine = yylineno;
                //printf("line = %d\n", yylineno); 
                checkPointNum++;
}
        |COMMENT {
                printf("tmpline = %d yylineno = %d\n", tmpLine, yylineno); 
                printf("comment is %s\n", $1);//line[yylineno] = tmpLine; tmpLine = yylineno;
                //printf("line = %d\n", yylineno); 
}
        |ENTER {
                tmpLine++;
                printf("tmpline = %d yylineno = %d\n", tmpLine, yylineno); 
    counter++;
    //line[yylineno] = tmpLine; tmpLine = yylineno;
                //printf("line = %d\n", yylineno); 
}
        |PRINT {
                printf("tmpline = %d yylineno = %d\n", tmpLine, yylineno); 
                printf("print %s\n", $1);//line[yylineno] = tmpLine; tmpLine = yylineno;
                //printf("line = %d\n", yylineno); 
}
        


peerben benzhemin@gmail.com
2011-11-04 10:53:09

#include <stdio.h>

void to_binary(int num){
    if(num == 0){
        return ;
    }else{
        int mod = num % 2;
        int res = num / 2;
        to_binary(res);
        putchar('0'+mod);
    }
}
    

int main(void){
    to_binary(13);
    printf("\n");
    return 0;
}


如果您有建设性意见,哪怕只是纠正一个错别字,也请不吝赐教,您留下的姓名和email将会出现在本书前言的致谢中。再次感谢您的宝贵意见!