首先你要有个总体的逻辑框架,然后写出你大致的程序框图,在在每一个环节上进行思考理解,理清头绪,把整个框图都完全理解明白以后,就开始进行写程序了,注意一些语句的用法哦,写完之后烧到开发板上,然后对程序进行调试,有错误就仔细的修改,调试应该说是最麻烦的工作,所以不要着急,慢慢来,等到你成功的时候你就有种说不出来的高兴了,祝你好运。
#include <AT89X51H>
//假定继电器是安装在P35,按键分别安装在P36, P37,时钟频率12MHz
sbit sw1=P3^6;
sbit sw2=P3^7;
sbit relay=P3^5;
void SetupTimer0()
{
TMOD &= 0XF0; //仅保留T1信息
TMOD |= 0X02; //设置T0: 定时功能,方式2,自动重载8位定时器/计数器
TH0 = 256-250;//定时每025ms中断一次
TL0 = 256-250;
TR0 = 1; //开启定时器
ET0 = 1; //定时器0中断打开
}
data unsigned char us250;
data unsigned int relay_timer;
void Timer0_ISR() interrupt 1 //定时中断服务程序,为按键消抖服务
{
//如果一个动作过程刚刚开始,则设定继电器延时3000ms,并打开继电器
if (0==relay_timer && 0==sw1) {relay_timer=3000; relay=1;}
if (++us250>=4) //250us中断一次,每四次得到1ms
{
us250=0;
if(relay_timer==0) relay=0; //如继电器延时为0,则关继电器
else --relay_timer; //否则继电器延时递减
}
//如果当前正处于一个动作过程且有sw2按下,则修改继电器延时为1000ms
if (relay_timer && 0==sw2) relay_timer=1000;
}
void main()
{
us250=0;
relay_timer=0;
relay=0;
SetupTimer0();
EA = 1; //全局中断打开
while(1); //所有的动作均在中断函数内完成
}
思路是:
1、定义一个数组a[n][n];
2、利用随机数%4对其赋值;
3、写投食函数,投食a[i][j],判断是否是4;
4、投食函数:如果是4,则平均分散到a[i-1][j-1]、a[i][j-1]、a[i+1][j]、a[i+1][j+1];否则返回
5、对以上四个区域进行递归调用投食函数。
具体代码自己写吧。如果不懂递归,可以追问。这个题突破点就在递归。
经过两个提问,现在已经总结了下面几条,又重新组织一遍,写到下面,我想要新的思路,不要上网上粘贴,有可能就粘贴到我写的。
1、程序细化,将类似程序和相同程序列出来,用一段代码实现。
2、程序模块化,不同功能调用不同模块,禁止黑箱子模块。
3、编写通用程序,载入不同脚本实现不同的功能。
4、编写一些工具或编辑器,用编辑的方法来代替程序实现(不是编译器)。
5、用通用现成的功能库来实现,提高速度。
6、持续优化重构和改进,提高程序代码质量。(lens23 提出的)
7、建立通用数学模型,使一类事物用一个统一模型表示,程序能分析模型。
8、预留一些接口,提高程序的可扩展性。(chm51666提出的)
9、添加一些注释、流程图、说明文档使思路清晰。
10、规定编程接口,编程规范,采用大众编程规范,利于多人合作。
如果用比较简单的来写,则不需要用C语言的指针!可以用一个变量A储存随机数,A=rand()%36+1; 这样就好了,然后用另一个变量B储存用户输入的数字,
scanf("%d",&B); 然后用一个变量保存用户的金额Money,每一次下注的金额用另一个变量D保存,然后用户输入下注金额D,判断D<=Money, 成立,然后再判断A是否等于B,如果A=B,则Money=Money+5D,否则Money=Money-D。 再于外侧设计一个大循环,判断Money是否大于0,Money>0时进入循环,Money=0时要求用户存入金额……
/
@ClassName: Computer
@Description: TODO( 计算机类)
@author QSK
@date 2015年5月11日 下午6:06:16
/
public class Computer {
private Integer cid;
private String cpu;
private String mainboard;
private Integer hardDisk;
private Integer memory;
private Double price;
public Integer getCid() {
return cid;
}
public void setCid(Integer cid) {
thiscid = cid;
}
public String getCpu() {
return cpu;
}
public void setCpu(String cpu) {
thiscpu = cpu;
}
public String getMainboard() {
return mainboard;
}
public void setMainboard(String mainboard) {
thismainboard = mainboard;
}
public Integer getHardDisk() {
return hardDisk;
}
public void setHardDisk(Integer hardDisk) {
thishardDisk = hardDisk;
}
public Integer getMemory() {
return memory;
}
public void setMemory(Integer memory) {
thismemory = memory;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
thisprice = price;
}
public Computer() {
super();
}
public Computer(Integer cid, String cpu, String mainboard,
Integer hardDisk, Integer memory, Double price) {
super();
thiscid = cid;
thiscpu = cpu;
thismainboard = mainboard;
thishardDisk = hardDisk;
thismemory = memory;
thisprice = price;
}
/
输出所有属性
/
public static void printAllAttr(Integer cid ,String cpu , String mainboard,Integer hardDisk,Integer memory,Double price){
Systemoutprintln(cid+"\t"+ cpu+"\t"+ mainboard+"\t"+ hardDisk+"\t"+ memory+"\t"+ price+"\t");
}
}
public static void main(String[] args) {
//创建一个List集合存放电脑信息
List<Computer> list = new ArrayList<Computer>();
Scanner sc = new Scanner(Systemin);
for (int i = 0; i < 3; i++) {
Systemoutprintln("请输入第"+(i+1)+"台电脑标识:");
Integer cid = scnextInt();
Systemoutprintln("请输入第"+(i+1)+"台电脑cpu:");
String cpu = scnext();
Systemoutprintln("请输入第"+(i+1)+"台电脑主板型号:");
String mainboard = scnext();
Systemoutprintln("请输入第"+(i+1)+"台电脑硬盘大小:");
Integer hardDisk = scnextInt();
Systemoutprintln("请输入第"+(i+1)+"台电脑内存大小:");
Integer memory = scnextInt();
Systemoutprintln("请输入第"+(i+1)+"台电脑价格:");
Double price = scnextDouble();
Computer c = new Computer(cid, cpu, mainboard, hardDisk, memory, price);
listadd(c);
}
//打印出信息
for (Computer computer : list) {
ComputerprintAllAttr(computergetCid(), computergetCpu(), computergetMainboard(), computergetHardDisk(), computergetMemory(), computergetPrice());
}
}
int main()
{char wk[8][3]={"","一","二","三","四","五","六","日"};
int q,za=4,s,l=5,zo,w=2,c,k=0;
for(q=1;q<7;q+=5)
{for(s=3;s<8;s+=4)
{if(s-q)
for(zo=1;zo<7;zo+=5)
if(zo-q&&zo-s)
{c=17-q-s-zo;
printf("Solution: %d\n",++k);
printf("赵 钱 孙 李 周 吴 陈\n");
printf("==================================================\n");
printf("星期%s 星期%s 星期%s 星期%s 星期%s 星期%s 星期%s\n",
wk[za],wk[q],wk[s],wk[l],wk[zo],wk[w],wk[c]);
}}}
return 0;
}
学习编程是一个漫长的过程,其中要付出艰辛的努力和汗水,不过成功者的喜悦又不是别人所能体会的。克服学习中的困难,努力去实践,要有一个思想:别人能做到的事情自己也一定可以做到。计算机的普及让更多的人有了学习的机会,也让更多的人参与到编程人员的队伍中来,每个人都有编程的权利,机遇给予每个人都是平等的。拿出自己必胜的信心,在编程的道路工勇于进取,相信成功就会在眼前。编程也可以作为——种爱好或兴趣,如果你对它感兴趣学起来就容易多了!因为如果对编程感兴趣的话,就会多看些有关方面的书、多编些小程序上机实践,这些对于学习编程的帮助是非常大的,而且随着学习的进程不断的推进就会觉得它并不是很困难,相反却是很容易的。总之,在学习编程时一定要坚持不懈,只要有信心、有毅力就一定能学好;不能因为一些似是而非的观念就动摇了自己的信心。面对摆在面前的计算机该如何 *** 作,相信这个问题已经不再是困扰大家的首要问题了。现在软件的种类那么多,在选用的时候“电脑发烧友”的心里是否也想过有一天自己能编写一款属于自己的软件呢想学习编程的朋友在选择程序语言时会不会因为不知道如何选择而大感头痛呢在不知如何下手的时候,朋友们的心中是不是会产生“我是不是可以编程”的思想呢但是又有哪个程序员是不经过学习就能成功的呢!其实编写程序并不是人们所想象的那么困难、那么复杂,每个有心致力于学习计算机的朋友都是可以尝试的!选择适合自己的程序语言的必要性目前常用的基本程序语言的种类比较繁多,比较简单的有:Pascal、c语言、qBasic、 Fortran、Visual Basic等等。但前几种都是在DOS下进行编程的工具,Visual Basic是在 Windows下进行应用程序设计的编程工具,现在一般的计算机用户几乎都不再使用DOS了,因此我们通常会选择Visual Basic作为初学者的编程工具。Visual Basic是Windows应用程序设计中最容易上手的编程工具,学习步骤也比较容易被初学者接受。对于刚开始学习编程的初学者来说,还是选择Visual Basic,学习编程语言不能想象着一步登天,一步一个脚印的学习才是最佳方法。坚定自己学习编写程序的信心编写程序并不是具有专业知识的人员才有的专利,每个学习计算机的人都可以编写程序,每个人的灵感不同,在编写程序的思路和作法上又有区别。但共同的想法就是编写成功的程序。学习编程是一个漫长的过程,其中要付出艰辛的努力和汗水,不过成功者的喜悦又不是别人所能体会的。克服学习中的困难,努力去实践,要有一个思想:别人能做到的事情自己也一定可以做到。计算机的普及让更多的人有了学习的机会,也让更多的人参与到编程人员的队伍中来,每个人都有编程的权利,机遇给予每个人都是平等的。拿出自己必胜的信心,在编程的道路工勇于进取,相信成功就会在眼前。
以上就是关于单片机汇编语言设计程序的方法,步骤,思路全部的内容,包括:单片机汇编语言设计程序的方法,步骤,思路、求51单片机C语言程序编程思路、C语言编写程序,请大家提供点思路,或者这题应该应用哪一方面去做写一下,大家交流一下把问题解决。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)