zoukankan      html  css  js  c++  java
  • 作业1汉字编辑器

    这个作业属于哪个课程软件工程 (福州大学至诚学院 - 计算机工程系
    这个作业要求在哪里 第一次个人编程作业
    这个作业的目标 完成老师布置的编程任务并总结分析
    作业正文 如下正文
    其他参考文献 百度,其他博客
    我的GitHub仓库地址 l的github


    代码行数:目前33行

    需求分析时间:3h

    编码时间:1h

    作业要求

    发布一篇随笔,使用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>
    #include <string>
    int main()
    {
    char[100](a1,a2,a3,a4,a5,a6,a7,a8,a9);
    char[100](b1,b2,b3,b4,b5,b6,b7,b8,b9);
    char[100](d1,d2,d3);
    int begin=0,in=0,in1=0,in2=0,ele,i=0,begin1=0;
    //前
    int main() {
    int outcome;
    char a[100], b[100], c[100], d[100], e[100], f[100], g[100], h[100], i[100], j[100],k[100];
    scanf("%s %s %s %s", a, b, c, d);
    // printf(" ");
    outcome = A(d);
    while (scanf("%s %s", b, c) != EOF) {
    if (strcmp(b, "看看") != 0) {
    scanf("%s", d);
    outcome = figure(outcome, c, d);
    } else {
    scanf("%s %s %s %s %s %s %s %s %s %s",a1,a2,a3,a4,a4,a6,a7,a8,a9);
    if (outcome < A(g)) {
    printf("%s ", integer[outcome]);
    printf(i);
    } else if (A(g) < outcome<10 ) {
    printf("%s ", integer[outcome]);
    printf(k);
    } else if (10 < outcome < 20) {
    printf("十%s ", integer[outcome - 10]);
    printf(k);
    }

    }
    }
    return 0;
    }

    新增修改

    第一种方法写不出来所以太监了

    上网查阅借鉴了一下写了第二种,但并不完整,接下来再更新

    #include<stdio.h>
    #include<string.h>
    int n1(char a[10])
    {
    if(strcmp(a,"零")==0) return 0;
    else if(strcmp(a,"一")==0) return 1;
    else if(strcmp(a,"二")==0) return 2;
    else if(strcmp(a,"三")==0) return 3;
    else if(strcmp(a,"四")==0) return 4;
    else if(strcmp(a,"五")==0) return 5;
    else if(strcmp(a,"六")==0) return 6;
    else if(strcmp(a,"七")==0) return 7;
    else if(strcmp(a,"八")==0) return 8;
    else if(strcmp(a,"九")==0) return 9;
    else if(strcmp(a,"十")==0) return 10;
    }

    if(strcmp(name1,name)==0){
    scanf("%s",oper);
    if(strcmp(oper,"增加")==0){
    scanf("%s",numb);
    a=jud(numb);
    a+=a;}
    if(strcmp(oper,"减少")==0){
    scanf("%s",numb);
    if(strlen(numb)==2)
    {
    a=jud(numb);
    a-=a;
    }
    }
    char n2(int else if(strcmp(name1,"看看")==0)
    {
    int lasttmp;
    scanf("%s",name);
    lasttmp=trans(numb2);
    int len=strlen(word);
    int len1=strlen(cold);
    {
    if(sum>=lasttmp)
    { if(sum>=0&&sum<=10){
    printf("%s ",chinese[sum]);
    scanf("%s %s %s %s %s %s %s %s %s %s",a,name,b,up,down,left,right);b)
    {
    if(b==0) printf("零");
    else if(b==1) printf("一");
    else if(b==2) printf("二");
    else if(b==3) printf("三");
    else if(b==4) printf("四");
    else if(b==5) printf("五");
    else if(b==6) printf("六");
    else if(b==7) printf("七");
    else if(b==8) printf("八");
    else if(b==9) printf("九");
    else if(b==10) printf("十");
    return 0;
    }
    int main()
    {
    int n1(char a[10]);
    int add(char a[10],int x,int y);
    char n2(int b);
    char left[10],down[10],up[10],right[10];
    int m,n;
    scanf("%s %s %s %s",&left,&down,&up,&right);
    m=n1(right);
    while(1)
    {
    scanf("%s",left);
    if(strcmp(left,"看看")==0)
    {
    scanf("%s",down);
    break;
    }
    else
    {
    scanf("%s %s",down,up);
    n=n1(up);
    m=add(down,m,n);
    }
    }
    n2(m);
    return 0;
    }

  • 相关阅读:
    [做题记录-乱做] [AGC004F] Namori
    字符串分割去除空格
    逆向实战01-嘟嘟牛在线
    mysql超8小时解决
    macbook golang的debug模式不好使
    博客暂时废弃公告
    [干货] 博客园主题
    [Contest on 2021.10.14] 我靠,真的好困!
    [Contest on 2021.10.9] 说好的 100kb 呢?
    [Contest on 2021.10.7] 已经起不了标题了...
  • 原文地址:https://www.cnblogs.com/lyaljtz/p/12286487.html
Copyright © 2011-2022 走看看