欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      計算機軟件實踐_教學大綱[精選5篇]

      時間:2019-05-15 03:09:27下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關的《計算機軟件實踐_教學大綱》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《計算機軟件實踐_教學大綱》。

      第一篇:計算機軟件實踐_教學大綱

      《計算機軟件實踐》 教學大綱

      課程編號:

      課程名稱:計算機軟件實踐 學分:1 學時:16 適用專業(yè):特種能源與煙火技術,安全工程和力學工程專業(yè) 先行課程:工程制圖

      一、目的與任務

      1、課程簡介

      《計算機軟件實踐》課程主要講授計算機輔助繪圖和設計軟件AutoCAD的使用方法。AutoCAD是應用最為廣泛的計算機輔助設計軟件之一,被廣泛應用于機械、建筑、電子、航天、化工、冶金等領域。因此,CAD是工科類學生必須掌握和熟練應用的。課程內容主要有AutoCAD的基本繪圖與編輯、尺寸標注、繪制零件圖和繪制裝配圖等。學生通過《計算機軟件實踐》的學習能夠對AutoCAD的使用方法有比較系統(tǒng)和全面的了解。

      2、學習目的與任務

      通過《計算機軟件實踐》的課程學習,使學生了解計算機輔助設計的基本概念,掌握AutoCAD基本的繪圖與編輯、標注尺寸、注寫文字、高級繪圖與編輯、繪制零件圖和裝配圖。使學生具備熟練應用AutoCAD設計零件的能力。

      二、教學內容與學時安排

      《計算機軟件實踐》課程的主要內容有:AutoCAD的基礎知識和入門,基礎繪圖與編輯,文字注釋與標注尺寸,高級繪圖與編輯,繪制零件圖,繪制裝配圖,創(chuàng)建圖紙布局及打印等。

      具體的教學內容和學時安排如下: 第1章 AutoCAD的基礎知識和入門

      (1學時)1.1 AutoCAD 2008的安裝與啟動 1.2 AutoCAD 2008的用戶界面 1.3 AutoCAD 2008繪制環(huán)境的設置 1.4 AutoCAD 2008的基本操作 第2章 基礎繪圖與編輯(1學時)2.1 點、線的繪制

      2.2 多邊形、圓弧、圓、橢圓、橢圓弧的繪制 2.3 圖案填充

      2.4 復制類的基本編輯命令 2.5 改變類的基本編輯命令 2.6 修改類的基本編輯命令 第一次上機安排(1學時)

      第3章 文字注釋與標注尺寸(1學時)3.1 文字注釋 3.2 尺寸標注 3.3 形位公差標注 3.4 實例講解

      第二次上機安排(1學時)第4章 高級繪圖與編輯(1學時)4.1 繪制與編輯多段線 4.2 繪制云狀線 4.3 繪制等分點 4.4 繪制圓環(huán) 4.5 選擇對象 4.6 顯示控制

      第三次上機安排(1學時)第5章 繪制零件圖(1學時)5.1 繪制零件圖的方法和途徑 5.2 實例講解

      第四次上機安排

      (2學時)第6章 繪制裝配圖(1學時)2 6.1 裝配圖的特點及繪制步驟 6.2 實例講解

      第7章 圖形輸出(1學時)6.1視圖與視口

      6.2 模型空間與圖紙空間 6.3 創(chuàng)建與管理布局 6.4 圖形輸出

      第五次上機安排(4學時)

      三、考核與成績評定

      考核,方式為平時作業(yè)(40%)+期末作業(yè)(60%),成績采用百分制。

      四、教材

      AutoCAD 2008中文版實用教程,邵振國主編,科學出版社,2007.3

      第二篇:南航計算機軟件數據結構上機實踐報告

      數據結構實踐報告整理 031040102 劉玉 ? 簡述每一部分的對象、目的和要求;

      ? 畫出程序流程圖;另附A4紙手繪; ? 附源程序清單; ? 實驗的收獲:遇到的問題以及解決的辦法、方法的優(yōu)缺點。

      實驗一 單鏈表的基本操作與運算

      題目一:單鏈表的定義、創(chuàng)建、插入和刪除操作,將數據元素顯示出來。

      本題目針對單鏈表。聯表示通過一組任意的存儲單元來存儲線性表格中的數據元素。為了建立起數據元素之間的存儲關系,設置每一個結點,結點既存放數據data,又存放其后繼地址的部分next。而每個結點中只有一個指向后繼的指針,所以稱其為單鏈表。本題目的要求是創(chuàng)建一個新的鏈表,并且完成鏈表的創(chuàng)建定義。鏈表是一種動態(tài)管理的存儲結構,鏈表中的每一個結點所占用的空間是根據運行是的實際需要的空間生成的。因此建立單鏈表是從空鏈表開始的,每次讀入一個數據元素就申請一個結點鏈表的一段。在單鏈表中插入一個結點不需要移動元素指針的指向。而刪除則需要找到木比啊偶元素的前驅結點,并且修改指針的指向。題目一需要的操作就是,對于一個新建的空鏈表,以其為對象進行具體的數據的插入填寫。待鏈表中存有數據后,再進行數據的整理查找,然后刪除目標數據。

      //031040102單鏈表 #include #define SLNODE struct node SLNODE

      //定義一個鏈表 { int data;SLNODE *next;};void CREATE_SL(SLNODE *h)//創(chuàng)建一個單鏈表 { SLNODE *p,*s;int x;h->next=NULL;

      cout<<“輸入以-1結尾的一組數”<

      cin>>x;

      //開始輸入數據

      while(x!=-1)

      {

      s=new SLNODE[sizeof(SLNODE)];

      //申請一個動態(tài)新空間

      s->data=x;

      if(h->next==NULL)

      h->next=s;

      else

      p->next=s;

      p=s;

      cin>>x;

      }

      p->next=NULL;

      //鏈表最后指向空 };int Insert_LinkList(SLNODE *h,int i,int x)

      //在單鏈表第i個位置插入x {

      SLNODE *p,*s;int j=0;

      p=h;while(p->next!=NULL&&j

      {

      p=p->next;

      j++;

      }

      if(j!=i-1){

      cout<<“i is invalid!”<

      return 0;}

      else {

      s=new SLNODE[sizeof(SLNODE)];

      s->data=x;

      s->next=p->next;

      p->next=s;

      return 1;

      } };int Del_LinkList(SLNODE *h,int i)

      //刪除單鏈表上第i個結點 {

      SLNODE *p,*s;int j=0;p=h;while(p->next!=NULL&&j

      p=p->next;j++;

      } if(j!=i-1){

      cout<<“i is invalid!”<

      return 0;4 6 8 9 7 2 6 9 7 5-1 } 鏈表數據如下

      else 4 6 8 9 7 2 6 9 7 5 { 輸入需插入的數據8

      if(p->next==NULL)輸入需插入的結點3

      { 插入成功

      cout<<“第i個結點不存在鏈表數據如下 ”<

      return 0;輸入需刪除的結點 4

      } 刪除成功

      else 鏈表數據如下

      {s=p->next;p->next=s->next;

      7 2 6 9 7 */

      //刪除結點

      Deletes;

      //釋放結點空間

      return 1;

      } } };void Print_LinkList(SLNODE *h)//輸出鏈表中所有元素

      { SLNODE *p;p=h->next;cout<<“鏈表數據如下”<next!=NULL;p=p->next){

      cout<

      data<<'t';} cout<

      data<next=NULL;CREATE_SL(h);Print_LinkList(h);cout<<“輸入需插入的數據”<>x;cout<<“輸入需插入的結點”<>i;if(Insert_LinkList(h,i,x))

      cout<<“插入成功”<

      cout<<“插入失敗”<>i;if(Del_LinkList(h,i))

      cout<<“刪除成功”<

      cout<<“刪除失敗”<

      實驗一的收獲

      實驗一讓我對于鏈表的創(chuàng)建于定義有了更多的接觸與認識。之前的學習經驗里主要是 扎實,VC++,涉及鏈表的內容,我學的不夠所以這次在軟件基礎時間里重新再次

      學習。題目一比較簡單,設僅是創(chuàng)建和插入以及刪除的基本操作。實驗一的困難較小,我也是比較順利參照課本,完成體題目一,也讓我對于進一步學習鏈表有了興趣和動力。由淺入深,我會一點點開展學習。在圖書館借閱一本《數據結構教程上機實驗指

      導》,里面對于實驗的指導比較全面而且有很多實例可以參考。

      上機實踐二 題目二:棧、隊列的順序存儲結構、鏈式存儲結構的定義、創(chuàng)建、插入和刪除操作,將數據元素顯示出來。本題目要求掌握棧和列隊。棧和列隊是

      兩種常見的數據結構。它們的邏輯結構和線性表相同。其特點是,插入和刪除等運算的位置有所限制:棧是按照先進后出的規(guī)則進行操作,而是按照先進先出的規(guī)則進行操作。堆棧技術現在的應用非常廣泛,不管是編譯軟件還是程序設計,在操作系統(tǒng)和事務管理中則是廣泛應用了隊列技術。棧是限制在一段進行插入和刪除的線性表,允許插入刪除的這一端稱為棧頂,固定端稱為棧底。棧是運算受到限制的一種線

      性表,采用順序存儲的是順序棧,采用鏈式存儲的是鏈棧。題目要求對于兩種存儲結構

      的棧進行定義創(chuàng)建。對于順序棧,首先需要申請共享的一位數組空間。即為先置空棧,然后入棧插入元素(特別要注意棧滿不能插入),刪除出棧(特別要注意棧空不能出棧)。對于鏈棧,采用帶頭指針的單鏈表來實現.隊列操作的順序隊列,插入在表的隊尾一端,刪除在表的另外的隊頭一端。隊的隊頭和隊尾都是活動的,特別地需要設置隊頭和隊尾兩個指針。需要實現置空隊、入隊、出對、以及判別隊列是否為空的運算。對于鏈式隊列,通常是用帶頭結點的單鏈表實現的,并且設置一個隊頭指針(始終指向頭結點)和一個隊尾指針(指向當前的最后一個元素),特別地,當隊列為空時隊頭和隊尾指針均指向頭結點。顯示創(chuàng)建一個帶頭結點的空隊,申請頭尾結點,然后進行如對操作不斷申請新的結點,還需要進行隊列是否為空的判斷操作,隊空則出隊失敗。

      //031040102 順序棧 #include #define MaxSize 1024 #define ElemType int Typedef struct stack //定義一個棧 { ElemType data[MaxSize];int top;}SqStack;SqStack *Init_SeqStack()//棧的初始化 { SqStack *s;s=new SqStack[sizeof(SqStack)];s->top=-1;return s;};int IsEmpty_SeqStack(SqStack *s)//判空棧 { if(s->top==-1)

      return 1;else

      return 0;};int Push_SeqStack(SqStack *s,ElemType x)//入棧 { if(s->top==MaxSize-1)

      return 0;else {

      s->top++;

      s->data[s->top]=x;

      return 1;

      }

      };int Pop_SeqStack(SqStack *s,ElemType x)

      //出棧

      { if(IsEmpty_SeqStack(s))

      return 0;else

      {

      x=s->data[s->top];

      s->top--;

      return 1;

      }

      };

      ElemType Top_SeqStack(SqStack *s)

      //取出棧頂元素 {

      if(IsEmpty_SeqStack(s))

      return 0;

      else

      return(s->data[s->top]);

      };void Print(SqStack *s)

      //輸出棧內所有元素 {

      if(IsEmpty_SeqStack(s))

      cout<<“

      此棧為空

      ”<

      cout<<“棧內元素為”<

      for(int i=s->top;i>-1;i--)

      cout<data[i]<<'t';cout<

      } };void main(){ SqStack *s;int x;

      s=Init_SeqStack();cout<<“

      輸入一組以-1結尾的數”<>x;while(x!=-1){

      s->top++;

      s->data[s->top]=x;

      cin>>x;} Print(s);cout<<“輸入需插入的數”<>x;if(Push_SeqStack(s,x))

      cout<<“插入成功”<

      cout<<“插入失敗”<

      Print(s);

      delete p;if(Pop_SeqStack(s,x))

      return top;

      cout<<“刪除成功”<

      cout<<“刪除失敗”<

      Print(s);} 輸入一組以-1結尾的數 5 8 9 7 3 6 2 1 8-1 棧內元素為 8 1 2 6 3 7 9 8 5 輸入需插入的數4 插入成功 棧內元素為 4 8 1 2 6 3 7 9 8 5 刪除成功 棧內元素為 8 1 2 6 3 7 9 8 5 //031040102 鏈棧 #include #define LinkStack struct linkstack #define elemtype int LinkStack

      //定義一個鏈棧 { elemtype data;LinkStack *next;};LinkStack *Init_LinkStack()//鏈棧的初始化 { LinkStack *top;top=new LinkStack[sizeof(LinkStack)];top=NULL;return top;};LinkStack *Push_LinkStack(LinkStack *top,elemtype x)

      //數據入棧 { LinkStack *s;s=new LinkStack[sizeof(LinkStack)];s->data=x;s->next=top;top=s;return top;};LinkStack *Pop_LinkStack(LinkStack *top,elemtype x)

      //數據出棧 { LinkStack *p;if(top==NULL)

      return NULL;else {

      x=top->data;

      p=top;

      top=top->next;//輸出棧內所有元素 { LinkStack *p;p=top;if(p==NULL)

      cout<<“此棧為空”<

      cout<<“棧內元素為”<

      for(;p->next!=NULL;p=p->next)

      cout<

      data<<'t';

      cout<

      data<>x;while(x!=-1){

      s=new LinkStack[sizeof(LinkStack)];

      s->data=x;

      s->next=top;

      top=s;

      cin>>x;} Print(top);cout<<“輸入需插入的數”<>x;top=Push_LinkStack(top,x);Print(top);top=Pop_LinkStack(top,x);Print(top);} 輸入一組以-1結尾的數 7 9 8 4 3 6 1 23 65-1 棧內元素為 65 23 1 6 3 4 8 9 7

      輸入需插入的數15 棧內元素為 15 65 23 1 6 3 4 8 9 7 棧內元素為 65 23 1 6 3 4 8 9 7

      //031040102 順序隊列 #include #define MaxSize 1024 #define ElemType int

      typedef struct queue //定義一個順序隊列 { ElemType data[MaxSize];int rear,front;}SeQueue;SeQueue*Init_Queue()//隊列的初始化 { SeQueue *sq;sq=new SeQueue[sizeof(SeQueue)];sq->front=sq->rear=-1;return sq;};int IsEmpty_Queue(SeQueue *sq)//判空隊列 { if(sq->rear==-1)

      return 1;else

      return 0;};int In_Queue(SeQueue *sq,ElemType x)

      //入隊 { if(sq->rear==MaxSize-1)

      return 0;else {

      sq->rear++;

      sq->data[sq->rear]=x;

      return 1;} };int Out_Queue(SeQueue*sq)

      //出隊 { if(IsEmpty_Queue(sq))

      return 0;else {

      sq->front++;

      return(sq->data[sq->front]);} };int Front_Queue(SeQueue *sq)//讀隊頭元素 { if(IsEmpty_Queue(sq))

      return 0;else {

      return(sq->data[sq->front+1]);} };void Print(SeQueue *sq)//輸出隊列所有元素 { if(IsEmpty_Queue(sq))

      cout<<“此隊列為空”<

      cout<<“隊列內元素為”<

      for(int i=sq->front+1;i<=sq->rear;i++)

      cout<data[i]<<'t';

      cout<

      cin>>x;while(x!=-1){

      sq->rear++;

      sq->data[sq->rear]=x;

      cin>>x;} Print(sq);cout<<“輸入需插入的數”<>x;if(In_Queue(sq,x))

      cout<<“插入成功”<

      cout<<“插入失敗”<

      cout<<“刪除成功”<

      cout<<“刪除失敗”< #define QNODE struct QNODE #define ElemType int QNODE

      //定義鏈隊的結點類型 {

      ElemType data;QNODE *next;};

      typedef struct linkqueue

      p=q->front->next;

      //封裝頭尾指針

      if(IsEmpty_LQueue(q)){

      cout<<“此棧為空”<

      cout<<“

      隊列內元素為

      ”<

      {

      for(;p->next!=q->rear->next;p=p->next)LinkQueue *q;

      cout<

      data<<'t';QNODE *p;

      cout<

      data<

      } //申請頭尾節(jié)點

      p=new QNODE[sizeof(QNODE)];//申請鏈隊頭結點

      p->next=NULL;q->front=q->rear=p;return q;};void In_LQueue(LinkQueue *q,ElemType x)//入隊操作 {

      QNODE *p;p=new QNODE[sizeof(QNODE)];//申請新結點

      p->data=x;p->next=NULL;q->rear->next=p;q->rear=p;};int IsEmpty_LQueue(LinkQueue *q)//判隊空 { if(q->front==q->rear)

      return 1;else

      return 0;};int Out_LQueue(LinkQueue *q,ElemType x)//出隊操作 { QNODE *p;if(IsEmpty_LQueue(q))

      return 0;else {

      p=q->front->next;

      q->front->next=p->next;

      x=p->data;

      delete p;

      if(q->front->next==NULL)

      //一個元素時,出隊后隊空還要改隊尾指針

      q->rear=q->front;

      return 1;} };void Print(LinkQueue *q){ QNODE *p;};

      void main(){ LinkQueue *q;QNODE *s;int x;

      q=Init_LQueue();cout<<“輸入一組以-1結尾的數”<>x;while(x!=-1)

      {

      s=new QNODE[sizeof(QNODE)];

      s->data=x;

      s->next=NULL;

      q->rear->next=s;

      q->rear=s;

      cin>>x;

      }

      Print(q);cout<<“輸入需插入的數”<>x;In_LQueue(q,x);Print(q);if(Out_LQueue(q,x))

      cout<<“刪除成功”<

      else

      cout<<“刪除失敗”<

      隊列內元素為 8 9 4 5 3 2 1

      實驗二的收獲

      實驗二是全新的知識需要理解。在之前的學習經歷中沒有接觸到棧和隊列。所以這

      次是從概念開始學習的。在具體程序的學習應用時候,我對于書上提到的,首先需要的是為棧申請共享空間,有了理解和認識。特別地,在??盏臅r候有s->top[0]==-1;s->top[1]==Maxsize。再有就是棧滿的時候不可以入棧操作,未滿的入棧操作則是先移動再賦入值。例如語句(兩句的順序不可以顛倒)s->top++;s->data[s->top]=x;由于棧的主要運算是在棧頂插入、刪除。因此我在鏈表的頭部作為棧頂,這樣方便了程序,而且不需要像單鏈表一樣為了運算方便附加一個頭結點。在聯系隊列的相關程序時候,我理解了,列隊單向空間無法利用,即為前面的已經被指針制動過的空間不能釋放也無法利用。除此,隊列的操作里面。有可能出現“隊滿”“隊空”的條件相同,front==rear;需要具體區(qū)分。

      上機實踐三

      題目三:二叉樹的鏈式存儲結構的數據結構定義、創(chuàng)建、先序和后序遍歷,并將結果序列輸出。

      二叉樹是有限個元素的集合,該集合或者為空、或者由一個稱為根的元素以及兩個不相交的、被稱為左子樹右子樹的二叉樹組成。二叉樹的臉是存儲結構是指,用鏈表來表示一顆二叉樹,即用鏈表來表示元素的邏輯關系。二叉樹的鏈表存儲的結點有三個域組成,除了數據域外,還有兩個指針域,分別用來指向該節(jié)點的左子結點和右子結點的存儲地址。當左子結點或者右子結點不存在的時候,相應的指針值域為空。二叉樹的遍歷是指按照某種順序結構訪問二叉樹的每個結點,使每個結點僅被訪問一次。限定先左后右,只有三種方式即為先序遍歷、中序遍歷、后序遍歷。遍歷其實是一個遞歸的過程,若二叉樹為空,則遍歷結束,不然就按照順序依次訪問根結點、左結點、右結點。

      //031040102 二叉樹 #include #define elemtype char typedef struct BiTNode

      //定義二叉樹結點 { elemtype data;

      BiTNode *lchild,*rchild;//兩結點指針

      }BiTree;

      BiTree *Create()//二叉樹的創(chuàng)建,遞歸算法 { BiTree *bt;elemtype ch;cin>>ch;if(ch=='0'){

      bt=NULL;} else {

      bt=new BiTNode[sizeof(BiTNode)];

      bt->data=ch;

      bt->lchild=Create();

      bt->rchild=Create();} return bt;};

      void PreOrder(BiTree *bt)

      //先序遍歷二叉樹,遞歸算法 { if(bt==NULL)

      return;cout<data<<'t';PreOrder(bt->lchild);PreOrder(bt->rchild);};

      void PostOrder(BiTree *bt)

      //先序遍歷二叉樹,遞歸算法 { if(bt==NULL)

      return;PostOrder(bt->lchild);PostOrder(bt->rchild);cout<data<<'t';};

      void main(){ BiTree *bt;cout<<“輸入所需字符(空結點以零代替)”<

      輸入所需字符(空結點以零代替)frt0e000qj00m00

      先序遍歷可得二叉樹元素為 f r t e q j m 后序遍歷可得二叉樹元素為 e t r j m q f

      實驗三的收獲

      二叉樹可以用計算機語言來讀取,通過遍歷可以恢復二叉樹。通過這次試驗更加深刻理解二叉樹。本體操作不斷調用函數,遞歸實現遍歷。實際需要的時候對于已知的二叉樹的每個結點逐一訪問。一次完整的便利科室的一個二叉樹的結點信息由非線性排列轉變?yōu)橐饬x上的線性排列。在二叉樹的鏈表中無法根據結點找到其父結點。不過,二叉樹的鏈表結構靈巧簡便、操作方便。特別地還節(jié)省空間。對于一個龐大的工程型程序的話,空間與簡便十分重要。同樣的目的,同樣的結果,需要比較選擇,肯定是精巧簡單操作性強等等優(yōu)勢作為判斷取舍。

      上機實踐四

      題目四:查找:順序查找、二分查找

      查找是許多程序中最為耗費時間的部分。因此需要方法提高運行的速度和效率。順序查找又稱為線性查找,也是最為基本的查找方法之一。具體實現為:從表的一端開始,依次將關鍵碼與給定的值比較,若找到查找成功,并且給出數據元素在表中的位置,若整個表查找完成仍未找到相同的關鍵碼,則查找失敗給出失敗信息。

      二分法查找只適用于順序存儲的有序表。有序表即是表中數據元素按照關鍵碼的升序或者降序排列。去中間元素作為比較對象,若給定值與中間元素的關鍵碼相等,則為查找成功;若給定值小于中間元素的關鍵碼,則在中間元素的左半區(qū)繼續(xù)查找,若給定值大于中間元素的關鍵碼,則在中間元素的右半區(qū)繼續(xù)查找。不斷重復上述的查找過程直到查找成功,或者所查找的區(qū)域,沒有該元素查找失敗。

      //031040102順序查找 #include #define KeyType int #define ElemType int

      #define MaxSize 1024 typedef struct { KeyType key;

      //定義關鍵碼字段

      ElemType elem;//定義其他字段 }elemtype;

      typedef struct

      //順序存儲結構定義 { elemtype elem[MaxSize];//定義數組

      int length;

      //表長度 }S_TBL;

      S_TBL *Init_S_TBL()

      //順序表的初始化 { S_TBL *s;s=new S_TBL[sizeof(S_TBL)];s->length=-1;return s;};

      int s_search(S_TBL *tbl,KeyType kx)//在表tbl中查找關鍵碼為kx的數據元素 { tbl->elem[0].key=kx;

      //存放檢測

      for(int

      i=tbl->length;tbl->elem[i].key!=kx;i--);

      //從表尾向前查找

      return i;};

      void main(){ S_TBL *tbl;tbl=Init_S_TBL();int i,k;cout<<“輸入一組以-1結尾的數(關鍵碼字段)”<>k;while(k!=-1){

      tbl->length++;

      i=tbl->length+1;

      tbl->elem[i].key=k;

      cin>>k;} i=1;cout<<“輸入一組以-1結尾的數(數據元素)”<>k;while(k!=-1){

      tbl->elem[i].elem=k;

      i++;

      cin>>k;} cout<<“請輸入所需查找數的關鍵碼字段:”<>k;i=s_search(tbl,k);if(i)

      {

      flag=mid;

      cout<<“查找成功”<

      break;

      cout<<“所查找的數為//查找成功,元素位置設置到flag中 ”<elem[i].elem<

      } } } else return flag;

      cout<<“查找失敗”< #define KeyType int #define ElemType int #define MaxSize 1024 typedef struct { KeyType key;

      //定義關鍵碼字段

      ElemType elem;

      //定義其他字段 }elemtype;typedef struct

      //順序存儲結構定義 { elemtype elem[MaxSize];//定義數組

      int length;

      //表長度 }S_TBL;S_TBL *Init_S_TBL()

      //順序表的初始化 { S_TBL *s;s=new S_TBL[sizeof(S_TBL)];s->length=-1;return s;};int Binary_search(S_TBL *tbl,KeyType kx)//在表tbl中查找關鍵碼為kx的數據元素 { int mid,flag=0,low=1,high=tbl->length;//1.設置初始區(qū)間

      while(low<=high)

      //2.表空測試

      {

      //非空,進行比較測試

      mid=(low+high)/2;

      //3.得到中間點

      if(kxelem[mid].key)

      high=mid-1;

      //調整到左半區(qū)

      else if(kx>tbl->elem[mid].key)

      low=mid+1;

      //調整到右半區(qū)

      else

      { //返回該元素在表中的位置,或返回0 };void main(){ S_TBL *tbl;tbl=Init_S_TBL();int i,k;cout<<“輸入一組以-1結尾的數(關鍵碼字段)”<>k;while(k!=-1){

      tbl->length++;

      i=tbl->length+1;

      tbl->elem[i].key=k;

      cin>>k;} i=1;cout<<“輸入一組以-1結尾的數(數據元素)”<>k;while(k!=-1){

      tbl->elem[i].elem=k;

      i++;

      cin>>k;} cout<<“輸入所需查找數的關鍵碼字段”<>k;i=Binary_search(tbl,k);if(i){

      cout<<“查找成功”<

      cout<<“所查找的數為”<elem[i].elem<

      }

      else

      cout<<“查找失敗”<

      -1結尾的數(數據元素)33 22 11 55 99 77 88 66 44-1 輸入所需查找數的關鍵碼字段3 查找成功

      所查找的數為33 實驗四的收獲

      查找的程序對我來說不陌生。兩種基本方法的比較和應用里,我留意了最大查找次

      數的不同。順序查找的進行,如果查找不成功那么會議共比較N+1次。當數據量很大的時候,平均查找長度過大,當然順序查找對于數據的存貯方式沒有任何的要求。折半查找會有一個平均查找長度以及查找的最大長度。

      我比較傾向于這本查找,其查找的效率明顯會高于順序查找。特別地,我還留意到對于單鏈表結構,無法進行二分法的查找,因為全部的元素的定位只能從指針開始。對于線性列表只能采取順序查找的方式。

      上機實踐五

      題目五:排序(插入排序選擇排序冒泡排序)排序是數據處理中經常使用的一種重要的運算,其目的就是將一組數據按照規(guī)定的順序進行排列。排序的目的是便于查詢和處理。插入排序的基本思想是每一步將一個待排序的元素,按照其關鍵字嗎的大小,插入到前面已經排序號的一組元素的適當的位置上,知道所有的元素都插入為止。一般地認為插入排序是一個穩(wěn)定的排序方法。選擇排序,每次從當前待排序的記錄中,通過依次地進行關鍵字媽的比較從中選擇一個關鍵字最小的記錄,并且把它與當前待排序的第一個記錄進行交換。直接選擇排序是一個不穩(wěn)定的排序方法。冒泡排序是一種簡單的交換排序的方法。一次地比較相鄰兩個記錄的關鍵字,若發(fā)現兩個記錄的次序相反(即位前一個記錄的關鍵字大雨后有一個記錄的關鍵字),進行記錄的交換一直到沒有反序為止。極端情況下,冒泡排序會有最短與最長時間,整個隊列越是接近有序,則冒泡排序的進行次數越少。

      //031040102 插入排序 #include #define KeyType int #define ElemType int #define MaxSize 1024 typedef struct { KeyType key;

      //定義關鍵碼字段

      ElemType elem;

      //定義其他字段 }elemtype;

      typedef struct

      //順序存儲結構定義 { elemtype elem[MaxSize];

      //定義數組

      int length;

      //表長度 }S_TBL;

      S_TBL *Init_S_TBL()

      //順序表的初始化 { S_TBL *s;s=new S_TBL[sizeof(S_TBL)];s->length=-1;return s;};

      int Binary_search(S_TBL *tbl,KeyType kx)//在表tbl中查找關鍵碼為kx的數據元素 { int mid,flag=0,low=1,high=tbl->length;//1.設置初始區(qū)間

      while(low<=high)

      //2.表空測試

      {

      //非空,進行比較測試

      mid=(low+high)/2;

      //3.得到中間點

      if(kxelem[mid].key)

      high=mid-1;

      //調整到左半區(qū)

      else if(kx>tbl->elem[mid].key)

      low=mid+1;

      //調整到右半區(qū)

      else

      {

      flag=mid;

      break;

      //查找成功,元素位置設置到flag中

      } } Return flag;//返回該元素在表中的位置,或返回0 };

      void main(){ S_TBL *tbl;tbl=Init_S_TBL();int i,k;cout<<“輸入一組以-1結尾的數(關鍵碼字段)”<>k;while(k!=-1){

      tbl->length++;

      i=tbl->length+1;

      tbl->elem[i].key=k;

      cin>>k;} i=1;cout<<“輸入一組以-1結尾的數(數據元素)”<>k;

      while(k!=-1)};{ void Print(RecType R[],int n)

      tbl->elem[i].elem=k;

      i++;

      cin>>k;} cout<<“輸入所需查找數的關鍵碼字段”<>k;i=Binary_search(tbl,k);if(i){

      cout<<“查找成功”<

      cout<<“所查找的數為”<elem[i].elem<

      cout<<“查找失敗”< #define keytype int #define itemtype int #define MaxSize 50 typedef struct RecType //定義排序記錄的形式 { keytype key;itemtype otherinfo;}RecType;void SelectSort(RecType R[],int n)//選擇排序函數 { int i,j,k;for(i=1;i

      k=i;

      for(j=i+1;j<=n;j++)

      if(R[j].key

      k=j;

      if(k!=i)

      {

      R[0]=R[k];

      R[k]=R[i];

      R[i]=R[0];

      } } //輸出數組內所有元素 { cout<<“關鍵字段為:”<

      cout<

      cout<>x;while(x!=-1){

      R[++n].key=x;

      cin>>x;} n=0;cout<<“請輸入一組以-1結尾的數(數據元素):”<>x;while(x!=-1){

      R[++n].otherinfo=x;

      cin>>x;}

      cout<<“

      排序前

      ”<

      Print(R,n);SelectSort(R,n);cout<<“排序后”<

      請輸入一組以-1結尾的數(數據元素): 33 22 11 44 55 66 99 88 77-1 排序前 關鍵字段為: 6 9 7 4 1 5 6 8 3 所有元素為: 33 22 11 44 55 66 99 88

      排序后 關鍵字段為: 1 3 4 5 6 6 7 8 9 所有元素為: 55 44 66 33 99 11 88 22 //031040102 冒泡排序 #include #define keytype int #define itemtype int

      #define MaxSize 50

      cin>>x;typedef struct RecType

      }

      //定義排序記錄的形式

      cout<<“排序前:”<

      請輸入一組以

      -1結尾的數(關鍵碼字段): //選擇排序函數 { int i,j,flag;for(i=1;i

      flag=1;

      for(j=1;j<=n-i;j++)

      if(R[j+1].key

      {

      flag=0;

      R[0]=R[j];

      R[j]=R[j+1];

      R[j+1]=R[0];

      }

      if(flag==1)

      return;} };void Print(RecType R[],int n)//輸出數組內所有元素 { cout<<“關鍵字段為:”<

      cout<

      cout<>x;while(x!=-1){

      R[++n].key=x;

      cin>>x;} n=0;cout<<“請輸入一組以-1結尾的數(數據元素):”<>x;while(x!=-1){

      R[++n].otherinfo=x;9 8 7 4 1 5 6-1 請輸入一組以-1結尾的數(數據元素): 11 22 33 44 66 55 77 88-1 排序前: 關鍵字段為: 6 9 8 7 4 1 5 6 所有元素為: 11 22 33 44 66 55 77 88 排序后: 關鍵字段為: 1 4 5 6 6 7 8 9 所有元素為: 55 66 77 11 88 44 33 22 實驗五的收獲

      三種不同的排序方式,都是之前C++ 學習時候的重點掌握內容。

      直接插入排序的算法很簡潔,也很容易實現。從空間看,它只需要一個元素的輔助,從實踐看該算法的主程序運行次數只比元素的個數少一。當然由于原列表的排序狀況未知,其總比較次數和總的移動次數也是未定的,取平均數約為0.25N^2。對于直接選擇排序,比較次數與原表元素的排列順序無關,移動次數有關。根據冒泡排序的思想,待排序的記錄有序之

      后,則在下一趟的排序時候不會再有記錄的交換位置,由此,我增加了一個標記flag,來直觀表示每一次的排序是否需要發(fā)生交換,無交換則已經完成可以結束冒泡。特別地冒泡排序需要增加一個附加的單元來實現元素的交換。在交換時需要留意免得出錯。

      ·

      第三篇:《程序設計實踐》教學大綱

      課程編號:02202001 課程名稱:程序設計實踐 課程性質:專業(yè)基礎限選

      總 學 時:30(實踐學時30)

      學分:2 適用專業(yè):計算機科學與技術

      《程序設計實踐》教學大綱

      一、教學目標

      《程序設計實踐》課程的教學目標旨在訓練學生C語言編程的基本能力。通過本課程的訓練,使學生具備后續(xù)程序設計類課程,如數據結構、算法分析與設計等,所要求的編程能力,為這些教學活動的順利開展打下良好基礎。

      二、教學說明

      《程序設計實踐》分模塊對學生的C語言編程技能進行訓練,涵蓋了基本設計方法、輸入輸出、指針、字符串、參數傳遞、遞歸調用、文件操作等項目。這些技能即是后續(xù)與程序設計類課程經常要用到的,也是日后從事C語言程序開發(fā)所必備的,乃至對掌握其他編程語言,如C++、Java和C#等也是非常有益的。

      訓練模塊的設計,以及各模塊中訓練題目的選擇是基于以往教學經驗,挑選學生普遍薄弱以及未來經常使用的編程技能編輯而成。教師可根據具體情況,特別是學生對C語言編程的掌握情況,靈活調整訓練模塊和模塊中的訓練題目。

      目前各模塊基本相對獨立,前后順序可以調整,但仍建義將實驗一和實驗二放在最開始;實驗三不晚于實驗六;實驗四不晚于實驗五。建議每次課能抽出部分時間對與本模塊相關的理論知識做簡單歸納總結。

      本課程是對編程能力的訓練,因此反對學生參考成熟的程序,甚至鼓勵學生盡量少用庫函數,而是自己獨立編程實現。這一點與其他程序設計類課程有所不同,望在教學實施過程中予以注意。本課程雖是對編程能力的訓練,但在注重結果正確的前提下,也應注意對學生良好編程風格的培養(yǎng)。

      鼓勵學生選擇與訓練模塊相關的,來自于自己程序開發(fā)實踐活動的題目參與訓練,但要事先征得教師的認可。

      如果條件允許,應該全程開展對訓練結果的機器自動檢查。

      三、教學內容及要求

      實驗一 基本設計方法訓練

      (一)實驗內容

      本次實驗對基于程序流程圖寫代碼,以及通過程序流程圖分析代碼的程序設計方法進行訓練。實驗題目分如下兩大類,學生可分別從每類中選擇1道來完成: 1.流程圖轉換為代碼

      (1)寫出下列流程圖對應的代碼

      (2)寫出下列流程圖對應的代碼

      2.代碼轉換為流程圖

      (1)畫出下列代碼的流程圖

      p = head;

      for(j=1;j

      p = p->next;

      while(head->next!= head)

      {

      for(j=1;j

      p = p->next;

      q = p->next;

      p->next = q->next;

      printf(“%d ”,q->number);

      if(q == head)

      head = q->next;

      free(q);

      p = p->next;

      }

      printf(“%dn”,head->number);(2)畫出下列代碼的流程圖

      r1=head1;p1=head1->next;r2=p2=head2->next;while(p1&&p2){ if(p1->index==p2->index){

      p1->modulus=(p1->modulus)+(p2->modulus);p2=p2->next;free(r2);r2=p2;r1=p1;p1=p1->next;} else if(p1->index>p2->index){

      r2->next=p1;r1->next=r2;p2=p2->next;r2=p2;} else if(p1->index

      index){

      r1=p1;p1=p1->next;} 3 }

      (二)實驗要求

      能寫出程序流程圖對應的代碼,并能畫出代碼對應的程序流程圖。實驗二 輸入輸出格式控制訓練

      (一)實驗內容

      本次實驗對輸入輸出語句的使用,主要是格式控制參數的使用進行訓練。實驗題目分如下兩大類,學生可分別從每類中選擇2道來完成: 1.輸入語句

      (1)讀入一組以空格分隔的數,把它們存入數組,用逗號分隔的方式輸出,并統(tǒng)計數的個數。

      例:【輸入】20 37.5 43 5 87.0【回車】

      【輸出】20,37.5, 43,5,87.0 5(2)按照“學號【空格】姓名【空格】性別【空格】年齡【回車】”的格式輸入若干學生信息,將他們存儲在結構體數組中(即每一個學生的信息存儲在一個結構體中),輸入以“##”結束。統(tǒng)計學生信息數量,并按行輸出每條學生信息(逗號分隔)。例:【輸入】20142101 zhang Male 19【回車】

      20142102 wang Female 18【回車】

      ##【回車】 【輸出】2

      20142101,zhang,Male,19【回車】

      20142102,wang,Female,18【回車】

      (3)讀入一組以制表符(Tab)分隔的數,把它們存入數組,并用逗號分隔輸出。例:【輸入】5【Tab】35【Tab】15【Tab】100【回車】

      【輸出】5,35,15,100【回車】 2.輸出語句

      (1)打印如下圖形,層數由用戶輸入,最后一行左側頂格。

      * *** ***** *******(2)打印如下圖形,層數由用戶輸入,中間一行左側頂格。

      * *** ***** *** *(3)打印倒的楊輝三角形,層數由用戶輸入,第一行左側頂格。例:

      3.綜合類

      (1)輸入一組以逗號分隔的整數,以回車結尾,以每行5個,空格分隔,左對齊的方式輸 出它們。

      例:【輸入】100,21,3950,7,8,3289,943,495,34134,343,209,47,2,7293,29,2732,843,392,24【回車】 【輸出】100

      3950 7

      3289 943 495

      34134 343 209

      7293 2732 843 392

      (2)輸入一組以逗號分隔的整數,以回車結尾,以每行5個,空格分隔,右對齊的方式輸出它們。

      例:【輸入】100,21,3950,7,8,3289,943,495,34134,343,209,47,2,7293,29,2732,843,392,24【回車】 【輸出】 100

      3950

      3289 943

      495

      34134 343 209

      7293 2732 843

      392

      (3)輸入一組以空格分隔的英文單詞,以回車結尾,以每行5個,空格分隔,左對齊的方式輸出它們。例:【輸入】

      Machine learning is the term that refers to learning patterns in the data In other words【回車】 【輸出】Machine learning is

      that words(4)輸入一組以空格分隔的英文單詞,以回車結尾,以每行5個,空格分隔,右對齊的方式輸出它們。例:【輸入】

      Machine learning is the term that refers to learning patterns in the data In other words【回車】 【輸出】Machine learning

      is

      that words(5)輸入一組以逗號分隔的小數,以回車結尾,以每行5個,空格分隔,小數點對齊的方式輸出它們。

      例:【輸入】10.0,2.1,39.50,7.8,328.9,9.43,49.5,341.34,34.3,2.09,0.47,2.0,7.293,29.00【回車】 【輸出】 10.0

      2.1

      39.50

      7.8

      328.9 9.43 49.5 341.34

      34.3

      2.09 0.47

      2.0

      7.293 29.00(6)輸入一組以空格分隔的英文單詞,以回車結尾,以每行5個,空格分隔,中間對齊的方式輸出它們。例:【輸入】

      Machine learning is the term that refers to learning patterns in the data In other words【回車】 【輸出】Machine learning

      is

      that words

      (二)實驗要求

      the

      term learning patterns In

      other

      refers

      to

      data in

      the

      the

      term In

      other

      refers

      to

      learning

      patterns in

      the data

      the

      term learning

      patterns In

      other

      refers

      to

      data in

      the 能利用輸入輸出語句完成相應任務。實驗三 指針及字符串訓練

      (一)實驗內容

      本次實驗對指針的使用和字符串的操作進行訓練。實驗題目如下,學生可從中選擇2道來完成: 1.用指針操作實現一個二維數組的轉置運算。

      輸入:輸入包含m + 1行。第一行是整數m和n,兩項之間用一個空格隔開(1 <= m, n <= 10)。

      其中,m,n分別為數組的行數和列數。第二行到第m + 1行每行均有n個整數,相鄰兩項之間用一個空格隔開。

      輸出:包含n行,是轉置后的二維數組。每行均有m個整數,相鄰兩項之間用一個空格隔開。

      例:【輸入】3 2【回車】2【回車】5【回車】8【回車】

      【輸出】1 4 7【回車】5 8 2.輸入一段英文,從中找出最長的英文單詞。英文單詞由空格分隔。(用字符指針實現,且不能調用庫函數。)注:英文單詞只包含大寫字母和小寫字母;若最長的英文單詞有多個,則輸出第一個。

      3.輸入一串符號,將其中連續(xù)的阿拉伯數字視為整數,計算并輸出它們的和。(用字符指針實現,且不能調用庫函數。)

      例:【輸入】whde12fkvf834ddei5sdlm3790wo【回車】

      【輸出】4641(因為12+824+5+3790=4641)

      (二)實驗要求

      能利用指針完成相應任務,并能對字符串進行操作。實驗四 參數傳遞訓練

      (一)實驗內容

      本次實驗對函數調用過程中的參數傳遞進行訓練。實驗題目如下,學生可從中選擇2道來完成:

      1.二維矩陣A和B作為輸入參數,傳入函數ADD,函數ADD完成A+B的運算,結果放在二維矩陣C中。SELECTMIN函數負責找出C中值最小的元素。編程實現上述函數,最終要求輸出C和C中最小元素的值。不能用全局變量。

      2.字符串str1和str2 作為輸入參數,分別傳入cut函數。cut函數負責從傳入的字符串中截取指定范圍(例如:從第2個字符開始,到第5個字符結束的部分)的內容(截取范圍也作為cut函數的輸入參數傳入。)。截取結果分別放在字符串str3和str4中。再將str3和str4作為輸入參數傳入connect函數。connect函數負責將傳入的兩個字符串順序拼接在一起。編程實現上述函數,要求最終輸出拼接結果。不能用全局變量。

      3.每個學生信息存儲在一個結構體中,結構體包括學號、數學成績、英語成績、計算機成績、平均成績五部分。Ave函數負責計算一個學生的平均成績。Find函數負責找到平均成績最高的學生,Print函數負責按表格的形式輸出一個學生的全部信息,內容全部左對齊,表頭為“No.Math.Eng.Comp.Ave.”。編程實現上述函數,要求輸出一個班中(不少于8人)平均成績最高的學生的信息。

      (二)實驗要求

      掌握根據需求選擇正確的參數傳遞方式完成相應任務的技能。實驗五 遞歸調用訓練

      (一)實驗內容

      本次實驗對函數的遞歸調用進行訓練。

      實驗題目分如下兩類,學生可分別從每類中選擇1道來完成: 1.基本題

      (1)用遞歸函數完成斐波那契級數的計算,并輸出斐波那契級數序列的前n項。n由用戶輸入。

      (2)用遞歸函數完成下列函數的計算,并輸出序列的前n項。n由用戶輸入。

      n?1m?0??f(m,n)??f(m?1,1)m?0,n?0?f(m?1,f(m,n?1))其他? 2.提高題

      (1)用遞歸函數實現將給定正整數轉換為二進制數的功能,并輸出轉換結果。正整數由用戶輸入。例:【輸入】256 【輸出】100000000(2)用遞歸函數實現將給定的純小數換為二進制數的功能,并輸出轉換結果。純小數由用戶輸入。例:【輸入】0.625 【輸出】0.101

      (二)實驗要求

      能設計實現遞歸函數完成相應任務。實驗六 文件操作訓練

      (一)實驗內容

      本次實驗對文件的打開、關閉和讀寫等操作進行訓練。實驗題目分如下三類,學生可分別從每類中選擇1道來完成: 1. 文件讀操作

      (1)直接通過對文件的讀操作(即不允許將文件內容全部讀入到緩沖區(qū)中),統(tǒng)計已知的文本文件(txt格式)中總共有多少個英文字符(區(qū)分大小寫,且不算標點符號)。例如:Machine learning is the term.中的英文字符為24個。

      (2)直接通過對文件的讀操作(即不允許將文件內容全部讀入到緩沖區(qū)中),統(tǒng)計已知的文本文件(txt格式)中的英文單詞個數(以空格或標點符號分隔的字符串視為一個英文單詞)。

      例如:Machine learning isn’t a word.中的英文單詞為6個。2. 文件寫操作

      (1)通過對文件的直接讀寫操作(即不允許將文件內容全部讀入到緩沖區(qū)中,也不允許將緩沖區(qū)中的內容寫到文件中),將已知的文本文件(txt格式)中的指定字符c1修改為特定字符c2。c1和c2由用戶指定,并作為程序的輸入。

      (2)通過對文件的直接讀寫操作(即不允許將文件內容全部讀入到緩沖區(qū)中),將已知的文本文件(txt格式)中的指定單詞w1修改為特定單詞w2。w1和w2由用戶指定,并作為程序的輸入。3. 文件創(chuàng)建操作

      (1)通過對文件的直接讀寫操作(即不允許將文件內容全部讀入到緩沖區(qū)中),復制已知文 7 本文件file1中的內容到一個新的文本文件file2中。注意在file2中保持源文件中的格式。(2)通過對文件的直接讀寫操作(即不允許將文件內容全部讀入到緩沖區(qū)中),將已知文本文件file1中指定位置的指定長度的字符串復制到一個新的文本文件file2中。指定位置由行號和起始字符位置給出。

      例如:文件file1中第1行的內容為:Machine learning is the term.則復制第1行第5個字符開始的6個字符到file2中后,file2的內容為:ine le

      (二)實驗要求

      能通過對文件的操作完成相應任務。實驗七 控制結構訓練訓練

      (一)實驗內容

      本次實驗對控制結構以及控制結構的嵌套進行訓練。實驗題目如下,學生可從中選擇2道來完成:

      1.隨機輸入n個正整數,編程分別求出其中在奇數位序上的(即第1、3、5、7、….個)奇數的和,以及偶數位序上的((即第2、4、6、8、….個))偶數的和。

      2. 編寫程序,不斷讀取用戶的鍵盤輸入(回車分割)。如果是英文字母則一律轉換為小寫字母,依次存入一個足夠長的字符數組中;如果是阿拉伯數字(不超過4位)則依次放到一個足夠長的整數數組中;如果是其他符號,則將其ASCII存入另一個數組中。最后輸出3個數組中的內容。

      3.在一段英文文章中,找到給定字符串str的所有出現,輸出其出現的位置。編程實現之。

      (二)實驗要求

      能利用順序、分支、循環(huán),以及它們的各種嵌套完成相應的任務。實驗八 調試測試訓練

      (一)實驗內容

      本次實驗對程序的調試和測試進行訓練。實驗題目如下,學生可從中選擇1道來完成:

      1.約瑟夫問題:假設有n個人圍圈而坐,現在從第k人開始數數,數到m的人出列,緊接著的后續(xù)人又從1開始數數,到m出列,如此重復下去,直到全體人員出列。輸出出列序列。

      #include #include #include

      typedef struct _foruse { struct _foruse* next;int number;}foruse,*link;

      link create(int n);void joseph(link head, int k, int m);

      link create(int n){ link head =(link)malloc(sizeof(foruse));foruse *tail;int i;head->next = head;head->number = 1;

      tail = head;for(i=2;i<=n;i++){ foruse *p =(foruse*)malloc(sizeof(foruse));p->number = i;p->next = tail->next;tail->next = p;tail = p;} return head;}

      void joseph(link head, int k, int m){ int j;foruse *p;foruse *q;if(m == 1 && k == 1){ p = head;while(p->next!= head){ printf(“%d ”,p->number);q = p->next;free(p);p = q;} printf(“%dn”,p->number);} else if(m == 1 && k!= 1){ p = head;for(j=1;jnext;while(head->next!= head){ q = p->next;p->next = q->next;printf(“%d ”,q->number);if(q == head)head = q->next;free(q);} printf(“%dn”,head->number);} else { p = head;for(j=1;j

      p = p->next;while(head->next!= head){ for(j=1;jnext;q = p->next;p->next = q->next;printf(“%d ”,q->number);if(q == head)head = q->next;free(q);p = p->next;} printf(“%dn”,head->number);} } void main(){ link head;int m, n, k;printf(“please input n,m,k:”);scanf(“%d,%d,%d”,&n,&m,&k);head = create(n);joseph(head,k,m);} 2.約瑟夫問題:假設有n個人圍圈而坐,現在從第k人開始數數,數到m的人出列,緊接著的后續(xù)人又從1開始數數,到m出列,如此重復下去,直到全體人員出列。輸出出列序列。

      #include #include typedef struct node { int data;struct node *next;} LNode,*LinkList;LinkList look(LNode *p,int e){ LNode *p3;p3=(LNode *)malloc(sizeof(LNode));if(!p3)exit(1);p3=p;while(p3->next!=p&&p3->data!=e)p3=p3->next;

      if(p3->next==p&&p3->data!=e){ printf(“no exist ,enter againn”);scanf(“%d”,&e);look(p,e);} return(p3);} int main(){ int x,s,y,i;printf(“please enter the number of people:n”);scanf(“%d”,&x);/* while(x<=2||x>=50){ printf(“out of range ,enter againn”);scanf(“%d”,&x);} */ printf(“enter each people's numbern”);LinkList head=(LNode *)malloc(sizeof(LNode));LNode *p1,*p2;p1=head;for(i=1;i<=x;i++){ p1->next=(LNode *)malloc(sizeof(LNode));scanf(“%d”,&s);p1=p1->next;p1->data=s;p1->next=head->next;} p1=head->next;

      for(i=1;i<=x;i++){ printf(“%d ”,p1->data);p1=p1->next;if(i%10==0)printf(“n”);}

      printf(“please enter the interval numbern”);scanf(“%d”,&y);while(y<1){ printf(“insignificance,erter againn”);scanf(“%d”,&y);} printf(“enter the first numbern”);scanf(“%d”,&s);p1=look(head->next,s);while(p1->next!=p1){

      int j=1;

      while(j

      p1=p1->next;

      j++;11 }

      p2=p1->next;

      p1->next=p2->next;

      printf(“%d ”,p2->data);

      free(p2);p1=p1->next;} printf(“OK!n”);return 0;}

      (二)實驗要求

      能根據提示調試語法錯誤,能通過測試修正程序。實驗九 綜合訓練

      (一)實驗內容

      本次實驗對學生使用前述實驗中的各項技能完成所需任務的能力進行訓練。實驗題目如下,學生可從中選擇1道來完成:

      1.手機通訊錄中每條記錄包括:姓名、手機號、類別(如:同學、親屬、同事、好友等)三部分內容。請編寫程序完成從文件導入手機通訊錄,能對手機通訊錄進行增、刪、查、改,并能將手機通訊錄導出到文件的功能。

      2.編寫程序,可以統(tǒng)計任給的一個英文文件(.txt格式)中每個英文字母(區(qū)分大小寫)出現的頻率,以及每個英文單詞出現的次數。并將統(tǒng)計結果分別輸出到兩個文件中。結果按頻率和次數的升序排列。

      3.用數組存儲一個集合中的元素,編程實現兩個集合的交、并、差、對稱差運算。不能改變參與運算的集合內容,不能使用全局變量。

      (二)實驗要求

      能利用程序設計的各項技能完成相應任務。實驗十 上機考試

      (一)實驗內容

      本次實驗對學生掌握和運用程序設計基本技能的情況進行考核。

      (二)實驗要求

      能在規(guī)定的時間內完成指定的程序設計任務,并調試測試通過,得到正確的運行結果。

      四、進程安排

      實驗一 基本設計方法訓練

      實驗二 輸入輸出格式控制訓練

      實驗三 指針及字符串訓練

      實驗四 參數傳遞訓練

      實驗五 遞歸調用訓練 實驗六 文件操作訓練

      實驗七 控制結構訓練

      實驗八 調試測試訓練

      實驗九 綜合訓練

      實驗十 上機考試

      3學時

      3學時

      3學時

      3學時 3學時

      3學時

      3學時

      3學時 3學時

      3學時

      五、教學參考書

      《Computer Algorithms-Introduction to Design and Analysis(3rd edtion)》(影印版),Sara Baase著,高等教育出版社,2000.《Introduction to Algorithms》(影印版),Thomas Cormen,機械工業(yè)出版社,2009.《Algorithms(Fourth Edition)》(英文版·第4版),Robert Sedgewick, Kevin Wayne著,人民郵電出版社,2013.《C++數據結構與算法》(第4版),[美] 喬茲德克(Drozdek, A.)著;徐丹,吳偉敏 譯,清華大學出版社,2014.《數據結構與面向對象程序設計(C++版)(》第4版),[美] 梅因(Michael Main),薩維特奇(Walter Savitch)著; 金名 等 譯,清華大學出版社,2012.《數據結構》,陳越 主編,高等教育出版社,2012.《數據結構(C語言版)》,嚴蔚敏,吳偉民 著,清華大學出版社,2011.《程序設計實踐教程》,章小莉,周知揚,張巖,趙耿,清華大學出版社,2012.六、考核方式及成績評定參考標準

      本課程安排10次實驗(含1次上機考試),共30學時。除上機考試外,每個實驗均按5分制打分,最后合成45分,占期末總評成績的45%。

      考核中承認學生能力差別,肯定每個學生的努力,激勵獨立完成任務,鼓勵挑戰(zhàn)難題,允許獲取教師和同學的幫助,反對盲目抄襲和作假,引導學生按能力選題,積極動手實踐,在學習中不斷成長。

      實驗評分標準:

      5分:實驗預習充分,上機準時,操作熟練,能獨立完成代碼設計,程序調試,按時完成,代碼注釋充分,結果正確。

      4分:實驗預習良好,上機準時,操作比較熟練,能在指導下完成代碼設計,順利調試程序,按時完成,代碼注釋較充分,結果較正確。

      3分:實驗預習較好,上機準時,操作比較熟練,基本完成實驗任務,代碼有注釋,結果基本正確。

      2分:程序功能基本完整,但沒有完成程序調試,無實驗結果。1分:程序功能不完整,有重大問題,沒有完成程序調試,無實驗結果。0分:沒有參加實驗,也沒有相應代碼。

      大綱撰寫人:張

      巖 大綱審閱人:趙

      越 系部負責人:汪永好

      第四篇:馬克思實踐教學大綱

      《馬克思主義基本原理概論》實踐教學大綱

      實踐課時安排及考核

      注:實踐占總成績30%,實踐過程中的出勤率、參與程度,占實踐的20%。

      附錄1:

      附錄2:相關電影

      空《宇宙與人》;《大國崛起》;《人工智能》;《唐山大在地震》;

      《摩登時代》;《夜店》;《后天》;《2012》;《PARTY》;

      《海上鋼琴師》;《時機器》;《我的錄取通知書》;《華爾街》

      《活著》;《楚門的世界》;《求求你表揚我》;《風聲》;《卡拉是條狗》

      《我是你爸爸》

      附錄3:閱讀書目

      1.《中華的智慧》張岱年主編

      它所講述的不是實務中的聰明機敏,而是哲學的智慧,也就是立身處世、認識宇宙和把握真理的能力。

      2.《三十歲以前的毛澤東》李銳

      此書用許多可靠材料講述毛澤東青年時代的思想歷程,是研究毛澤東的權威著作之一。

      3.《西方的智慧》(英)羅素

      一個大哲學家在他的巨著《西方哲學史》之后為普通讀者寫的哲學史,讀此書得到的不僅有快樂,還有思想的充實、心靈的提升。

      4.《歷史深處的憂慮》林達

      這是作者多部系列著作中的第一部,以東方留學生的眼光看美國,描述自己看到的陽光和陰影,思索背后的根源,使讀者感到親切而絕不浮泛。

      5.《希臘的神話和傳說》(德)斯威布著,楚圖南譯

      要了解歐洲、認識世界,你必須了解希臘神話和傳說。

      6.《中國哲學史新編》,馮友蘭著

      馮友蘭先生作為研究中國哲學史的大家,在其眾多著作之中,這是一部最能代表他的研究成就的新著。

      7.《活著》余華

      人被生活戲弄,這部當代小說寫出了人生和社會的雙重荒謬。

      8.《哈姆雷特》莎士比亞

      沒有讀過莎士比亞,肯定不是一個合格的英國人,也算不得一個比較優(yōu)秀的中國人。

      9.《共產黨宣言》馬克思

      美國中學生的必讀書之一,社會主義中國的大學生難道不應該知道里面到底說了些什么?

      10.《西方哲學史》(多種版本)

      西方哲學流派甚多,理論也比較復雜,讀一本《西方哲學史》后有興趣再去讀原著吧。

      11.《中國科學技術史》李約瑟

      由英國人來寫中國科學技術史,你不想知道他的視角很獨特嗎?

      12.《時間簡史》霍金

      霍金是一個科學史的奇跡,但我覺得他首先是一個生命史的奇跡。

      13.《社會契約論》盧梭

      不讀這本書,不會懂得現代社會是在什么基礎上建構起來的。

      14.《只有一個地球》芭芭拉·沃德、勒內·杜博斯

      只有真正理解“只有一個地球”的道理,人類才有未來。

      第五篇:漢譯英實踐教學大綱

      漢譯英實踐教學大綱

      課程名稱:漢譯英實踐

      課程編碼:12120208

      英文名稱:Translation Practice from Chinese into English

      學時:2周 課程性質:實踐課

      課程類別:必修 適用專業(yè):英語

      學分:2

      一、課程性質與任務

      根據天津科技大學外國語學院英語專業(yè)本科教學計劃,第六學期前兩周組織英語專業(yè)三年級學生進行漢英翻譯實踐,使學生有此機會用以前學過的有關英語的專業(yè)知識對漢譯英的實際工作進行具體操作和實踐。該實踐課的任務是讓學生充分以所學專業(yè)知識武裝自己,全身心投入到實踐工作中去,并在指導教師的幫助和指導下從中找出理論與實際的關系,進一步明確學習目標,理論聯系實際。

      二、課程教學的基本要求

      教師應指導學生在漢英翻譯實踐中,按照學院的相關規(guī)定和要求進行工作,做到:

      1.指導教師要求學生在規(guī)定的時間內在校內完成把大約由1500個漢字組成的篇章翻譯成英文的實踐工作。

      2.指導學生認真完成該項實踐工作,培養(yǎng)學生查閱資料或詞典的能力。

      3.學生要認真參照原文和指導教師批閱的初稿,積極認真地對初稿進行修改,并將最終的定稿連同原文與初稿一起上交。

      三、課程內容及教學要求

      基本實踐內容:

      1.實踐指導教師負責提供字數大約為1500的漢語篇章篇章,題材不限,但形式要求是非對話 類;篇章的來源不限,但必須出自漢語是母語的作者。

      2.學生在規(guī)定時間認真完成翻譯初稿后,要及時上交給指導教師。

      3.指導教師在評閱初稿時,要將翻譯錯誤和不確切的地方用紅筆標注并進行批改,然后將原稿和初稿交回學生,以進行修改并定稿。

      4.學生按照指導教師的批改,結合原稿,進行整理,在規(guī)定的時間和地點按照學院規(guī)定的統(tǒng)一格式要求將最終的定稿進行打印并上交。漢譯英實踐重點:

      1.學生在實踐過程中,要堅持認真的態(tài)度,對指導教師提供的原文進行仔細的閱讀和正確理解,保證翻譯的準確性。

      2.對原文中不理解的內容要積極主動地向指導教師求教,并與之保持聯系并進行溝通。3.要認真閱讀經過指導教師批改的初稿,加以理解,并按照統(tǒng)一格式進行最后修改。4.在定稿的錄入、打印和遞交階段,要嚴格按照學院規(guī)定的相應時間進行,對無故遲交或不交的同學,將按有關規(guī)定處理。

      四、考核方式

      漢譯英實踐課程的考核方式為考查,要求學生做到:

      1.按學院的相關規(guī)定在校內進行實踐工作。

      2.在學校按照學院的要求在規(guī)定時間將初稿上交到指導教師,并在教師批改后到學校安排的機房錄入定稿,最后在學院的安排下統(tǒng)一打印并及時上交。

      3.譯文定稿要按照學院的統(tǒng)一格式打印。

      4.指導教師根據初稿,并結合定稿的修改情況和學生的態(tài)度對學生進行評定,評語用英文寫在初稿的最后一頁,成績標注在定稿封皮的右上方,并按照定稿、原稿和初稿的順序裝訂。

      5.每位參與漢譯英實踐的學生所遞交的譯文將由指導教師按照統(tǒng)一標準進行評閱,并將成績記入檔案。

      制定人:姚國樹 審定: 批準: 2006年 12月

      下載計算機軟件實踐_教學大綱[精選5篇]word格式文檔
      下載計算機軟件實踐_教學大綱[精選5篇].doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內容由互聯網用戶自發(fā)貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發(fā)現有涉嫌版權的內容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

      相關范文推薦

        演播室實踐教學大綱

        “電視演播室實踐”教學大綱 課程類別:專業(yè)課 課程編號: 課程名稱:電視演播室實踐 英文名稱: Studio televsion pruduction and directing 課程簡介: 本課程以簡單的電視演播室......

        計算機軟件買賣合同

        合同編號: 計算機軟件買賣合同甲方(買方): 乙方(賣方):甲乙雙方本著平等互利、協(xié)商一致的原則,簽訂本合同,以資雙方信守執(zhí)行。 乙方在接到甲方硬件環(huán)境具備要求的條件確認通知后,乙......

        計算機軟件管理制度

        計算機軟件管理制度為充分發(fā)揮計算機軟件資源作用,提供優(yōu)質方便服務,規(guī)范管理,特制定此制度。 一、 信息管理人員負責軟件的安裝。二、 信息管理人員應及時下載系統(tǒng)及平臺軟件......

        計算機軟件論文

        中小企業(yè)辦公自動化系統(tǒng)的設計與實現(411|2007-3-19) 摘要: 本文從中小企業(yè)的實際情況出發(fā),在用戶需求分析的基礎上,提出中小企業(yè)辦公自動化系統(tǒng)的基本目標,并闡述系統(tǒng)的結構設計......

        計算機軟件學習心得

        計算機軟件學習心得 九八年的一個意外機會,我放棄了國營工作跟朋友一起創(chuàng)辦的了一家電腦軟件培訓中心。在此期間,我們需要對顧客培訓同時根據市場的需求我們還要學習和掌握新......

        計算機軟件個人簡歷

        計算機軟件個人簡歷模板 發(fā)布時間: 2009-10-10 來源: 作者:[ ]文章摘要: xxx專業(yè)個人簡歷姓名:*** 出生日期: 1984-01-02 目前年薪:XX萬人 民幣性別:男 籍貫:廣州市 聯系電話:15900000......

        實踐教學大綱(金工實習)

        實踐教學大綱 2010-09-16 17:09 機械制造基礎工程訓練(金工實習)教學大綱 1課程簡介 1.1課程編號:11554001 1.2課程名稱:機械制造基礎工程訓練(金工實習) 1.3課程內容:本課程主......

        建筑施工組織設計實踐教學大綱★

        《建筑施工組織設計》實踐教學大綱 建筑施工組織設計實踐課程是該課程教學的一個重要組成部分,使學生能靈活運用流水施工和網絡計劃的基本原理和規(guī)律,對于一般的土建單位工程......