寒假作业二

这个作业属于哪个课程 面向对象程序设计
这个作业要求在哪里 面向对象程序设计寒假作业二
这个作业的目标 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仓库
希望老师少扣点分啊,家里网不行,现在非常时期又不敢外出,望老师体谅体谅,少扣点分啊。
我已就此问题询问助教老师,但由于提交时间迫近,我就先提交了。等助教老师告诉我方法后,我会再次补充发表实践题的博文。望老师少扣点啊。(重要的事情说三遍-

posted @ 2020-02-05 20:38  今夕9  阅读(301)  评论(1)    收藏  举报