c語言計算器的編寫課程設(shè)計_第1頁
已閱讀1頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  C計算器課程設(shè)計</b></p><p><b>  目 錄</b></p><p>  課程設(shè)計內(nèi)容及要求. . . . . . . . . . . . . . . .5</p><p>  1.1內(nèi)容. . . . . . . . . . . . . . . . . . . . . . .

2、 . . . . . . .5</p><p>  1.2要求. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5</p><p>  系統(tǒng)設(shè)計流程圖. . . . . . . . . . . . . . . . . 6</p><p>  2.1系統(tǒng)流程圖. . . . . . . . . . .

3、 . . . . . . . . . . . . .6</p><p>  2.2主要功能表. . . . . . . . . . . . . . . . . . . . . . . .7</p><p>  系統(tǒng)測試. . . . . . . . . . . . . . . . . . . . . . . .8</p><p>  3.1系統(tǒng)測試. . . . .

4、 . . . . . . . . . . . . . . . . . . . . .8</p><p>  3.2調(diào)試. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9</p><p>  使用. . . . . . . . . . . . . . . . . . . . . . . . . . .11</p>

5、;<p>  4.1運行程序進入計算器界面. . . . . . . . . ...11</p><p>  課程設(shè)計心得. . . . . . . . . . . . . . . . ....12</p><p>  第1章 課程設(shè)計內(nèi)容及要求</p><p><b>  1.1 內(nèi)容</b></p><

6、p>  編寫C語言程序,設(shè)計一個簡單計算器</p><p><b>  1.2 要求</b></p><p>  運用相關(guān)知識,查閱相關(guān)資料,編寫一個簡單的計算器。</p><p>  第2章系統(tǒng)設(shè)計流程圖</p><p><b>  2.1系統(tǒng)流程圖</b></p><

7、;p>  2.1 系統(tǒng)流程圖</p><p><b>  2.2主要功能表</b></p><p>  2.2 主要功能表</p><p><b>  第3章系統(tǒng)測試</b></p><p>  程序的調(diào)試是指對程序的差錯和排錯,為了便于差錯、閱讀,在設(shè)計該程序的過程中我們采用了結(jié)構(gòu)化程

8、序方法編輯,添加了盡可能多的注釋,這就為接下來的調(diào)試過程帶來了很多方便。</p><p>  經(jīng)過仔細(xì)檢查之后進行上機調(diào)試。進行編譯,如果在編譯和連接過程中發(fā)現(xiàn)錯誤,屏幕上顯示了出錯信息,根據(jù)提示找到出錯的位置,加以改正,在進行編譯……如此反復(fù),直到順利通過編譯和連接為止。在本次實習(xí)過程中碰到的編譯、連接的錯誤主要有:缺少變量定義、定義為置不正確、語法錯誤、轉(zhuǎn)義字符漏用、邏輯錯誤等。</p><

9、;p><b>  3.1系統(tǒng)測試</b></p><p><b>  系統(tǒng)測試結(jié)果如下:</b></p><p><b>  3.2調(diào)試</b></p><p>  根據(jù)電腦所給的提示出現(xiàn)語法錯誤,缺少變量的定義大多的語法錯誤在通過書本參考下能夠修改。主要是平時看書不仔細(xì)、不太注意而產(chǎn)生的,如沒

10、有注意具體數(shù)據(jù)使用是有一定的范圍限定;過分重視分號的重要性而在for、if、while語句中畫蛇添足加分號;在使用文件的時候忘記將文件先打開,對打開的方式與使用的情況不太注意而造成不匹配;還有漏掉形參的定義是值不能傳遞等等。這些語法錯誤有信息框的提示一般是能夠排除的。另外還有部分注釋的位置也錯了,最重要的是邏輯上的錯誤,一般電腦不容易發(fā)現(xiàn)。所以更對程序仔細(xì)的檢查。經(jīng)認(rèn)真修改之后重新保存文件。</p><p>&l

11、t;b>  第4章 使用</b></p><p>  4.1運行程序進入計算器界面</p><p><b>  打開軟件</b></p><p><b>  進入界面</b></p><p><b>  運行結(jié)果</b></p><p&g

12、t;  第5章 課程設(shè)計心得</p><p>  用C語言來編程的技巧,以及對C也有了更加深刻的認(rèn)識。</p><p>  我希望在以后的學(xué)習(xí)中能有更多這樣的機會,讓我們能夠進行實踐操作,從而在實際操作中不斷提高我們的綜合能力。</p><p><b>  源代碼:</b></p><p>  #include<s

13、tdio.h></p><p>  #include<math.h></p><p>  #include<malloc.h> </p><p>  double jisuan(char a[])</p><p><b>  {</b></p><p>  

14、int i=1,j,k,m,cnt=0,t1=0,t2=0,t3=0; </p><p>  char nibo[50],zhan2[50]; double x,n,l,z=0,zhan3[50];

15、 </p><p>  typedef struct {</p><p>  double d1;</p><p><b>  int d2;</b></p><p>&l

16、t;b>  }dd;</b></p><p>  typedef struct </p><p><b>  {</b></p><p>  dd data[50];</p><p><b>  int top;</b></p><p><

17、b>  }zhan1;</b></p><p>  zhan1 *shu; shu=(zhan1 *)malloc(sizeof(zhan1));</p><p>  shu->top=0;</p><p>  while(a[

18、i]!='\0') </p><p><b>  {</b></p><p>  if(a[i]>='0'&&a[i]<='9')

19、 {</p><p><b>  z=0;</b></p><p><b>  j=i+1;</b></p><p>  while(a[j]>='0'&&a[j]<='9')

20、 </p><p><b>  {j++;}</b></p><p><b>  j--;</b></p><p>  for(k=i;k<=j;k++)</p><p><b>  {</b></p><

21、p>  z=z*10+a[k]-'0';</p><p><b>  }</b></p><p><b>  j=j+1;</b></p><p><b>  x=z;</b></p><p>  if(a[j]=='.')</p&g

22、t;<p><b>  {</b></p><p><b>  l=1;</b></p><p><b>  i=j+1;</b></p><p><b>  j=i+1;</b></p><p>  while(a[j]>='

23、0'&&a[j]<='9') </p><p><b>  {j++;}</b></p><p><b>  j--;</b></p><p>  for(k=i;k<=j;k++)&l

24、t;/p><p><b>  {</b></p><p>  n=pow(0.1,l);</p><p><b>  l=l+1;</b></p><p>  x=x+n*(a[k]-'0');</p><p><b>  }</b><

25、/p><p><b>  i=j+1;</b></p><p>  } </p><p><b>  else i=j;</b></p><p>  shu->data[++shu->top].d1=x;</p><p>  shu->d

26、ata[shu->top].d2=++cnt;</p><p>  nibo[++t1]='0'+shu->data[shu->top].d2;</p><p>  nibo[t1+1]='\0';</p><p><b>  }</b></p><p>  else i

27、f(a[i]=='(')</p><p><b>  {</b></p><p>  zhan2[++t2]=a[i];</p><p><b>  i++;</b></p><p><b>  }</b></p><p>  else

28、if(a[i]==')')</p><p><b>  {</b></p><p><b>  j=t2;</b></p><p>  while(zhan2[j]!='(')</p><p><b>  {</b></p><

29、;p>  nibo[++t1]=zhan2[j];</p><p>  nibo[t1+1]='\0';</p><p><b>  j--;</b></p><p><b>  }</b></p><p><b>  t2=j-1;</b></p&

30、gt;<p><b>  i++;</b></p><p><b>  }</b></p><p>  else if(a[i]=='+') {</p><p>

31、  while(t2>0&&zhan2[t2]!='(') </p><p><b>  {</b></p><p>  nibo[++t1]=zhan2[t2];

32、 </p><p>  nibo[t1+1]='\0';</p><p><b>  t2--;</b></p><p><b>  }</b></p><p>  zhan2[++t2]=a[i];</p><p><b>  i

33、++;</b></p><p><b>  }</b></p><p>  else if(a[i]=='-') </p><p><b>  {</b></

34、p><p>  if(a[i-1]=='$')</p><p><b>  {</b></p><p><b>  a[0]='0';</b></p><p><b>  i=0;</b></p><p><b> 

35、 }</b></p><p>  else if(a[i-1]=='(')</p><p><b>  {</b></p><p>  a[i-1]='0';</p><p>  a[i-2]='(';</p><p><b>

36、  i=i-2;</b></p><p><b>  t2--;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  

37、while(t2>0&&zhan2[t2]!='(') {</p><p>  nibo[++t1]=zhan2[t2];</p><p>  nibo[t1+1]='\0';</p><p><b>  t2--;</b>&

38、lt;/p><p><b>  }</b></p><p>  zhan2[++t2]=a[i];</p><p><b>  i++;</b></p><p><b>  }</b></p><p><b>  }</b></p

39、><p>  else if(a[i]=='*'||a[i]=='/') {</p><p>  while(zhan2[t2]=='*'||zhan2[t2]=='/'||zhan2[t2]=='^'||zhan2[t2]=='#

40、9;) {</p><p>  nibo[++t1]=zhan2[t2];</p><p>  nibo[t1+1]='\0';</p><p><b>  t2--;</b></p><p><b>  }</b></p><p>  zha

41、n2[++t2]=a[i];</p><p><b>  i++;</b></p><p><b>  }</b></p><p>  else if(a[i]=='^'||a[i]=='#') {</p><p>  whil

42、e(zhan2[t2]=='^'||zhan2[t2]=='#') </p><p><b>  {</b></p><p>  nibo[++t1]=zhan2[t2];</p><p>  nibo[t1+1]='\0';</p><p>&l

43、t;b>  t2--;</b></p><p><b>  }</b></p><p>  zhan2[++t2]=a[i];</p><p><b>  i++;</b></p><p><b>  }</b></p><p><

44、;b>  }</b></p><p>  while(t2>0)</p><p><b>  {</b></p><p>  nibo[++t1]=zhan2[t2]; nibo[t1+1]='\0';

45、 t2--;</p><p><b>  }</b></p><p><b>  j=1;t3=0;</b></p><p>  while(j<=t1)</p><p><b>  {</b></p><p

46、>  if(nibo[j]>='0'&&nibo[j]!='^'&&nibo[j]!='#')</p><p><b>  {</b></p><p>  for(i=1;i<=shu->top;i++)</p><p><b> 

47、 {</b></p><p>  if((int)(nibo[j]-'0')==shu->data[i].d2)</p><p><b>  {</b></p><p><b>  m=i;</b></p><p><b>  break;</b&g

48、t;</p><p><b>  }</b></p><p><b>  }</b></p><p>  zhan3[++t3]=shu->data[m].d1;</p><p><b>  }</b></p><p>  else if(nibo

49、[j]=='+') {</p><p>  zhan3[t3-1]=zhan3[t3-1]+zhan3[t3];</p><p><b>  t3--;</b></p><p><b>  }</b>&

50、lt;/p><p>  else if(nibo[j]=='-') {</p><p>  zhan3[t3-1]=zhan3[t3-1]-zhan3[t3];</p><p><b>  t3--;</b></p&

51、gt;<p><b>  }</b></p><p>  else if(nibo[j]=='*') </p><p><b>  {</b></p><p>  zhan3[t3-1]=zhan3

52、[t3-1]*zhan3[t3];</p><p><b>  t3--;</b></p><p><b>  }</b></p><p>  else if(nibo[j]=='/') </p>

53、<p><b>  {</b></p><p>  zhan3[t3-1]=zhan3[t3-1]/zhan3[t3];</p><p><b>  t3--;</b></p><p><b>  }</b></p><p>  else if(nibo[j]==

54、'^') </p><p><b>  {</b></p><p>  zhan3[t3-1]=pow(zhan3[t3-1],zhan3[t3]);</p><p><b>  t3--;</b></p>

55、<p><b>  }</b></p><p>  else if(nibo[j]=='#') </p><p><b>  {</b></p><p>  zhan3[t3]=sqrt(

56、zhan3[t3]);</p><p><b>  }</b></p><p><b>  j++;</b></p><p><b>  }</b></p><p>  return zhan3[t3];

57、 </p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p><b>  for(;;)</b></p><p><b&

58、gt;  {</b></p><p>  char x,a[50];</p><p>  double jieguo;</p><p><b>  int i=0;</b></p><p><b>  a[0]='$';</b></p><p> 

59、 printf("功能:實現(xiàn)+,-,*,\,^(乘方),#(開方),(,),(負(fù)數(shù)),小數(shù),混合運算\n"); printf("請輸入表達(dá)式\n\n");</p><p>  scanf("%c",&x);</p><p>  if(x=='q

60、') break;</p><p>  while(x!='\n') </p><p><b>  {</b></p><p><b>  a[++i]=x;</b></p>

61、<p>  scanf("%c",&x);</p><p><b>  }</b></p><p>  a[i+1]='\0';</p><p>  jieguo=jisuan(a);</p><p>  printf("\n");</p

溫馨提示

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

評論

0/150

提交評論