第一篇:C語言課程設計程序
#include
//定義學生結構體,st數(shù)組。
int score[5];float jqave;int rank;}st[27];
struct kecheng { int num;char kcname[20];
//定義課程結構體,course數(shù)組.float xuefen;float biaozhuncha;int youxiu;int lianghao;int zhongdeng;int jige;int bujige;
}course[5];
void readdata1(){
int i,j;
char str1[100];
FILE *f1;
f1=fopen(“c:xinji110213.txt”,“r”);
fgets(str1,100,f1);// printf(“%-s”,str1);
for(i=0;i<27;i++)
{
fscanf(f1,“%d%s”,&st[i].num,st[i].name);
// printf(“%-4d%-10s”,st[i].num,st[i].name);
for(j=0;j<5;j++)
{
fscanf(f1,“%d”,&st[i].score[j]);// printf(“%-9d”,st[i].score[j]);}
// printf(“n”);}
fclose(f1);}
void readdata2(){
int k;
char str2[100];
FILE *f2;
f2=fopen(“c:xj02kc.txt”,“r”);
fgets(str2,100,f2);// puts(str2);
for(k=0;k<5;k++)
{
fscanf(f2,“%d%s%f”,&course[k].num,course[k].kcname,&course[k].xuefen);
// printf(“%-8d%-10s%2.1fn”,course[k].num,course[k].kcname,course[k].xuefen);
}
fclose(f2);} void jqave(){ int i,j;float s=0,sum=0;for(i=0;i<27;i++)
{
for(j=0;j<5;j++)
{
s+=course[j].xuefen;
sum+=st[i].score[j]*course[j].xuefen;
}
st[i].jqave =sum/s;
} }
void ranking()
{ int i,j;
for(i=0;i<27;i++){
st[i].rank=1;
for(j=0;j<27;j++)
if(st[i].jqave st[i].rank=st[i].rank+1;} } void paiminghoudechengji(){ int i,j;FILE *fp;fp=fopen(“c:MC110213.txt”,“w”);printf(“ 名次 學號 姓名 數(shù)學分析 高等代數(shù) C語言 大學物理 大學藝術 加權平均分 n”);fprintf(fp,“ 名次 學號 姓名 數(shù)學分析 高等代數(shù) C語言 大學物理 大學藝術 加權平均分 n”); for(i=0;i<27;i++) { printf(“%3d%5d%8s”,st[i].rank,st[i].num,st[i].name); fprintf(fp,“%3d%5d%8s”,st[i].rank,st[i].num,st[i].name); for(j=0;j<5;j++) { printf(“%10d”,st[i].score[j]); fprintf(fp,“%10d”,st[i].score[j]); } printf(“%12.2fn”,st[i].jqave); fprintf(fp,“%12.2fn”,st[i].jqave);} fclose(fp);} void xiechengji(){ int j;FILE *fp;fp=fopen(“c:xj1110213.txt”,“w”);fprintf(fp,“ 編號 課程名稱 課程學分 標準差 優(yōu)秀 良好 中等 及格 不及格 n”);printf(“ 編號 課程名稱 課程學分 標準差 優(yōu)秀 良好 中等 及格 不及格 n”);for(j=0;j<5;j++) { printf(“%3d%15s%10.2f”,course[j].num,course[j].kcname,course[j].xuefen);fprintf(fp,“%3d%15s%10.2f”,course[j].num,course[j].kcname,course[j].xuefen); printf(“%10.1f%8d%8d%8d%8d%6dn”,course[j].biaozhuncha,course[j].youxiu,course[j].lianghao,course[j].zhongdeng,course[j].jige,course[j].bujige); fprintf(fp,“%10.1f%8d%8d%8d%8d%6dn”,course[j].biaozhuncha,course[j].youxiu,course[j].lianghao,course[j].zhongdeng,course[j].jige,course[j].bujige); } fclose(fp);} void pingjunfen(){ int i,j; for(j=0;j<5;j++) { float zongfen=0,pingjunfen=0; for(i=0;i<27;i++) zongfen+=st[i].score[j]; pingjunfen=zongfen/27; } } void biaozhuncha(){ int i,j; for(j=0;j<5;j++){ float zongfen=0,pingjunfen=0,x=0; for(i=0;i<27;i++) zongfen+=st[i].score[j]; pingjunfen=zongfen/27; for(i=0;i<27;i++) x+=(st[i].score[j]-pingjunfen)*(st[i].score[j]-pingjunfen); course[j].biaozhuncha=(float)sqrt((x/27)); } } void count(){ int i,j; for(i=0;i<5;i++) { course[i].youxiu=0,course[i].lianghao=0,course[i].zhongdeng=0,course[i].jige=0,course[i].bujige=0; for(j=0;j<27;j++) { if(st[j].score[i]<60) course[i].bujige++; else if(st[j].score[i]<=69) course[i].jige++; else if(st[j].score[i]<=79) course[i].zhongdeng++; else if(st[j].score[i]<=89) course[i].lianghao++; else course[i].youxiu++; } } } void chengjitiao(){ int i,j;FILE *fp;fp=fopen(“c:cjt110213.txt”,“w”);do { printf(“請輸入你要查詢的編號 退出請按零”); scanf(“%d”,&i); fprintf(fp,“ 編號 姓名 數(shù)學分析 高等代數(shù) C語言 大學物理 大學藝術 加權平均分 名次n”);printf(“ 編號 姓名 數(shù)學分析 高等代數(shù) C語言 大學物理 大學藝術 加權平均分 名次n”);if(i>=0&&i<=26)fprintf(fp,“%3d%10s”,st[i-1].num,st[i-1].name); printf(“%3d%10s”,st[i-1].num,st[i-1].name);for(j=0;j<5;j++){ printf(“%9d”,st[i-1].score[j]); fprintf(fp,“%9d”,st[i-1].score[j]);} printf(“%12.2f%8dn”,st[i-1].jqave,st[i-1].rank);fprintf(fp,“%12.2f%8dn”,st[i-1].jqave,st[i-1].rank);fclose(fp);} while(i>0&&i<28); } void bujigexueshengmingdan(){ int i,j; printf(“不及格學生名單如下:n”);printf(“ 學號 姓名 不及格課程 分數(shù) n”);for(i=0;i<27;i++){ for(j=0;j<5;j++) if(st[i].score[j]<60) {printf(“%3d%12s”,st[i].num,st[i].name); printf(“%15s%8dn”,course[j].kcname,st[i].score[j]); // printf(“ 平均分”); // printf(“%10.2f 名次%8dn”,st[i].jqave,st[i].rank); } } } void youdeng(){ int i,k;printf(“ 優(yōu)等生名單如下n”);printf(“編號 姓名 數(shù)學分析 高等代數(shù) C語言 大學物理 大學藝術 加權平均分 名次n”);for(i=0;i<27;i++){ // for(j=0;j<5;j++) if(st[i].jqave>=90||st[i].rank<=3) { printf(“%2d%10s”,st[i].num,st[i].name); for(k=0;k<5;k++) printf(“%9d”,st[i].score[k]); printf(“%10.2f%8dn”,st[i].jqave,st[i].rank); } else; } } void caidan() { loop: printf(“ &&簡易教學管理系統(tǒng)&&n”); printf(“press 1 for 排名后的成績表 !n”); printf(“press 2 for 各科成績情況!n”); printf(“press 3 for 成績條!n”); printf(“press 4 for 不及格學生名單!n”); printf(“press 5 for 優(yōu)等生名單!n”); printf(“press 0 for 退出n”); int t; scanf(“%d”,&t); switch(t) { case 1: paiminghoudechengji();break; case 2: xiechengji();break; case 3: chengjitiao();break; case 4: bujigexueshengmingdan();break; case 5: youdeng();break; case 0: exit(0); } goto loop; } void main(){ readdata1(); readdata2(); jqave(); ranking(); pingjunfen(); biaozhuncha();count(); caidan();} C語言數(shù)字鐘程序 #include“stdio.h” void clock(int t);void main(){ int t,i,j,n;for(t=0;t<10;t++){ clock(t);sound(590);for(n=0;n<4;n++){ delay(100000000);} nosound();for(n=0;n<6;n++){ delay(100000000);} for(j=8;j<=18;j++){ for(i=1;i<=80;i++){ gotoxy(i,j);putchar(0);} } } } void clock(int t){ int i,j;textcolor(11);if(t==0){ for(i=0;i<11;i++){ gotoxy(60,8+i);cprintf(“%c”,14);} for(i=0;i<11;i++){ gotoxy(51,8+i);cprintf(“%c”,14);} for(j=0;j<11;j+=10){ for(i=0;i<8;i++){ gotoxy(59-i,8+j);cprintf(“%c”,14);} } } if(t==1){ for(i=0;i<11;i++){ gotoxy(60,8+i);cprintf(“%c”,14);} } if(t==2){ for(j=0;j<2;j++){ for(i=0;i<6;i++){ gotoxy(60-j*8,8+i+j*5);cprintf(“%c”,14);} } for(j=0;j<11;j+=5){ for(i=0;i<9;i++){ gotoxy(60-i,8+j);cprintf(“%c”,14);} } } if(t==3){ for(i=0;i<11;i++){ gotoxy(60,8+i);cprintf(“%c”,14);} for(j=0;j<11;j+=5){ for(i=0;i<8;i++){ gotoxy(59-i,8+j);cprintf(“%c”,14);} } } if(t==4){ for(i=0;i<11;i++){ gotoxy(60,8+i);cprintf(“%c”,14);} for(i=0;i<6;i++){ gotoxy(52,8+i);cprintf(“%c”,14);} for(i=0;i<8;i++){ gotoxy(59-i,13);cprintf(“%c”,14);} } if(t==5){ for(j=0;j<2;j++){ for(i=0;i<6;i++){ gotoxy(52+j*8,8+i+j*5);cprintf(“%c”,14);} } for(j=0;j<11;j+=5){ for(i=0;i<9;i++){ gotoxy(60-i,8+j);cprintf(“%c”,14);} } } if(t==6){ for(j=0;j<2;j++){ for(i=0;i<6;i++){ gotoxy(52+j*8,8+i+j*5);cprintf(“%c”,14);} } for(i=0;i<6;i++){ gotoxy(52,13+i);cprintf(“%c”,14);} for(j=0;j<11;j+=5){ for(i=0;i<9;i++){ gotoxy(60-i,8+j);cprintf(“%c”,14);} } } if(t==7){ for(i=0;i<11;i++){ gotoxy(60,8+i);cprintf(“%c”,14);} for(i=0;i<8;i++){ gotoxy(59-i,8);cprintf(“%c”,14);} } if(t==8){ for(i=0;i<11;i++){ gotoxy(60,8+i);cprintf(“%c”,14);} for(i=0;i<11;i++){ gotoxy(52,8+i);cprintf(“%c”,14);} for(j=0;j<11;j+=5){ for(i=0;i<8;i++){ gotoxy(59-i,8+j);cprintf(“%c”,14);} } } if(t==9){ for(i=0;i<11;i++){ gotoxy(60,8+i);cprintf(“%c”,14);} for(i=0;i<6;i++){ gotoxy(52,8+i);cprintf(“%c”,14);} for(j=0;j<2;j++){ for(i=0;i<8;i++){ gotoxy(59-i,8+j*5);cprintf(“%c”,14);} } } } #include“stdio.h” void clock(int t);void main(){ int t,i,j,n;for(t=0;t<10;t++){ clock(t);sound(590);for(n=0;n<4;n++){ delay(100000000);} nosound();for(n=0;n<6;n++){ delay(100000000);} for(j=8;j<=18;j++){ for(i=1;i<=80;i++){ gotoxy(i,j);putchar(0);} } } } void clock(int t){ int i,j;textcolor(11);if(t==0){ for(i=0;i<11;i++){ gotoxy(60,8+i);cprintf(“%c”,14);} for(i=0;i<11;i++){ gotoxy(51,8+i);cprintf(“%c”,14);} for(j=0;j<11;j+=10){ for(i=0;i<8;i++){ gotoxy(59-i,8+j);cprintf(“%c”,14);} } } if(t==1){ for(i=0;i<11;i++){ gotoxy(60,8+i);cprintf(“%c”,14);} } if(t==2){ for(j=0;j<2;j++){ for(i=0;i<6;i++){ gotoxy(60-j*8,8+i+j*5);cprintf(“%c”,14);} } for(j=0;j<11;j+=5){ for(i=0;i<9;i++){ gotoxy(60-i,8+j);cprintf(“%c”,14);} } } if(t==3){ for(i=0;i<11;i++){ gotoxy(60,8+i);cprintf(“%c”,14);} for(j=0;j<11;j+=5){ for(i=0;i<8;i++){ gotoxy(59-i,8+j);cprintf(“%c”,14);} } } if(t==4){ for(i=0;i<11;i++){ gotoxy(60,8+i);cprintf(“%c”,14);} for(i=0;i<6;i++){ gotoxy(52,8+i);cprintf(“%c”,14);} for(i=0;i<8;i++){ gotoxy(59-i,13);cprintf(“%c”,14);} } if(t==5){ for(j=0;j<2;j++){ for(i=0;i<6;i++){ gotoxy(52+j*8,8+i+j*5);cprintf(“%c”,14);} } for(j=0;j<11;j+=5){ for(i=0;i<9;i++){ gotoxy(60-i,8+j);cprintf(“%c”,14);} } } if(t==6){ for(j=0;j<2;j++){ for(i=0;i<6;i++){ gotoxy(52+j*8,8+i+j*5);cprintf(“%c”,14);} } for(i=0;i<6;i++){ gotoxy(52,13+i);cprintf(“%c”,14);} for(j=0;j<11;j+=5){ for(i=0;i<9;i++){ gotoxy(60-i,8+j);cprintf(“%c”,14);} } } if(t==7){ for(i=0;i<11;i++){ gotoxy(60,8+i);cprintf(“%c”,14);} for(i=0;i<8;i++){ gotoxy(59-i,8);cprintf(“%c”,14);} } if(t==8){ for(i=0;i<11;i++){ gotoxy(60,8+i);cprintf(“%c”,14);} for(i=0;i<11;i++){ gotoxy(52,8+i);cprintf(“%c”,14);} for(j=0;j<11;j+=5){ for(i=0;i<8;i++){ gotoxy(59-i,8+j);cprintf(“%c”,14);} } } if(t==9){ for(i=0;i<11;i++){ gotoxy(60,8+i);cprintf(“%c”,14);} for(i=0;i<6;i++){ gotoxy(52,8+i);cprintf(“%c”,14);} for(j=0;j<2;j++){ for(i=0;i<8;i++){ gotoxy(59-i,8+j*5);cprintf(“%c”,14);} } } } C語言程序課程設計心得體會 學習c語言不能停留在學習它的語法規(guī)則,而是利用學到的知識編寫c語言程序,解決實際問題。那么,現(xiàn)在就來看看,以下兩篇關于C語言程序課程設計心得體會的范文!C語言程序課程設計心得體會1 在科技高度發(fā)展的今天,計算機在人們之中的作用越來越突出。而c語言作為一種計算機的語言,我們學習它,有助于我們更好的了解計算機,與計算機進行交流,因此,c語言的學習對我們尤其重要。 在這個星期里,我們專業(yè)的學生在專業(yè)老師的帶領下進行了c語言程序實踐學習。在這之前,我們已經(jīng)對c語言這門課程學習了一個學期,對其有了一定的了解,但是也僅僅是停留在了解的范圍,對里面的好多東西還是很陌生,的在運用起來的時候還是感到很棘手,畢竟,萬事開頭難嘛。 由于時間的關系,我們的這次實踐課程老師并沒有給我們詳細的介紹,只是給我們簡單的介紹了幾個比較重要的實際操作。包括了程序模塊處理。簡單界面程序。高級界面程序。程序的添加修改。用程序做一元線性回歸處理以及用c語言程序來畫粒度分布圖等這幾樣比較重要的時間操作。 上機實驗是學習程序設計語言必不可少的實踐環(huán)節(jié),特別是c語言靈活、簡潔,更需要通過編程的實踐來真正掌握它。對于程序設計 語言的學習目的,可以概括為學習語法規(guī)定、掌握程序設計方法、提高程序開發(fā)能力,這些都必須通過充分的實際上機操作才能完成。 學習c程序設計語言除了課堂講授以外,必須保證有不少于課堂講授學時的上機時間。因為學時所限,課程不能安排過多的統(tǒng)一上機實驗,所以希望學生有效地利用課程上機實驗的機會,盡快掌握用c語言開發(fā)程序的能力,為今后的繼續(xù)學習打下一個良好的基礎。為此,我們結合課堂講授的內容和進度,安排了12次上機實驗。課程上機實驗的目的,不僅僅是驗證教材和講課的內容、檢查自己所編的程序是否正確,課程安排的上機實驗的目的可以概括為如下幾個方面: 1、加深對課堂講授內容的理解 課堂上要講授許多關于c語言的語法規(guī)則,聽起來十分枯燥無味,也不容易記住,死記硬背是不可取的。然而要使用c語言這個工具解決實際問題,又必須掌握它。通過多次上機練習,對于語法知識有了感性的認識,加深對它的理解,在理解的基礎上就會自然而然地掌握c語言的語法規(guī)定。對于一些內容自己認為在課堂上聽懂了,但上機實踐中會發(fā)現(xiàn)原來理解的偏差,這是由于大部分學生是初次接觸程序設計,缺乏程序設計的實踐所致。 學習c語言不能停留在學習它的語法規(guī)則,而是利用學到的知識編寫c語言程序,解決實際問題。即把c語言作為工具,描述解決實際問題的步驟,由計算機幫助我們解題。只有通過上機才能檢驗自己是否掌握c語言、自己編寫的程序是否能夠正確地解題。 通過上機實驗來驗證自己編制的程序是否正確,恐怕是大多數(shù)同 學在完成老師作業(yè)時的心態(tài)。但是在程序設計領域里這是一定要克服的傳統(tǒng)的、錯誤的想法。因為在這種思想支配下,可能你會想辦法去“掩蓋”程序中的錯誤,而不是盡可能多地發(fā)現(xiàn)程序中存在的問題。自己編好程序上機調試運行時,可能有很多你想不到的情況發(fā)生,通過解決這些問題,可以逐步提高自己對c語言的理解和程序開發(fā)能力。 2、熟悉程序開發(fā)環(huán)境、學習計算機系統(tǒng)的操作方法 一個c語言程序從編輯、編譯、連接到運行,都要在一定的外部操作環(huán)境下才能進行。所謂“環(huán)境”就是所用的計算機系統(tǒng)硬件、軟件條件,只有學會使用這些環(huán)境,才能進行程序開發(fā)工作。通過上機實驗,熟練地掌握c語言開發(fā)環(huán)境,為以后真正編寫計算機程序解決實際問題打下基礎。同時,在今后遇到其它開發(fā)環(huán)境時就會觸類旁通,很快掌握新系統(tǒng)的使用。 3、學習上機調試程序 完成程序的編寫,決不意味著萬事大吉。你認為萬無一失的程序,實際上機運行時可能不斷出現(xiàn)麻煩。如編譯程序檢測出一大堆錯誤。有時程序本身不存在語法錯誤,也能夠順利運行,但是運行結果顯然是錯誤的。開發(fā)環(huán)境所提供的編譯系統(tǒng)無法發(fā)現(xiàn)這種程序邏輯錯誤,只能靠自己的上機經(jīng)驗分析判斷錯誤所在。程序的調試是一個技巧性很強的工作,對于初學者來說,盡快掌握程序調試方法是非常重要的。有時候一個消耗你幾個小時時間的小小錯誤,調試高手一眼就看出錯誤所在。通過這次為數(shù)不多的幾天計算機實踐學習,我們了解了一些關于c語言的知識,理解鞏固了我們c語言的理論知識,著對我們將來到社會工作將會有莫大的幫助。同時它讓我知道,只要你努力,任何東西都不會太難。 c語言課程設計心得體會2 本學期我們開設了《模擬電路》與《數(shù)字電路》課,這兩門學科都屬于電子電路范疇,與我們的專業(yè)也都有聯(lián)系,且都是理論方面的指示。正所謂“紙上談兵終覺淺,覺知此事要躬行?!睂W習任何知識,僅從理論上去求知,而不去實踐、探索是不夠的,所以在本學期暨模電、數(shù)電剛學完之際,緊接著來一次電子電路課程設計是很及時、很必要的。這樣不僅能加深我們對電子電路的任職,而且還及時、真正的做到了學以致用。 這兩周的課程設計,先不說其他,就天氣而言,確實很艱苦。受副熱帶高氣壓影響,江南大部這兩周都被高溫籠罩著。人在高溫下的反應是很遲鈍的,簡言之,就是很難靜坐下來動腦子做事。天氣本身炎熱,加之機房里又沒有電扇、空調,故在上機仿真時,真是艱熬,坐下來才一會會,就全身濕透,但是炎炎烈日擋不住我們求知、探索的欲望。通過我們不懈的努力與切實追求,終于做完了課程設計。 在這次課程兼職設計過程中,我也遇到了很多問題。比如在三角波、方波轉換成正弦波時,我就弄了很長時間,先是遠離不清晰,這直接導致了我無法很順利地連接電路,然后翻閱了大量書籍,查資料,終于在書中查到了有關章節(jié),并參考,并設計出了三角波、方波轉換 成正弦波的電路圖。但在設計數(shù)字頻率計時就不是那么一帆風順了。我同樣是查閱資料,雖找到了原理框圖,但電路圖卻始終設計不出來,最后實在沒辦法,只能用數(shù)字是中來代替。在此,我深表遺憾!這次課程設計讓我學到了很多,不僅是鞏固了先前學的模電、數(shù)電的理論知識,而且也培養(yǎng)了我的動手能力,更令我的創(chuàng)造性思維得到拓展。希望今后類似這樣課程設計、類似這樣的鍛煉機會能更多些!c語言 高級語言程序設計 課程設計報告 Experiment Designing reporter 課程名稱:高級語言程序設計 英文名稱 : C Program Experiment Designing 專業(yè):自動化 111 學號: XXX 姓名: XXX 指導教師: XXX 日期: 2012 年 6月 17日至 2011 年6 月 20 日 山東工商學院信電學院 一:課程設計內容 程序功能介紹 貪吃蛇游戲是一個經(jīng)典小游戲,深受眾多玩家喜愛,其規(guī)則是:一條蛇在封閉圍墻里,圍墻里隨機出現(xiàn)一個食物,通過按鍵盤四個光標鍵控制蛇向上下左右四個方向移動,蛇頭撞倒食物,則食物被吃掉,蛇身體長一節(jié),同時記10分,接著又出現(xiàn)食物,等待蛇來吃,如果蛇在移動中撞到墻或身體交叉蛇頭撞倒自己身體游戲結束。此游戲不僅能鍛煉人的思維敏捷性,而且還可以提高玩家的邏輯判斷能力。設計思路 我們小組稱設計本次課題——貪吃蛇的思路為“貪快速上手貪吃蛇三步曲”: 第一步: 尋找到一個真正可以運行的已用C編好的貪吃蛇。因為我們畢竟從未看到過用C編游戲的程序,讓我們兩手一抹黑的開始編寫是有一定的困難的,如果我們自己找一個已經(jīng)設計好的程序,以此為跳板實現(xiàn)我們想要達到的效果,那么肯定是高效的。所以我們組統(tǒng)一決定,去尋找一個可以運行的C編譯的貪吃蛇。第二步: 運行游戲并了解游戲程序。 我們認為,只有你運行并了解一個游戲,才能知道游戲里需要什么樣的改進和創(chuàng)新,如果你自己本身就沒玩過這個游戲,那么你就是再有技術,你也永遠改進和改編不了一個游戲,因為你根本不知道你在干什么。 同樣重要的是了解游戲程序。因為只有看懂了程序,才能實現(xiàn)對他的改編,才能游刃有余。第三步: 尋找模塊并分類,而后進行改編。 尋找到你想要改變的游戲內容的控制模塊,比如,我想要增加一堵墻,那么就應該找到 void DrawK(void){ setcolor(11); setlinestyle(SOLID_LINE,0,THICK_WIDTH);for(i=200;i<=500;i+=10) rectangle(i,200,i+10,209);} 然后要找到:改變蛇初始長度、顏色、初始位置的模塊,改變蘋果出現(xiàn)位置的模塊,讓蛇見墻死的模塊,讓蛇吃蘋果加長的模塊???.并且進行分類,這樣下次再想實現(xiàn)某個目標時,可以一目了然的進行改編。對于找到的模塊如何進行改編呢?怎么才能知道某個數(shù)值或函數(shù)代表什么呢? 我們有兩個方法: 1.)看名字,比如snakecolor(),很明顯他的意思是蛇的顏色。2.)控制變量猜想,比如設置墻的時候for(i=200;i<=500;i+=10); rectangle(i,300,i+10,309);中的200,500,300,209 代表什么呢?我們可以猜想:它很像是坐標上的(x,y)的格式,是不是呢?可可以先讓其他數(shù)值不變,只讓309改變,改變后發(fā)現(xiàn)上面的墻變粗了,由此可見這個數(shù)字控制的是一堵墻的最下面一行的坐標。 關于該程序的相關分析思路答題模板: 1.貪吃蛇程序流程圖如下: 二.貪吃蛇程序的改編: 經(jīng)過小組成員的認真研究我們對其進行了如下改編 第一步加墻 void DrawK(void){ /*setbkcolor(MAGENTA);*/ setcolor(5);// 可以改變顏色 setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*設置線型*/ 橫向上的墻: for(i=100;i<=600;i+=10)// 本行代表行坐標上:100代表墻的初始位置,i<=600代表墻的結尾。 { rectangle(i,60,i+10,69);//本行代表縱坐標上:60代表墻的最上面一行的位置,69代表墻最下面一行的位置。69-60=9,9代表墻塊的厚度 } 縱向上的墻: for(i=100;i<=400;i+=10)//本行代表縱坐標上:100代表墻的初始位置,i<=400代表墻的結尾 { rectangle(100,i,109,i+10);//本行代表縱坐標上:100代表墻的最左邊面一行的位置,69代表墻最右面一行的位置。69-60=9,9代表墻塊的寬度 } 我們認為本模塊最重要的是for語句控制的坐標代表的意思。只要明白了坐標的意思,就可以實現(xiàn)對游戲的改編。 第二步就是進行對新加入的墻蛇是否撞上死亡 讓蛇撞墻死 if(snake.x[0]>190&&snake.x[0]< 510&&snake.y[0]>=200&& snake.y[0]<=215) /*其中,對x,y范圍的控制,實際是對蛇撞擊的死亡區(qū)域的限制。*/ { GameOver();/*本次游戲結束*/ snake.life=1;/*蛇死*/ } 相應的新添加的墻。 for(i=200;i<=500;i+=10)/*畫圍墻*/ { rectangle(i,200,i+10,209);/*指定位置*/ 第三步食物的定點出現(xiàn) if(food.yes==1)/*需要出現(xiàn)新食物*/ 這里說明一下:rand()產生0-65535的數(shù),在limits.h里有定義%400后產生一個0-399的數(shù)+60 則為 60 –459,即:%400+60意思是在60~399之間隨機產生一個數(shù)。 { food.x=rand()%400+60; food.y=rand()%350+60; while(food.x%10!=0)/*食物隨機出現(xiàn)后必須讓食物能夠在整格內,這樣才可以讓蛇吃到*/ food.x++; while(food.y%10!=0) food.y++; food.yes=0;/*畫面上有食物了*/ } 如果將food.x=(常數(shù)a)那么食物就會出現(xiàn)在x=a行的隨機列,對于food.y=(常數(shù)b)那么食物就出現(xiàn)在y=b列的隨機行。 第四步對食物墻壁的顏色以及對蛇的運動速個性化調節(jié) setcolor(4);// 對顏色的調整 int gamespeed=50000;/*游戲速度自己調整*/ 通過改變變量的值,就可以個性化選擇自己喜歡的顏色,這將是一場別開生面的游戲界面。* 紅色代表解析淺藍代表提示 三.課程設計總結 有言曰:“實踐出真知”,在這幾天的課程設計實踐中,我們組三人真正的體會到了這句話的真諦。 在經(jīng)歷了一學期的C語言學習后,我們從以往的“紙上談兵”直接過渡到“實際作戰(zhàn)”。我們實現(xiàn)了讓靜態(tài)的程序變成動態(tài)的游戲效果,雖然我們只是改編了一下別人做好的程序,但我們同樣由此獲益匪淺,感觸頗深,當然也發(fā)現(xiàn)了許多自己的不足。 首先,在我們剛剛進行第一步“尋找程序”的時候,就被擱淺了,因為我們發(fā)現(xiàn),在網(wǎng)上能找到一個真正符合我們使用標準的程序很難,就是找到了幾個也沒有能運行它們的程序。我們花費了前兩天的時間來尋找能夠使用的程序和軟件,但最后還是一無所獲,正當我們一籌莫展的時候,我們的導師——楊老師給我們帶來了曙光,使得我們在黑暗中找到了希望的光明,楊老師給我們傳來了一個上屆師哥做好的程序,并且把它的運行軟件也給了我們,這對我們來說無疑是雪中送炭,得到這個程序后,我們三個人看到了C語言運行一個游戲的流程和方法,我們腦中也大概有了一個思路。我們三個人以此程序為跳板,直接開始對程序模塊進行挑選,因為我們已經(jīng)浪費了兩天,所以我們決定進行分工作業(yè),分別去尋找:筑墻模塊,加蘋果模塊,撞墻死模塊。最后我們用了一下午時間完成了三大步中的前兩大步和第三步的第一部分,剩下的就是最重要而充滿挑戰(zhàn)的改編了,從以上的操作中,讓我們明白了找對一個平臺的重要性,這個平臺就是老師給我們的程序,就是我們的前進方向。沒有了方向了的征程,一開始就是個錯誤。在我們尋找程序模塊的時候,我們對于程序中的很多東西都是模模糊糊的概念,比如struck是什么,比如for語句的使用,以及for語句的循環(huán)體是什么,當然我們也發(fā)現(xiàn)了定義字符在長的程序中的方便與重要性。還有就是我們發(fā)現(xiàn)程序在編寫時的規(guī)范性很重要,比如同級別花括號的位置的對應,對應好了,模塊就好找,對應不好就很亂。還有定義函數(shù)及變量的時候,函數(shù)名字和變量名最好是見名知意,比如我們所看的程序中,gamespeed,snakecolour,food.....在最后的攻堅階段,為了實現(xiàn)對程序的改編,我們使用控制變量猜想法是正確的選擇,比如設置墻的時候for(i=200;i<=500;i+=10); rectangle(i,300,i+10,309);中的200,500,300,209 代表什么呢?我們猜想:它很像是坐標上的(x,y)的格式,是不是呢?我們先讓其他數(shù)值不變,只讓309改變,改變后發(fā)現(xiàn)上面的墻變粗了,由此我們知道這個數(shù)字控制的是一堵墻的最下面一行的坐標。我們用這個方法知道了其他很多數(shù)值的用途。我們用這種方法先是知道了如何設置一堵墻,在我們欣喜設置一堵墻以后才發(fā)現(xiàn):蛇撞了墻后不死。在我們進行了全局來看以后才知道,原來設計一堵墻,都要再設計一個if語句來使得蛇在這個范圍內會死亡。并且我們發(fā)現(xiàn)在設計這個if語句的時候,不僅要計算好墻的坐標,而且還要用好邏輯語言(&&,||?。┩瑫r語句的運算順序也很重要。剛一開始我們忽略的&&和關系運算符級別的高低,使得我們設計的墻,總是撞不死蛇,為此我們很是惱火,著急的組員還在這里發(fā)生了點小摩擦,由此可見C語言的嚴謹性! 最后我們又通過在網(wǎng)上查找信息,知道了隨機數(shù)發(fā)生器randomize()的用法:rand()=x%+d 意思是說在d~(x-1)之間隨機產生一個數(shù)字。我們很自然的聯(lián)想到,如果把food.x等于常數(shù)a;把food.y等于一個;x%+d的隨機數(shù),那不就能固定只在某一行出現(xiàn)蘋果了嗎?所以我們覺得,充分利用手邊的資源也是很重要的,畢竟C語言很高深,課本上的東西總是有限的,要想知道更多的東西還需多練習,多查閱資料。總之:革命尚未成功,通知還需努力??!四個人感受: 湯X: 就我個人而言,這次課程設計,我覺得我最大的收獲就是:我明白了,我們其實真的沒那么厲害,我們真的還有很多東西不會,我們真的連課本上的基本東西都沒掌握,課本上的東西,真的也只是C語言這個大海中的一滴水而已。而在我本人還沒有掌握好課本的知識點的情況下,做起這個程序自然很費事,一個簡單的課本P293講到的struct結構體,我一開始竟然忘記它是什么意思,不知道它是什么,就更不用談怎么用它了。還有邏輯語言的使用。我想,現(xiàn)在肯定有很多同學還不知道邏輯運算的優(yōu)先次序吧?這個問題我本人在使用邏輯語言的時候也不太會,還查看了書。像這些小的知識點,我個人認為如果掌握不好的話,是不可能讓整個大程序運行起來的。還有比如我在遇到程序顯示“else多余”的警告時候不不知所措,問了老師才知道是if()后面加了“;”而且if沒有用“{}”來固定范圍,這個錯誤原因是分號使得if語句結束了,孤立的else當然是多余的了。一個小小的分號使得程序無法運行,由此可見在今后的編程中,一定要注意謹慎,仔細。同時要注意記住平時編程的時候,出現(xiàn)的錯誤指示是什么意思。比如這次的“else多余”就是因為if后多了分號。還有在編程時候,書寫一定要規(guī)范,特別是if語句的花括號的位置要對應起來,因為位置決定范圍。注意定義變量和函數(shù)要使用規(guī)范的英文單詞,這樣才能見名知意,為以后修改找變量節(jié)省時間。對于這次課題中,“設計一個墻,就要對應一個函數(shù)舍得蛇撞墻死”,讓我明白,C語言程序中各部分的聯(lián)系性,牽一發(fā)而動全身,所以在編程時一定要注意全局的把握。我們最后還要說說在編程中,好好利用網(wǎng)絡資源,因為課本里的東西總是有限的,而C語言又那么高深,像隨機數(shù)發(fā)生器,還有顏色的定都是我第一次接觸,這些東西的用處可是頗大,以后一定好好學習。多看,多練,多總結。最后還要感謝指導老師,楊老師對我學習的幫助和指導。徐XXX: 剛開始拿到題目時候什么也不會一片茫然,從網(wǎng)上找了一個程序一看,太嚇人了,這么長怎么看啊,而且還是錯誤的。沒辦法只能硬著頭皮去改了,但是在改的過程中才發(fā)現(xiàn)其實c語言沒有想象的那么難而且還很有意思,只是自己平時沒有好好學所以在改的時候非常吃力,有很多簡單的知識都不知道,沒有記住。沒辦法只能借助與課本了。但是幾天下來發(fā)現(xiàn)自己已經(jīng)不再像以前那樣是個菜鳥了,雖然很多知識還沒掌握。同時在編改程序的時候切記不能煩躁要靜心慢慢來,好幾次自己都因心燥出現(xiàn)了很多不該出現(xiàn)的錯誤浪費了很多時間。 對鍵盤的熟悉在編程時也是很重要的,自己在寫的時候往往就是跟一指禪差不多眼睛盯著鍵盤打,打錯了也不知道最后導致整個程序都是錯誤的,就因為一個打錯了一個字母。 總的來說這次課程設計收獲很多,也知道了自己的不足,在以后的學習中要多實踐,實踐很能提高自己的能力。劉XX: 4天的C語言課程設計上機學習讓我感受頗多,每天都發(fā)現(xiàn)新的問題,又不得不絞盡腦汁解決問題,心情就像正弦函數(shù),隨著問題的出現(xiàn)和解決一起一伏。剛開始接觸貪吃蛇的C語言成尋時,看著C-free上面出現(xiàn)的有十幾個錯誤的程序,一片茫然不知所措。只能繼續(xù)在網(wǎng)上搜索錯誤較少的程序,并結合書上的基礎知識查看錯誤所在,最終發(fā)現(xiàn)是 作為小組中唯一的女生,明顯感覺有壓力,打字速度不如另外兩個男生,對游戲和程序的敏感也不如他們強,有種小小的挫敗感。旁邊小組的同學也給我很大的壓力。他們自己編寫程序,我很佩服他們,越是這樣想。心里越著急,越不能解決問題,每當感覺有壓力的時候,就提醒自己心靜,認真的看程序。在學習過程中,深深的發(fā)現(xiàn)了自己的不足之處,對于C語言,只學了一點點皮毛東西,想要學好C語言,編好程序,還要付出很多的努力,還要用更多的時間來學習C語言這門深奧的學科?,F(xiàn)在只能借用別人已經(jīng)寫好的程序,在別人的基礎上,一點點進步和學習,比如程序中筑墻,需要仿照已有的程序,結合邏輯運算,關系運算和數(shù)學知識才能讓蛇撞墻死。蘋果位置的出現(xiàn)也同樣需要進一步的搜索,通過更改食物的橫縱坐標以及出現(xiàn)的概率來確定食物的位置。編寫程序時,也發(fā)現(xiàn)書上的東西對于程序的某些部分來說,沒有什么作用,顯得太淺顯,想要實現(xiàn)老師給出的一些要求,還需要實踐,通過上機學習,自己摸索才能成功。一次次修改,一次次失敗,就像貪吃蛇想方設法吃蘋果會Game over,我們只有認真學好基礎理論,并結合實踐經(jīng)驗才會取得進步。 在這次學習過程中,我很感謝我的組員,雖然有時我們的意見出現(xiàn)分歧,但是通過大家的共同努力,我們收獲了很多,一起討論,一起研究怎樣解決問題,對老師提出的要求個個擊破,我們擰成一股繩共同應對問題,讓我感受了團隊的力量希望在以后的學習過程中,我們依然能夠互相幫助,共同進步。 五 課程設計修改后的程序.加墻 for(i=200;i<=500;i+=10)/*畫圍墻*/ { rectangle(i,200,i+10,209);/*指定位置1*/ } for(i=120;i<=200;i+=10)/*畫圍墻*/ { rectangle(100,i,109,i+10);/*指定位置2*/ } 2.指定位置加蘋果 if(food.yes==1)/*需要出現(xiàn)新食物*/ { food.x=rand()60; food.y=rand()%200+60; while(food.x%10!=0) food.x++; while(food.y%10!=0) food.y++; food.yes=0;3.指定地方撞墻死 if(snake.x[0]>190&&snake.x[0]< 510&&snake.y[0]>=200&& snake.y[0]<=215) { GameOver();/*本次游戲結束*/ snake.life=1;/*蛇死*/ } if(snake.x[0]>90&&snake.x[0]<110&&snake.y[0]>=110&&snake.y[0]<=215) { GameOver();/*本次游戲結束*/ snake.life=1;/*蛇死*/ } }第二篇:C語言課程設計數(shù)字鐘程序
第三篇:數(shù)字鐘程序-c語言課程設計
第四篇:C語言程序課程設計心得體會
第五篇:c語言程序貪吃蛇課程設計報告