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

#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);
}


  

时间: 2024-08-09 16:12:02

算法原理与分析第二次作业的相关文章

20169217 linux内核原理与分析 第四周作业

本次作业仍然分为两部分,第一部分为实验. 如实验楼的实验过程所述:使用实验楼的虚拟机打开shell,然后cd mykernel 您可以看到qemu窗口输出的内容的代码mymain.c和myinterrupt.c. 代码如下: cd LinuxKernel/linux-3.9.4  qemu -kernel arch/x86/boot/bzImage 实验截图如下: 通过观察我们会发现my_start_kernel和my_timer_handler快速的交替执行. 接下来查看mymain.c和my

Adaboost算法原理分析和实例+代码(简明易懂)

Adaboost算法原理分析和实例+代码(简明易懂) [尊重原创,转载请注明出处] http://blog.csdn.net/guyuealian/article/details/70995333     本人最初了解AdaBoost算法着实是花了几天时间,才明白他的基本原理.也许是自己能力有限吧,很多资料也是看得懵懵懂懂.网上找了一下关于Adaboost算法原理分析,大都是你复制我,我摘抄你,反正我也搞不清谁是原创.有些资料给出的Adaboost实例,要么是没有代码,要么省略很多步骤,让初学者

第2章 rsync算法原理和工作流程分析

本文通过示例详细分析rsync算法原理和rsync的工作流程,是对rsync官方技术报告和官方推荐文章的解释. 以下是rsync系列篇: 1.rsync(一):基本命令和用法 2.rsync(二):inotify+rsync详细说明和sersync 3.rsync算法原理和工作流程分析 4.rsync技术报告(翻译) 5.rsync工作机制(翻译) 6.man rsync翻译(rsync命令中文手册) 本文目录: 1.1 需要解决的问题 1.2 rsync增量传输算法原理 1.3 通过示例分析r

OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波

http://blog.csdn.net/chenyusiyuan/article/details/8710462 OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波 2013-03-23 17:44 16963人阅读 评论(28) 收藏 举报 分类: 机器视觉(34) 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] KAZE系列笔记: OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波 OpenCV学习笔记(28)KA

魏昊卿——《Linux内核分析》第二周作业:了解操作系统是怎样工作的

魏昊卿——<Linux内核分析>第二周作业:了解操作系统是怎样工作的 一.实验部分 使用实验楼的虚拟机打开shell cd LinuxKernel/linux-3.9.4 qemu -kernel arch/x86/boot/bzImage 然后cd mykernel 您可以看到qemu窗口输出的内容的代码mymain.c和myinterrupt.c 使用自己的Linux系统环境搭建过程参见mykernel,其中也可以找到一个简单的时间片轮转多道程序内核代码 mymain.c myinterr

朴素贝叶斯分类算法原理分析与代码实现

前言 本文介绍机器学习分类算法中的朴素贝叶斯分类算法并给出伪代码,Python代码实现. 词向量 朴素贝叶斯分类算法常常用于文档的分类,而且实践证明效果是挺不错的. 在说明原理之前,先介绍一个叫词向量的概念. --- 它一般是一个布尔类型的集合,该集合中每个元素都表示其对应的单词是否在文档中出现. 对应关系和词汇表一一对应. 比如说,词汇表只有三个单词:'apple', 'orange', 'melo',某文档中,apple和melo出现过,那么其对应的词向量就是 {1, 0, 1}. 这种模型

第五篇:朴素贝叶斯分类算法原理分析与代码实现

前言 本文介绍机器学习分类算法中的朴素贝叶斯分类算法并给出伪代码,Python代码实现. 词向量 朴素贝叶斯分类算法常常用于文档的分类,而且实践证明效果挺不错的. 在说明原理之前,先介绍一个叫词向量的概念. --- 它一般是一个布尔类型的集合,该集合中每个元素都表示其对应的单词是否在文档中出现. 比如说,词汇表只有三个单词:'apple', 'orange', 'melo',某文档中,apple和melo出现过,那么其对应的词向量就是 {1, 0, 1}. 这种模型通常称为词集模型,如果词向量元

K-近邻算法原理分析

前言 本文介绍机器学习分类算法中的K-近邻算法并给出伪代码,Python代码实现. 算法原理 首先获取训练集中与目标对象距离最近的k个对象,然后再获取这k个对象的分类标签,求出其中出现频数最大的标签. 这个标签就是分类的结果. 伪代码 对训练集中的每个点做以下操作: 1. 计算已知类别数据集中的点与当前点之间的距离 2. 按照距离递增次序排序 3. 选取与当前点距离最小的k个点 4. 确定前k个点所在类别的出现频率 5. 返回前k个点出现频率最高的类别,即为分类结果. 代码示例 1 #!/usr

使用Apriori算法和FP-growth算法进行关联分析(Python版)

===================================================================== <机器学习实战>系列博客是博主阅读<机器学习实战>这本书的笔记也包含一些其他python实现的机器学习算法 算法实现均采用python github 源码同步:https://github.com/Thinkgamer/Machine-Learning-With-Python ==================================