面向对象程序设计寒假作业2

作业描述 详情
这个作业属于哪个课程 2020面向对象程序设计
这个作业要求在哪里 面向对象程序设计寒假作业2
这个作业的目标 编译脚本和测试脚本
新建一个github仓库,并把作业推送到该仓库
完善并规范编程题
作业正文 如下
其他参考文献 git实用技巧--如何配置和使用.gitignore文件
骆驼命名法
帕斯卡命名法
Windows 批处理入门

实践题

新建一个github仓库,使用git,或者github desktop把接下去的编程题的代码及测试脚本传到这个仓库。
请使用.gitignore文件忽略不要上传的文件。用法自行百度。
面向对象程序设计寒假作业2_第1张图片
英文看的我想哭
面向对象程序设计寒假作业2_第2张图片
稀里糊涂的就上传上去了
面向对象程序设计寒假作业2_第3张图片

编程题

  • 继续完成作业一的编程题。
  • 优化架构,一般要求每个函数长度不超过15行。
  • 优化规范,尤其是命名规范。
  • 制作一个编译脚本,运行该脚本可以编译你的代码,可选的脚本语言,python(2.7),windows批处理,powershell,shell。
    示例脚本:
gcc 1.cpp -o lang.exe
  • 进行单元测试,即测试每一个函数,并制作一个测试脚本,运行该脚本可以进行测试,并显示测试结果。
    示例脚本:
gcc 1.cpp test.cpp -o test.exe
test
  • 在作业一编程题的基础上添加以下功能:
    通过命令行读取一个文件,然后运行这个文件。如我的程序叫lang,lang 1.txt代表我要运行1.txt这个文本中的代码。
    假设我的1.txt内容如下:
整数 钱包 等于 零
钱包 增加 四钱包 增加 十
钱包 减少 三
看看 钱包

输入lang 1.txt后,命令行输出

优化代码:

1.考虑了钱包被扣为负的情况

int judge(int n,char a[],char b[]){
int sum;
sum=trans(b);
if(strcmp(a,"增加")==0) return n+sum;
else if(strcmp(a,"减少")==0) 
{if(n<=sum)
return 0;
else return n-sum;}
}

面向对象程序设计寒假作业2_第4张图片
2.增添了百位以上的输出

 {if(s<100)
        {
        if(s<=10)printf("%s",hz[s]);
        
        else if(s%10==0){printf("%s十",hz[s/10]);
        }
        else if(s>10&&s<20)printf("十%s",hz[s-10]);
        else printf("%s十%s",hz[s/10],hz[s%10]);}
        else{
        if(s%100==0)printf("%s百",hz[s/100]);
        else if(s%10==0)printf("%s百%s",hz[s/100],hz[s%100/10]);
        else printf("%s百%s十%s",hz[s/100],hz[s%100/10],hz[s%100%10]);
    }
    }

测试的时候才想起来并没有十位以上的输入,这里也不知道怎么弄十位以上输入的代码
面向对象程序设计寒假作业2_第5张图片
3.命名规范:
因为我的函数名和变量名只有一个单词,所以这里就不修改了。命名规范可以见骆驼命名法,帕斯卡命名法。
优化后完整代码

#include
#include
char hz[11][11]={"零","一","二","三","四","五","六","七","八","九","十"};
int trans(char a[])\\ **转化汉字为数字函数**
{
int i;
for(i=0;i<11;i++){
if(strcmp(hz[i],a)==0){
return i;
}
 }
}
int judge(int n,char a[],char b[])\\ **判断操作并执行函数**
{
int sum;
sum=trans(b);
if(strcmp(a,"增加")==0) return n+sum;
else if(strcmp(a,"减少")==0) 
{if(n<=sum)
return 0;
else return n-sum;}
}
int main()
{
int s;
char a[101],b[101],c[101],d[101];
scanf("%s %s %s %s",a,b,c,d);
s=trans(d);
while(scanf("%s %s",b,c)!=EOF)
{
    if(strcmp(b,"看看")!=0)
    {
        scanf("%s",d);
        s=judge(s,c,d);
    }
    else {if(s<100)\\**输出**
        {
        if(s<=10)printf("%s",hz[s]);
        
        else if(s%10==0){printf("%s十",hz[s/10]);
        }
        else if(s>10&&s<20)printf("十%s",hz[s-10]);
        else printf("%s十%s",hz[s/10],hz[s%10]);}
        else{
        if(s%100==0)printf("%s百",hz[s/100]);
        else if(s%10==0)printf("%s百%s",hz[s/100],hz[s%100/10]);
        else printf("%s百%s十%s",hz[s/100],hz[s%100/10],hz[s%100%10]);
    }
    }
}printf("%d",s);
return 0;
}

编译脚本:

一言难尽

@echo off
set /p a=请输入文件所在路径
cd "%a%"
set /p b=请输入文件名
echo 编译开始
gcc "%b%" -o ioi.exe
if exist "ioi.exe" echo 编译成功
if not exist "ioi.exe" echo 编译失败
pause

一开始打开是乱码
面向对象程序设计寒假作业2_第6张图片
后来在另存为的时候改为这个什么ANSI编码就可以了

但最后跟第一次作业一样还是这种结果。
面向对象程序设计寒假作业2_第7张图片

测试脚本和新功能的作业我挣扎过,。

你可能感兴趣的:(面向对象程序设计寒假作业2)