源程序
- 格式:doc
- 大小:23.50 KB
- 文档页数:1
DSP经典源程序程序#include\#include\/***************************************************/interruptvoidt1pint_isr(v oid);interruptvoidt2pint_isr(void);interruptvoidcap_isr(void);interruptvoidpdpinta_isr(void);voiddelay(unsignedintm);unsignedintt1prd=117;//定时器1的周期unsignedintt2prd=117;//定时器2的标志unsignedintdir=0;//电机旋转方向unsignedintpwm=20;unsignedintdccurent,u,v,w,speedad;//直流母线电流unsignedintdcvoltage;//直流母线电压uint32sumdcv=0;unsignedintdcvcount=0,averagedcv=0;//母线电压平均值初始化unsignedintcapstastus;//定义cap口的电平uint32time,t2cnt,speed=0,count=0;unsignedpole=2;//极对数uint32sum=0,average=0;unsignedintl=0,nn=0;intt2=0;unsignedinttest[2000],test1[2000],test2[2000];intsss=0;/***************************************************/voidmain(void){/*初始化系统*/initsysctrl();/*关中断*/dint;ier=0x0000;ifr=0x0000;/*初始化pie*/initpiectrl();/*初始化pie矢量表*/initpievecttable();/*初始化gpio*/gpioinit();/*初始化ad*/initadc();/*初始化pwm*/init_eva_pwm();/*初始化cap*/capinit();eallow;//thisisneededtowritetoeallowprotectedregisterpievecttab le.capint1=&cap_isr;pievecttable.capint2=&cap_isr;pievecttable.capint3=&cap_is r;pievecttable.t1pint=&t1pint_isr;pievecttable.t2pint=&t2pint_isr;pievecttable.pdpinta=&pdpinta_isr;edis;//thisisneededtodisablewritetoeallpiectrl.pieier2.bit.intx4=1;//t1pint中断piectrl.pieier3.bit.intx1=1;//t2pint中断piectrl.pieier3.bit.intx5=1;//cap1中断piectrl.pieier3.bit.intx6=1;//cap2中断piectrl.pieier3.bit.intx7=1;//cap3中断piectrl.pieier1.bit.intx1=1;//pdpinta中断/*设置ier寄存器*/ier|=m_int1;ier|=m_int2;//t1pintenableier|=m_int3;//captureenable//enableglobalinterruptsandhigherpriorityreal-timedebugevents:startmotor();eint;//enableglobalinterruptintmertm;//enableglob alrealtimeinterruptdbgm//step6.idleloop.justsitandloopforever(optional):while(1){}}interruptvoidt2pint_isr(void){count++;evaregs.evaifrb.bit.t2pint=1;//清除中断标志evaregs.evaimrb.bit.t2pint=1;//中断允许piectrl.pieack.bit.ack3=1;//向cpu申请中断}interruptvoidcap_isr(void){/*****以下用来检测传感器的输出电平,用来换向****/uint32kk=t2prd;eallow;gpiomuxregs.gpamux.bit.cap1q1_gpioa8=0;//预设cap1~3为gpiogpiomuxregs.gpamux.bit.cap2q2_gpioa9=0;gpiomuxregs.gpamux.bit.cap3qi1_gpioa10=0;gpiomuxregs.gpadir.bit.gpioa8=0;//预设cap1~3为输出gpiomuxregs.gpadir.bit.gpioa9=0;gpiomuxregs.gpadir.bit.gpioa10=0;capstastus=(gpiodataregs.gpadat.all&0x0700)>>8;if(dir==1){switch(capstastus)//ir2136的hin和lin是反向的{case1:evaregs.actr.all=0x7fd;break;//h3fallcase2:evaregs.actr.all=0xfd7;break ;//h1fallcase3:evaregs.actr.all=0x7df;break;//h2risecase4:evaregs.actr.all=0xd 7f;break;//h2fallcase5:evaregs.actr.all=0xf7d;break;//h1risecase6:evaregs.actr .all=0xdf7;break;//h3rise}}else{switch(capstastus)//ir2136的hin和lin是反向的{case5:evaregs.actr.all=0xfd7;break;//h1risecase1:evaregs.actr.all=0xd7f;break ;//h3fallcase3:evaregs.actr.all=0xdf7;break;//h2risecase2:evaregs.actr.all=0xf7d;break;//h1fallcase6:evaregs.actr.all=0x7fd;break;//h3risecase4:evaregs.actr .all=0x7df;break;//h2fall}}/*以下用以排序输出功率*/t2cnt=evaregs.t2cnt;//读取定时器2的值time=kk*count+t2cnt;//赢得运转1相所须要时间sum+=time;l++;if(l==12)//每转12/6/pole计算一下转速{average=sum/12;speed=kk*20000*60/(average*6*pole);//计算转速sum=0;l=0;test[nn]=speed;//测试用,存储速度值nn++;if(nn==2000){nn=0;}}count=0;evaregs.t2con.all=0x1400;//停用定时器2evaregs.t2cnt=0x0000;evaregs.t2con.all=0x1440;//启动定时器2/*************************/gpiomuxregs.gpamux.bit.cap1q1_gpioa8=1;//重新设定cap1~3为gpiogpiomuxregs.gpamux.bit.cap2q2_gpioa9=1;gpiomuxregs.gpamux.bit.cap3qi1_gpio a10=1;evaregs.evaifrc.all=7;//清抓取中断evaregs.capfifo.all=0x01500;//清空捕捉堆栈piectrl.pieack.bit.ack3=1;//cap1中断向cpu申请中断}interruptvoidt1pint_isr(void){dcvoltage=(adcregs.result0)>>4;dccurent=(adcregs.result3)>>4;w=(adcregs.result 1)>>4;u=(adcregs.result2)>>4;speedad=(adcregs.result4)>>4;v=(adcregs.result5)> >4;//母线电压检测,过压维护,//注:电机在启动或者转动方向改变时,可能母线电压有脉动//采用多次求平均值sumdcv+=dcvoltage;dcvcount++;if(dcvcount==500){averagedcv=sumdcv/500;//求平均母线电压sumdcv=0;dcvcount=0;}if(averagedcv>=3000){stopmotor();gpiodataregs.gpadat.bit.gpioa11=1;//过压表明}/******************************/adcregs.adc_st_flag.bit.int_seq1_clr=1;//去除状态字adcregs.adctrl2.bit.rst_seq1=1;//登位seq1evaregs.evaifra.bit.t1pint=1;//清除中断标志evaregs.evaimra.bit.t1pint=1;//中断容许piectrl.pieack.bit.ack2=1;//向cpu申请中断}interruptvoidpdpinta_isr(void){evaregs.evaifra.bit.pdpinta=1;//清除pdpinta中断标志piectrl.pieack.bit.ack1=1;//向cpu申请中断stopmotor();/***********************************************************************///nomore/***********************************************************************/。
源程序代码(总17页)本页仅作为文档封面,使用时可以删除This document is for reference only-rar21year.March#include <> //调用单片机头文件#define uchar unsigned char//无符号字符型宏定义变量范围0~255#define uint unsigned int//无符号整型宏定义变量范围0~65535#include ""#include ""bit flag_200ms ;bit flag_100ms ;sbit beep = P3^7; //蜂鸣器定义bit flag_beep_en;uint clock_value; //用作闹钟用的sbit dq = P3^2; //18b20 IO口的定义uint temperature ; //温度变量uchar flag_nl; //农历阳历显示标志位uchar menu_1,menu_2;uchar key_time,flag_value;//用做连加的中间变量bit key_500ms ;uchar n_nian,n_yue,n_ri;//农历显示的函数#include ""#include ""/******************把数据保存到单片机内部eeprom中******************/void write_eeprom(){SectorErase(0x2000);byte_write(0x2000, fen1);byte_write(0x2001, shi1);byte_write(0x2002, open1);byte_write(0x2058, a_a);}/******************把数据从单片机内部eeprom中读出来*****************/void read_eeprom(){fen1 = byte_read(0x2000);shi1 = byte_read(0x2001);open1 = byte_read(0x2002);a_a = byte_read(0x2058);}/**************开机自检eeprom初始化*****************/void init_eeprom(){read_eeprom(); //先读if(a_a != 1)//新的单片机初始单片机内问eeprom {fen1 = 3;shi1 = 8;open1 = 1;a_a = 1;write_eeprom();//保存数据}}/***********************18b20初始化函数*****************************/ void init_18b20(){bit q;dq = 1; //把总线拿高delay_uint(1); //15usdq = 0; //给复位脉冲delay_uint(80);//750usdq = 1; //把总线拿高等待delay_uint(10);//110usq = dq; //读取18b20初始化信号delay_uint(20);//200usdq = 1; //把总线拿高释放总线}/*************写18b20内的数据***************/void write_18b20(uchar dat){uchar i;for(i=0;i<8;i++){ //写数据是低位开始dq = 0;//把总线拿低写时间隙开始dq = dat & 0x01;//向18b20总线写数据了delay_uint(5); // 60usdq = 1; //释放总线dat >>= 1;}}/*************读取18b20内的数据***************/uchar read_18b20(){uchar i,value;for(i=0;i<8;i++){dq = 0; //把总线拿低读时间隙开始value >>= 1; //读数据是低位开始dq = 1; //释放总线if(dq == 1) //开始读写数据value |= 0x80;delay_uint(5); //60us 读一个时间隙最少要保持60us的时间}return value; //返回数据}/*************读取温度的值读出来的是小数***************/uint read_temp(){uint value;uchar low;//在读取温度的时候如果中断的太频繁了,就应该把中断给关了,否则会影响到18b20的时序init_18b20(); //初始化18b20write_18b20(0xcc); //跳过64位ROMwrite_18b20(0x44); //启动一次温度转换命令delay_uint(50);//500usinit_18b20(); //初始化18b20write_18b20(0xcc); //跳过64位ROMwrite_18b20(0xbe);//发出读取暂存器命令EA = 0;low = read_18b20(); //读温度低字节value = read_18b20(); //读温度高字节EA = 1;value <<= 8; //把温度的高位左移8位value |= low;//把读出的温度低位放到value的低八位中value *= ;//转换到温度值小数return value;//返回读出的温度带小数}/******************1ms 延时函数*******************/void delay_1ms(uint q){uint i,j;for(i=0;i<q;i++)for(j=0;j<120;j++);}/******************写星期函数*******************/void write_week(uchar hang,uchar add,uchar week)//写星期函数{if(hang==1)write_com(0x80+add);elsewrite_com(0x80+0x40+add);switch(week){case 1:write_data('M');//星期数为1时,显示write_data('O');write_data('N');break;case 2:write_data('T');//星期数据为2时显示write_data('U');write_data('E');break;case 3:write_data('W'); //星期数据为3时显示write_data('E');write_data('D');break;case 4:write_data('T'); //星期数据为4是显示write_data('H');write_data('U');break;case 5:write_data('F'); //星期数据为5时显示write_data('R');write_data('I');break;case 6:write_data('S'); //星期数据为6时显示write_data('T');write_data('A');break;case 0:write_data('S'); //星期数据为7时显示write_data('U');write_data('N');break;}}/*************时钟显示***************/void init_1602_ds1302(){write_sfm2_ds1302(1,1,shi); //显示时write_sfm2_ds1302(1,4,fen); //显示分write_sfm2_ds1302(1,7,miao);//显示秒write_week(2,12,week);// write_sfm1(1,14,week);//显示星期write_sfm3_18B20(1,11,temper ature); //显示温度if(flag_nl == 0) //显示阳历{write_sfm2_ds1302(2,2,nian); //显示年write_sfm2_ds1302(2,5,yue); //显示月write_sfm2_ds1302(2,8,ri);//显示日}else //显示农历{write_sfm2_ds1302(2,2,n_nian);//显示年write_sfm2_ds1302(2,5,n_yue);//显示月write_sfm2_ds1302(2,8,n_ri); //显示日}} /*************定时器0初始化程序***************/void init_time0(){EA = 1; //开总中断TMOD = 0X01;//定时器0、工作方式1ET0 = 1; //开定时器0中断TR0 = 1; //允许定时器0定时}/*************闹钟报警函数***************/void menu_dis(){static uchar mm,value;if(flag_100ms == 1)//100ms执行一次{flag_100ms = 0;if(open1 == 1) //如果闹钟打开{if((miao == 0) && (fen == fen1) && (shi == shi1)){flag_beep_en = 1;//有报警打开蜂鸣器响的标志位}if(flag_beep_en == 1)//闹钟以被打开{clock_value++;if(clock_value <= 30)beep = ~beep; //蜂鸣器叫3秒elseif(clock_value > 30){beep = 1; //蜂鸣器停1秒if(clock_value > 40){clock_value = 0;}}// 1 分钟后自动关闭闹钟value ++;if(value >= 10){value = 0;mm++;if(mm >= 60){mm = 0;flag_beep_en = 0;beep = 1;}}}}}}/********************独立按键程序*****************/uchar key_can; //按键值void key() //独立按键程序{static uchar key_new;key_can = 20; //按键值还原P3 |= 0x78; //对应的按键IO口输出为1if((P3 & 0x78) != 0x78)//按键按下{delay_1ms(1); //按键消抖动if(((P3 & 0x78) != 0x78) &&(key_new == 1)){ //确认是按键按下key_new = 0;switch(P3 & 0x78){case 0x70: key_can = 4; break; //得到按键值case 0x68: key_can = 3; break; //得到按键值case 0x58: key_can = 2; break; //得到按键值case 0x38: key_can = 1; break; //得到按键值}write_sfm2(1,0,key_can);//显示按键值}}elsekey_new = 1;}/**********************设置函数************************/void key_with(){if(key_can == 1) //设置键{menu_1++;if(menu_1 == 1) //设置时间{menu_2 = 1;write_string(1,0," - - W: ");write_string(2,0," 20 - - ");}if(menu_1 == 2) //设置闹钟{menu_2 = 1;write_string(1,0," set clock ");write_string(2,0," Y 00:00 ");}if(menu_1 > 2) //回到正常显示{menu_1 = 0;write_guanbiao(1,2,0);//关闭光标init_1602_dis_csf();//初始化液晶显示}}if(key_can == 2) //选择键{flag_200ms = 1;if(menu_1 == 1) //设置时间{menu_2 ++;if(menu_2 > 7)menu_2 = 1;}if(menu_1 == 2)//设置闹钟{menu_2 ++;if(menu_2 > 3)menu_2 = 1;}}if(menu_1 == 1){if(menu_2 == 1)//设置时{if(key_can == 3) //加{shi+=0x01;if((shi & 0x0f) >= 0x0a)shi = (shi & 0xf0) + 0x10;if(shi >= 0x24)shi = 0;}if(key_can == 4) //减{if(shi == 0x00)shi = 0x24;if((shi & 0x0f) == 0x00)shi = (shi | 0x0a) - 0x10;shi -- ;}}if(menu_2 == 2)//设置分{if(key_can == 3) //加{fen+=0x01;if((fen & 0x0f) >= 0x0a)fen = (fen & 0xf0) + 0x10;if(fen >= 0x60)fen = 0;}if(key_can == 4) //减{if(fen == 0x00)fen = 0x5a;if((fen & 0x0f) == 0x00)fen = (fen | 0x0a) - 0x10;fen -- ;}}if(menu_2 == 3)//设置秒{if(key_can == 3) //加{miao+=0x01;if((miao & 0x0f) >= 0x0a)miao = (miao & 0xf0) + 0x10;if(miao >= 0x60)miao = 0;}if(key_can == 4) //减{if(miao == 0x00)miao = 0x5a;if((miao & 0x0f) == 0x00)miao = (miao | 0x0a) - 0x10;miao -- ;}}if(menu_2 == 4)//设置星期{if(key_can == 3) //加{week+=0x01;if((week & 0x0f) >= 0x0a)week = (week & 0xf0) + 0x10;if(week >= 0x08)week = 1;}if(key_can == 4) //减{if(week == 0x01)week = 0x08;if((week & 0x0f) == 0x00)week = (week | 0x0a) - 0x10;week -- ;}}if(menu_2 == 5)//设置年{if(key_can == 3) //加{nian+=0x01;if((nian & 0x0f) >= 0x0a)nian = (nian & 0xf0) + 0x10;if(nian >= 0x9a)nian = 1;}if(key_can == 4) //减{if(nian == 0x01)nian = 0x9a;if((nian & 0x0f) == 0x00)nian = (nian | 0x0a) - 0x10;nian -- ;}}if(menu_2 == 6)//设置月{if(key_can == 3) //加{yue+=0x01;if((yue & 0x0f) >= 0x0a)yue = (yue & 0xf0) + 0x10;if(yue >= 0x13)yue = 1;}if(key_can == 4) //减{if(yue == 0x01)yue = 0x13;if((yue & 0x0f) == 0x00)yue = (yue | 0x0a) - 0x10;yue -- ;}}if(menu_2 == 7)//设置日{if(key_can == 3) //加{ri+=0x01;if((ri & 0x0f) >= 0x0a)ri = (ri & 0xf0) + 0x10;if(ri >= 0x32)ri = 0;}if(key_can == 4) //减{if(ri ==0x01)ri = 0x32;if((ri &0x0f) == 0x00)ri = (ri | 0x0a) - 0x10;ri -- ;}}write_sfm2_ds1302(1,2,shi);//显示时write_sfm2_ds1302(1,5,fen); //显示分write_sfm2_ds1302(1,8,miao);//显示秒write_sfm1(1,14,week);//显示星期write_sfm2_ds1302(2,3,nian);//显示年write_sfm2_ds1302(2,6,yue);//显示月write_sfm2_ds1302(2,9,ri);//显示日switch(menu_2)// 光标显示{case 1:write_guanbiao(1,2,1); break;case 2:write_guanbiao(1,5,1); break;case 3:write_guanbiao(1,8,1); break;case 4:write_guanbiao(1,14,1); break;case 5:write_guanbiao(2,3,1); break;case 6:write_guanbiao(2,6,1); break;case 7:write_guanbiao(2,9,1); break;}write_time(); //把时间写进去}/***************设置闹钟*********************/if(menu_1 == 2){if(menu_2 == 1) //设置闹钟开关{if(key_can == 3){open1 = 1;//闹钟开}if(key_can == 4){open1 = 0;//闹钟关}}if(menu_2 == 2) //设置闹钟时{if(key_can == 3) //加{shi1+=0x01;if((shi1 & 0x0f) >= 0x0a)shi1 = (shi1 & 0xf0) + 0x10;if(shi1 >= 0x24)shi1 = 0;}if(key_can == 4) //减{if(shi1 == 0x00)shi1 = 0x5a;if((shi1 & 0x0f) == 0x00)shi1 = (shi1 | 0x0a) - 0x10;shi1 -- ;}}if(menu_2 == 3)//设置秒{if(key_can == 3) //加{fen1+=0x01;if((fen1 & 0x0f) >= 0x0a)fen1 = (fen1 & 0xf0) + 0x10;if(fen1 >= 0x60)fen1 = 0;}if(key_can == 4) //减{if(fen1 == 0x00)fen1 = 0x5a;if((fen1 & 0x0f) == 0x00)fen1 = (fen1 | 0x0a) - 0x10;fen1 -- ;}}if(open1 == 1)write_string(2,4,"Y");elsewrite_string(2,4,"N");write_sfm2_ds1302(2,7,shi1);//显示闹钟时write_sfm2_ds1302(2,10,fen1);//显示闹钟分switch(menu_2)// 光标显示{case 1: write_guanbiao(2,4,1); break;case 2: write_guanbiao(2,7,1); break;case3: write_guanbiao(2,10,1); break;}write_eeprom(); //保存闹钟时间}}/*****************主函数********************/void main(){beep = 0; //开机叫一声delay_1ms(150);P0 = P1 = P2 = P3 = 0xff;//单片机IO口初始化为1init_time0(); //初始化定时器init_ds1302(); //ds1302初始化init_1602(); //lcd1602初始化init_1602_dis_csf();//lcd1602初始化显示init_eeprom(); //开始初始化保存的数据temperature = read_temp();//先读出温度的值delay_1ms(650);temperature = read_temp();//先读出温度的值while(1){key(); //按键程序if(key_can < 10){if(flag_beep_en == 0)//只有闹钟关了的时候才能进入设置key_with();else{flag_beep_en = 0;//按下任意键可关闭闹钟beep = 1;clock_value = 0;read_time();}if(menu_1 == 0){if(key_can == 4) //减键{flag_nl = ~flag_nl; //切换农历和阳历的显示标志位if(flag_nl == 0)write_string(2,0,"2013");elsewrite_string(2,0,"N ");}}}if(flag_200ms == 1){flag_200ms = 0;if(menu_1 == 0){read_time(); //读时间temperature = read_temp(); //先读出温度的值init_1602_ds1302();//显示时钟}}menu_dis(); //闹钟报警函数delay_1ms(1);}}/**************定时器0中断程序*****************/void time0() interrupt 1{static uchar value;TH0 = 0X3C;TL0 = 0XB0; //50msvalue ++;if((value % 2) == 0) //100msflag_100ms = 1;if(value >= 6)//200ms{value = 0;flag_200ms = 1;}}。
C++经典新手源程序30例1//C++学了半年了,为方便和我一样的小菜,自学者练习,把自己做的一些程序发出来,希望对大家有用!1、输入一元二次方程的系数,求方程的解#include<iostream>#include<cmath>using namespace std;void main(){cout<<"请输入方程的系数"<<endl;double a,b,c,x1,x2;cin>>a>>b>>c;if (((b*b)-(4*a*c))<0)cout<<"无解"<<endl;else{cout<<"x1="<<(-b+sqrt(b*b-4*a*c))/(2*a)<<endl;cout<<"x2="<<(-b-sqrt(b*b-4*a*c))/(2*a)<<endl;}}********************************************************************* ********************************************************2、编程实现函数关系.#include<iostream>using namespace std;void main(){cout<<"请输入x"<<endl;double x,y;cin>>x;{if (x <= -1)y=x-1;else if (x>2 && x<=10)y=2-x;elsey=x*(x+2);}cout<<"y="<<y<<endl;}********************************************************************* ********************************************************3、根据历法,凡是1、3、5、7、8、10、12月,每月31天,凡是4,6,9,11月,每月30天,2月闰年29天,平年28天。
一:小牛问题#include <iostream>using namespace std;long int fun(int n);//声明fun函数void main(void){int n;cout <<"intput the years:";cin>>n;cout<<"cows sum="<<fun(n);}long int fun (int n)//从第一年开始算{long int i_born=1;//满一周岁的牛的数目,下面的类似long int ii_born=0;long int iii_born=0;long int iv_born=0;long int can_born=0;//今年能生产的牛的数目long int sum=1;for(int i=1;i<n;i++){can_born +=iv_born;//从四岁的母牛可以生小牛了sum +=can_born;iv_born=iii_born;iii_born=ii_born;ii_born=i_born;i_born=can_born;}return sum;}二:九九表// 九九表.cpp : Defines the entry point for the console application.//#include <iostream>using namespace std;int main(){int i,j;for(i=1;j<=9;i++){for(j=1;j<=i;j++)cout<<" "<<j<<"X"<<i<<"="<<j*i;cout<<endl;}cout<<endl;return 0;}三:杨辉三角:// 三角.cpp : Defines the entry point for the console application.//#include <iostream.h>void main(){int i,j,n;int a[20][20];cout<<"input num:";cin>>n;for (i=0;i<n;i++){a[i][0]=1;a[i][i]=1;}for (i=2;i<n;i++){for (j=1;j<i;j++){a[i][j]=a[i-1][j-1]+a[i-1][j];}}for (i=0;i<n;i++){for (int m=0;m<2*(n-i);m++){cout<<' ';}for (j=0;j<=i;j++){cout.width(4);cout<<a[i][j];}cout<<endl;}}四:长方体体积#include<iostream>using namespace std;class Box{public:void SetParameter(int l,int w,int d) {cin>>l>>w>>d;width=w;length=l;depth=d;}int Volume(){return width*length*depth;}void DispInfo(){cou<<"Box:"<<length<<"宽:"<<width<<"深:"<<depth<< endl;}private:int width,length,depth;};int main(){Box A;int l,w,d;A.SetParameter(l,w,d);A.DispInfo();cout<<"体积为:"<<A.Volume()<<endl;system("pause");return 0;}五:中奖第三章.#include<iostream>using namespace std; int main(){int ticket_number=0;cout<<"请输入你的彩票号码:";cin>>ticket_number;switch(ticket_number){case 888:cout<<"恭喜你中了一等奖!"; break;case 188:cout<<"恭喜你中了二等奖!"; break;case 105:cout<<"恭喜你中了三等奖!"; break;default:cout<<"抱歉,你没有中奖!"; }return 0;}六:拳击游戏:#include "stdafx.h"#include<iostream>using namespace std;class poser{public:virtual void beat()const{cout<<"一般选手的力量为260镑"<<endl;}protected:int age;};class Ali:public poser{public:void beat()const{cout<<"阿里一拳的力量为420镑"<<endl;}};class Lewis:public poser{public:void beat()const{cout<<"刘易斯一拳的力量为480镑"<<endl;}};class Tyson:public poser{public:void beat()const{cout<<"泰森一拳的力量为500镑"<<endl;}};class Holy:public poser{public:void beat()const{cout<<"霍利菲尔德一拳的力量为350镑"<<endl;}};int main(){poser *p[5];poser *p1;int i,choice;for (i=0;i<5;i++){cout<<"(1)阿里(2)刘易斯(3)泰森(4)霍利菲尔德:";cin>>choice;switch(choice){case 1:p1=new Ali;break;case 2:p1=new Lewis;break;case 3:p1=new Tyson;break;case 4:p1=new Holy;break;default:p1=new poser;break;}p[i]=p1;p[1]->beat();}return 0;}。
如何使用本书源程序
1、开发及运行环境
本书源程序都是在Windows Server 2003下开发的,程序测试环境为Windows Server 2003。
用户只有在Windows Server 2003下正确配置程序所需的运行环境后,才可以使用本书中的源程序。
软件开发平台如下:
操作系统:Windows 2000 Server、Windows XP、Windows Server 2003;
开发工具:Eclipse;
数据库:SQL Server 2000;
开发工具包:JDK 1.6。
分辨率:最佳效果1024×768。
2、源程序使用方法
(1)需要安装Eclipse、JDK1.5、Tomcat 6.0、SQL Server 2000。
(2)本书中实例程序的数据库都存放在章节路径下的database文件夹中。
(3)在运行第11章的示例时,需要将msbase.jar、mssqlserver.jar和msutil.jar3个SQL Server 2000数据库驱动包引入Eclipse工程,引入方法如下:
1)首先选中工程名称,并单击鼠标右键;然后在弹出的快捷菜单中依次单击“新建”->“文件夹”项;最后在打开的窗口中输入文件夹名称“lib”。
2)将三个驱动包拷贝到“lib”文件夹。
3)首先选中三个驱动包,并单击鼠标右键;然后在弹出的快捷菜单中依次单击“构件路径”->“添加至构件路径”项,即完成了引入驱动包的操作。
– 1 –。
源程序是什么源程序是计算机程序的初始版本,是一种用特定的计算机语言编写的文本文件。
它包含了程序员使用编程语言编写的一系列指令和逻辑,用于告诉计算机如何执行特定的任务。
在计算机科学领域,源程序是开发软件的基础。
在本文中,我们将讨论源程序的定义、类型、作用以及与其他相关概念的区别。
源程序的定义源程序是根据某种特定的编程语言编写的计算机程序,是程序员用来表达计算机指令和逻辑的一种形式。
它是人类可读的文本文件,通常使用扩展名来标识其所使用的语言,例如C语言使用.c扩展名,Java语言使用.java扩展名等。
源程序由程序员创建,其中包含一系列的代码语句,定义了程序的行为、功能和逻辑。
源程序的类型源程序可以根据使用的编程语言进行分类。
目前,有许多不同的编程语言可供选择,例如C、C++、Java、Python等。
每种编程语言都具有不同的语法和语义规则,但它们都提供了一种方法来编写源程序。
每种编程语言都有其独特的特点和用途,适用于不同的应用领域。
源程序的作用源程序是开发软件的基础,它描述了计算机程序的行为和功能。
通过编写源程序,程序员可以实现特定任务的逻辑,并将其翻译成机器可以理解和执行的形式。
源程序通过编译器或解释器进行翻译和执行,最终生成可执行文件或在解释器环境中运行。
源程序的编写过程是软件开发中的重要环节。
在编写源程序之前,程序员需要了解所使用的编程语言的基本语法、数据类型、算法和逻辑结构。
他们需要考虑程序的设计目标、用户需求和系统约束,并选择合适的算法和数据结构。
源程序的编写需要程序员具备良好的编程技巧和逻辑思维,以及对所开发的应用领域的深入理解。
源程序与机器语言的关系源程序通常是以人类可读的形式编写的,而机器语言是计算机可以直接理解和执行的形式。
为了将源程序转化为机器语言,程序员需要使用编译器或解释器。
编译器将源程序一次性地转换为机器语言,并生成可执行文件。
解释器则将源程序一行一行地解释执行,无需生成可执行文件。
c++基础源程序。
初学必看常见问题的C++程序示例(1—10例)【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:#include <iostream>using namespace std;void main(){int i,j,k,sum=0;for(i=1;i<5;i++)for(j=1;j<5;j++)for (k=1;k<5;k++)if (i!=k&&i!=j&&j!=k){cout<<i<<j<<k<<endl;sum+=1;}cout<<"共有这样的数:"<<sum<<endl;}============================================================== 【程序2】题目:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。
C语⾔对源程序处理的四个步骤:预处理、编译、汇编、链接——预处理篇预处理1)预处理的基本概念C语⾔对源程序处理的四个步骤:预处理、编译、汇编、链接。
预处理是在程序源代码被编译之前,由预处理器(Preprocessor)对程序源代码进⾏的处理。
这个过程并不对程序的源代码语法进⾏解析,但它会把源代码分割或处理成为特定的符号为下⼀步的编译做准备⼯作。
2)预编译命令C编译器提供的预处理功能主要有以下四种:1)⽂件包含 #include2)宏定义 #define3)条件编译 #if #endif ..4)⼀些特殊作⽤的预定义宏a、⽂件包含处理1)⽂件包含处理⽂件包含处理”是指⼀个源⽂件可以将另外⼀个⽂件的全部内容包含进来。
C语⾔提供了#include命令⽤来实现“⽂件包含”的操作。
2)#include< > 与 #include ""的区别" "表⽰系统先在file1.c所在的当前⽬录找file1.h,如果找不到,再按系统指定的⽬录检索。
< >表⽰系统直接按系统指定的⽬录检索。
注意:1. #include <>常⽤于包含库函数的头⽂件2. #include " "常⽤于包含⾃定义的头⽂件 (⾃定义的头⽂件常⽤“ ”,因为使⽤< >时需要在系统⽬录检索中加⼊⾃定义头⽂件的绝对地址/相对地址否则⽆法检索到该⾃定义的头⽂件,编译时会报错)3. 理论上#include可以包含任意格式的⽂件(.c .h等) ,但我们⼀般⽤于头⽂件的包含。
b、宏定义1)基本概念在源程序中,允许⼀个标识符(宏名)来表⽰⼀个语⾔符号字符串⽤指定的符号代替指定的信息。
在C语⾔中,“宏”分为:⽆参数的宏和有参数的宏。
2)⽆参数的宏定义#define 宏名 字符串例: #define PI 3.141926在编译预处理时,将程序中在该语句以后出现的所有的PI都⽤3.1415926代替。
源程序,是指未经编译的,按照一定的程序设计语言规范书写的,人类可读的文本文件。
源程序可以是以书籍或者磁带或者其他载体的形式出现,但最为常用的格式是文本文件,这种典型格式的目的是为了编译出计算机可执行的程序。
将人类可读的程序代码文本翻译成为计算机可以执行的二进制指令,这种过程叫做编译,由各种编译器来完成。
目标程序为源程序经编译可直接被计算机运行的机器码集合,在计算机文件上以.obj作扩展名----由语言处理程序(汇编程序,编译程序,解释程序)将源程序处理(汇编,编译,解释)成与之等价的由机器码构成的,计算机能够直接运行的程序,该程序叫目标程序。
汇编程序,是把汇编语言书写的程序翻译成与之等价的机器语言程序的翻译程序。
汇编程序输入的是用汇编语言书写的源程序,输出的是用机器语言表示的目标程序。
翻译程序是一种系统程序,它将计算机编程语言编写的程序翻译成另外一种计算机语言的一般来说等价的程序,主要包括编译程序和解释程序,汇编程序也被认为是翻译程序。
程序的最初形式称为源程序或者源代码,翻译后的形式被称为目标程序或者目标代码。
大多数翻译程序是将高级语言编写的程序翻译为机器语言形式的可执行程序。
但是也有些翻译程序将源程序翻译成其他高级语言或者字节码等中间形式。
解释程序,专业术语,是指按照源程序的指令或语句的动态执行顺序,逐条或逐句翻译并立即执行的翻译程序。
解释程序的特点是把源程序直接翻译成加工输入数据,产生所求的动作,而不是产生目标语言形式的目标程序。