版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
PAGE2-《C語言程序設計》課程設計報告(2011—2012學年第1學期)專業(yè):計算機科學與技術(shù)班級:姓名學號:指導教師:成績:計算機科學與技術(shù)系2011年12月31日
目錄一、課程設計的目的與要求………………3二、方案實現(xiàn)與調(diào)試……………………32.1擲骰子游戲…………32.2汽車加油……………62.3大優(yōu)惠………………82.4金幣…………………92.5小型通訊錄設計…………………12三、課程設計分析與總結(jié)…………………14附錄程序清單…………14-PAGE10-一、課程設計的目的與要求(含設計指標)(1)實驗目的C語言是一種編程靈活,特色鮮明的程序設計語言。C語言除了學習必須的基本知識,如概念,方法和語法規(guī)則之外,更重要的是進行實訓,以提高學習者的動手和編程能力,這是學習語言的最終目的。結(jié)合多年來的教學經(jīng)驗,根據(jù)學生的學習情況,為配合教學過程,使“項目教學法”能在本質(zhì)上促使學生有更大進步,特編寫了該《C語言程序設計任務書》,以在實訓過程中給學生提供幫助。達到如下目的:在課程結(jié)束之前,讓學生進一步了解C程序設計語言的編程功能;讓學生扎實掌握C程序設計語言的相關(guān)知識;通過一些有實際意義的程序設計,使學生體會到學以致用,并能將程序設計的知識與專業(yè)知識有效地結(jié)合,更全面系統(tǒng)地了解行業(yè)知識。(2)設計要求根據(jù)實驗內(nèi)容的要求自由選定題目。編寫程序要求遵循如下基本要求:模塊化程序設計鋸齒型書寫格式必須上機調(diào)試通過二、方案實現(xiàn)與調(diào)試2.1擲骰子游戲?2.1.1題目內(nèi)容的描述兩人玩骰子,游戲規(guī)則如下:1) 兩人輪流擲骰子,每次擲兩個,每人最多擲10次。2) 將每人每次的分值累加計分3) 當兩個骰子點數(shù)都為6時,計8分;當兩個點數(shù)相等且不為兩個6時,計7分;當兩個點數(shù)不一樣時,計其中點數(shù)較小的骰子的點數(shù)。4) 結(jié)束條件:當雙方都擲10次或經(jīng)過5次后一方累計分數(shù)為另一方的兩倍。最后顯示雙方分數(shù)并判定優(yōu)勝者。?2.1.2輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說明輸入數(shù)據(jù)類型:整型數(shù)格式:srand(time(0));輸入數(shù)=rand()%6+1;內(nèi)容限制:產(chǎn)生最多十次隨機數(shù)輸出數(shù)據(jù)說明:擲骰子的獲勝者?2.1.3主要模塊的算法描述2.1.4調(diào)試過程及實驗結(jié)果出現(xiàn)的問題:每次循環(huán)產(chǎn)生的隨機數(shù)相同。解決方法:把隨機函數(shù)移到for循環(huán)前。執(zhí)行結(jié)果截圖:2.2汽車加油?2.2.1題目內(nèi)容的描述一輛汽車加滿油后可行駛n公里。旅途中有若干個加油站。設計一個有效算法,指出應在哪些加油站停靠加油,使沿途加油次數(shù)最少。輸入:第一行有2個正整數(shù)N和K(1<=N<=100,1<=K<=100),表示汽車加滿油后可行駛N公里,且旅途中有K個加油站。接下來的1行中,有K+1個整數(shù),表示第K個加油站與第K-1個加油站之間的距離。第0個加油站表示出發(fā)地,汽車已加滿油。第K+1個整數(shù)表示第K個加油站與目的地的距離。輸出:將編程計算出的最少加油次數(shù)輸出。如果無法到達目的地,則輸出NoSolution。(注意:No和Solution之間有一個空格)。例如:輸入:88323654272輸出:5?2.2.2輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說明輸入數(shù)據(jù)類型:整型數(shù)格式:sacnf(“格式控制字符串”,地址列表);內(nèi)容限制:1<=N<=100,1<=K<=100輸出數(shù)據(jù)說明:最少加油次數(shù)?2.2.3主要模塊的算法描述?2.2.4調(diào)試過程及實驗結(jié)果出現(xiàn)的問題:會重復出現(xiàn)NoSolution.解決方法:添加break語句。執(zhí)行結(jié)果截圖:2.3大優(yōu)惠?2.3.1題目內(nèi)容的描述中國移動推出最新的手機資費優(yōu)惠方案,按照這個方案Tom的手機每天消費1元,每消費K元就可以獲贈1元,一開始Tom有M元,問最多可以用多少天?輸入的測試數(shù)據(jù)為一行,實例包括2個整數(shù)M,K(2<=K<=M<=1000)。輸出一個整數(shù),表示M元可以用的天數(shù)。?2.3.2輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說明輸入數(shù)據(jù)類型:整型數(shù)格式:sacnf(“格式控制字符串”,地址列表);內(nèi)容限制:2<=K<=M<=1000輸出數(shù)據(jù)說明:M元可以用的天數(shù)?2.3.3主要模塊的算法描述?2.3.4調(diào)試過程及實驗結(jié)果出現(xiàn)的問題:當輸入不符合條件的數(shù)時會停止程序無法再次輸入。解決方法:在輸入時添加do-while循環(huán)。執(zhí)行結(jié)果截圖:2.4金幣?2.4.1題目內(nèi)容的描述國王用金幣獎勵他忠誠的侍從。第一天侍從工作結(jié)束后,國王獎勵了他一個金幣;接著的兩天侍從工作中(第二天,第三天)的每一天,國王獎勵了他兩個金幣;接著的三天侍從工作中(第四天,第五天,第六天)的每一天,國王獎勵了他三個金幣;接著的四天侍從工作中(第七天,第八天,第九天,第十天)的每一天,國王獎勵了他四個金幣。這種獎勵的模式將是固定不變的,即在N天侍從工作中的每一天,國王將獎勵他N個金幣;接著的N+1天的侍從工作中的每一天,國王將獎勵他N+1個金幣。要求在給定的天數(shù)時,你的程序能夠統(tǒng)計國王總共獎勵了侍從多少金幣。?2.4.2輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說明輸入數(shù)據(jù)類型:整型數(shù)格式:sacnf(“格式控制字符串”,地址列表);輸出數(shù)據(jù)說明:共獎勵了侍從多少金幣數(shù)?2.4.3主要模塊的算法描述?2.4.4調(diào)試過程及實驗結(jié)果出現(xiàn)的問題:天數(shù)不剛好,金幣數(shù)變多結(jié)果出錯。解決方法:在程序末尾加個減去多算金幣的算法。執(zhí)行結(jié)果截圖:2.5小型通訊錄設計?2.5.1題目內(nèi)容的描述功能:實現(xiàn)簡單的通訊錄信息管理,基本信息包括編號、姓名、電話、手機、郵編、地址和關(guān)系(如朋友、親友、同事、同學等)基本要求:1設計簡單的菜單,能夠進行系統(tǒng)功能選擇。2實現(xiàn)信息的錄入功能。3在已有信息的基礎上添加新的記錄。4刪除指定編號的記錄。5修改指定編號的記錄6實現(xiàn)信息的瀏覽功能7按編號查詢功能8按手機號排序功能?2.5.2系統(tǒng)功能說明此程序有輸入、顯示、查找、刪除、修改、按序號排序的功能。?2.5.3輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說明輸入數(shù)據(jù)類型:整型數(shù)格式:sacnf(“格式控制字符串”,地址列表);?2.5.4系統(tǒng)主要模塊的算法描述?2.5.5調(diào)試過程及實驗結(jié)果出現(xiàn)的問題:執(zhí)行程序時運行速度過快。解決方法:在每個函數(shù)末尾加getchaar();執(zhí)行結(jié)果截圖:三、課程設計分析與總結(jié)附錄:源程序清單擲骰子游戲.c#include<stdio.h>#include<stdlib.h>#include<time.h>voidmain(){ inta,e=0,f=0,g,h,l,m; intpoint1(intx,inty); intpoint2(inti,intj); srand(time(0)); for(a=0;a<10;a++) { if(a==5) { if(e==f*2||f==e*2)break; } g=rand()%6+1;/*產(chǎn)生1~6的隨機數(shù)*/ h=rand()%6+1; l=rand()%6+1; m=rand()%6+1; e=e+point1(g,h);/*計算總分數(shù)*/ f=f+point2(l,m); } printf("甲的總分:%d\n乙的總分:%d\n",e,f); if(e>f)printf("甲獲勝\n"); elseif(e==f)printf("甲乙平手\n"); elseprintf("乙獲勝\n");}intpoint1(intx,inty){ intn=0; printf("甲:%d%d\n",x,y); /*判斷每次得分*/if(x==y) { if(x==6)n=8; elsen=7; } elseif(x>y)n=y; elsen=x; returnn;}intpoint2(inti,intj){ intz=0; printf("乙:%d%d\n",i,j); if(i==j) { if(i==6)z=8; elsez=7; } elseif(i>j)z=j; elsez=i; returnz;}汽車加油.c#include<stdio.h>#include<math.h>#defineM1000voidmain(){ intN,K,a[M],i,e; inttimes(intb,intc,intd[M]); do{ printf("請輸入加滿油后可行駛公里數(shù)和加油站數(shù):"); scanf("%d%d",&N,&K); if(K>100||K<1||N>100||N<1) printf("輸入有誤請重新輸入\n"); }while(K>100||K<1||N>100||N<1); { printf("請輸入各加油站間的距離:"); for(i=0;i<=K;i++) scanf("%d",&a[i]); e=times(N,K,a); if(e!=0) printf("最少加油次數(shù)為:%d\n",e); } }inttimes(intb,intc,intd[M]){ inti,s=0,j=0; for(i=0;i<=c;i++) { if(d[i]>b) { printf("NoSolution\n");break; } else { for(i=0;i<=c;i++) { s=s+d[i]; if(s>b) { j++;/*計算加油次數(shù)*/ s=d[i]; } } } } returnj; }大優(yōu)惠.c#include<stdio.h>voidmain(){ intday(inta,intb); intK,M,D; do{ printf("請輸入K和M:"); scanf("%d%d",&K,&M); if(K>M||K>1000||K<2||M>1000||M<2) printf("輸入有誤,請重新輸入\n"); }while(K>M||K>1000||K<2||M>1000||M<2); { D=day(K,M); printf("可用天數(shù):%d\n",D); }}intday(inta,intb){ inti=0; for(;b>0;b--) { i=i+1; if(i%a==0)b++; } returni;}金幣.c#include<stdio.h>voidmain(){ inta,b; intsum(intd); printf("請輸入工作天數(shù):"); scanf("%d",&a); b=sum(a); printf("共獎勵金幣:%d\n",b);}intsum(intd){ ints=0,t; for(t=1;d>=0;t++) { s=s+t*t; d=d-t; } s=s+d*(t-1); returns;}小型通訊錄.c#include<stdio.h>#include<stdlib.h>#include<string.h>#include<ctype.h>#defineM50typedefstruct{ charnum[7];/*序號*/ charname[10];/*姓名*/ chartele[10];/*電話*/ charmobile[10];/*手機號*/ charpost[10];/*郵編*/ charaddress[15];/*地址*/ charrelation[15];/*關(guān)系*/}ADD;intenter(ADDt[]);/*輸入記錄*/voidlist(ADDt[],intn);/*顯示記錄*/voidsearch(ADDt[],intn);/*查找記錄*/intdelete(ADDt[],intn);/*刪除記錄*/intadd(ADDt[],intn);/*添加記錄*/voidmodify(ADDt[],intn);/*修改記錄*/voidsort(ADDt[],intn);/*按手機號排序*/voidprint(ADDtemp);/*顯示單條記錄*/intfind(ADDt[],intn,char*s);/*查找函數(shù)*/intmenu_select();/*主菜單函數(shù)*/main(){ ADDadr[M];/*定義結(jié)構(gòu)體數(shù)組*/ intlength;/*保存記錄長度*/ system("cls");/*清屏*/for(;;)/*無限循環(huán)*/{ switch(menu_select()) { case0:length=enter(adr);break;/*輸入記錄*/ case1:list(adr,length);break;/*顯示全部記錄*/ case2:search(adr,length);break;/*查找記錄*/ case3:length=delete(adr,length);break;/*刪除記錄*/ case4:length=add(adr,length);break;/*添加記錄*/ case5:modify(adr,length);break;/*修改記錄*/ case6:sort(adr,length);break;/*按手機號排序*/ case7:exit(0);/*如返回值為7則程序結(jié)束*/ } }}menu_select(){ chars[80]; intc; printf("按任意鍵進入菜單\n"); getchar(); system("cls"); printf("********************菜單*********************\n"); printf("0.輸入記錄\n"); printf("1.顯示全部記錄\n"); printf("2.查找記錄\n"); printf("3.刪除記錄\n"); printf("4.插入記錄\n"); printf("5.修改記錄\n"); printf("6.按手機號排序\n"); printf("7.退出\n"); printf("**********************************************\n"); do { printf("\n輸入你的選擇(0~7):"); scanf("%s",s); c=atoi(s); }while(c<0||c>7); returnc;}intenter(ADDt[]){ inti,n; system("cls");printf("\n請輸入序號\n"); scanf("%d",&n); printf("請輸入記錄\n"); printf("序號姓名電話手機號郵編地址關(guān)系\n"); printf("\n"); for(i=0;i<n;i++) { scanf("%s%s%s%s%s%s%s",t[i].num,t[i].name,t[i].tele,t[i].mobile,t[i].post,t[i].address,t[i].relation); printf("\n"); } getchar(); returnn;}voidlist(ADDt[],intn){ inti; system("cls");printf("\n\n************************************插入**********************************\n"); printf("序號姓名電話手機號郵編地址關(guān)系\n"); printf("\n"); for(i=0;i<n;i++) printf("%-7s%-10s%-10s%-10s%-10s%-15s%-15s\n",t[i].num,t[i].name,t[i].tele,t[i].mobile,t[i].post,t[i].address,t[i].relation); if((i+1)%10==0) { printf("按任意鍵繼續(xù)...\n"); getchar(); } printf("***********************************結(jié)束***********************************\n"); getchar();}voidsearch(ADDt[],intn){ chars[20]; inti; system("cls");printf("請輸入查找序號\n"); scanf("%s",s); i=find(t,n,s); if(i>n-1) { getchar(); printf("沒找到\n"); } else { getchar(); print(t[i]); }}voidprint(ADDtemp){ system("cls");printf("\n\n**********************************************************************\n"); printf("序號姓名電話手機號郵編地址關(guān)系\n"); printf("\n"); printf("%-7s%-10s%-10s%-10s%-10s%-15s%-15s\n",temp.num,,temp.tele,temp.mobile,temp.post,temp.address,temp.relation); printf("***********************************結(jié)束********************************\n");}intfind(ADDt[],intn,char*s){ inti; for(i=0;i<n;i++) { if(strcmp(s,t[i].num)==0) returni; } getchar(); returni;}intdelete(ADDt[],intn){ chars[20]; intch=0; inti,j; printf("請輸入刪除序號\n"); scanf("%s",s); i=find(t,n,s); if(i>n-1) printf("沒找到無法刪除\n"); else { print(t[i]); printf("你確定要刪除這個記錄嗎(1/0)\n"); scanf("%d",&ch); if(ch==1) { for(j=i+1;j<n;j++) { strcpy(t[j-1].num,t[j].num); strcpy(t[j-1].name,t[j].name); strcpy(t[j-1].tele,t[j].tele); strcpy(t[j-1].mobile,t[j].mobile); strcpy(t[j-1].post,t[j].post); strcpy(t[j-1].address,t[j].address); strcpy(t[j-1].relation,t[j].relation); } n--; } } getchar(); returnn;}intadd(ADDt[],intn){ ADDtemp; inti,j; chars[20]; printf("請輸入記錄\n"); printf("**********************************************************************\n"); printf("序號姓名電話手機號郵編地址關(guān)系\n"); printf("\n"); scanf("%s%s%s%s%s%s%s",temp.num,,temp.tele,temp.mobile,temp.post,temp.address,temp.relation); printf("\n"); printf("請輸入插入位置的序號\n"); scanf("%s",s); i=find(t,n,s); for(j=n-1;j>=i;j--) { strcpy(t[j+1].num,t[j].num); strcpy(t[j+1].name,t[j].name); strcpy(t[j+1].tele,t[j].tele); strcpy(t[j+1].mobile,t[j].mobile); strcpy(t[j+1].post,t[j].post); strcpy(t[j+1].address,t[j].address); strcpy(t[j+1].relation,t[j].relation); } strcpy(t[i].num,temp.num); strcpy(t[i].name,); strcpy(t[i].tele,temp.tele); strcpy(t[i].mobile,temp.mobile); strcpy(t[i].post,temp.post); strcpy(t[i].address,temp.address); strcpy(t[i].relation,temp.relation); n++; getchar(); returnn;}voidmodify(ADDt[],intn){ chars[20]; inti; printf("請輸入想要修改的序號:"); scanf("%s",s); i=find(t,n,s); if(i>n-1) printf("沒找到"); else { printf("請輸入新的資料\n"); printf("numnametel
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025房屋裝修承攬合同(律師)
- 2025銷售合同范本協(xié)議書
- 2025生豬、菜牛、菜羊、家禽購銷合同家禽購銷合同
- 2025油漆工承包合同
- 2025年度人工智能公司干股分紅與技術(shù)研發(fā)合作協(xié)議3篇
- 二零二五年度公司對公司休閑娛樂場所租賃合同2篇
- 二零二五年度農(nóng)村公路養(yǎng)護應急響應能力提升合同
- 二零二五年度綠色能源項目公司借款合同范本3篇
- 二零二五年度戀愛關(guān)系終止后子女撫養(yǎng)及財產(chǎn)分配協(xié)議書3篇
- 二零二五年度耕地承包與農(nóng)業(yè)電商合作服務合同
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應用實踐指導材料之14:“6策劃-6.3變更的策劃”(雷澤佳編制-2025B0)
- 2024年特厚板行業(yè)現(xiàn)狀分析:中國特厚板市場占總銷售量45.01%
- 2024版影視制作公司與演員經(jīng)紀公司合作協(xié)議3篇
- 2024年上海市初三語文二模試題匯編之記敘文閱讀
- 2024年度上海市嘉定區(qū)工業(yè)廠房買賣合同2篇
- SAP WM模塊前臺操作詳解(S4版本)
- (正式版)HGT 22820-2024 化工安全儀表系統(tǒng)工程設計規(guī)范
- 《中華民族共同體概論》考試復習題庫(含答案)
- 【綠色評價】發(fā)展綠色指標評價測試五年級《英語》第一學期上冊期末試卷及答案解析
- 針灸治療學題庫(精品課件)
- 手機、平板電腦類產(chǎn)品 整機進料檢驗規(guī)范
評論
0/150
提交評論