• 第一次编程作业


    这个作业属于哪个课程软件工程 (福州大学至诚学院 - 计算机工程系
    这个作业要求在哪里 第一次个人编程作业
    这个作业的目标 完成老师布置的编程作业
    作业正文 如下正文
    其他参考文献 如何建立github仓库
    我的GitHub仓库地址 https://github.com/weilaiqqq?tab=repositories

     

     

     

     

    作业要求

    发布一篇随笔,使用markdown语法进行编辑。
    在随笔前附上github仓库地址。

    编程题目

    汉字是迄今为止持续使用时间最长的文字,也是上古时期各大文字体系中唯一传承至今者,中国历代皆以汉字为主要的官方文字。我们在感叹汉字的源远流长时,也不禁感慨,为什么没有一门使用汉字编程的语言?
    小杨同学想到:用汉字来进行编程一定很有趣,来请你帮帮他。

    编程要求

    请编写一个程序,制作一个简易的中文语言编译器,即使用中文语法进行编程,输入为逐行输入,每行为一个语句,一个语句代变一个操作,满足以下语法要求(括号内代变格式类型,具体参考样例):

    变量定义:整数 (变量名) 等于 (数字)
    运算(加法):(变量名) 增加 (数字)
    运算(减法):(变量名) 减少 (数字)
    输出:看看 (变量名) or 看看 “(字符串内容)”

    样例1

    输入:

    整数 气温 等于 十
    气温 减少 三
    气温 增加 二
    看看 气温
    如果 气温 大于 八 则 看看 “你好,世界” 否则 看看 “冻死我了”

    输出:

    九
    你好,世界

    样例2

    输入:

    整数 小杨年龄 等于 八
    整数 小杨零花钱 等于 二
    小杨年龄 增加 一
    如果 小杨年龄 大于 八 则 小杨零花钱 增加 一 否则 无
    看看 小杨零花钱

    输出:

    附加要求:

    选择:如果 (判断语句) 则 (操作语句) 否则 (操作语句)
    若否则后没有任何操作使用(无)来进行填充(参考样例2)。

    注意事项

    输入输出采用utf-8编码,请在编码过程中注意。
    数字只会出现:零一二三四五六七八九十。(此条作废,可先完成0-10的情况)
    字符串输出的双引号是全角,即中文双引号。
    变量类型要求只有整数,如有余力,可以自己实现更多。
    测试数据会相较于样例复杂,请考虑充分需求。
    不限制编程语言。
    不能使用eval函数动态执行代码,或调用系统指令。
    数据输入形式为交互式运行,类似于shell。

    github要求

    创建一个github仓库。
    使用git或其他git图形应用程序(Github Desktop,TortoiseGit等)将程序代码传到仓库,commit信息遵守一定的git规范。
    加入.gitignore文件和开源license。

    随笔要求

    要求记录包括但不限于以下内容:

    记录自己的代码行数,需求分析时间,编码时间。
    分解需求的思路,分解成多个模块,并阐述为什么这么分,优势在哪,可以附上代码片段。
    记录不会的知识的学习过程以及修改优化的过程;可以附上资料网站。
    自我发挥。

    代码:

    #include<stdio.h>
    #include<string.h>
    char hz[11][5]={"","","","","","","","","","",""}; //定义一个汉字数组
    int hzs(char a[])//匹配
    {
        if(strcmp("",a)==0)return 0;
        if(strcmp("",a)==0)return 1;
        if(strcmp("",a)==0)return 2;
        if(strcmp("",a)==0)return 3;
        if(strcmp("",a)==0)return 4;
        if(strcmp("",a)==0)return 5;
        if(strcmp("",a)==0)return 6;
        if(strcmp("",a)==0)return 7;
        if(strcmp("",a)==0)return 8;
        if(strcmp("",a)==0)return 9;
        if(strcmp("",a)==0)return 10;
    }
    int num(char a[]){
        char b[10],c[10];
        if(strlen(a)==2){//一个汉字占2bite 此处是判断输入一个汉字的情况
            return hzs(a); 
        }
        else if(strlen(a)==4){
            b[0]=a[2];
            b[1]=a[3];
            b[2]='';      
                if(hzs(b)!=10) return 10+hzs(b);//此处是判断输入首 为十的两位汉字
                else{
                    b[0]=a[0];
                    b[1]=a[1];
                    b[2]='';
                    return 10*hzs(b);//此处是判断输入尾 为十的汉字
                }
        
        }
        else if(strlen(a)==6){
            b[0]=a[4];
            b[1]=a[5];
            b[2]='';
            c[0]=a[0];
            c[1]=a[1];
            c[2]='';
            return hzs(b)+hzs(c)*10;//对应“几十几”类型的数字
        }
    }
    int judge(int n,char a[],char b[]){
        int sum1;
        sum1=num(b);
        if(strcmp(a,"增加")==0) 
            return n+sum1;
        else if(strcmp(a,"减少")==0)
            return n-sum1;
    }
    int main(){
        int i,sum,sum4,sum3;
        char a[100],b[100],c[100],d[100];
        scanf("%s",a);
        if(!strcmp(a,"整数")){
            scanf("%s %s %s",a,b,c);
        }
        else{
            printf("输入格式错误
    "); 
            return 0;
        }
        sum=num(c);
        while(scanf("%s %s",d,b)!=EOF){
            if(strcmp(d,"看看")){ 
                int h;
                scanf("%s",c);
                if(!strcmp(a,d)){
                    sum=judge(sum,b,c);    
                    if(sum>=99||sum<=0){
                        printf("Error
    ");
                        return 0;
                    }
                }
                else {printf("NO
    ");
                    return 0;
                } 
            }
            else{
                if(sum>=0&&sum<=10){
                    printf("%s
    ",hz[sum]);
                }
                else {
                    if(sum%10==0){
                        printf("%s十
    ",hz[sum/10]);
                    }
                    else if(sum<=19){
                        printf("十%s
    ",hz[sum%10]);
                    }
                    else {
                        printf("%s十%s
    ",hz[sum/10],hz[sum%10]);
                    }
                }   
            }
        }
    return 0;       
    }

     存在问题

    自身编程能力较差,大多都是参考着来的,本来尝试用Java写,没出来,就放弃了。其中也咨询了同学,但是还是不太行,就只能弄这些了。我之前学的东西都比较片面,希望自己在以后的学习里能提升学习能力,将来希望自己可以更完美的完成题目。

  • 相关阅读:
    【2020-08-15】人生十三信条
    【2020-08-14】何太生气的第三天
    【中间件】MyCat读写分离、分库分表
    sort()方法的用法,参数以及排序原理
    理解Object.defineProperty的作用
    VMware Workstation 11 中 Ubuntu 14.04 的 VMware Tools 问题 :没有显示共享文件夹
    VMware Workstation 11 中 Ubuntu 14.04 的 VMware Tools 问题 :没有显示共享文件夹
    如何提高编程能力?
    如何提高编程能力?
    Xshell用鼠标选中一段文字后自动换行的问题
  • 原文地址:https://www.cnblogs.com/funnyx/p/12285100.html
Copyright © 2020-2023  润新知