2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩16頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  課程設(shè)計(jì)(論文)任務(wù)書</p><p><b>  摘 要</b></p><p>  課程設(shè)計(jì)語(yǔ)言類課程的指導(dǎo)思想:使學(xué)生通過學(xué)習(xí)高級(jí)編程語(yǔ)言的知識(shí)、編程技術(shù)和基本算法,掌握課程設(shè)計(jì)的思想和方法,具備利用計(jì)算機(jī)求解實(shí)際問題的能力,能靈活運(yùn)用高級(jí)語(yǔ)言進(jìn)行程序設(shè)計(jì)。</p><p>  現(xiàn)時(shí)學(xué)習(xí)生活中,常會(huì)遇到一些數(shù)目較大

2、數(shù)據(jù)繁雜的數(shù)值運(yùn)算,徒手運(yùn)算起來很困難,這時(shí)候我們就必須用到計(jì)算器。本程序的編寫基礎(chǔ)是VC2010,本程序?qū)崿F(xiàn)了加、減、乘、除、求冪、求Sin,求Cos,求Log10,求階乘,</p><p>  這款簡(jiǎn)單的計(jì)算器最獨(dú)特的地方在于充分運(yùn)用棧,儲(chǔ)存分配及switch的相關(guān)知識(shí).例如構(gòu)造棧,棧的指針,棧空間存儲(chǔ)分配,插入棧元素,壓棧,出棧.同時(shí)穿插用typedef命名已有結(jié)構(gòu)體,參量傳遞,邏輯判斷等重要知識(shí).并且,該

3、程序也運(yùn)用選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu),函數(shù)的嵌套結(jié)構(gòu)一系列基礎(chǔ)知識(shí),涉及if else語(yǔ)句,break語(yǔ)句,字符常量和多種運(yùn)算符的規(guī)范使用.總體來說,該程序較好的呈現(xiàn)了</p><p>  關(guān)鍵字:C語(yǔ)言程序設(shè)計(jì) 基本算法 高級(jí)編程語(yǔ)言 思想和方法 計(jì)算器</p><p><b>  VC2010 </b></p><p><b>  目錄

4、</b></p><p>  第1章選題的意義………………………………………………………………4</p><p>  1.1選題……………………………………………………………………4</p><p>  第2章系統(tǒng)功能需求分析………………………………………………………5</p><p>  2.1系統(tǒng)的基本要求…………………………

5、……………………………5</p><p>  2.2數(shù)據(jù)結(jié)構(gòu)和用法………………………………………………………5</p><p>  第3章系統(tǒng)設(shè)計(jì)…………………………………………………………………6</p><p>  第4章系統(tǒng)實(shí)現(xiàn)…………………………………………………………………7</p><p>  第5章總結(jié)…………………………………

6、………………………………………8 </p><p>  第6章主要的參考文獻(xiàn)………………………………………………………….17</p><p><b>  第1章選題的意義</b></p><p><b>  1.選題</b></p><p>  我選的題目是:簡(jiǎn)單計(jì)算器的設(shè)計(jì)</p>

7、<p>  我選這道題的原因如下:</p><p>  計(jì)算器對(duì)我們每一的學(xué)生都很熟悉,從初中到高中再到大學(xué)。但是我們只知道按下幾個(gè)按鈕計(jì)算器便會(huì)顯示出結(jié)果,很少有學(xué)生分析過計(jì)算器究竟是如何運(yùn)行的。C語(yǔ)言課程設(shè)計(jì)便是一個(gè)很好的機(jī)會(huì),讓我實(shí)踐計(jì)算器的運(yùn)行代碼.</p><p>  運(yùn)用的數(shù)據(jù)結(jié)構(gòu)和知識(shí)點(diǎn)</p><p>  VC2010繪圖知識(shí)數(shù)學(xué)函數(shù)選

8、擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)數(shù)組指針順序結(jié)構(gòu)</p><p>  時(shí)間安排:第一周查閱資料</p><p>  第二周第一、二天程序設(shè)計(jì);第三、四天程序調(diào)試與測(cè)試;第五天答辯</p><p>  第2章系統(tǒng)功能需求分析</p><p>  2.1系統(tǒng)的基本要求</p><p>  1. 算術(shù)運(yùn)算功能。能夠?qū)崿F(xiàn)+、-、*、/、mod、

9、int運(yùn)算。</p><p>  2. 函數(shù)運(yùn)算功能。能夠?qū)崿F(xiàn)ln、sin、x^y、log、cos、x^3、n!、tan、x^2、1/x等運(yùn)算。</p><p>  3.通過鍵盤控制字符和數(shù)字的輸入。</p><p>  2.2數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)及用法說明</p><p>  此程序調(diào)用的函數(shù)主要有<math.h> /*數(shù)學(xué)函數(shù)的定

10、義*/<conio.h> /*屏幕操作函數(shù)*/<stdio.h> /*I/O函數(shù)*/<stdlib.h> /*庫(kù)函數(shù)*/<stdarg.h> /*變量長(zhǎng)度參數(shù)表*/<graphics.h> /*圖形函數(shù)*/<string.h> /*字符串函數(shù)*/<ctype.h> /*字符操作函數(shù)*/?;臼褂?用→←↑↓控制鼠標(biāo)圖形移動(dòng),當(dāng)移動(dòng)到相應(yīng)得按

11、鈕時(shí)按回車鍵輸入當(dāng)前數(shù)字或執(zhí)行對(duì)應(yīng)的函數(shù)。</p><p>  加法:輸入一個(gè)被加數(shù)數(shù),按“+”,輸入被加數(shù),按“=”,輸出結(jié)果。</p><p>  減法:輸入被減數(shù)數(shù),按“-”,輸入減數(shù),按“=”,輸出結(jié)果。</p><p>  乘法: 輸入一個(gè)數(shù),按“*”,輸入另個(gè)數(shù),按“=”,輸出結(jié)果。</p><p>  除法: 輸入一個(gè)被除數(shù),按

12、“+”,輸入另個(gè)除數(shù),按“=”,輸出結(jié)果。</p><p>  求x的y次方: 輸入數(shù)x,按“^”,輸入數(shù)y,按“=”,輸出結(jié)果。</p><p>  求余:輸入一個(gè)數(shù),按“mod”,按“=”,輸出結(jié)果。</p><p>  取整:輸入一個(gè)數(shù),按“int”,按“=”,輸出結(jié)果。</p><p>  余弦:輸入一個(gè)數(shù),按“cos”,按“=”,輸

13、出結(jié)果。</p><p>  正弦:輸入一個(gè)數(shù),按“sin”,按“=”,輸出結(jié)果。</p><p>  正切:輸入一個(gè)數(shù),按“tan”,按“=”,輸出結(jié)果。</p><p>  階乘:輸入一個(gè)數(shù),按“n!”,按“=”,輸出結(jié)果。</p><p>  倒數(shù):輸入一個(gè)數(shù),按“1/x”,按“=”,輸出結(jié)果</p><p> 

14、 十進(jìn)制轉(zhuǎn)二進(jìn)制:輸入一個(gè)十進(jìn)制數(shù),按“10->2”,輸出二進(jìn)制結(jié)果。</p><p>  十進(jìn)制轉(zhuǎn)八進(jìn)制:輸入一個(gè)十進(jìn)制數(shù),按“10->8”,輸出八進(jìn)制結(jié)果。</p><p>  八進(jìn)制轉(zhuǎn)十進(jìn)制:輸入一個(gè)八進(jìn)制數(shù),按“10->8”,輸出十進(jìn)制結(jié)果。</p><p><b>  第3章系統(tǒng)設(shè)計(jì)</b></p>&

15、lt;p><b>  流程圖</b></p><p><b>  第四章系統(tǒng)實(shí)現(xiàn)</b></p><p>  本系統(tǒng)采用 C語(yǔ)言開發(fā),生成可執(zhí)行文件在任何系統(tǒng)下都可以執(zhí)行,具有很好的數(shù)據(jù)處理能力和穩(wěn)定性。并且使用VC2010在原有基礎(chǔ)上實(shí)現(xiàn)了多漢字的支持,方便了我們的使用。生成的程序可移植性強(qiáng)、兼容性好。這個(gè)系統(tǒng)是基于軟件發(fā)展的生命周期來研

16、制的,它可以直接輸入數(shù)學(xué)表達(dá)式,不需要任何轉(zhuǎn)換,就可以直接輸出數(shù)學(xué)四則運(yùn)算的結(jié)果。</p><p>  本程序通過調(diào)用int specialkey(void) 和#include <conio.h> 來實(shí)現(xiàn)對(duì)屏幕的操作,通過調(diào)用int arrow()函數(shù),int specialkey(void) 和#include <conio.h>來實(shí)現(xiàn)對(duì)光標(biāo)的操作。計(jì)算器圖形采用VC2010繪圖程序

17、制作。</p><p>  計(jì)算器數(shù)據(jù)運(yùn)行的實(shí)現(xiàn):第5章總結(jié)</p><p>  測(cè)試階段中我發(fā)現(xiàn)了幾處錯(cuò)誤導(dǎo)致程序不能編譯,去圖書館查找相關(guān)的資料, 又同學(xué)一起討論。通過耐心的分析源代碼終于編好了一個(gè)完整無(wú)誤的程序。在這次的c語(yǔ)言程序設(shè)計(jì)實(shí)習(xí)中遇到了現(xiàn)實(shí)編程中必然見到的問題通過這些問題的解決積累了編程的實(shí)踐經(jīng)驗(yàn)。</p><p>  善于總結(jié),是學(xué)習(xí)能力的一種體現(xiàn)

18、,每次完成一個(gè)編程任務(wù),完成一段代碼,都應(yīng)當(dāng)有目的的跟蹤該程序的應(yīng)用狀況,隨時(shí)總結(jié),找到自己的不足,這樣所編寫的程序才能逐步提高.課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn),提出,分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對(duì)學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過程.</p><p>  通過此次課程設(shè)計(jì)不僅鞏固了以前所學(xué)過的知識(shí),而且學(xué)到了很多在書本上所沒有學(xué)到過的知識(shí)。使我們懂得了理論與實(shí)際相結(jié)合是很重要的,只有

19、理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相我們把前面所學(xué)過的知識(shí)又重新溫故了一遍。</p><p>  通過這次課程設(shè)計(jì),我增強(qiáng)了觀察、分析和解決問題的實(shí)際工作能力.找出學(xué)習(xí)中存在的不足,以便為完善學(xué)習(xí)計(jì)劃,改變學(xué)習(xí)內(nèi)容與方法提供實(shí)踐依據(jù)。而這種實(shí)際能力的培養(yǎng)單靠課堂教學(xué)是遠(yuǎn)遠(yuǎn)不夠的,必須從課堂走向?qū)嵺`。</p><p><b>  附程序源代碼:</b>&l

20、t;/p><p>  typedef char SElemType;</p><p>  #include "string.h"</p><p>  #include "stdio.h"</p><p>  #include "stdlib.h"</p><p>

21、  #include "math.h"</p><p>  #include "process.h"</p><p>  #define TURE 1</p><p>  #define FALSE 0</p><p>  #define OK 1</p><p>  #defi

22、ne ERROR 0</p><p>  #define OVERFLOW -2</p><p>  #define STACK_INIT_SIZE 10 </p><p>  #define STACK_INCREMENT 2 typedefstructSqStack</p><p><b>  {</b></p

23、><p>  double *base; double *top; intstacksize;</p><p><b>  }SqStack;</b></p><p>  voidInitStack(SqStack&S)</p><p>  { if(!(S.base=(double *)malloc(S

24、TACK_INIT_SIZE*sizeof(double))))</p><p>  exit(OVERFLOW); </p><p>  S.top=S.base;</p><p>  S.stacksize=STACK_INIT_SIZE;</p><p><b>  }</b></p><p&g

25、t;  doubleClearStack(SqStack&S)</p><p>  { S.top=S.base;</p><p>  return OK;</p><p><b>  }</b></p><p>  doubleGetTop(SqStackS,double&e)</p>&

26、lt;p>  { if(S.top>S.base)</p><p>  { e=*(S.top-1);</p><p>  return OK;</p><p><b>  }</b></p><p><b>  else</b></p><p>  r

27、eturn ERROR;</p><p><b>  }</b></p><p>  void Push(SqStack&S,double e)</p><p>  { if(S.top-S.base>=S.stacksize) {</p><p>  S.base=(double *)re

28、alloc(S.base,(S.stacksize+STACK_INCREMENT)*sizeof(double));</p><p>  if(!S.base)</p><p>  exit(OVERFLOW); S.top=S.base+S.stacksize;</p><p>  S.stacksize+=STACK_INCREMENT;</p>

29、<p><b>  }</b></p><p>  *(S.top)++=e;</p><p><b>  }</b></p><p>  double Pop(SqStack&S,double&e)</p><p>  { if(S.top==S.base)</p

30、><p>  return ERROR;</p><p>  e=*--S.top;</p><p>  return OK;</p><p><b>  }</b></p><p>  SElemTypePrecede(SElemType t1,SElemType t2)</p>&l

31、t;p><b>  { char f;</b></p><p>  switch(t2)</p><p><b>  {</b></p><p><b>  case '+':</b></p><p>  case '-':if(t1==&

32、#39;('||t1=='=')</p><p>  f='<'; // t1<t2</p><p><b>  else</b></p><p>  f='>'; // t1>t2</p><p><b>  break;<

33、/b></p><p><b>  case '*':</b></p><p>  case '/':if(t1=='*'||t1=='/'||t1==')'||t1=='s'||t1=='l'||t1=='g'||t1=='c

34、')</p><p>  f='>'; // t1>t2</p><p><b>  else</b></p><p>  f='<'; // t1<t2</p><p><b>  break;</b></p><

35、p>  case '(':if(t1==')')</p><p><b>  {</b></p><p>  printf("Error!\n");</p><p>  exit(ERROR);</p><p><b>  }</b><

36、/p><p><b>  else</b></p><p>  f='<'; // t1<t2</p><p><b>  break;</b></p><p>  case ')':switch(t1)</p><p><b&g

37、t;  {</b></p><p>  case'(':f='='; // t1=t2</p><p><b>  break;</b></p><p>  case'=':printf("Error!!\n");</p><p>  exi

38、t(ERROR);</p><p>  default :f='>'; // t1>t2</p><p><b>  }</b></p><p><b>  break;</b></p><p>  case'=':switch(t1)</p>

39、<p><b>  {</b></p><p>  case'=' :f='='; // t1=t2</p><p><b>  break;</b></p><p>  case'(' :printf("Error!!!\n");</

40、p><p>  exit(ERROR);</p><p>  default :f='>';</p><p><b>  }</b></p><p>  break;// t1>t2</p><p>  case'^':if(t1=='('|

41、|t1=='^'||t1=='=')</p><p><b>  f='<';</b></p><p><b>  else</b></p><p><b>  f='>';</b></p><p>&

42、lt;b>  break;</b></p><p><b>  case's':</b></p><p><b>  case'c':</b></p><p><b>  case'g':</b></p><p>

43、;  case'l':switch(t1)</p><p><b>  {</b></p><p><b>  case')':</b></p><p><b>  case'l':</b></p><p><b>  

44、case'g':</b></p><p><b>  case'c':</b></p><p>  case's':printf("Error!");exit(ERROR);</p><p><b>  case'(':</b>

45、</p><p><b>  case'=':</b></p><p><b>  case'+':</b></p><p><b>  case'-':</b></p><p><b>  case'*'

46、;:</b></p><p><b>  case'/':</b></p><p>  case'^':f='<';break;</p><p><b>  }</b></p><p><b>  break;</b&

47、gt;</p><p><b>  }</b></p><p><b>  return f;</b></p><p><b>  }</b></p><p>  double Operate1(double a,SElemTypetheta,double b)</p&g

48、t;<p>  {double c;</p><p>  switch(theta)</p><p><b>  {</b></p><p>  case'+':c=a+b;break;</p><p>  case'-':c=a-b;break;</p>&l

49、t;p>  case'*':c=a*b;break;</p><p>  case'/':c=a/b;break;</p><p>  case'^':c=pow(a,b);break;</p><p><b>  }</b></p><p><b>  r

50、eturn c;</b></p><p><b>  }</b></p><p>  double Operate2(SElemTypetheta,double a)</p><p>  {double c;</p><p>  switch(theta)</p><p><b&

51、gt;  {</b></p><p>  case's':c=sin(a);break;</p><p>  case'c':c=cos(a);break;</p><p>  case'l':c=log(a);break;</p><p>  case'g':c=l

52、og10(a);break;</p><p><b>  }</b></p><p><b>  return c;</b></p><p><b>  }</b></p><p>  double In(SElemType c)</p><p>  {

53、 switch(c)</p><p><b>  {</b></p><p><b>  case'+':</b></p><p><b>  case'-':</b></p><p><b>  case'*':<

54、;/b></p><p><b>  case'/':</b></p><p><b>  case'(':</b></p><p><b>  case')':</b></p><p><b>  case

55、9;=':</b></p><p><b>  case'^':</b></p><p><b>  case's':</b></p><p><b>  case'l':</b></p><p><b&

56、gt;  case'g':</b></p><p>  case'c':return 1;</p><p>  default:return 0;</p><p><b>  }</b></p><p><b>  }</b></p><

57、;p>  int _tmain(intargc, _TCHAR* argv[])</p><p><b>  {</b></p><p>  printf("\nwedefined:s()=sin(),c()=cos(),l()=ln(),g()=lg()\n");</p><p>  SqStack OPTR,OPN

58、D;</p><p><b>  int e;</b></p><p>  doublea,b,x,theta;</p><p>  double d,f;</p><p><b>  char c;</b></p><p>  char z[60];</p>

59、<p><b>  int i;</b></p><p>  InitStack(OPTR);</p><p>  InitStack(OPND);</p><p><b>  do</b></p><p><b>  {</b></p><p&g

60、t;  Push(OPTR,'=');</p><p>  printf("Please Enter:\n");</p><p>  c=getchar();</p><p>  GetTop(OPTR,theta);</p><p>  while(c!='='||theta!='

61、=')</p><p>  {if(In(c))</p><p><b>  {</b></p><p>  switch(Precede(theta,c))</p><p><b>  {</b></p><p>  case '<': Pus

62、h(OPTR,c);</p><p>  c=getchar();</p><p>  GetTop(OPTR,theta);</p><p><b>  break;</b></p><p>  case '=':Pop(OPTR,theta);</p><p>  GetTop

63、(OPTR,theta);</p><p>  if(theta=='s'||theta=='l'||theta=='c'||theta=='g'){Pop(OPND,f);</p><p>  Pop(OPTR,theta);</p><p>  Push(OPND,Operate2(theta,f)

64、);</p><p>  GetTop(OPTR,theta);</p><p>  c=getchar();</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  else</b><

65、/p><p><b>  {</b></p><p>  c=getchar();</p><p><b>  break;</b></p><p><b>  }</b></p><p>  cas'>':if(theta=='

66、;+'||theta=='-'||theta=='*'||theta=='/'||theta=='^')</p><p>  {Pop(OPTR,theta);</p><p>  Pop(OPND,b);</p><p>  Pop(OPND,a);</p><p> 

67、 f=Operate1(a,theta,b);</p><p>  Push(OPND,f);</p><p>  GetTop(OPTR,theta);</p><p><b>  break;</b></p><p><b>  }</b></p><p>  else

68、break;</p><p><b>  }</b></p><p><b>  }</b></p><p>  else if(c>='0'&&c<='9'||c=='.')</p><p><b>  {<

69、;/b></p><p><b>  i=0;</b></p><p><b>  do</b></p><p><b>  {</b></p><p>  z[i]=c;i++;</p><p>  c=getchar();</p>

70、<p><b>  }</b></p><p>  while((c<='9'&&c>='0')||c=='.');</p><p><b>  z[i]=0;</b></p><p>  d=atof(z);</p>&

71、lt;p>  Push(OPND,d);</p><p><b>  }</b></p><p>  else {</p><p>  printf("error\n");</p><p>  exit(ERROR);</p><p><b>

72、;  }</b></p><p><b>  }</b></p><p>  GetTop(OPND,x);</p><p>  printf("%f",x);</p><p>  ClearStack(OPTR);</p><p>  ClearStack(OPN

73、D);</p><p>  printf("\nWant to use it again?Yes:1,No:0");</p><p>  scanf("%d",&e);</p><p>  x=getchar();</p><p><b>  }</b></p>

74、<p>  while(e);printf("\nThanks for using the calulating device!!!");</p><p>  printf("\npress any key to continue...");</p><p>  x=getchar();</p><p>  x=

75、getchar();</p><p><b>  }</b></p><p><b>  主要參考文獻(xiàn):</b></p><p>  《C語(yǔ)言繪圖與計(jì)算機(jī)仿真技術(shù)》王強(qiáng)如北京航空航天大學(xué)</p><p>  [1]科欽.C語(yǔ)言程序設(shè)計(jì).北京:電子工業(yè)出版社,1987:56-58 </p>

76、<p>  [2]徐君毅.C語(yǔ)言程序設(shè)計(jì)基礎(chǔ).上海:復(fù)旦大學(xué)出版社,1992:87-98</p><p>  [3]李成付.C語(yǔ)言程序設(shè)計(jì)基礎(chǔ).北京:科學(xué)出版社,1992:42-67</p><p>  [4]郝玉潔.C語(yǔ)言程序設(shè)計(jì).北京:機(jī)械工業(yè)出版社,2000:63-88</p><p>  [5]錢啟平.C語(yǔ)言程序設(shè)計(jì)基礎(chǔ).北京:中國(guó)鐵道出版社,

77、2000:91-99</p><p>  [6]李大友.C語(yǔ)言程序設(shè)計(jì)基礎(chǔ).北京:清華大學(xué)出版社,1999:58-98</p><p>  [7]黃迪明.C語(yǔ)言程序設(shè)計(jì).北京:電子科技大學(xué)出版社,1998:78-98</p><p>  [8]姜仲秋.C語(yǔ)言程序設(shè)計(jì)基礎(chǔ).南京:南京大學(xué)出版社,1998:16-100</p><p>  [9]

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論