#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代码时的一些感想【第二次作业】的更多相关文章

  1. gerrit设置非小组成员禁止下载代码

    对gerrit有所了解的同学,都知道gerrit 是我们常用的一个来做代码审核的工具,其中的权限管理,是一个非常重要的环节,关于每个权限的使用范围,可以参考博客https://blog.csdn.ne ...

  2. java类成员变量与代码块初始化

    首先根据下面的这个一段代码:引入关于java初始化顺序的问题public class InitationTest extends Person { public InitationTest() { S ...

  3. Confluence 6 如何让我的小组成员知道那些内容是重要的

    如果你的 Confluence 中已经有了很多内容,定义那些内容是重要看起是一件艰巨的任务 —— 但是下面的一些特性能够帮助你的小组确定那些内容是他们应该关心的. 我的空间(My Spaces) 添加 ...

  4. Java类的成员之四:代码块.

    3.2类的成员之四:代码块 ①初始化块(代码块)作用:对Java对象进行初始化 ②程序的执行顺序: ③一个类中初始化块若有修饰符,则只能被static修饰,称为静态代码块(static block ) ...

  5. 2017-2018-1 Java小组-1623 第二周作业

    2017-2018-1 Java小组-1623 第二周作业 关于游戏软件的问题 讨论结果 20162301张师瑜 20162305李昱兴 20162306陈是奇 20162308马平川 2016231 ...

  6. 父类指针指向子类内存,为什么当父类的成员函数不加virtual时,访问的还是父类的成员函数,而不是子类同名的成员函数

    我认为是这样,类的成员函数都在代码区,不同的类的成员函数在代码区有自己的类名称空间限制,类的虚函数在虚函数表中,程序执行的时候,是先在虚函数表中找该成员函数,如果没有找到,就去该类在代码区的成员函数中 ...

  7. github提交代码时,报permission denied publickey

    在像github提交代码时,报permission denied publickey. 查找了一下,可能是因为github的key失效了. 按照以下步骤,重新生成key. ssh-keygen 一路默 ...

  8. git commit 代码时提示: Warning: Your console font probably doesn‘t support Unicode.

    git 提交代码是会遇到以下问题, git commit 代码时提示: Warning: Your console font probably doesn‘t support Unicode. If ...

  9. VS Bug 当获取其他项目的代码时, F5 无法进入调试模式. 也不报错....

    在64位的机子下, 被获用的项目使用X86时会出现. 就会出现   F5 无法进入调试模式. 也不报错.... 打断点也没有用. 在不加入X86项目的代码时, 又可以运行..   解决方案:   检查 ...

随机推荐

  1. Spark 中Java实现数据库Row转Rating

    Dataset<Row> ratings = mlsc.sql("SELECT user,movie,rating FROM data");JavaRDD<Row ...

  2. Mybatis面试题

    面试题示例 1.JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的? 1)数据库链接创建.释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题. 解决:在SqlMap ...

  3. C++之 自定义数据类型 枚举、结构体、共用体

    1.枚举 枚举类型的声明形式为:   enum  枚举类型名   {  变量值列表 };    变量值列表里都是整型变量,另外不要忘记最后面的分号! 比如,enum  weekday   { sun, ...

  4. while循环与 for循环

    import turtle turtle.setup(600,400,0,0) turtle.bgcolor('red') turtle.color('yellow') turtle.fillcolo ...

  5. java 秒时间格式化

    public static String durationFormat(Integer totalSeconds) { if (totalSeconds == null || totalSeconds ...

  6. 如何查看tomcat的支持的jdk、servlet、jsp的版本

    解压servlet-api 查看 可以看出,支持的servlet版本是4.0,jdk是1.8

  7. Mysql和Hadoop+Hive有什么关系?

    1.Hive不存储数据,Hive需要分析计算的数据,以及计算结果后的数据实际存储在分布式系统上,如HDFS上. 2.Hive某种程度来说也不进行数据计算,只是个解释器,只是将用户需要对数据处理的逻辑, ...

  8. 【转】Android-Input Getevent

    https://source.android.com/devices/input/getevent Getevent getevent 工具可在设备上运行,并可提供关于输入设备和内核输入事件的实时转储 ...

  9. VBA中查找并选定文字

    如果从 Selection 对象访问 Find 对象,当找到搜索条件时,就会更改所选内容.下列示例选定下一个出现的“Hello”.如果到达文档结尾时仍未找到“Hello”,则停止搜索. With Se ...

  10. IDEA Maven项目默认编译器使用JDK1.5的解决办法

    在idea中创建maven项目,项目指定用jdk1.8编译,每次更新maven库后,都会重新变成1.5.解决方案: 第一种: 在pom文件中,增加如下代码: <properties> &l ...