关于我与小组成员逐步升级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项目的代码时, 又可以运行.. 解决方案: 检查 ...
随机推荐
- Django部署以及整合celery
前言 Djngo部署的结构一般都是nginx+uwsgi+python web 一.新建一个Djang项目并合并celery 项目名随便打的..命名规范驼峰啥的别和我扯犊子哈 跑一下,然后我们就有一个 ...
- K2 BPM获评“表现强劲”_2019 Forrester 报告_全球领先的工作流引擎
3月12日,在Forrester Research发布的报告<Forrester Wave:2019年第一季度广泛部署数字流程自动化(DPA)>中,K2获评“表现强劲”. 此次共有10项评 ...
- ImportError libcublas.so.9.0
What to do when you've installed cuda and tensorflow, but you get this error right after you import ...
- 谷歌SEO初学者常见问题解答
最近事特多,群里很多同学都在问一些非常基础的问题,实在没时间更没心情回答. (因为有些问题很基础,这些基础性问题根本不是一两句话能说清的,问这些问题的明显需要自己去好好学习,就跟小学生学加减法一样,自 ...
- inout口在modelsim仿真的方法
//主要是// 和**********部分是关键 1 `timescale 1ns/1ns module tb(); reg main_clk; :] addr; reg FPGA_CS0;//FPG ...
- 有关Java字符集编码的问题
在Java语言中,下列关于字符集编码(Character set encoding)和国际化(i18n)的问题,哪些是正确的? A.每个中文字符占用2个字节,每个英文字符占用1个字节 B.假设数据库中 ...
- SQL求几何重心
ST_Centroid(geometry); geometry :a specified ST_Geometry e.g.: select ST_AsText(ST_Centroid('0103000 ...
- spring-boot整合mybatis(web mysql logback配置)
pom.xml相关的配置说明. 配置文件看着比价多,在创建spring-boot项目的时候,自需要添加web,mysql,mybatis三个选项即可 <?xml version="1. ...
- paramiko__摘抄
# -*- coding:utf-8 -*-# Author: Dennis Huang__Author__ = "Dennis" import paramiko # ssh = ...
- java的重写
重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变.即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为. 也就是说子类能够根据需要实现父类的方法 ...