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

这个作业属于哪个课程 2020年面向对象程序设计
这个作业要求在哪里 面向对象程序设计寒假作业2
这个作业的目标 1继续完成编程题 2新建一个github仓库,并把作业推送到该仓库 3发布博客
作业正文 作业2
其他参考文献 1GitHub Desktop的下载及其使用 2Windows批处理常用命令教程

实践题

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

1.下载github desktop,进入首页如下图

2进行注册,点在右上角file,点击new repository

3进入仓库所在文件夹,把作业相关文件复制到该文件夹,再点击commit to master


编程题(请使用C语言或者C++完成以下题目):

  • 继续完成作业一的编程题。
  • 优化架构,一般要求每个函数长度不超过15行。
  • 优化规范,尤其是命名规范。
  • 制作一个编译脚本,运行该脚本可以编译你的代码,可选的脚本语言,python(2.7),windows批处理,powershell,shell。

1先进行一个尝试,打开记事本,写下内容

另存为.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

!然后我运行出来的结果为

就非常的懵,后来经过百度得知要添加环境变量
win+r,打开命令行, 输入gcc -v 如果运行出来如下图所示就表明添加成功

但是!添加成功完成后又遇到了新的问题,运行结果为

后来在和同学讨论中她让我尝试换一个路径,结果竟然运行出来(?)

关于测试脚本

按照先前提交的同学的方法,先写一个测试代码

#include<stdio.h>
#include<string.h>
int channg1(char num[]);
void change2(int a);
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;
	else return -1;
	
}
int main()
{    int n,m,i;
	char a[11][10]={"零","一","二","三","四","五","六","七","八","九","十"};
	char b[8][10]={"望","仔","怎","么","不","喝","旺","仔"};
	printf("正确示范\n");
	for(i=0;i<11;i++)
	{   
		printf("%s",a[i]);
		n=change1(a[i]);
		if(m!=-1)
		printf("pass\n");
		else
		printf("error\n");
	}
	printf("错误示范\n");
	for(i=0;i<8;i++)
	{
		printf("%s",b[i]);
		m=change1(b[i]);
		if(m!=-1)
		printf("pass\n");
		else
		printf("error\n");
	}
	printf("结束测试");
	return 0; 
	
	 
}
@echo off
cd d:
echo 开始测试
ming.exe
echo 测试结束
Pause

生成.bat文件
测试结果如下

通过命令行读取一个文件

在main函数添加一段代码

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

在记事本中写上要测试的数字


但是我运行不出来1551

关于优化程序

  • 读题,提取出题目的要求。
  • 分解需求,把需求分解为几个你觉得不太相关的模块。
  • 思考每个模块怎么写,可以从简单的模块开始写。
  • 对于不会的问题进行查阅资料。
  • 对于每一个模块设计测试用例。
上一次的代码只能在零到九之间的输入运行,优化后的代码将范围扩大到零到九十九之间的输入运行

第一模块进行零到九之间的识别

int change1(char num[])

{
	if(strcmp("零",num)==0)return 0;
	if(strcmp("一",num)==0)return 1;
	if(strcmp("二",num)==0)return 2;
	if(strcmp("三",num)==0)return 3;
	if(strcmp("四",num)==0)return 4;
	if(strcmp("五",num)==0)return 5;
	if(strcmp("六",num)==0)return 6;
	if(strcmp("七",num)==0)return 7;
	if(strcmp("八",num)==0)return 8;
	if(strcmp("九",num)==0)return 9;
}

第二模块在第一个函数的基础下将零到九十九的汉字转换成数字

int change3(char c[])
{
	int total;
	char a[10];
	if(strlen(c)==2)
	total=change1(c);
	else
	{
		if(strlen(c)==4)
		{
			
			
		a[0]=c[0];
		a[1]=c[1];
		a[2]='\0';
		if(strcmp(a,"十")!=0)
		total=change1(a)*10;
		else
		{
			a[0]=c[2];
			a[1]=c[3];
			a[2]='\0';
			total=change1(a)+10;
		}
		
	}
	else
	{
		a[0]=c[0];
		a[1]=c[1];a[2]='\0';
		total=change1(a)*10;
		a[0]=c[4];
		a[1]=c[5];
		a[2]='\0';
		total+=change1(a);
		
	}
}
	return total;
}

第三个模块进行数字1-10转换汉字,用来输出

void change2(int a)
{
	if(a==1)
	printf("一");
	else if(a==2)
	printf("二");
	else if(a==3)
	printf("三");
	else if(a==4)
	printf("四");
	else if(a==5)
	printf("五");
	else if(a==6)
	printf("六");
	else if(a==7)
	printf("七"); 
	else if(a==8)
	printf("八");
	else if(a==9)
	printf("九");
	else if(a==10)
	printf("十");
 } 

第四个模块进行数字之间的运算,将运算结果返回第三个函数,最后将结果输出

 int main()
 {
 	char s1[20],s2[20],s3[20],s4[20];
 	int n,sum=0,number;
 	scanf("%s %s %s %s",s1,s2,s3,s4);
 	n=change3(s4);
 	char b1[20],b2[20],b3[20],b4[20];
 	sum=change3(s4);
 	while(1)
 	{
 		scanf("%s %s",b1,b2);
 		
 		if(strcmp("看看",b1)==0)
 		break;
 		scanf("%s",b3);
 		number=change3(b3);
 		if(strcmp("增加",b2)==0)
 		sum+=number;
 		else
 		if(strcmp("减少",b2)==0)
 		sum-=number;
 		
	 }
	 int ten=10;
	 if(sum<=10)
	 {
	    change2(sum);
	 }
	 else
	 {
	 	if(sum<20)
	 	{
		 change2(ten);
	 	change2(sum%10);}
	 	else
	 	{
	 		if(sum%10==0)
	 		{
			 change2(sum/10);
	 		change2(ten);}
	 		else{
			 change2(sum/10);
			 change2(ten);
			 change2(sum%10);}
	 		
		 }
	 	
	 }
	return 0; 
 }

最后完整的代码

#include<stdio.h>
#include<string.h>
int channg1(char num[]);
void change2(int a);
int change3(char c[]);
int change1(char num[])

{
	if(strcmp("零",num)==0)return 0;
	if(strcmp("一",num)==0)return 1;
	if(strcmp("二",num)==0)return 2;
	if(strcmp("三",num)==0)return 3;
	if(strcmp("四",num)==0)return 4;
	if(strcmp("五",num)==0)return 5;
	if(strcmp("六",num)==0)return 6;
	if(strcmp("七",num)==0)return 7;
	if(strcmp("八",num)==0)return 8;
	if(strcmp("九",num)==0)return 9;
}
int change3(char c[])
{
	int total;
	char a[10];
	if(strlen(c)==2)
	total=change1(c);
	else
	{
		if(strlen(c)==4)
		{
			
			
		a[0]=c[0];
		a[1]=c[1];
		a[2]='\0';
		if(strcmp(a,"十")!=0)
		total=change1(a)*10;
		else
		{
			a[0]=c[2];
			a[1]=c[3];
			a[2]='\0';
			total=change1(a)+10;
		}
		
	}
	else
	{
		a[0]=c[0];
		a[1]=c[1];a[2]='\0';
		total=change1(a)*10;
		a[0]=c[4];
		a[1]=c[5];
		a[2]='\0';
		total+=change1(a);
		
	}
}
	return total;
}
	


void change2(int a)
{
	if(a==1)
	printf("一");
	else if(a==2)
	printf("二");
	else if(a==3)
	printf("三");
	else if(a==4)
	printf("四");
	else if(a==5)
	printf("五");
	else if(a==6)
	printf("六");
	else if(a==7)
	printf("七"); 
	else if(a==8)
	printf("八");
	else if(a==9)
	printf("九");
	else if(a==10)
	printf("十");
 } 
 int main()
 {
 	char s1[20],s2[20],s3[20],s4[20];
 	int n,sum=0,number;
 	scanf("%s %s %s %s",s1,s2,s3,s4);
 	n=change3(s4);
 	char b1[20],b2[20],b3[20],b4[20];
 	sum=change3(s4);
 	while(1)
 	{
 		scanf("%s %s",b1,b2);
 		
 		if(strcmp("看看",b1)==0)
 		break;
 		scanf("%s",b3);
 		number=change3(b3);
 		if(strcmp("增加",b2)==0)
 		sum+=number;
 		else
 		if(strcmp("减少",b2)==0)
 		sum-=number;
 		
	 }
	 int ten=10;
	 if(sum<=10)
	 {
	    change2(sum);
	 }
	 else
	 {
	 	if(sum<20)
	 	{
		 change2(ten);
	 	change2(sum%10);}
	 	else
	 	{
	 		if(sum%10==0)
	 		{
			 change2(sum/10);
	 		change2(ten);}
	 		else{
			 change2(sum/10);
			 change2(ten);
			 change2(sum%10);}
	 		
		 }
	 	
	 }
	return 0; 
 }

运行的结果为

posted @ 2020-02-05 15:12  mingliangzi  阅读(162)  评论(1编辑  收藏  举报