作业描述 | 详情 |
---|---|
这个作业属于哪个课程 | 2020面向对象程序设计 |
这个作业要求在哪里 | 面向对象程序设计寒假作业2 |
这个作业的目标 | 编译脚本和测试脚本 新建一个github仓库,并把作业推送到该仓库 完善并规范编程题 |
作业正文 | 如下 |
其他参考文献 | git实用技巧--如何配置和使用.gitignore文件 骆驼命名法 帕斯卡命名法 Windows 批处理入门 |
实践题
新建一个github仓库,使用git,或者github desktop把接下去的编程题的代码及测试脚本传到这个仓库。
请使用.gitignore文件忽略不要上传的文件。用法自行百度。
英文看的我想哭
稀里糊涂的就上传上去了
编程题
- 继续完成作业一的编程题。
- 优化架构,一般要求每个函数长度不超过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;}
}
{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]);
}
}
测试的时候才想起来并没有十位以上的输入,这里也不知道怎么弄十位以上输入的代码
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
一开始打开是乱码
后来在另存为的时候改为这个什么ANSI编码就可以了
但最后跟第一次作业一样还是这种结果。
测试脚本和新功能的作业我挣扎过,。