寒假作业二
| 这个作业属于哪个课程 | 面向对象程序设计 |
|---|---|
| 这个作业要求在哪里 | 面向对象程序设计寒假作业二 |
| 这个作业的目标 | 1.继续完成编程题 2.新建一个github仓库,并把作业推送到该仓库。 3.发布博客 |
| 作业正文 | 寒假作业二 |
| 参考文献 | 如何获取命令行参数 Git的讲解使用 如何建立github仓库 |
一、编程题
继续完成作业一的编程题。
优化架构,一般要求每个函数长度不超过15行。
优化规范,尤其是命名规范。
制作一个编译脚本,运行该脚本可以编译你的代码,可选的脚本语言,python(2.7),windows批处理,powershell,shell。
示例脚本:
gcc 1.cpp -o lang.exe
-进行单元测试,即测试每一个函数,并制作一个测试脚本,运行该脚本可以进行测试,并显示测试结果。
优化代码
总代码如下:
#include<stdio.h>
#include<string.h>
int change1(char num[])
{
if(strcmp("零",num)==0)
return 0;
else if(strcmp("一",num)==0)
return 1;
else if(strcmp("二",num)==0)
return 2;
else if(strcmp("三",num)==0)
return 3;
else if(strcmp("四",num)==0)
return 4;
else if(strcmp("五",num)==0)
return 5;
else if(strcmp("六",num)==0)
return 6;
else if(strcmp("七",num)==0)
return 7;
else if(strcmp("八",num)==0)
return 8;
else if(strcmp("九",num)==0)
return 9;
}
int change2(int n)
{
if(n==0) printf("零");
if(n==1) printf("一");
if(n==2) printf("二");
if(n==3) printf("三");
if(n==4) printf("四");
if(n==5) printf("五");
if(n==6) printf("六");
if(n==7) printf("七");
if(n==8) printf("八");
if(n==9) printf("九");
}
void result(int n)
{
if(n<=10)
change2(n);
else if(n<20)
{
printf("十");
change2(n%10);
}
else if(n%10==0)
{
change2(n/10);
printf("十");
}
else if(n>20)
{
change2(n/10);
printf("十");
change2(n%10);
}
}
int main()
{
char a[10],b[10],c[10],num[10];
int n;
scanf("%s %s %s %s",a,b,c,num);
n=change1(num);
while(1)
{
scanf("%s ",b);
if(strcmp(b,"看看")!=0)
{
scanf("%s %s",c,num);
if(strcmp(c,"增加")==0)
n+=change1(num);
if(strcmp(c,"减少")==0)
n-=change1(num);
}
else
break;
}
scanf("%s",c);
result(n);
return 0;
}
我在作业一中把数字转化成中文输出时由于中文十几,几十几的差异而另外写的函数也写在主函数中,按题目要求,为了缩短行数,我将这部分函数独立出来,写成一个result函数用来输出结果,具体代码如下:
void result(int n)
{
if(n<=10)
change2(n);
else if(n<20)
{
printf("十");
change2(n%10);
}
else if(n%10==0)
{
change2(n/10);
printf("十");
}
else if(n>20)
{
change2(n/10);
printf("十");
change2(n%10);
}
}
同时,我将数换中和中换数的代码进行了简略优化,具体代码如下:
int change1(char num[])
{
if(strcmp("零",num)==0)
return 0;
else if(strcmp("一",num)==0)
return 1;
else if(strcmp("二",num)==0)
return 2;
else if(strcmp("三",num)==0)
return 3;
else if(strcmp("四",num)==0)
return 4;
else if(strcmp("五",num)==0)
return 5;
else if(strcmp("六",num)==0)
return 6;
else if(strcmp("七",num)==0)
return 7;
else if(strcmp("八",num)==0)
return 8;
else if(strcmp("九",num)==0)
return 9;
}
int change2(int n)
{
if(n==0) printf("零");
if(n==1) printf("一");
if(n==2) printf("二");
if(n==3) printf("三");
if(n==4) printf("四");
if(n==5) printf("五");
if(n==6) printf("六");
if(n==7) printf("七");
if(n==8) printf("八");
if(n==9) printf("九");
}
编译脚本
我对脚本一窍不通,在观摩了大佬提交的作业和助教在群里的解释,终于勉强弄出和示例一样的脚本,具体脚本如下:
@echo off
echo 请输入文件所在磁盘
set /p a=
echo 正在转移到该磁盘
cd "%a%"
echo 请输入文件所在路径
set /p b=
echo 转移到文件路径
cd "%b%"
echo 请输入文件名
set /p c=
echo 编译开始
gcc "%c%" -o try.exe
if exist "try.exe" echo 编译成功
if not exist "try.exe" echo 编译失败
pause
测试脚本
我看了其他同学的作业后,也跟着使用代码中转化中文数字的函数进行测试,具体代码如下:
int change1(char num[])
{
if(strcmp("零",num)==0)
return 0;
else if(strcmp("一",num)==0)
return 1;
else if(strcmp("二",num)==0)
return 2;
else if(strcmp("三",num)==0)
return 3;
else if(strcmp("四",num)==0)
return 4;
else if(strcmp("五",num)==0)
return 5;
else if(strcmp("六",num)==0)
return 6;
else if(strcmp("七",num)==0)
return 7;
else if(strcmp("八",num)==0)
return 8;
else if(strcmp("九",num)==0)
return 9;
}
int change2(int n)
{
if(n==0) printf("零");
if(n==1) printf("一");
if(n==2) printf("二");
if(n==3) printf("三");
if(n==4) printf("四");
if(n==5) printf("五");
if(n==6) printf("六");
if(n==7) printf("七");
if(n==8) printf("八");
if(n==9) printf("九");
}
void result(int n)
{
if(n<=10)
change2(n);
else if(n<20)
{
printf("十");
change2(n%10);
}
else if(n%10==0)
{
change2(n/10);
printf("十");
}
else if(n>20)
{
change2(n/10);
printf("十");
change2(n%10);
}
}
测试结果如下:
@echo off
cd C:\Users\lenovo\Desktop
echo 开始测试
test1.exe
echo 测试结束
Pause

添加功能
在记事本中编写内容如下:

在班内同学指导下,我知道了要使用freopen函数,我添加了以下代码:
printf("输入文件名\n");
char s[10];
scanf("%s",s);
freopen(s,"r",stdin);
结果如下:

实践题
新建一个github仓库,使用git,或者github desktop把接下去的编程题的代码及测试脚本传到这个仓库。
请使用.gitignore文件忽略不要上传的文件。

由于家里网络问题(我已尝试手机热点,邻居家信号等方法),我无法下载Git,所以无法进行作业实践。但是,为了不因此使自己又落后知识,我认真阅读了网上廖雪峰老师关于Git的讲解,并在B站观看了实践操作视频,具体链接如下:
Git的讲解使用
如何建立github仓库
希望老师少扣点分啊,家里网不行,现在非常时期又不敢外出,望老师体谅体谅,少扣点分啊。
我已就此问题询问助教老师,但由于提交时间迫近,我就先提交了。等助教老师告诉我方法后,我会再次补充发表实践题的博文。望老师少扣点啊。(重要的事情说三遍-)

浙公网安备 33010602011771号