码迷,mamicode.com
首页 > 编程语言 > 详细

算法原理与分析第二次作业

时间:2015-09-21 19:24:08      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:

#include<stdio.h>
#include<string.h>
#define MAX 100
int n=0,i=0;
char *keyshuru[6]={"begin","if","then","while","do","end"};

void KEYword(char shuru[MAX])
{
	int k=0,key=0;
	char token[MAX];
    while(shuru[i]!=‘#‘)
    {    
    while((shuru[i]>=‘a‘&&shuru[i]<=‘z‘) || (shuru[i]>=‘A‘&&shuru[i]<=‘Z‘))
    {
        if((shuru[i]>=‘a‘&&shuru[i]<=‘z‘) || (shuru[i]>=‘A‘&&shuru[i]<=‘Z‘))
        {
              token[n]=shuru[i];
            n++;
            token[n]=‘\0‘;
            i++;            
        }

    for(k=0;k<6;k++)
    {
        key=0;
        if(strcmp(keyshuru[k],token)==0)
        {
            printf("%s   %d\n",keyshuru[k],k+1);
            key=1;
            break;
        }
    }    }
    if(key==0)
    {
            printf("%s   10\n",token);
    }
    key=1;
    i=i+1;
    n=0;
    }
}
void character(char shuru[MAX])
{
    int p=0,sign=0;
    for(p=0;p<MAX;p++)
    {
        switch(shuru[p])
        {
        case ‘+‘:
            printf("+    13\n");
            break;
        case ‘-‘:
            printf("-    14\n");
            break;
        case ‘*‘:
            printf("*    15\n");
            break;
        case ‘/‘:
            printf("/    16\n");
            break;
        case ‘:‘:
            if(shuru[p+1]==‘=‘)
            {
                printf(":=   18\n");
                p++;
            }
            else
                printf(":    17\n");
            break;
        case ‘<‘:
            if(shuru[p+1]==‘=‘)
            {
                printf("<=     21\n");
                sign=1;
                p++;
            }
            else if(shuru[p+1]==‘>‘)
            {
                printf("<>     22\n");
                sign=1;
                p++;
            }
            else if(sign==0)
                printf("<    20\n");
            break;
        case ‘>‘:
            if(shuru[p+1]==‘=‘)
            {
                printf(">=    24\n");
                p++;
            }
            else
                printf(">    23\n");
            break;
        case ‘=‘:
            printf("=    25\n");
            break;
        case ‘;‘:
            printf(";    26\n");
            break;
        case ‘(‘:
            printf("(    27\n");
            break;
        case ‘)‘:
            printf(")    28\n");
            break;
        case ‘#‘:
            printf("#    29\n");
            break;
        }
    }
}

void number(char shuru[MAX])
{
    int p=0,j=0,t=0,key=0;
    char num[MAX];
    while(shuru[p]!=‘#‘)
    {
        key=0;
    while(shuru[p]>=‘0‘ && shuru[p]<=‘9‘)
    {
        num[j]=shuru[p];
        p++;
        j++;
        key=1;
    }
    if(key==1)
    {
        for(t=0;t<j;t++)
        {
            printf("%c",num[t]);
        }
        printf("    11\n");
        j=0;
    }
    p++;
    }

}

main()
{
	char a;
	char shuru[MAX];

    int p=0,j=0,m=0;

    printf("请输入源程序,#键为结束标志:");
    do{
        scanf("%c",&a);
        shuru[p]=a;
        p++;
    }while(a!=‘#‘);
   KEYword(shuru);
    character(shuru);
    number(shuru);
}



技术分享

  

算法原理与分析第二次作业

标签:

原文地址:http://www.cnblogs.com/liezhihua/p/4826869.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!