本實驗為設計實驗。要求實現(xiàn)兩個較大的十進制數(shù)相乘,最后乘積用非壓縮BCD碼調整為十進制形式。實驗中要用到DOS或BIOS中斷;用非壓縮BCD碼調整乘積。本實驗用到算術運算指令、十進制調整指令、子程序設計、DOS和BIOS中斷等,所以通過本實驗我們對這些知識應能熟練掌握并應用。
上傳時間: 2014-01-12
上傳用戶:chenbhdt
這個程序是實現(xiàn)人工智能中的A*算法,照著書上的算法做的。Queue類是自己寫的一個隊列類,用來實現(xiàn)open表和closed表。原來用Vector做的,但后來發(fā)現(xiàn)Vector中保存的只是引用,生成子狀態(tài)后表中的狀態(tài)也跟著變了,只好自己實現(xiàn)一個隊列類。
上傳時間: 2017-09-02
上傳用戶:xinzhch
自己用C++寫的一個鏈表類,節(jié)點數(shù)據(jù)域可以存儲任何數(shù)據(jù)類型
標簽: C/C++
上傳時間: 2015-05-14
上傳用戶:mxs1234
用C++語言實現(xiàn)單向鏈表。并使用模板類的實現(xiàn)方式。使用了控制臺的方式。
上傳時間: 2016-01-13
上傳用戶:YANG123
C語言課程設計上機實習內(nèi)容 一、從下面題目中任選一題: A.簡單的學生成績管理程序設計 B.考卷成績分析軟件程序設計 C.簡單醫(yī)療費用報銷管理軟件程序設計 除此之外,學生也可自行選擇課題進行設計,如自動柜員機界面程序、學生信息管理(包括生日祝賀)、計件工資管理等(但課題必須經(jīng)指導教師審題合格后方可使用)。 二、課程設計說明書的編寫規(guī)范 1、程序分析和設計 2、流程圖 3、源程序清單 4、調試過程:測試數(shù)據(jù)及結果,出現(xiàn)了哪些問題,如何修改的 5、程序有待改進的地方 6、本次實習的收獲和建議 三、提交的資料 1、軟件 軟件需提供源程序,并能正常運行。 注:對于程序中未能實現(xiàn)的部分需要加以說明。 對于程序中所參考的部分代碼需要加以聲明,并說明出處。 2、文檔 課程設計文檔要求打印稿,同時提交電子文檔。文檔中必須包含課程設計小結,即收獲和體會。 文檔要注意格式,標題一律用小四號宋體加黑,正文用五號宋體,行間距固定值18,首行縮進2字符;如果有圖表,每個圖表必須順序編號并有標題,如“圖1 計算平均分的N-S圖”、“表1 地信081班成績一覽表”,一般圖名在圖的正下方、表名在表的正上方。 四、成績評定 通過學生的動手能力、獨立分析解決問題的能力、創(chuàng)新能力、課程設計報告、答辯水平以及學習態(tài)度綜合考核。 考核標準包括: 1、完成設計題目所要求的內(nèi)容,程序書寫規(guī)范、有一定的實用性,占45%; 2、平時表現(xiàn)(考勤+上機抽查)占10%; 3、課程設計報告占30%; 4、答辯及演示占15%。 五、實習計劃 以選題一為例 實習計劃 時間 內(nèi)容 第1天 一、布置實習內(nèi)容和要求 1、 實習內(nèi)容介紹、實習安排、實習紀律、注意事項 2、 學生選題 第2天 二、上機實習 1、根據(jù)所選題的要求,進行總體設計,確定程序總體框架 2、選擇和準備原始數(shù)據(jù),制作.txt文本文件 第3天 3、文件的讀寫函數(shù)的使用,實現(xiàn)文本文件的讀取和寫入功能。 使用函數(shù)fread(); fwrite(); fprint(); fscan();完成對原始數(shù)據(jù)的文本輸入和輸出。 第4、5天 4、主要算法的選擇和功能實現(xiàn)(以學生成績管理系統(tǒng)為例): ① 計算每個學生三門功課的平均分,并按平均分排列名次,若平均分相同則名次并列;結果寫入文件。 ② 統(tǒng)計全班每門課程的平均分,并計算各分數(shù)段(60以下,60~69,70~79,80~89,90以上)的學生人數(shù);結果寫入文件。 第6、7天 5、結果格式輸出及程序整合(以學生成績管理系統(tǒng)為例) ① 按格式在屏幕上打印每名學生成績條; ② 在屏幕上打印出所有不及格學生的下列信息:學號,不及格的課程名,該不及格課程成績; (選做)在屏幕打印優(yōu)等生名單(學號,三門課程成績,平均成績,名次),優(yōu)等生必須滿足下列條件:1)平均成績大于90分;或平均分大于85分且至少有一門功課為100分;或者平均分大于85分且至少兩門課程成績?yōu)?5分以上;2) 名次在前三名; 3) 每門功課及格以上; 第8天 三、測試完整程序 要求功能完整,結果符合設計要求,并進行程序驗收。 第9、10天 四、編寫報告 完成實習報告的編寫,并打印上交報告。
上傳時間: 2016-06-27
上傳用戶:lh643631046
在本課中,我們要用一個按鍵來實現(xiàn)跑馬燈的 10 級調速。這又會涉及到鍵的去抖的問 題。 本課的試驗結果是,每按一次按鍵,跑馬速度就降低一級,共 10 級。 這里我們又增加了一個變量 speedlever,來保存當前的速度檔次。 在按鍵里的處理中,多了當前檔次的延時值的設置。 請看程序: ―――――――――――――――― #define uchar unsigned char //定義一下方便使用 #define uint unsigned int #define ulong unsigned long #include <reg52.h> //包括一個 52 標準內(nèi)核的頭文件 sbit P10 = P1^0; //頭文件中沒有定義的 IO 就要自己來定義了 sbit P11 = P1^1; sbit P12 = P1^2; sbit P13 = P1^3; sbit K1= P3^2; bit ldelay=0; //長定時溢出標記,預置是 0 uchar speed=10; //設置一個變量保存默認的跑馬燈的移動速度 uchar speedlever=0; //保存當前的速度檔次 char code dx516[3] _at_ 0x003b;//這是為了仿真設置的 //一個按鍵控制的 10 級變速跑馬燈試驗 void main(void) // 主程序 { uchar code ledp[4]={0xfe,0xfd,0xfb,0xf7};//預定的寫入 P1 的值 uchar ledi; //用來指示顯示順序 uint n; RCAP2H =0x10; //賦 T2 的預置值 0x1000,溢出 30 次就是 1 秒鐘 RCAP2L =0x00; TR2=1; //啟動定時器 ET2=1; //打開定時器 2 中斷 EA=1; //打開總中斷 while(1) //主程序循環(huán) { if(ldelay) //發(fā)現(xiàn)有時間溢出標記,進入處理 { ldelay=0; //清除標記 P1=ledp[ledi]; //讀出一個值送到 P1 口 ledi++; //指向下一個 if(ledi==4) { ledi=0; //到了最后一個燈就換到第一個 } } if(!K1) //如果讀到 K1 為 0 { for(n=0;n<1000;n++); //等待按鍵穩(wěn)定 while(!K1); //等待按鍵松開 for(n=0;n<1000;n++); //等待按鍵穩(wěn)定松開 speedlever++; if(speedlever==10)speedlever=0; speed=speedlever*3; //檔次和延時之間的預算法則,也可以用查表方法,做出 不規(guī)則的法則 } } } //定時器 2 中斷 timer2() interrupt 5 { static uchar t; TF2=0; t++; if((t==speed)||(t>30)) //比較一個變化的數(shù)值,以實現(xiàn)變化的時間溢出,同時限制了最慢速 度為 1 秒 { t=0; ldelay=1;//每次長時間的溢出,就置一個標記,以便主程序處理 } } ―――――――――――――――――――――― 請打開 lesson11 目錄的工程,編譯,運行,看結果: 按 K1,速度則降低一次,總共 10 個檔次。
上傳時間: 2017-11-06
上傳用戶:szcyclone
鏈表習題 1. 編程實現(xiàn)鏈表的基本操作函數(shù)。 (1). void CreatList(LinkList &La,int m) //依次輸入m個數(shù)據(jù),并依次建立各個元素結點,逐個插入到鏈表尾;建立帶表頭結點的單鏈表La; (2). void ListPrint(LinkList La) //將單鏈表La的數(shù)據(jù)元素從表頭到表尾依次顯示。 (3).void ListInsert (LinkList &L,int i,ElemType e){ //在帶頭結點的單鏈表L中第i個數(shù)據(jù)元素之前插入數(shù)據(jù)元素e (4). void ListDelete(LinkList &La, int n, ElemType &e) //刪除鏈表的第n個元素,并用e返回其值。 (5). int Search(LinkList L, ElemType x) //在表中查找是否存在某個元素x,如存在則返回x在表中的位置,否則返回0。 (6). int ListLength(LinkList L) //求鏈表L的表長 (7). void GetElem(LinkList L, int i, ElemType &e) //用e返回L中第i個元素的值 鏈表的結點類型定義及指向結點的指針類型定義可以參照下列代碼: typedef struct Node{ ElemType data; // 數(shù)據(jù)域 struct Node *next; // 指針域 }LNode, *LinkList;
標簽: 單鏈表
上傳時間: 2017-11-15
上傳用戶:BIANJIAXIN
1. 編程實現(xiàn)鏈表的基本操作函數(shù)。 (1). void CreatList(LinkList &La,int m) //依次輸入m個數(shù)據(jù),并依次建立各個元素結點,逐個插入到鏈表尾;建立帶表頭結點的單鏈表La; (2). void ListPrint(LinkList La) //將單鏈表La的數(shù)據(jù)元素從表頭到表尾依次顯示。 (3).void ListInsert (LinkList &L,int i,ElemType e){ //在帶頭結點的單鏈表L中第i個數(shù)據(jù)元素之前插入數(shù)據(jù)元素e (4). void ListDelete(LinkList &La, int n, ElemType &e) //刪除鏈表的第n個元素,并用e返回其值。 (5). int Search(LinkList L, ElemType x) //在表中查找是否存在某個元素x,如存在則返回x在表中的位置,否則返回0。 (6). int ListLength(LinkList L) //求鏈表L的表長 (7). void GetElem(LinkList L, int i, ElemType &e) //用e返回L中第i個元素的值 鏈表的結點類型定義及指向結點的指針類型定義可以參照下列代碼: typedef struct Node{ ElemType data; // 數(shù)據(jù)域 struct Node *next; // 指針域 }LNode, *LinkList;
標簽: 單鏈表
上傳時間: 2017-11-15
上傳用戶:BIANJIAXIN
用51寫一個數(shù)字時鐘,含有中斷,視頻屏開關,以及調節(jié)時間等功能。
標簽: 數(shù)字時鐘
上傳時間: 2017-11-27
上傳用戶:老陳123
#include "iostream" using namespace std; class Matrix { private: double** A; //矩陣A double *b; //向量b public: int size; Matrix(int ); ~Matrix(); friend double* Dooli(Matrix& ); void Input(); void Disp(); }; Matrix::Matrix(int x) { size=x; //為向量b分配空間并初始化為0 b=new double [x]; for(int j=0;j<x;j++) b[j]=0; //為向量A分配空間并初始化為0 A=new double* [x]; for(int i=0;i<x;i++) A[i]=new double [x]; for(int m=0;m<x;m++) for(int n=0;n<x;n++) A[m][n]=0; } Matrix::~Matrix() { cout<<"正在析構中~~~~"<<endl; delete b; for(int i=0;i<size;i++) delete A[i]; delete A; } void Matrix::Disp() { for(int i=0;i<size;i++) { for(int j=0;j<size;j++) cout<<A[i][j]<<" "; cout<<endl; } } void Matrix::Input() { cout<<"請輸入A:"<<endl; for(int i=0;i<size;i++) for(int j=0;j<size;j++){ cout<<"第"<<i+1<<"行"<<"第"<<j+1<<"列:"<<endl; cin>>A[i][j]; } cout<<"請輸入b:"<<endl; for(int j=0;j<size;j++){ cout<<"第"<<j+1<<"個:"<<endl; cin>>b[j]; } } double* Dooli(Matrix& A) { double *Xn=new double [A.size]; Matrix L(A.size),U(A.size); //分別求得U,L的第一行與第一列 for(int i=0;i<A.size;i++) U.A[0][i]=A.A[0][i]; for(int j=1;j<A.size;j++) L.A[j][0]=A.A[j][0]/U.A[0][0]; //分別求得U,L的第r行,第r列 double temp1=0,temp2=0; for(int r=1;r<A.size;r++){ //U for(int i=r;i<A.size;i++){ for(int k=0;k<r-1;k++) temp1=temp1+L.A[r][k]*U.A[k][i]; U.A[r][i]=A.A[r][i]-temp1; } //L for(int i=r+1;i<A.size;i++){ for(int k=0;k<r-1;k++) temp2=temp2+L.A[i][k]*U.A[k][r]; L.A[i][r]=(A.A[i][r]-temp2)/U.A[r][r]; } } cout<<"計算U得:"<<endl; U.Disp(); cout<<"計算L的:"<<endl; L.Disp(); double *Y=new double [A.size]; Y[0]=A.b[0]; for(int i=1;i<A.size;i++ ){ double temp3=0; for(int k=0;k<i-1;k++) temp3=temp3+L.A[i][k]*Y[k]; Y[i]=A.b[i]-temp3; } Xn[A.size-1]=Y[A.size-1]/U.A[A.size-1][A.size-1]; for(int i=A.size-1;i>=0;i--){ double temp4=0; for(int k=i+1;k<A.size;k++) temp4=temp4+U.A[i][k]*Xn[k]; Xn[i]=(Y[i]-temp4)/U.A[i][i]; } return Xn; } int main() { Matrix B(4); B.Input(); double *X; X=Dooli(B); cout<<"~~~~解得:"<<endl; for(int i=0;i<B.size;i++) cout<<"X["<<i<<"]:"<<X[i]<<" "; cout<<endl<<"呵呵呵呵呵"; return 0; }
標簽: 道理特分解法
上傳時間: 2018-05-20
上傳用戶:Aa123456789