标签:
1.像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的“软件”,和同学们比较一下各自程序的功能、实现方法的异同等等。
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<time.h>
int moshi;
int count;
void plus(int first,int second)
{
int result;
printf("%d + %d =",first,second);
scanf("%d",&result);
if(result == first+second)
{
printf("Right!\n");
}
else
{
printf("wrong!\nThe correct answer is:%d\n",first+second);
}
}
void minus(int first,int second)
{
int result;
printf("%d - %d =",first,second);
scanf("%d",&result);
if(result == first-second)
{
printf("Right!\n");
}
else
{
printf("wrong!\nThe correct answer is:%d\n",first+second);
}
}
void multiply(int first,int second)
{
int result; //运算结果
printf("%d * %d =",first,second);
scanf("%d",&result);
if(result == first*second)
{
printf("Right!\n");
}
else
{
printf("wrong!\nThe correct answer is:%d\n",first*second);
}
}
void divide(int first,int second)
{
float result; //运算结果
float temp;
second = rand()%100;
printf("%d / %d =",first,second);
if(second==0)
{
printf("Error!\n");
return;
}
scanf("%f",&result);
temp=result*100 - ((float)first/(float)second)*100;
if(abs(temp)<0.01)
{
printf("Right!\n");
}
else
{
printf("wrong!\nThe correct answer is:%f\n",(float)first/(float)second);
}
}
void menu()
{
printf("请选择模式:\n\n");
printf("----------1:练习模式\n");
printf("----------2:计算模式\n");
}
void practice()
{
int n;
int first,second;//保存两个运算的数字
while(1)
{
n=first%4; //除以4取余数,随机确定调用函数
srand(time(NULL));
first = rand()%100;
second = rand()%100;
if(count==5)
return ;
switch(n)
{
case 0:
{
plus(first,second);
count++;
break;
}
case 1:
{
minus(first,second);
count++;
break;
}
case 2:
{
multiply(first,second);
count++;
break;
}
case 3:
{
divide(first,second);
count++;
break;
}
default:
{
count++;
break;
}
}//switch
}//while
}
void jisuan()
{
int first,second;
printf("请输入两个值之间的运算\n");
char c,c1; //保存运算符
while(1)
{
if(count==5)
return ;
scanf("%d%c%d%c",&first,&c,&second,&c1);
switch(c)
{
case ‘+‘:
{
printf("%d+%d=%d\n",first,second,first+second);
count++;
break;
}
case ‘-‘:
{
printf("%d-%d=%d\n",first,second,first-second);
count++;
break;
}
case ‘*‘:
{
printf("%d*%d=%d\n",first,second,first*second);
count++;
break;
}
case ‘/‘:
{
printf("%d/%d=%f\n",first,second,(float)first/(float)second);
count++;
break;
}
default:
{
count++;
break;
}
}//switch
}//while
}
int main()
{
printf("每种模式默认运行5次,中途退出直接按Ctrl+c!\n");
printf("请选择模式:\n\n");
printf("1)练习模式\n");
printf("2)计算模式\n");
scanf("%d",&moshi);
while(1)
{
switch(moshi)
{
count=0;
case 1:
{
practice();
break;
}//case1
case 2:
{
jisuan();
break;
}
//case2
default:
{
break;
}
}
menu();
scanf("%d",&moshi);
}
return 0;
}
感悟:简单的只实现了两个值的运算,软件还需要扩充满足任意数值的需要,而且这个程序存在明显的BUG,软件必须处理用户一些错误的输出导致的程序的崩溃,软件工程就是解决这些问题的。
2 软件有很多种 选取三种软件分析他们特点
1)这些软件开发者如何说服你成为他们用户的?他们的目标都是盈利吗?他们的目标都是赚取用户的现金吗?还是别的
2)这些软件如何到你手上?
3)这些软件如何处理BUG?如何更新版本?
4)同一类型软件如何竞争
游戏:英雄联盟
1)开发者没有说服我,是我自愿玩的,目标当然是盈利,应该是赚取现金。(但是玩家多多少少自愿花钱)
2)自己去下载的
3)退出程序,发出报告,让我提交。更新版本通过下载更新包。
4)游戏的场景,环节,技能释放等
工具软件:迅雷
1)开发者没有说服我,是我自愿下载的,目标当然是盈利,应该是赚取现金
2)自己去下载的
3)暂时没发现BUG
4)谁下载快谁厉害
通信软件:微信
1)开发者没有说服我,是我自愿下载的,目标当然是盈利,应该是赚取现金
2)当时是同学介绍的,然后去下载
3)暂时没发现BUG
4)至于腾讯,好像不需要竞争了?
2.列举你在使用软件的时候观察到的“特殊”现象,它们能说明软件的某些本质特性么?
软件对于用户来说好像是黑科技一样,它为我们带来我们说需要的东西,但是我们并不知道它真正工作原理(不可见)等等
5.你所在的学校有计算机科学专业和软件工程专业么?相关专业的教学计划和毕业出路有什么不同?阅读有关软件工程和计算机科学的区别的文章,谈谈你的看法。
当然有这些专业。教学计划针对专业不同,所以出路不同(比如软工和云计算,动画)
难道这道题是想说软件工程和计算机科学很不同?
个人觉得SE侧重实践,偏向于现实世界 CS侧重理论,偏向于完美世界
6 中文编程是不是一种银弹?
这个问题不同人有不同的看法,我觉得如果中文编程真的能达到像英文那样的效果,是不错的(但是好像我们又要把原来所学的英文关键词换成中文,这样好像又有点难受),但是或者说外国的编程技术比较先进,他们可能有一些思维偏向于他们,造成我们不好理解,我觉得中文编程是不是银弹或许还要让时间来证明吧!
标签:
原文地址:http://www.cnblogs.com/HJL085/p/5388540.html