面向对象程序设计2020第二次作业

这个作业属于哪个课程 2020面向对象程序设计张栋班
这个作业要求在哪里 【寒假作业2】(https://edu.cnblogs.com/campus/fzu/2020OOP/homework/10231)
这个作业的目标 完善代码、新建GitHub仓库并上传代码、制作编译脚本、进行单元测试并制作测试脚本、添加文件读取功能
作业正文 【面向对象程序设计2020第二次作业】( https://www.cnblogs.com/dudu340/p/12255700.html)
参考文献 1、【如何在github创建新的仓库项目】(https://blog.csdn.net/qq_35869389/article/details/79472564)2、【C语言中函数返回字符串的四种方法】(https://www.cnblogs.com/qingergege/p/6496683.html)3、【GitHub Desktop的简易使用方法】(https://blog.csdn.net/xiaolongqinghua/article/details/87785139) 4、【Windows批处理(cmd/bat)常用命令教程】(https://www.cnblogs.com/xpwi/p/9626959.html)
一、编程题
在这次作业中,作业要求我们对上次编程题的程序进行优化,要求每个函数的长度一般不超过15行。因此,在这次优化中,我主要针对输出进行优化。在上次的代码中,由于我在输出时使用枚举法进行输出,更由于在输入时的加减运算可能不止一次,那么最后输出的范围则可能很大,因此我用于输出的函数会很长。因此,我在这次函数中,即
char shuchu(int sum);
if(strcmp(b,str2)==0)
    if(sum<10)
        {
            printf("%c",shuchu(sum));	
	}	
    else
	{
	    m=sum/10;n=sum%10;
	    if(n==0)
	        {
		    printf("%c十",shuchu(m));	
		} 
	    else
		{
		    printf("%c十%c",shuchu(m),shuchu(n));
	        }
	}
char shuchu(int x)
	{
		if(x==1)
			return '一';
		else 
			if(x==2)
				return '二';
		else
			if(x==3)
				return '三';
		else
			if(x==4)
				return '四';
		else
			if(x==5)
				return '五';
		else
			if(x==6)
				return '六';
		else
			if(x==7)
				return '七';
		else
			if(x==8)
				return '八';
		else
			return '九';			 
	}

但如果我这样优化,又会出现问题,即

在编译时,这样的程序并不能编译成功,我试过对(一~九)加过双引号或者不加引号,但编译都不能成功,但如果不把函数值返回,我就无法在函数中将大于十的数输出。我在网上查到一些可以用函数输出字符串的方法(C语言中函数返回字符串的四种方法(https://www.cnblogs.com/qingergege/p/6496683.html)),但是还没有试验过能否也适用于中文的返回,会在之后去试试。
至于命名规范这一问题,我认为,要想让每一个阅读程序的人更容易地理解每个函数的意思,那么首先应该见名知义。如果我们随意的命名每个函数的名字,诸如用x,y来命名,那么过一段时间之后可能连作者都不能理解程序了。因此,一个好的名字有助于我们更好的理解函数。我在之前程序中命名函数时都是采用拼音形式命名,碰上例如“钱包 增加 八”则会对应到“zengjia”这个函数。

在作业中,要求制作一个编译脚本,并用该脚本编译代码,我选择的脚本语言是Windows批处理。
Windows批处理:
首先打开记事本,在记事本输入

然后“另存”为文件名“xx.bat”,并且在“保存类型”中下拉“所有类型”,则可得到一个bat文件。但我在第一次弄完后得到一个乱码文件,即

后来在群里大佬的建议下,改为用写字板,

就可以得到一个正常的文件啦。

然后开始编译脚本:方法一、(这个我参考了其他人的方法)

@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

但是我在编译时,并未能编译成功,

我本来以为这与我代码本身存在问题有关;但后来我又写了一个“Hello World”的简单代码,仍然提示编译失败,那么应该不是代码本身的问题,在尝试后我在文件名后加上.cpp后,发现就可以编译成功了。


方法二:(按照作业中的示例脚本)
在写字板写上以下内容:

gcc CCC.cpp -o lang.exe
pause

则可以在运行后得到一个lang的.exe文件

接下来开始测试脚本:

# include<stdio.h>
# include<string.h>
int main()
	{
		int zhi(char s[]);
		char a[11][10]={"零","一","二","三","四","五","六","七","八","九","十"}; 
   		char b[6][10]={"傲","慢","与","偏","见"};
		int i,j,k,t;
		for(i=0;i<=9;i++)
			{
				printf("%s",a[i]);
				t=zhi(a[i]);
				if(t!=-2)
					printf("pass");
				else
					printf("error");
			}
		for(i=0;i<=4;i++)
			{
				printf("%c\n",b[i]);
				t=zhi(b[i]);
				if(t!=-2)
					printf("pass");
				else
					printf("error");
			}
		return 0;
	}
int zhi(char s[])
	{
		if(strcmp(s,"一")==0) return 1;
    	        else 
		    if(strcmp(s,"二")==0) return 2;
   		else 
		    if(strcmp(s,"三")==0) return 3;
   	 	else 
		    if(strcmp(s,"四")==0) return 4;
    	        else 
		    if(strcmp(s,"五")==0) return 5;
    	        else 
		    if(strcmp(s,"六")==0) return 6;
    	        else 
		    if(strcmp(s,"七")==0) return 7;
    	        else 
		    if(strcmp(s,"八")==0) return 8;
    	        else 
		    if(strcmp(s,"九")==0) return 9;
    	        else 
		    if(strcmp(s,"零")==0) return 0;
    	        else return -2;
	}

并且在写字板上写下以下内容用于测试:

@echo off
cd d:
echo 开始测试
biancheng3.exe
echo 测试结束
Pause

则测试成功

通过在其他大佬的帮助下,明白了为了可以通过命令行读取一个文件,我还需要使用一个freopen函数。而操作方法就是在原函数中的main函数中再加上以下语句:

printf("请输入文件名\n"); 
 char s[15];
 scanf("%s",s);
 freopen(s,"r",stdin);

在写字板上写下要测试的内容:

然后在编译时输入文件名,即可

(这个不能编译出结果与我自己的代码本身有问题有关)
二、实践题
在这次实践题中,要求新建一个github仓库,并将该次作业中编程题中的代码以及脚本搬到仓库中。因此,首要问题便是如何新建一个仓库。首先,打开github页面,选择“Create a new repository”,即可出现一下这个界面,

然后,在填好“Repository name”等信息后,即可进入下一个界面,

那么,一个新的仓库我们就建好了。
接下来就是将文件上传到我们新建的这个仓库了。
安装git:
下载git。首先,需要下载git安装文件, 安装好git之后,可以这样测试是否成功:安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!即

使用github Desktop:
首先打开github Desktop,则会出现这样一个界面:

点击clone a repository,则

往仓库里上传文件:
我在这里碰上了一个大难题,打开github Desktop之后,我完全没有找到可以添加的按键,然后在查阅资料后,发现可以将需要添加的文件放在目录下,这就可以将文件贴在仓库里了。这样我就将文件上传到github了。

然后填好一下的内容后,就可以点击“Commit to master”。


反思与总结:
总的来说,这次作业对我的挑战很大,毕竟绝大部分对我来说都是新知识(之前真的一点都不会),但是,经过百度以及参考多位大佬的作业,还是艰难的做完作业,收获良多。但还有一些部分并没有真正的做好,会在之后的时间再去努力。

原文地址:https://www.cnblogs.com/dudu340/p/12255700.html