GIT地址 | https://github.com/Codesilly |
GIT用户名 | Codesilly |
学号后五位 | 61211 |
博客地址 | https://www.cnblogs.com/xlog/ |
作业链接 | https://www.cnblogs.com/harry240/p/11515697.html |
一、环境配置过程
我使用的是Visual Studio 2019社区版,如图一
(1)VS2019支持按照需要安装的特点,为使用用户节省了更多的内存。
(2)支持20多种编程语言和源码管理。
(3)VS社区版免费提供给初学者和程序员使用。
VS2019有很多种安装方式,例如百度网盘,官网下载
官网的下载链接:https://visualstudio.microsoft.com/zh-hans/vs/
由于我们现在只需要C/C++的编译环境,所以我们只需要选择使用C++的桌面开发,如图二
在下载过后,可以选择自己喜欢的界面颜色设置如图三,本人感觉黑色衬托着彩色代码更加好看,主要还是看大家喜好。
二、代码设计思路
Part 1
阿超家里的孩子上小学一年级了,这个暑假老师给家长布置了一个作业,家长每天要给孩子出一些合理的,弹药有些难度的四则运算题目,并且家长要给孩子的作业打分记录。
作为程序员的阿超心想,既然每天都需要出题,那何不做一个可以主动生成小学四则运算题目的命令行”软件”呢。他把老师的话翻译一下,就形成了这个软件的需求。
Part 2
随机生成一定数量的四则运算法则,所以操作数的前提是不重复,并且由于这个孩子还是一个小学生,所以操作数还有着一定的范围,首先一定是整数,不能带小数点;其次范围应该在0-100之间。我们可以选择2到3个运算符的算式,并且可以加上(){}等判断运算先后的符号。这些就是算式的基本要求。
Part 3
基本算式的思路已经出来,接下来我们就需要考虑如何编写一个自动生成算式的程序,由于计算机只认识“0”和“1”这两个数字,所以我们要具体的把如何生成算式的方法用高级语言表达出来。
进行四则运算
...
void add()
{
int a, b, c, d;
a = rand() % 100;
b = rand() % 100;
printf("%d+%d=\n", a, b);
c = a + b;
}
void minute()
{
int a, b, c, d;
a = rand() % 100;
b = rand() % 100;
printf("%d-%d=\n", a, b);
c = a - b;
}
void multi()
{
int a, b, c, d;
a = rand() % 100;
b = rand() % 100;
printf("%d*%d=\n", a, b);
c = a * b;
}
void division()
{
int a, b;
float c, d;
while (1)
{
a = rand() % 100;
b = rand() % 100;
if (b)
{
break;
}
}
printf("%d/%d=\n", a, b);
c = (float)a / b;
}
...
进行混合运算
...
void mixing()
{
int a, b, c, d, e, f;
int m = 1;
a = rand() % 100;
b = rand() % 100;
c = rand() % 100;
d = rand() % 7;
while (m)
{
switch (d)
{
case 0:
{
printf("%d*(%d+%d)=\n", a, b, c);
e = a * (b + c);
break;
}
case 1:
{
printf("%d/(%d+%d)=\n", a, b, c);
e = a / (b + c);
break;
}
case 2:
{
printf("%d*%d/%d=\n", a, b, c);
e = a * b / c;
break;
}
case 3:
{
printf("%d+%d-%d=\n", a, b, c);
e = a + b - c;
break;
}
case 4:
{
printf("%d/%d/%d=\n", a, b, c);
e = a / b / c;
break;
}
case 5:
{
printf("%d*%d*%d=\n", a, b, c);
e = a * b * c;
break;
}
case 6:
{
printf("%d+%d+%d=\n", a, b, c);
e = a + b + c;
break;
}
default:
printf("程序错误!\n");
break;
}
m = 0;
}
}
...
核心的自动编程部分
...
void Automatic()
{
srand(time(NULL));
int number;
int i,count=0;
float j;
printf("请输入需要生成的题目数:");
scanf("%d", &number);
while (1)
{
i = rand() % 5;
switch (i)
{
case 0:
add();
count++;
break;
case 1:
minute();
count++;
break;
case 2:
multi();
count++;
break;
case 3:
division();
count++;
break;
case 4:
mixing();
count++;
break;
default:
printf("程序错误!\n");
break;
}
if (count == number)
{
break;
}
}
}
...
最后的实现成果如图四
三、记录使用Github克隆项目及提交代码的整个过程
克隆项目:找到阿超的阿超的仓库,并将其代码拷贝过来
我简单的在D盘中,打开Git软件,输入git clone,在输入我自己的仓库地址。(惊奇的发现,在Git上无法进行Ctrl+v粘贴)
在D盘中我们克隆了一个文件,在文件下新建一个文件,并且以我们的Github的名字命名,所以我创建了一个Codesilly的文件
在Codesilly文件下创建了项目,将我自己写的四则运算写入程序中。经过调试后我开始向Github上提交代码,首先我使用git status进行测试。
测试之后出nothing to commit之后,我是用git push,跳出了Github登录窗口。
登录之后我就将自己的代码上传到Github中了。
四、总结
在这次的课题研究中,最大的收获就是学习到Github与Git的使用方法,接触较完善、较便利的开源平台,对自己以后的软件开发有着巨大的促进作用,并且一定程度上提升自己的软件开发能力。
在这次自动生成四则运算的小程序中,由于以前对编译器就进行过设置和环境的配置,所以过程中并未遇到什么比较麻烦的问题。这次的小程序主要是用C语言编写,但看到很多大佬用C++、Java、python等语言,知道自己还有很大的学习空间。并且发现自己在对自动生成四则运算的编写中,没有大佬们写的更加完善,例如文件的编写和答案的比对,说明我的代码还需要继续改进