C程序設計課程設計報告_第1頁
C程序設計課程設計報告_第2頁
C程序設計課程設計報告_第3頁
C程序設計課程設計報告_第4頁
C程序設計課程設計報告_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、西安科技大學c語言程序設計課程設計報告 題 目 c 程序設計課程設計報告 院、系(部) 電氣與控制工程學院 專業(yè)及班級 微電子1001班 姓 名 李治 劉源 韓枝宏 日 期 2011年7月7號 1 題目要求 一級標題小三黑體,二級標題四號黑體,正文小四宋體,行間距20磅2 功能需求(分析系統(tǒng)應具有哪些功能)(1)圓圈循環(huán)報數(shù)有100個小朋友按編號順序1,2,。,100逆時針方向圍成一圈。從1號開始按逆時針方向1,2,。,9報數(shù),凡報數(shù)9者出列,問:最后剩下一個未出圈者的編號是多少?第50個出圈者的編號是多少?(2)年歷顯示功能要求:a輸入一個年份,輸出是在屏幕上顯示該年的日歷。假定輸入的年份在

2、1940-2040年之間。b輸入年月,輸出該月的日歷。c輸入年月日,輸出距今天還有多少天,星期幾,是否是公歷節(jié)日。(3)圖形時鐘功能要求: 在屏幕上顯示一個圖形時鐘(用程序繪制一個與時鐘樣式相似即可),時間與系統(tǒng)時間一致,且要隨著時間的走動準確的走動。(4)猜數(shù)字游戲首先輸入要猜的數(shù)字的位數(shù),這樣計算機可以根據(jù)輸入的位數(shù)隨機地分配一個符合要求的數(shù)據(jù),計算機輸出guess后便可以輸入數(shù)字,計算機會根據(jù)輸入信息給出相應的提示信息:a表示位置于數(shù)字均正確的個數(shù),b表示位置不正確但數(shù)字正確的個數(shù),這樣便可以根據(jù)提示信息進行下次輸入,知道正確為止。(5)保齡球計分程序要求: a使用c語言寫一個程序可以方

3、便的對保齡球運動項目進行記分; 界面布局合理,能直觀的顯示每次得分,每輪得分和累計得分的情況 b分值錄入操作合理,需要有必要的無效值判斷處理(比如每次擊球得分不會>10等等) c每場比賽結(jié)束后將本次比賽數(shù)據(jù)保存下來。(選擇文件或者數(shù)據(jù)庫均可)3 總體設計系統(tǒng)業(yè)務處理流程開始(1)圓圈循環(huán)報數(shù) 結(jié)束輸出b50 b100i>=1000i=i+1 ai=1j=j+1 bj=i+1ai=0 s=0s=9s=s+aii=i+1i=0i=0i,j,s,a100,b100y nny nni=99i= -1ny nn j=100 y n(2)年歷顯示a.主體循環(huán)輸入p qp=bp=cp=ayyy輸

4、出某年年歷輸出某年某月日歷輸出某年某月某日詳細信息yq=yn退出程序b.分步流程圖nnnnnyyyyy輸出d>aid=d+1k=6k=k+1j=6j=j+1(j*10+k)>=(10+w)j=1k=0i=12i=i+1輸出i+1月i=0a1=29輸入y,m,d,w,k,s,i,j;a12w=(y+(y-1)/4-(y-1)/100+(y-1)/400)%7y%4=0&&y%100!=0)|y%400=0sum1,sum2nynnnnnyyyyysum2=sum2-sum1j=ksum2=sum2+1i=k j=j+1bj=aij=0i=i+1i=0 i=ki=i+1

5、sum1=sum+1bi=aii=0i=ksum1=0,sum2=0, k,i=0,aibi=xi=i+1開始(4)猜數(shù)字游戲(5)保齡球計分nnnynnnnyyyyyy開始輸出部分a18+a19)=10輸入附加球1輸入附加球1、2a18=10(*pb+*(pb-1)>10i<11pb+=0輸入pb+pb=10pb>10pb<0輸入pbi =i+1a22=0*pb=a,i=1,s10=0,sum=0開始a輸入部分4 詳細設計根據(jù)功能模塊,詳細論述設計過程,給出主要實現(xiàn)代碼。(1) 圓圈循環(huán)報數(shù)#include<stdio.h>main()int i,j=0,

6、s=0,a100,b100;for(i=0;i<100;i+) ai=1; /*給所有ai賦初值1*/ for(i=0;i<100;i+) s=s+ai; /*從1開始報數(shù)*/ if(s=9) /*報數(shù)為9的出圈*/ j=j+1; /*出圈人數(shù)加1*/ bj=i+1; ai=0; /*與前面相對應,可使出圈者以后的報數(shù)都為前一位所報數(shù)*/ s=0; /*重新從1開始報數(shù)*/ if(i=99) i=-1; /*第100個人報完后又從第1個開始報數(shù)*/ if(j=100) /*100個人都報完了輸出結(jié)果*/ break; printf("第50個出圈者的編號是:%dn&quo

7、t;,b50); printf("最后未出圈者編號是:%dn",b100);(2) 年歷顯示 #include<stdio.h>main()int y,m,d,w,k,s,i,j;int a12=31,28,31,30,31,30,31,31,30,31,30,31;char p,q;printf("查詢項目a:查詢1940-2040年的年歷表.n"); printf("查詢項目b:查詢某年某月的日歷表.n"); printf("查詢項目c:輸入年月日查詢當天信息.nn");doprintf("

8、;請輸入你所要查詢的項目(輸入a或者b或者c)");scanf(" %c",&p);if(p='a')/*打印某年的年歷表*/printf("請輸入你想知道的年份:"); scanf("%d",&y);printf("n"); printf("=%d年公歷表=nn",y); w=(y+(y-1)/4-(y-1)/100+(y-1)/400)%7; if(y%4=0&&y%100!=0)|y%400=0) a1=29; for(i=0;i&

9、lt;12;i+) d=0; printf("=%2d月=n",i+1); printf(" sun mon tue wed thu fri satn"); for(j=1;j<=6;j+) for(k=0;k<=6;k+) if(j*10+k)>=(10+w) /*當j大于1時此不等式必為真,只有月初的前幾日此不等式才可能為假,此時輸出空格*/ d=d+1; if(d>ai) printf("n"); break; /*日期大于某月天數(shù)時跳到下一個月*/ else printf("%5d"

10、,d); w=k+1; if(w=7) w=0; printf("n"); /*星期天時換行并從星期一開始新的循環(huán)*/ else printf(" "); printf("=n");/*打印某年某月的日歷表*/if(p='b') printf("請輸入你想知道的年 月:"); scanf("%d %d",&y,&m);printf("n"); printf("=%d年%d月=nn",y,m); if(y%4=0&&a

11、mp;y%100!=0)|y%400=0) a1=29; s=0; for(i=0;i<m-1;i+)s=s+ai; /*s為y年中m月前的天數(shù)*/ w=(y+(y-1)/4-(y-1)/100+(y-1)/400+s)%7; /* y年m月1號為星期w*/ printf(" sun mon tue wed thu fri satn"); d=0; for(j=1;j<=6;j+) for(k=0;k<=6;k+) if(j*10+k)>=(10+w) d=d+1; if(d>ai) printf("n"); break;

12、else printf("%5d",d); w=k+1; if(w=7) w=0; printf("n"); else printf(" "); /*這些和上面年歷差不多*/ printf("=n");/*某年某月某日的信息查詢*/ if(p='c')int y1,m1,d1,i1,j1,s=0,s1=0,x=0,x1=0,sum3000,sum13000,t,t1,b,z=0;printf("請輸入今天的日期 年 月 日");scanf("%d %d %d"

13、,&y,&m,&d);printf("請輸入你所要查詢的年 月 日");scanf("%d %d %d",&y1,&m1,&d1);for(i=0;i<y;i+)if(i%4=0&&i%100!=0)|i%400=0)sumi=366;else sumi=365;s=s+sumi; /*s為y年元旦與公元0年元旦所差的天數(shù)*/for(j=0;j<m-1;j+)if(y%4=0&&y%100!=0)|y%400=0)a1=29;x=x+ai; /*x為m-1個月的天

14、數(shù)*/for(i1=0;i1<y1;i1+)if(i1%4=0&&i1%100!=0)|i1%400=0)sum1i=366;else sum1i=365;s1=s1+sum1i; /*s1為y1年元旦與公元0年元旦所差的天數(shù)*/for(j1=0;j1<m1-1;j1+)if(y1%4=0&&y1%100!=0)|y1%400=0)a1=29;x1=x1+ai; /*x1為m1-1個月的天數(shù)*/t=s+x+d; /*t為y年m月d日與公元0年元旦所差的天數(shù)*/t1=s1+x1+d1; /*t1為y1年m1月d1日與公元0年元旦所差的天數(shù)*/b=t1-

15、t; /*b為今天和所查詢?nèi)掌谒畹奶鞌?shù)*/printf("=n");if(b>0)printf("所查詢?nèi)掌谶€有%d天n",b);else b=-1*b;printf("所查詢?nèi)掌谝堰^%d天n",b);/*計算要查詢的這一天是星期幾*/ for(i=0;i<m1-1;i+)z=z+ai1; /*z為y1年中前m1-1個月的天數(shù)*/ z=z+d1; /*z為y1年中m1月d1號之前的天數(shù)*/w=(y1-1+(y1-1)/4-(y1-1)/100+(y1-1)/400+z)%7; /*y1年m1月d1是星期w*/switch

16、(w)case 1: printf("| 星期一 |n");break; case 2: printf("| 星期二 |n");break; case 3: printf("| 星期三 |n");break; case 4: printf("| 星期四 |n");break; case 5: printf("| 星期五 |n");break; case 6: printf("| 星期六 |n");break; case 0: printf("| 星期天 |n&quo

17、t;);break;/*查看改日是否有節(jié)日*/if(m1=1&&d1=1) printf("| 元旦節(jié) |n"); if(m1=2&&d1=2) printf("| 世界濕地日 |n"); if(m1=2&&d1=14) printf("| 情人節(jié)了 |n"); if(m1=3&&d1=1) printf("| 國際海豹日 |n"); if(m1=3&&d1=3) printf("| 全國愛耳日 |n"); if(m

18、1=3&&d1=8) printf("| 3.8婦女節(jié) |n"); if(m1=3&&d1=12) printf("| 植樹節(jié) |n"); if(m1=3&&d1=14) printf("| 國際警察日 |n"); if(m1=3&&d1=15) printf("| 消費者權益日 |n"); if(m1=3&&d1=17) printf("| 國際航海日 |n"); if(m1=3&&d1=21) p

19、rintf("| 世界森林日 |n"); if(m1=3&&d1=23) printf("| 世界氣象日 |n"); if(m1=3&&d1=24) printf("| 世界防治結(jié)核病日 |n"); if(m1=4&&d1=1) printf("| 愚人節(jié),小心上當 |n"); if(m1=4&&d1=7) printf("| 世界衛(wèi)生日 |n"); if(m1=4&&d1=13) printf("| 黑色

20、星期五 |n"); if(m1=5&&d1=1) printf("| 勞動節(jié) 放假 |n"); if(m1=5&&d1=4) printf("| 青年節(jié) |n"); if(m1=5&&d1=8) printf("| 世界紅十字日 |n"); if(m1=5&&d1=12) printf("| 國際護士節(jié) |n"); if(m1=5&&d1=5) printf("| 近日注意母親節(jié) |n"); if(m1=5

21、&&d1=15) printf("| 國際家庭日 |n"); if(m1=5&&d1=31) printf("| 世界無煙日 |n"); if(m1=6&&d1=1) printf("| 國際兒童節(jié) |n"); if(m1=6&&d1=5) printf("| 世界環(huán)境日 |n"); if(m1=6&&d1=26) printf("| 國際禁毒日 |n"); if(m1=6&&d1=6) printf

22、("| 全國愛眼日 |n"); if(m1=6&&d1=13) printf("| 近期注意父親節(jié) |n"); if(m1=7&&d1=1) printf("| 香港回歸紀念日 |n"); if(m1=7&&d1=7) printf("| 抗日戰(zhàn)爭紀念日 |n"); if(m1=7&&d1=11) printf("| 世界人口日 |n"); if(m1=8&&d1=1) printf("| 八一建軍節(jié) |n

23、"); if(m1=8&&d1=8) printf("| 中國男子節(jié) |n"); if(m1=8&&d1=15) printf("| 抗日戰(zhàn)爭勝利紀念日 |n"); if(m1=9&&d1=10) printf("| 中國教師節(jié) |n"); if(m1=9&&d1=18) printf("| 九一八事變紀念 |n"); if(m1=9&&d1=20) printf("| 國際愛牙日 |n"); if(m1=

24、9&&d1=27) printf("| 世界旅游日 |n"); if(m1=10&&d1=1) printf("| 中國國慶節(jié) |n"); if(m1=10&&d1=4) printf("| 世界動物日 |n"); if(m1=10&&d1=24) printf("| 聯(lián)合國日 |n"); if(m1=10&&d1=12) printf("| 明天國際教師節(jié) |n"); if(m1=10&&d1=13

25、) printf("| 國際教師節(jié) |n"); if(m1=11&&d1=10) printf("| 世界青年節(jié) |n"); if(m1=11&&d1=17) printf("| 世界學生節(jié) |n"); if(m1=12&&d1=1) printf("| 世界艾滋病日 |n"); if(m1=12&&d1=23) printf("| 明晚平安夜 |n"); if(m1=12&&d1=24) printf("

26、| 今晚平安夜 |n"); if(m1=12&&d1=25) printf("| 圣誕快樂 |n"); if(m1=12&&d1=31) printf("| 明日新年 |n");printf("=n");printf("是否想繼續(xù)查詢(y/n)n"); scanf(" %c",&q);while(q='y');(3)圖形時鐘#include"graphics.h" <graphics.h> 是tc里

27、面的圖形庫#include"math.h" #include"dos.h" 這是一個頭文件,里面包含了很多bios和dos調(diào)用函數(shù)#define pi 3.1415926 #define x(a,b,c) x=a*cos(b*c*pi/180-pi/2)+300 確定橫坐標#define y(a,b,c) y=a*sin(b*c*pi/180-pi/2)+240 確定縱坐標#define d(a,b,c) x(a,b,c);y(a,b,c);line(300,240,x,y) void init() /*畫時鐘邊框函數(shù)*/自定義函數(shù)初始化時鐘界面 int

28、 i,l,x1,x2,y1,y2; setbkcolor(1); 背景顏色為藍色circle(300,240,200); circle(300,240,205);畫圓 circle(300,240,5); for(i=0;i<60;i+) /*劃鐘點上的短線*/ if(i%5=0) l=13;(表示線長13) else l=4; x1=200*cos(i*6*pi/180)+300; y1=200*sin(i*6*pi/180)+240; x2=(200-l)*cos(i*6*pi/180)+300; y2=(200-l)*sin(i*6*pi/180)+240; line(x1,y1,

29、x2,y2); 畫一條從點(x1,y1)到(x2,y2) main() int x,y,i,k=1; int gdriver=9,gmode=2; unsigned char h,m,s; int o,p,q; float n; struct time t1; struct date d1; initgraph(&gdriver,&gmode,"c: tc"); initgraph(&gdriver,&gmode,"c: tc"); for(i=0;i<=4;i+) settextstyle(triplex_font

30、,horiz_dir,i); /*控制輸出字符的字體,方向,大小*/ cleardevice(); settextjustify(1,1); /*在指定坐標上輸出字符串*/ outtextxy(300,80,"12") ; outtextxy(300,390,"6"); outtextxy(140,230,"9"); outtextxy(460,230,"3"); outtextxy(380,100,"1"); outtextxy(220,100,"11"); outtext

31、xy(430,160,"2"); outtextxy(430,310,"4"); outtextxy(380,370,"5"); outtextxy(220,370,"7"); outtextxy(160,160,"10"); outtextxy(160,310,"8"); init(); setwritemode(1); /*設置畫線的輸出模式*/ if(k!=0) getdate(d); /*獲得系統(tǒng)日期函數(shù)*/ o=d0.da_year; p=d0.da_mon; q=

32、d0.da_day; gettime(t); /*獲得系統(tǒng)時間函數(shù)*/ h=t0.ti_hour; m=t0.ti_min; s=t0.ti_sec; setcolor(9); /*設置時針顏色*/ n=(float)h+(float)m/60; d(120,n,30); /*畫出時針*/ setcolor(8); /*設置分針顏色*/ d(150,m,6); /*畫出分針*/ setcolor(4); /*設置秒針顏色*/ d(190,s,6); /*畫出秒針*/ while(!kbhit() /*控制程序按下任意鍵退出*/ while(t0.ti_sec=s) gettime(t); go

33、toxy(44,18); /*使光標移動到指定坐標*/ printf("bbbbbbbbb"); /*退格,使表示時間的字符串不斷變化*/ sound(400); /*按給定的頻率打開pc揚聲器*/ delay(70); /*中斷程序的執(zhí)行,時間為70毫秒*/ sound(200); delay(30); nosound(); /*按給定的頻率關閉pc揚聲器*/ setcolor(4); d(190,s,6); s=t0.ti_sec; d(190,s,6); if(t0.ti_min!=m) setcolor(14); d(170,m,6); m=t0.ti_min; d

34、(170,m,6); if(t0.ti_hour!=h) setcolor(7); d(150,h,30); h=t0.ti_hour; d(150,h,30); sound(1000); delay(240); nosound(); delay(140); sound(2000); delay(240); nosound(); if(s<10) /*用字符的形式輸出時間*/ if(m<10) printf("%u:0%u:0%u",h,m,s); else printf("%u:%u:0%u",h,m,s); else if(m<10

35、) printf("%u:0%u:%u",h,m,s); else printf("%u:%u:%u",h,m,s); gotoxy(34,19); /*在指定坐標上輸出日期*/ printf("%d-%d-%d",o,p,q); printf("bbbbbbbbb"); getch(); closegraph(); (4)猜數(shù)字游戲#include<stdio.h>#include<time.h>main()int i,j,k,n,sum1,sum2,m=0,a10,b10;time_t

36、t;printf("難度設置(110):");scanf("%d",&k);srand(unsigned)time(&t); for(i=0;i<k;i+) ai=rand()%10; /*電腦隨機出k個0到9的數(shù)*/dosum1=0;sum2=0;printf("n請輸入所猜的數(shù)字(請用空格隔開!)");for(i=0;i<k;i+) scanf("%d",&n);bi=n; /*輸入k個數(shù)字*/for(i=0;i<k;i+) if(bi=ai) /*位置和數(shù)值都對*/s

37、um1+; /*sum1為位置數(shù)值都對的數(shù)的個數(shù)*/for(i=0;i<k;i+) for(j=0;j<k;j+)if(bj=ai) /*此處用j,所以位置不一定相等*/ bj=10;sum2+;break; /*sum2為數(shù)值相等的個數(shù)*/ sum2=sum2-sum1; /*sum2為位置不同數(shù)值相同的數(shù)的個數(shù)*/ printf("%da %dbn",sum1,sum2);while(sum1!=k); /*當sum1等于k時停止循環(huán)*/ printf("恭喜你,猜對了 (*_*) !n");(5)保齡球計分程序#include<s

38、tdio.h>int main(void)int a22=0;int i,*pb=a,s10=0,sum=0;for(i=1;i<=10;i+,pb+)doprintf("第%d輪第1次:",i); scanf("%d",pb);while(*pb<0|*pb>10); if(*pb<10)do printf("第%d輪第2次:",i); scanf("%d",+pb);while(*pb+*(pb-1)>10); else *+pb=0;if(a18=10)printf(&qu

39、ot;附加的第一次擊倒的柱數(shù):");scanf("%d",pb);printf("附加的第二次擊倒的柱數(shù):"); scanf("%d",pb);if(a18!=10&&(a18+a19)=10)printf("本局附次的擊倒的柱數(shù):");scanf("%d",pb); printf("nn 本局得分情況 n");printf(" 輪數(shù) 1 2 3 4 5 6 7 8 9 10 n");printf(" 各輪第一次得分 ");for(i=0;i<10;i+) printf("%4d",ai*2);printf(" n");printf(" 各輪第二次得分 ");for(i=0;i<10;i+) if(ai*2=10)printf(" /");else printf("%4d",ai*2+1); printf

溫馨提示

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

評論

0/150

提交評論