关于我与小组成员逐步升级C代码时的一些感想【第二次作业】
#include<stdio.h>
#include<stdlib.h>
#include <time.h>
int main(){
srand(time(NULL));
int sum=,sum1,x,y;
float an[],a,b,c;
printf("请输入要随机几道计算题:");
scanf("%d",&sum1);
printf("1.不带乘除法 2.带乘除法 请输入你的选择:");
scanf("%d",&y);
if(y==){
while(sum<sum1){
a=rand()%;
b=rand()%;
c=rand()%;
switch(rand()%){
case :an[sum]=a+b+c;
if(an[sum]>||an[sum]<)break;
else{
printf("%d:%.1f+%.1f+%.1f=\n",sum+,a,b,c);
sum++;
break;
}
case :an[sum]=a+b-c;
if(an[sum]>||an[sum]<)break;
else{
printf("%d:%.1f+%.1f-%.1f=\n",sum+,a,b,c);
sum++;
break;
}
case :an[sum]=a-b-c;
if(an[sum]>||an[sum]<)break;
else{
printf("%d:%.1f-%.1f-%.1f=\n",sum+,a,b,c);
sum++;
break;
}
case :an[sum]=a-b+c;
if(an[sum]>||an[sum]<)break;
else{
printf("%d:%.1f-%.1f+%.1f=\n",sum+,a,b,c);
sum++;
break;
}
}
}
printf("答案如下:\n");
for(int i=;i<sum;i++)printf("%d:%.1f\n",i+,an[i]);
}
if(y==){
while(sum<sum1){
a=rand()%+;
b=rand()%+;
c=rand()%+;
switch(rand()%){
case :an[sum]=a+b+c;
if(an[sum]>||an[sum]<)break;
else{
printf("%d:%.1f+%.1f+%.1f=\n",sum+,a,b,c);
sum++;
break;
}
case :an[sum]=a+b-c;
if(an[sum]>||an[sum]<)break;
else{
printf("%d:%.1f+%.1f-%.1f=\n",sum+,a,b,c);
sum++;
break;
}
case :an[sum]=a-b-c;
if(an[sum]>||an[sum]<)break;
else{
printf("%d:%.1f-%.1f-%.1f=\n",sum+,a,b,c);
sum++;
break;
}
case :an[sum]=a-b+c;
if(an[sum]>||an[sum]<)break;
else{
printf("%d:%.1f-%.1f+%.1f=\n",sum+,a,b,c);
sum++;
break;
}
case :an[sum]=a+b*c;
if(an[sum]>||an[sum]<)break;
else{
printf("%d:%.1f+%.1f*%.1f=\n",sum+,a,b,c);
sum++;
break;
}
case :an[sum]=a+b/c;
if(an[sum]>||an[sum]<||c==)break;
else{
printf("%d:%.1f+%.1f/%.1f=\n",sum+,a,b,c);
sum++;
break;
}
case :an[sum]=a-b*c;
if(an[sum]>||an[sum]<)break;
else{
printf("%d:%.1f-%.1f*%.1f=\n",sum+,a,b,c);
sum++;
break;
}
case :an[sum]=a-b/c;
if(an[sum]>||an[sum]<||c==)break;
else{
printf("%d:%.1f-%.1f/%.1f=\n",sum+,a,b,c);
sum++;
break;
}
case :an[sum]=a*b+c;
if(an[sum]>||an[sum]<)break;
else{
printf("%d:%.1f*%.1f+%.1f=\n",sum+,a,b,c);
sum++;
break;
}
case :an[sum]=a*b-c;
if(an[sum]>||an[sum]<)break;
else{
printf("%d:%.1f*%.1f-%.1f=\n",sum+,a,b,c);
sum++;
break;
}
case :an[sum]=a*b*c;
if(an[sum]>||an[sum]<)break;
else{
printf("%d:%.1f*%.1f*%.1f=\n",sum+,a,b,c);
sum++;
break;
}
case :an[sum]=a*b/c;
if(an[sum]>||an[sum]<||c==)break;
else{
printf("%d:%.1f*%.1f/%.1f=\n",sum+,a,b,c);
sum++;
break;
}
case :an[sum]=a/b+c;
if(an[sum]>||an[sum]<||b==)break;
else{
printf("%d:%.1f/%.1f+%.1f=\n",sum+,a,b,c);
sum++;
break;
}
case :an[sum]=a/b-c;
if(an[sum]>||an[sum]<||b==)break;
else{
printf("%d:%.1f/%.1f-%.1f=\n",sum+,a,b,c);
sum++;
break;
}
case :an[sum]=a/b*c;
if(an[sum]>||an[sum]<||b==)break;
else{
printf("%d:%.1f/%.1f*%.1f=\n",sum+,a,b,c);
sum++;
break;
}
case :an[sum]=a/b/c;
if(an[sum]>||an[sum]<||b==||b==)break;
else{
printf("%d:%.1f/%.1f/%.1f=\n",sum+,a,b,c);
sum++;
break;
}
} }
printf("答案如下:\n");
for(int i=;i<sum;i++)printf("%d:%.1f\n",i+,an[i]);
}
return ;
}
部分截图


刚开始我和我的搭档写的软件是一个简单的可以随机显示加减法题目的软件,这种简单的软件对于我和搭档这样写了一年半代码的人来说根本不是问题,不用分工合作,我的搭档一个人五分钟就写出来了,刚开始我们都十分自信,因为我们都认为逐渐改进程序,增加新的功能不过就是多添加几个循环而已。
接下来我们尝试增加程序的几个功能,比如题目避免重复还有具体的定制,我们一人负责一部分,我的想法是创建两个数组来记录下生成的题目,在下一次生成题目之前和上一次进行比较,重复则另随机函数重新生成,于是我就开始我增加代码的工作。当我准备把我的代码和我的搭档的代码整合到一块儿时,我发现他的思路和我的思路,不一样,他为了程序可以具体选择是否可以加乘除法写了两个循环,这样的话我把我的循环套上去就会产生bug,无奈我们只能重新写。
我们总结了经验,这一次我们事先彼此之间交换了对于这个程序的意见,最终确定了放弃循环,用switch,case方法来修改,最后我们花了比预期多出好几倍的时间才完成。
在写程序的过程中,有一次电脑突然产生bug,我们没来得及备份,导致修改的代码完全被重置。如果应用程序需要修改系统设置,记着应用开始前先保存设置,应用结束后要恢复设置,千万别污染环境。
我们发现其实写程序最困难的并不是写出无bug的代码,而是没有在编写程序之前确定编写程序的方向,在一开始我们写最基础的程序之前就应该构思好框架,这样以后就算是修改程序我们也可以有条不紊,我们应该养成这种写代码时的小习惯,同时也是好习惯。
现在是模块化程序设计的天下,应用程序要实现的目标就是金字塔尖,进行程序设计规划的意义就在于,对构成金字塔的基础模块进行划分,规划得越详细,模块分工越明确,越容易明白下一步该做什么,这好比搭积木的游戏,我们可以把你的积木块组合成各种各样的形状,但首先要熟悉每个积木块的功能。中国人讲究对称之美,用在编程里也很合适,如果程序里用到A循环嵌套B判断,B判断又包含C循环之类的结构,我们最好是使用缩进法,让A:ENDDO对齐A:DO,B:ENDIF对齐B:IF……诸如此类,依次缩进,总之对称就等于美观加易读。
我的搭档:1759131 徐梓渊
关于我与小组成员逐步升级C代码时的一些感想【第二次作业】的更多相关文章
- gerrit设置非小组成员禁止下载代码
对gerrit有所了解的同学,都知道gerrit 是我们常用的一个来做代码审核的工具,其中的权限管理,是一个非常重要的环节,关于每个权限的使用范围,可以参考博客https://blog.csdn.ne ...
- java类成员变量与代码块初始化
首先根据下面的这个一段代码:引入关于java初始化顺序的问题public class InitationTest extends Person { public InitationTest() { S ...
- Confluence 6 如何让我的小组成员知道那些内容是重要的
如果你的 Confluence 中已经有了很多内容,定义那些内容是重要看起是一件艰巨的任务 —— 但是下面的一些特性能够帮助你的小组确定那些内容是他们应该关心的. 我的空间(My Spaces) 添加 ...
- Java类的成员之四:代码块.
3.2类的成员之四:代码块 ①初始化块(代码块)作用:对Java对象进行初始化 ②程序的执行顺序: ③一个类中初始化块若有修饰符,则只能被static修饰,称为静态代码块(static block ) ...
- 2017-2018-1 Java小组-1623 第二周作业
2017-2018-1 Java小组-1623 第二周作业 关于游戏软件的问题 讨论结果 20162301张师瑜 20162305李昱兴 20162306陈是奇 20162308马平川 2016231 ...
- 父类指针指向子类内存,为什么当父类的成员函数不加virtual时,访问的还是父类的成员函数,而不是子类同名的成员函数
我认为是这样,类的成员函数都在代码区,不同的类的成员函数在代码区有自己的类名称空间限制,类的虚函数在虚函数表中,程序执行的时候,是先在虚函数表中找该成员函数,如果没有找到,就去该类在代码区的成员函数中 ...
- github提交代码时,报permission denied publickey
在像github提交代码时,报permission denied publickey. 查找了一下,可能是因为github的key失效了. 按照以下步骤,重新生成key. ssh-keygen 一路默 ...
- git commit 代码时提示: Warning: Your console font probably doesn‘t support Unicode.
git 提交代码是会遇到以下问题, git commit 代码时提示: Warning: Your console font probably doesn‘t support Unicode. If ...
- VS Bug 当获取其他项目的代码时, F5 无法进入调试模式. 也不报错....
在64位的机子下, 被获用的项目使用X86时会出现. 就会出现 F5 无法进入调试模式. 也不报错.... 打断点也没有用. 在不加入X86项目的代码时, 又可以运行.. 解决方案: 检查 ...
随机推荐
- Property Exercise
要求一:自定义用户信息数据结构,写入文件,然后读出内容,利用eval重新获取数据结构 3 with open('user.db','w') as write_file:#创建并以写入的方式打开一个文件 ...
- git add.后回退 代码丢失
记录一次操作git丢失代码的过程: 写完代码后:git staus git add. git status 发现有一堆.class 文件不想提交,想着代码回退到add 之前,使用了 git log 开 ...
- linux目录说明
/etc/passwd 用户信息文件 [root@web01 ~]# cat /etc/passwd root: x: : : root: /root: /bin/bash 可登录用户 bin: x ...
- wifi探针的使用说明.
我使用的是四博智联提供的WIFI探针 DT-06产品 点击打开链接 1. 数据读取 可以直接通过串口即可读取数据,串口波特率设置为 115200,其它选项默认. 如果需要PC机测试,请使用杜邦线转接到 ...
- 酷学习笔记——ASP.NET Core 简介
ASP.NET Core 简介 其实就是说酷好,不好好学,不学好,没饭吃. 新词汇:IoT,Internet of Things,网联网,微软物联网英文网站.微软物联网中文网站
- eclipse安装反编译插件(附jad下载)
eclipse安装反编译插件(附jad下载) 博客分类: eclipse 一.eclipse反编译插件Jadclipse jadclips插件网站: http://jadclipse.sou ...
- bootstrap-fileinput多图片上传
在页面写一个input框: <input id="subGraphAddress1" name="subGraphAddress" type=" ...
- oracle 查询年月日连在一起
SELECT B.YEAR || replace(lpad(B.MONTH, 2), ' ', '0') || replace(lpad(B.WEEK, 2), ' ', '0') from TT_U ...
- openstack常用命令-neutron篇
列出当前租户所有的网络 neutron net-list 列出所有租户的所有网络(需要管理员权限) neutron net-list --all-tenants 创建一个网络(vlan/flat) n ...
- Android BLE dfu升级
dfu升级适用于nordic nRF51 nRF52 的系统,github上提供了相关升级的库https://github.com/NordicSemiconductor/Android-DFU- ...