zoukankan      html  css  js  c++  java
  • 第一次编程作业

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/SE
    这个作业要求在哪里 https://edu.cnblogs.com/campus/fzzcxy/SE/homework/10283
    这个作业的目标 <制作一个简易的中文语言编译器>
    作业正文 https://github.com/bin061626/-/blob/master/wenzi.cpp
    其他参考文献 同学代码,百度

    1.记录自己的代码行数,需求分析时间,编码时间。

    代码共155行。
    分析时间:3小时。
    编码时间:两个晚上。

    2.分解需求的思路,分解成多个模块,并阐述为什么这么分,优势在哪,可以附上代码片段。

    #include<stdio.h>
    #include<string.h>
    int trans(char str[])
    {
        if(strcmp("",str)==0)return 0;
        if(strcmp("",str)==0)return 1;
        if(strcmp("",str)==0)return 2;
        if(strcmp("",str)==0)return 3;
        if(strcmp("",str)==0)return 4;
        if(strcmp("",str)==0)return 5;
        if(strcmp("",str)==0)return 6;
        if(strcmp("",str)==0)return 7;
        if(strcmp("",str)==0)return 8;
        if(strcmp("",str)==0)return 9;
        if(strcmp("",str)==0)return 10;
    }
    int main(){
        char *chinese[11]={"","","","","","","","","","",""};
        char name[200],numb[100],name1[100],name2[100],name3[100],more[10],less[10],toint[100];
        char a[20],b[20],numb2[20],d[20],word[100],e[20],f[20],cold[100],verb[100],oper[100];
        char age[100],money[100];
        int sum,sum2,sum3;
        scanf("%s",toint);
        scanf("%s %s %s",name,verb,numb);
        if(strlen(numb)==2){
            sum=trans(numb); //零到十的数字
        }
        else if(strlen(numb)==4){
            more[0]=numb[2];
            more[1]=numb[3];
            more[2]='';      
            if(sum!=10) {sum=trans(more)+10;}//十开头的数字
                else{
                    more[0]=numb[0];
                    more[1]=numb[1];
                    more[2]='';
                    sum=10*trans(more);//整十数字
                }
        }
        else if(strlen(numb)==6){
            more[0]=numb[4];
            more[1]=numb[5];
            more[2]='';
            less[0]=numb[0];
            less[1]=numb[1];
            less[2]='';
            sum=trans(more)+trans(less)*10;//二十以上,九十九以下的数字
        }
        while(scanf("%s",name1)!=EOF)
        {   
            if(strcmp(name1,toint)==0)//判断是否是第二题
            {
                scanf("%s %s %s",name3,verb,numb);
                sum2=trans(numb);
            }
            if(strcmp(name1,name)==0){//加减法运算+-+-+-+-+-+-+-+-+-+-+-++-+-+-
                scanf("%s",oper);
                if(strcmp(oper,"增加")==0){scanf("%s",numb);
                if(strlen(numb)==2){
            sum3=trans(numb); //零到十的数字
            }
            else if(strlen(numb)==4){
                more[0]=numb[2];
                more[1]=numb[3];
                more[2]='';      
            if(sum!=10) {sum3=trans(more)+10;}//十开头的数字
                else{
                    more[0]=numb[0];
                    more[1]=numb[1];
                    more[2]='';
                    sum3=10*trans(more);//整十数字
                }
            }
            else if(strlen(numb)==6){
                more[0]=numb[4];
                more[1]=numb[5];
                more[2]='';
                less[0]=numb[0];
                less[1]=numb[1];
                less[2]='';
                sum3=trans(more)+trans(less)*10;//二十以上,九十九以下的数字
                }
                sum+=sum3;}
            if(strcmp(oper,"减少")==0){scanf("%s",numb);  if(strlen(numb)==2){
            sum3=trans(numb); //零到十的数字
            }
            else if(strlen(numb)==4){
                more[0]=numb[2];
                more[1]=numb[3];
                more[2]='';      
            if(sum!=10) {sum3=trans(more)+10;}//十开头的数字
                else{
                    more[0]=numb[0];
                    more[1]=numb[1];
                    more[2]='';
                    sum3=10*trans(more);//整十数字
                }
            }
            else if(strlen(numb)==6){
                more[0]=numb[4];
                more[1]=numb[5];
                more[2]='';
                less[0]=numb[0];
                less[1]=numb[1];
                less[2]='';
                sum3=trans(more)+trans(less)*10;//二十以上,九十九以下的数字
                }
                sum-=sum3;}
                //printf("%s",chinese[sum]);
            }
            else if(strcmp(name1,"看看")==0)
            {
                int lasttmp;
                scanf("%s",name);
                scanf("%s %s %s %s %s %s %s %s %s %s",a,name,b,numb2,d,name2,word,e,f,cold);
                lasttmp=trans(numb2);
                int len=strlen(word);
                int len1=strlen(cold);
                //if(lasttmp<=10)
                {
                    if(sum>=lasttmp)
                    {
                        if(sum>=0&&sum<=10){
                        printf("%s
    ",chinese[sum]);for (int i=1;i<len-1; i+=2) {printf("%c%c",word[i],word[i+1]);}//去除双引号
                        }
                        else {
                        if(sum%10==0){
                            printf("%s十
    ",chinese[sum/10]);for (int i=1;i<len-1; i+=2) {printf("%c%c",word[i],word[i+1]);}//去除双引号
                        }
                        else if(sum<=19){
                            printf("十%s
    ",chinese[sum%10]);for (int i=1;i<len-1; i+=2) {printf("%c%c",word[i],word[i+1]);}//去除双引号
                        }
                        else {
                            printf("%s十%s
    ",chinese[sum/10],chinese[sum%10]);for (int i=1;i<len-1; i+=2) {printf("%c%c",word[i],word[i+1]);}//去除双引号
                        }
                    }}
                    else if(sum<lasttmp){printf("%s
    ",chinese[sum]);for(int j=1;j<len1-1;j+=2) {printf("%c%c",cold[j],cold[j+1]);}}//去除双引号
                }
                }
            else if(strcmp(name1,"如果")==0)//用于判断是否符合第二题
            {   
                scanf("%s %s %s %s %s %s %s %s %s",age,b,numb2,d,money,word,e,f,cold);
                scanf("%s %s",a,age);
                if(strcmp(a,"看看")==0)
                {   
                    if(sum>8)
                    {
                        int x=sum2+1;
                        printf("%s",chinese[x]);
                    }
                }
            }
        }
        return 0;
    }

    3.记录不会的知识的学习过程以及修改优化的过程;可以附上资料网站。

    1. 将汉字转换成数字,将数字转换成汉字
    2. 增加对于变量的运算
    3. 增加变量的判断
    4. 考虑三位数的输入,负数的输入,循环输入等情况
    5. 增加多个变量

    4.测试样例

  • 相关阅读:
    hive报错 java.sql.SQLException: No suitable driver found for jdbc:hive://localhost:10000/default
    使用Beeline连接Hive
    hive报错 root is not allowed to impersonate root (state=08S01,code=0)
    hive报错 Could not open client transport with JDBC Uri: jdbc:hive2://node01:10000/default:java.net.ConnectException refused
    excel快速删除空值单元格,数据上移
    FineBI 图表选择
    数据库连接池大小设置?
    工作中有待留❤️积累的一些经验
    内存包括随机存储器(RAM),只读存储器(ROM),以及高速缓存(CACHE)。RAM最重要
    我自己ood的复习思路:抄
  • 原文地址:https://www.cnblogs.com/ranbin/p/12288493.html
Copyright © 2011-2022 走看看