• 制作简易的中文编译器


    这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/SE
    这个作业要求在哪里 https://edu.cnblogs.com/campus/fzzcxy/SE/homework/10283
    这个作业的目标 重新捡起大一拉下的C语言的有关知识
    作业正文 见下文
    其他参考文献 参考百度的各种资料,以及去其他大佬的博客获取知识

    代码行数:158行
    需求分析:2hour
    代码编写:2天

    github的地址:https://github.com/1791593280/1.homework/blob/master/first.cpp

    所遇到的问题:
    1,对C语言的陌生,以及一些语法的遗忘
    2,对题目的意思了解不够全面
    3,对题目的思路不过清晰,需借鉴百度以及各位博客大佬的知识

    代码如下:

    include<stdio.h>

    include<string.h>

    include<math.h>

    int first(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 second(char a[]){
    char b[10],c[10];
    if(strlen(a)
    2)
    {
    return first(a);
    }
    else if(strlen(a)==4)
    {
    b[0]=a[2];
    b[1]=a[3];
    b[2]='';
    if(first(b)!=10)
    return 10+first(b);
    else{
    b[0]=a[0];
    b[1]=a[1];
    b[2]='';
    return 10*first(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 first(b)+first(c)*10;
    }
    

    }
    int main(){
    char *chinese[11]={"零","一","二","三","四","五","六","七","八","九","十"};
    char name[200],verb[200],numb[200],oper[200],name1[200],toint[200],name3[200];
    char x[20],y[20],numb2[20],d[20],word[100],e[20],f[20],cold[100],name2[100];
    char age[200],money[200];
    int sum,sum2,sum3;
    scanf("%s",toint);
    scanf("%s %s %s",name,verb,numb);
    sum=second(numb);
    while(scanf("%s",name1)!=EOF)
    {
    if(strcmp(name1,toint)0)
    {
    scanf("%s %s %s",name3,verb,numb);
    sum2=first(numb);
    }
    if(strcmp(name1,name)
    0){
    scanf("%s",oper);
    if(strcmp(oper,"增加")0){
    scanf("%s",numb);
    sum3=second(numb);
    sum+=sum3;}
    if(strcmp(oper,"减少")
    0){
    scanf("%s",numb);
    if(strlen(numb)2)
    {
    sum3=second(numb);
    sum-=sum3;
    }
    }
    }
    else if(strcmp(name1,"看看")
    0)
    {
    int lasttmp;
    scanf("%s",name);
    scanf("%s %s %s %s %s %s %s %s %s %s",x,name,y,numb2,d,name2,word,e,f,cold);
    lasttmp=first(numb2);
    int len=strlen(word);
    int len1=strlen(cold);
    {
    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%100){
    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){
    if(sum<0)
    {
    int under=abs(sum);
    printf("%s%s ","负",chinese[under]);
    for(int j=1;j<len1-1;j+=2) {printf("%c%c",cold[j],cold[j+1]);}}
    }
    else{
    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,y,numb2,d,money,word,e,f,cold);
    scanf("%s %s",x,age);
    if(strcmp(x,"看看")==0)
    {
    if(sum>8)
    {
    int x=sum2+1;
    printf("%s",chinese[x]);
    }
    }
    }
    }
    return 0;
    }

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

    输出:

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

    输出:

  • 相关阅读:
    Linux中搭建Maven私服
    NIO类库
    JAVA网络通信IO-NIO-AIO-Netty
    栈和队列
    JAVA四类八种基本数据类型
    JAVA基础—线程池
    vue 数组push元素 视图没更新
    小程序♥云开发
    vue2.0 transition 手风琴
    element-ui 表格翻页多选后仍然记忆所选项,数据回显
  • 原文地址:https://www.cnblogs.com/lianxinji/p/12276025.html
Copyright © 2020-2023  润新知