c語言課程設(shè)計設(shè)計報告_第1頁
c語言課程設(shè)計設(shè)計報告_第2頁
c語言課程設(shè)計設(shè)計報告_第3頁
c語言課程設(shè)計設(shè)計報告_第4頁
c語言課程設(shè)計設(shè)計報告_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、C語言課程設(shè)計報告 姓名: 學(xué)號: 年 月目錄: 程序功能簡介 題目分析 函數(shù)的調(diào)用關(guān)系圖及主要算法 源程序及注釋 測試流程 心得感想程序一:簡單數(shù)學(xué)問題一、程序功能簡介: 實現(xiàn)多個簡單數(shù)學(xué)問題的求解。二、題目分析 完成與菜單項對應(yīng)的功能設(shè)計1、 void FindNum( ); /*用窮舉法找到被咬掉的數(shù)字*/2、 void FindRoot( ); /*求解方程ax2+bx+c=0的根*/3、void Detective( ); /*根據(jù)線索用窮舉法找出牌照號碼*/4、void Monkey( ); /*根據(jù)天數(shù)循環(huán)求出第一天所摘桃子數(shù)*/5、void Diamond( ); /*調(diào)用函數(shù)

2、Print_Diamond( )輸出line行的鉆石圖案*/6、void Calculator( ); /*實現(xiàn)兩個整數(shù)簡單的加減乘除四則運(yùn)算*/三、函數(shù)的調(diào)用關(guān)系圖:menumenu_selectFindNumFindRootDetectiveMonkeyDiamondCalculatorPrint_Diamond四、源程序及注釋:#include<stdio.h>#include<stdlib.h>#include<ctype.h>#include<math.h>int menu_select();void main() /*主函數(shù)*/ fo

3、r(;) switch(menu_select() case 1: FindNum(); system("pause"); break; case 2: FindRoot(); system("pause"); break; case 3: Detective(); system("pause"); break; case 4: Monkey(); system("pause"); break; case 5: Diamond(); system("pause"); break; case 6:

4、 Calculator(); system("pause"); break; case 0: printf("Goodbye!n"); system("pause"); exit(0); int menu_select() /*主函數(shù)菜單*/ char c; do system("cls"); printf("1.FindNumn"); printf("2.FindRootn"); printf("3.Detectiven"); printf("

5、4.Monkeyn"); printf("5.Diamondn"); printf("6.Calculatorn"); printf("0.Goodbye!n"); c=getchar(); while(c<'0'|c>'6'); return(c-'0');FindNum() /*找數(shù)字*/ int i; for(i=1;i<=9;i+) /*窮舉*/ if(30+i)*6237=(10*i+3)*3564) printf("%dn",i

6、);FindRoot() /*找方程的根*/ float a10,b10,c10,disc,x1,x2,real,image; /*定義abc三個數(shù)組存放方程的系數(shù)*/ int i,k,j; for(i=0;i<10;i+) /*循環(huán)輸入方程的三個系數(shù)*/ printf("please input three real numbers:n"); scanf("%f%f%f",&ai,&bi,&ci); printf("press '1' to continuenpress '2' t

7、o calculaten"); scanf("%d",&k); if (k=2) break; /*判斷是否繼續(xù)輸入*/ for(j=0;j<=i;j+) printf("The equation %d",j+1); if (fabs(aj)<=1e-7) /*a=0的情況*/ printf(" is not quadratic, solution is %.2fn",-cj/bj); else disc=bj*bj-4*aj*cj; if (fabs(disc)<=1e-7) /*有兩個相等的實根

8、的情況*/ printf(" is not quadratic,solution is: %.2fn",-bj/(2*aj); else if (disc>1e-7) /*有兩個不等實根的情況*/ x1=(-bj+sqrt(disc)/(2*aj); x2=(-bj-sqrt(disc)/(2*aj); printf(" has distinct real roots: %.2f and %.2fn",x1,x2); else /*有兩個虛根的情況*/ real=-bj/(2*aj); image=sqrt(-disc)/(2*aj); print

9、f(" has complex roots:n"); printf("%.2f+%.2f in",real,image); printf("%.2f-%.2f in",real,image); Detective() /*找牌照*/ int i,a,b,c,d;long m; for(i=32;i<=99;i+) /*窮舉找出后四位號碼*/ m=i*i; a=m%10; b=m/10%10; c=m/100%10; d=m/1000; if(a=b&&c=d) break; printf("%ldn&q

10、uot;,m+310000);Monkey() /*猴子吃桃問題*/ int n,i; long x; scanf("%d",&n); x=1; for(i=n-1;i>=1;i-) x=(x+1)*2; printf("%ldn",x);void print_diamond(int line) int i,j,k,m,n,p,q,a,b; for(i=1;i<=(49-line)/2;i+) /*輸出(49-line)/2行的空格*/ printf("n"); for(j=1;j<=(line+1)/2;j

11、+) for(m=1;m<=(80-line)/2;m+) /*先輸出(80-line)/2個空格*/ printf(" "); for(a=1;a<=(line-(2*j-1)/2;a+) /*行數(shù)j從1到中間一行輸出(line-(2*j-1)/2個空格*/ printf(" "); for(n=1;n<=2*j-1;n+) /*中間行及上面每行輸出2*j-1個"*"*/ printf("*"); printf("n"); for(k=1;k<=(line-1)/2;k

12、+) /*同理輸出中間行下面的鉆石圖案*/ for(p=1;p<=(80-line)/2;p+) printf(" "); for(b=1;b<=k;b+) printf(" "); for(q=1;q<=line-2*k;q+) printf("*"); printf("n"); Diamond() /*鉆石*/ int line; scanf("%d",&line); print_diamond(line); /*調(diào)用print_diamond輸出鉆石圖案*/Cal

13、culator() /*簡單計算器*/ int a4,b4,c4,i,j,k; /*定義ab兩個數(shù)組存放數(shù)*/ char ch4; /*定義c存放運(yùn)算符*/ FILE *fp1,*fp2; fp1=fopen("expres.txt","r"); /*打開expres文件*/ if(fp1=NULL)/*判斷打開成功*/ printf("Can not open n"); exit(1); for(i=0;i<=3;i+) fscanf(fp1,"%d%c%d",&ai,&chi,&b

14、i);/*循環(huán)讀入四道題*/ for(j=0;j<=3;j+) switch(chj)/*判斷運(yùn)算符*/ case '+':cj=aj+bj; break; case '-':cj=aj-bj; break; case '*':cj=aj*bj; break; case '/':cj=aj/bj; break; fp2=fopen("result.txt","w");/*打開文件result*/ if(fp2=NULL)/*判斷打開文件是否成功*/ printf("Can n

15、ot open n"); exit(2); for(k=0;k<=3;k+)/*循環(huán)向文件中輸入結(jié)果*/ fprintf(fp2,"%d%c%d=%dn",ak,chk,bk,ck); printf("succeed!n");五、測試流程:運(yùn)行程序屏幕顯示:1.FindNum 2.FindRoot 3.Detective 4.Monkey 5.Dismond 6.Calculator 0.Goodbye!輸入:1回車顯示:9 Press any key to continue 按任意鍵返回菜單輸入:2回車顯示:please input t

16、hree real number:輸入:0回車 1回車 2回車顯示:press 1 to continue press2 to calculate輸入:1回車顯示:please input three real number:(按照以上方法再輸入三組數(shù)據(jù):1,2,1;1,3,2;1,0,4后選擇2,回車)顯示:The equation 1 is not quadratic, solution is -2.00 The equation 2 is not quadratic, solution is -1.00 The equation 3 has distinct real roots: -1

17、.00and-2.00 The eauation 4 has complex roots: -0.00+2.00 i -0.00-2.00 i Press and key to continue 按任意鍵返回菜單輸入:3 回車顯示:317744 Press and key to continue 按任意鍵返回菜單輸入:4 回車 10 回車顯示:1534 Press and key to continue 按任意鍵返回菜單輸入:5 回車 5 回車輸出: * * * * * Press and key to continue 按任意鍵返回菜單輸入:6 回車顯示:succeed! Press and

18、 key to continue 按任意鍵返回菜單輸入:0 回車顯示:Goodbye! Press and key to continue 按任意鍵結(jié)束程序程序二:學(xué)生成績簡單管理一、 程序功能簡介: 用結(jié)構(gòu)體數(shù)組結(jié)構(gòu)實現(xiàn)簡單的學(xué)生管理成績管理功能,要求具有數(shù)據(jù)輸入、數(shù)據(jù)輸出、數(shù)組排序、元素插入、元素刪除、查詢等功能。二、 題目分析完成與菜單項對應(yīng)的功能設(shè)計1、int Input(struct student stu,int n); /*從鍵盤輸入若干條紀(jì)錄,依次存放到結(jié)構(gòu)體數(shù)組stud中,n為數(shù)組原有紀(jì)錄數(shù),程序運(yùn)行初始紀(jì)錄數(shù)為0,函數(shù)返回紀(jì)錄數(shù).*/2、Display(struct stu

19、dent stu,int n); /*顯示所有記錄,每10個暫停一下,n為數(shù)組元素個數(shù)*/3、Sort_by_Name(struct student stu,int n); /*按姓名作升序排序,要求用選擇排序法*/4、 int Insert_a_record(struct student stu,int n); /*輸入待插入的姓名和成績,按姓名作有序插入,輸出插入成功信息,返回紀(jì)錄個數(shù)*/5、int Delete_a_record(struct student stu,int n); /*輸入待刪除的姓名,經(jīng)確認(rèn)后刪除該姓名的紀(jì)錄,輸出刪除成功與否的信息.返回數(shù)組中的紀(jì)錄數(shù)*/6、 int

20、 Query_a_recored(struct student stu,int n);/*輸入待查找的姓名,查找該姓名的紀(jì)錄,輸出查找成功與否的信息和該學(xué)生的信息*/7、int Addfrom Text(struct student stud,int n); /*從文件添加一批紀(jì)錄到數(shù)組中 ,返回添加紀(jì)錄后的新的紀(jì)錄數(shù)*/8、Write to Text(struct student stu,int n); /*將數(shù)組中的紀(jì)錄全部寫入文件records.txt*/三、函數(shù)調(diào)用關(guān)系圖:mainmenu_selectInputDisplaySort_by_NameInsert_a_recordDel

21、ete_a_recordAddfromTextQuery_a_recordWritetoTextInsertDeleteSort_by_nameQueryInput_one_record四、源程序及注釋:#include<stdio.h>#include<stdlib.h>#include<ctype.h>#include<string.h>typedef struct student /*定義結(jié)構(gòu)體數(shù)組*/ char name20; float score;int menu_select();struct student Input_one_r

22、ecord() /*輸入一個學(xué)生的成績記錄*/ struct student stud; printf("please input the name:n"); scanf("%s",&); printf("please input the score:n"); scanf("%f",&stud.score); return stud;int Input(struct student stu,int n) /*輸入學(xué)生成績記錄*/ for(n=0;n<=39;n+) stun=Input_one

23、_record(); /*調(diào)用函數(shù)Input_ont_record輸入學(xué)生成績記錄*/ printf("do you want to continue:('Y'or'N')"); getchar(); if(toupper(getchar()='N') break; return n+1;void Display(struct student stu, int n) /*輸出所有學(xué)生的成績記錄*/ int i,j; for(i=0;i<3;i+) /*每屏顯示十個記錄然后暫停*/ system("cls&quo

24、t;); for(j=10*i;j<=10*i+9;j+) /*循環(huán)輸出十個記錄*/ if(j>n-1) break; printf("%s%20fn",,stuj.score); if(j>n-1) break; printf("press any key to display the next ten records:n"); system("pause"); void Sort_by_Name(struct student stu,int n) /*排序*/ int i,j,p; struct

25、 student t; for(i=0;i<=n-2;i+) /*選擇排序法*/ p=i; for(j=i+1;j<=n-1;j+) /*找到最小數(shù)據(jù)的下標(biāo)*/ if(strcmp(,)<0) p=j; if(p!=i) /*判斷最小數(shù)據(jù)是否在第一個*/ t=stup;stup=stui;stui=t; printf("succeed!n");int Insert_a_record(struct student stu,int n) /*插入一個學(xué)生成績記錄*/ struct student new; struct st

26、udent *s; printf("please input a name:n"); scanf("%s",&); printf("please input the score:n"); scanf("%f",&new.score); s=&new; n=Insert(stu,n,s); /*調(diào)用函數(shù)Insert作有序插入*/ return n;int Insert(struct student stu,int n,struct student *s) /*有序插入*/ int i,j; f

27、or(i=0;i<=n-1;i+) if(strcmp(,s->name)>0) break; for(j=n-1;j>=i;j-) stuj+1=stuj; stui=*s; return n+1;int Delete_a_record(struct student stu,int n) /*刪除一個學(xué)生的成績記錄*/ int k; struct student name_to_delete; struct student *name; printf("please input the name you want to delete:n&q

28、uot;); scanf("%s",&name_t); name=&name_to_delete; printf("Delete %s's record('Y'or'N'):n",name_t); getchar(); if(toupper(getchar()='Y') k=Delete(stu,n,name); /*調(diào)用函數(shù)Delete查找數(shù)據(jù),若存在做刪除*/ if(k=-1) /*判斷是否存在*/ printf("The record does not exist!n

29、"); else n=k; return n;int Delete(struct student stu,int n,struct student *name) int i,j; for(i=0;i<=n;i+) if(strcmp(,name->name)=0) break; /*找到需要刪除的數(shù)據(jù)下標(biāo)i*/ if(i=n+1) /*判斷要刪除的數(shù)據(jù)是否存在*/ return -1; /*不存在,返回提示信息*/ else /*存在,做刪除*/ for(j=i;j<=n;j+) stuj=stuj+1; printf("succeed!

30、n"); return n-1; void Query_a_record(struct student stu,int n) /*查找一個學(xué)生的成績記錄*/ struct student *name; struct student name_to_query; printf("please input the name you want to query:n"); scanf("%s",&name_t); name=&name_to_query; if(Query(stu,n,name)=-1) /*調(diào)用函數(shù)Query判斷要查找

31、的記錄是否存在*/ printf("%s does not exist!n"); /*不存在輸出提示信息*/ else /*存在,輸出記錄*/ name_to_query=stuQuery(stu,n,name); printf("succeed!n%st%fn",name_t,name_to_query.score); int Query(struct student stu,int n,struct student *name) /*查找記錄*/ int i; for(i=0;i<=n-1;i+) /*找到需要查找的記錄的下標(biāo)*/ if(str

32、cmp(,name->name)=0) break; if(i<=n-1) /*判斷要查找的記錄時候存在*/ return i; /*存在,返回下標(biāo)i*/ else return -1; /*不存在,返回提示信息*/int AddfromText(struct student stu,int n) /*從文件中整批輸入*/ int i,num; FILE *fp; /*定義文件指針*/ char 20; printf("Input the :n"); scanf("%s",); if(fp=fopen(,"r&qu

33、ot;)=NULL) printf("cann't open the file!n"); system("pause"); return n; fscanf(fp,"%d",&num); for(i=0;i<num;i+) /*循環(huán)讀入文件內(nèi)容*/ fscanf(fp,"%s%f",&stun+,&stun+i.score); n+=num; fclose(fp); Sort_by_Name(stu,n); /*調(diào)用函數(shù)Sort_by_Name排序*/ return

34、 n;void WritetoText(struct student stu,int n) /*將記錄寫到文件*/ int i; FILE *fp; char 20; printf("Write the records to a Text Filen"); printf("Input the :"); scanf("%s",); if(fp=fopen(,"w")=NULL) printf("cann't open the filen"); system("pause"

35、;); return; fprintf(fp,"%dn",n+1); for(i=0;i<=n-1;i+) /*循環(huán)將記錄寫到文件中*/ fprintf(fp,"%st%fn",,stui.score); fclose(fp); printf("succeed!n");void Quit()void main() /*主函數(shù)*/ struct student stu40; int n=0; for(;) switch(menu_select() case 1:n=Input(stu,n);system(&quo

36、t;pause");break; case 2:Display(stu, n);system("pause");break; case 3:Sort_by_Name(stu,n);system("pause");break; case 4:n=Insert_a_record(stu,n);system("pause");break; case 5:n=Delete_a_record(stu,n);system("pause");break; case 6:Query_a_record(stu,n);sys

37、tem("pause");break; case 7:n=AddfromText(stu,n);system("pause");break; case 8:WritetoText(stu,n);system("pause");break; case 0:Quit();system("pause"); exit(0); int menu_select() /*顯示主菜單*/ char c; do system("cls"); printf("1.Input Recordsn")

38、; printf("2.Display()n"); printf("3.Sort by Namen"); printf("4.Insert a recordn"); printf("5.Delete a recordn"); printf("6.Queryn"); printf("7.AddfromTextn"); printf("8.WritetoTextn"); printf("0.Goodbye!n"); printf("

39、;Give your choice (1-8,0):"); c=getchar(); while(c<'0'|c>'8'); return(c-'0');五、測試流程:運(yùn)行程序屏幕顯示:1.Input Records 2.Display() 3.Sort by Name 4.Insert a record 5.Delete a record 6.Query 7.AddfromText 8.WritetoText 0 .Goodbye! Give your choice (1-8,0):輸入:1 回車顯示:please inp

40、ut the name: 輸入:hhm 回車顯示:please input the score:輸入:75 回車顯示:Do you want to continue: (YorN)輸入:y 回車(按照上述方法輸入三組學(xué)生記錄:gm,95;zy,95;zbn,95 再選擇N)屏幕顯示:press any key to continue 按任意鍵返回主菜單輸入:2 回車顯示:hhm 75.000000 gm 95.000000 zy 95.000000 zbn 95.000000 Press any key to continue按任意鍵返回主菜單輸入:3回車顯示:succeed! Press a

41、ny key to continue按任意鍵返回主菜單輸入:2回車顯示:gm 95.000000 hhm 75.000000 zbn 95.000000 zy 95.000000 Press any key to continue按任意鍵返回主菜單輸入:4 回車顯示:please input a name: 輸入:xjj回車顯示:please input the score: 輸入:88回車顯示:Press any key to continue按任意鍵返回主菜單輸入:2 回車顯示:gm 95.000000 hhm 75.000000 xjj 88.000000 zbn 95.000000 zy

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論