c語言課程設計引言
① c語言課程設計論文
談及C語言,我想凡是學過它的朋友都有這樣一種感覺,那就是「讓我歡喜讓我憂。」歡喜的是,C語言功能非常強大、應用廣泛,一旦掌握了後,你就可以理直氣壯地對他人說「我是電腦高手!」,而且以後若是再自學其他語言就顯得輕而易舉了。憂慮的是,C語言猶如「少林武功」一般博大精深,太難學了。其實就筆者認為C語言並非是「difficult(困難)」的,只要你能理清思路,掌握它的精髓,那麼自學C語言是一件非常容易且又其樂無窮的事。今天本人就與大家一起談談如何學習C語言或者說學習C語言應從哪幾方面著手。
了解一些基本知識
一.C語言的背景
就個人感觸,無論學習哪門語言首先應該了解一下自己所學語言的背景,也可以說它的發展史。
C語言屬於高級程序語言的一種,它的前身是「ALGOL」。其創始人是布朗·W·卡尼漢和丹尼斯·M·利奇。C語言問世時是帶有很大的局限性,因為它只能用於UNIX系統上。然而隨著科學技術的進步,計算機工業的發展,C語言逐漸脫離UNIX。1987年美國標准化協會制定了C語言的國際標准,簡稱「ANSI C」,從此以後它便成為一種廣泛使用的程序語言。C語言的優點很多,主要的有如下四點:
1.兼備高級語言與低級語言的優點,屬於一種中間語言。
2.它是一種結構化程序設計語言,非常適合結構化程序設計。
3.有較豐富的數據類型、運算符以及函數供以選用。
4.直接與內存打交道,使修改、編輯其他程序與文檔變得輕松,簡單。
二.二大語系二種不同的學習方法
其實高級程序語言分為兩大語系。例如:C,C++(C語言的擴展),QBASIC,VB(BASIC的可視化),JAVAs cript,Js cript ,VBs cript,JAVA,ASP,FOXPRO,PERL等等。一路是以C為主的程序語言,例如:JAVAs cript,JAVA等,這類語言在函數的調用,程序語句的書寫,循環的控制都極為相似。另一路是以BASIC為首的程序語言,例如:FOXPRO,VBs cript等,此類語言同樣具有相似的函數調用,程序語句書寫以及循環控制,但與C語系是不同的。因此若是您以前是從QBASIC起家的,那麼在學習C語言前最好是先洗洗腦,千萬不要把學習BASIC的方法以及思路用在C身上。
講到這里,我想大家對C語言一定有了感性認識吧!下面讓我們再升華一下,全方位親密接觸它。學習C語言必須從以下四點入手,也就是說,只要你能掌握這四點的內容,那麼基本上就大功告成了。
親密接觸C語言
一.輸入輸出
C語言的輸入輸出是非常嚴格的,或許在其他程序語言中我們可以不關心這個問題,但在C語言中,我們必須要徹底了解它。由於篇幅有限,因此筆者不能詳談,有興趣的朋友可以參考由著名程序語言教授譚浩強先生主編,由清華大學出版社出版的《C程序設計第二版》。不過這里筆者還是有幾點要簡單的談一下。
1.二維浮點數數組的輸入
二維浮點數數組的輸入(即:通過鍵盤給二維浮點數數組賦值)在很多專業書中都沒有詳細講過這個問題。在給二維浮點數數組賦值時一定要先聲明一個變數,接著把數值賦予這個變數,最後把變數數值賦予二維浮點數數組賦值。
2.注意輸出格式中「%」後的字元
C語言的輸出說復雜不復雜,因為常用的都很簡單。可說不復雜也未必,記得曾在一次等級考前輔導我們C語言的教授講道:「如果C語言要考得很難的話,根本不用考什麼指針,只要專考輸出格式,我想百分之九十九的學生都不及格。」當時我們無不認同。從這則事例中可以看出C語言的輸出格式之復雜程度。因此大家在學習它時千萬要學會辨別輸出格式中「%」後的字元,每個字元都有其意義,也都有其作用。
二.優先順序
說道優先順序,有很多朋友都不是很了解或說很模糊。為此筆者想先通過一個例子讓各位有個概念。什麼叫優先順序?比方說,我們在公交車終點站排座隊時總會遇到70歲以上的老人不需要排隊就能上車的情景,這就是優先順序的涵義。C程序在運行時也象排隊坐車一樣,首先照顧那些優先順序高的運算符,若是優先順序相同,那麼就象遇到兩位(或兩位以上)70歲以上的老人那樣,讓他們依次上車。但是C語言中的優先順序的運算並不是千篇一律的,只能說是在大多數情況下,有些運算符的優先順序有其自己的特點,因此這點大家要注意。例如條件表達式:條件?結果1:結果2,這種表達式很多朋友都知道,它的作用與IF…ELSE…條件判斷語句很雷同,它運算時的優先順序就不是按照C語言的規則來完成的。所以說對於優先順序各位編程愛好者一定靈活掌握,不要死記硬背。
三.指針
就個人認為,C語言中的指針是最有特色的,當然也是最難學的。指針說穿了,其實是變數的一種表現形式,只不過這種變數記載的不是數值而是地址。就象一個人可以用姓名來表示自己,也可以用身份證號碼來表示自己一樣。筆者涉足編程已經有三年多了,在這期間曾經收到過很多網友的電子郵件詢問學習指針的方法。就本人感觸,學習指針最好是先學些計算機硬體工作的原理,例如:直接定址,間接定址等,只有了解了這些內容以後,你再學指針就比較容易理會,畢竟C語言是一門介於機器語言與高級語言中間的語言,沒有一些硬體工作知識是很難領悟它的真諦的。然而事事並非絕對,如果你沒有這些知識也不要緊,只要清楚知道以下筆者總結的二點再加上多練習便可:
1.指針是地址變數:它的值有兩種:其一是地址,其二是內容。不同的表達方式可以取不同的值,這有點象一個家庭地址在不同的場合標識的人物也不同。例如:父母親在他們的單位所登記的家庭地址就代表他們自己,而你在學校中登記的同樣的家庭地址就代表你自己。
2.指針是可以運算的,它的運演算法則與變數是一致的。
另外,在編寫一個程序時,除非萬不得已,一般不要使用指針變數。因為指針是比較復雜的,用不好就「當機」。所以筆者建議各位對於指針只要能看懂就行,當然如果你是准備參加考試的就另當別論了。
四.函數
雖說很多程序語言都有函數這一內容,但筆者覺得C語言的函數是最有魅力的。如果你能完全掌握C語言的函數,那麼學習C++就不成問題了(C++是一門建立在C語言上,但又不同於C語言的高級程序語言,它增添了很多函數。)。學習函數的方法是比較簡單的,只有兩個字「牢記」,即:牢記函數的功能,牢記函數的用途以及如何輸入輸出。有些朋友認為,程序語言中的函數沒有多大用處,其實這並不正確,函數從本質上講是一段通用程序,用它可以幫助我們節約很多編程的時間,一個聰明的編程者在編寫程序前往往總是先找自己所編寫的程序中有多少是可以用函數來代替的。筆者曾經作過一個比較字元串的實驗,用C語言中的strcmp()函數只要一句話,而自己編寫的話30句話都擺不平,可想而知函數是多麼實用呀!
② c語言課程設計報告
作業的話自己做最有幫助了、
我們老師也布置過,做好了,不過沒有流程圖
③ c語言課程設計怎麼寫
1 軟體開發平台
2 軟體功能說明
2.1 功能分析說明圖.
2.2 各項功能說明
3。軟體設計詳細內容
3.1 採用的主要數據結構類型
3.2 流程圖
4 軟體測試
4.1 軟體測試用例
4.2 軟體測試報告
5 總結和致謝
6 附錄
6.1 軟體使用說明
6.2 源碼
6.3 參考文獻
④ C語言課程設計前言
C語言作為一門最通用的語言,在過去很流行,將來依然會如此。幾乎每一個理工科或者其他專業的學生毫不例外地要學習它。記得大學里,很多學校都把譚浩強教授的《C程序設計》作為入門教材,這是絕佳的選擇。然而,要更進一步,更全面而深入地學習呢?顯然有點力不從心。本書正是為了彌補這個缺憾而寫的,希望能對想比較全面而深入學習C語言程序設計的人有所幫助。
從C語言產生到現在,它已經成為最重要和最流行的編程語言之一。在各種流行編程語言中,都能看到C語言的影子,如Java的語法與C語言基本相同。學習、掌握C語言是每一個計算機技術人員的基本功之一。
C語言具有高級語言的強大功能,卻又有很多直接操作計算機硬體的功能(這些都是匯編語言的功能),因此,C語言通常又被稱為中級語言。學習和掌握C語言,既可以增進對於計算機底層工作機制的了解,又為進一步學習其他高級語言打下了堅實的基礎
從入門到精通:本書分上下兩篇,上篇針對初學者,從C語言的基礎開始,使略有計算機基礎的人都能容易地學會C語言編程。下篇則介紹了C語言的高級程序設計技巧,包括常用演算法、底層控制滑鼠、繪圖、加密、壓縮等應用。
適用多種操作系統:本書實例都通過GCC編譯器調試,讀者不僅可在Windows環境下使用本書學習C語言,也可在Linux環境下使用本書學習C語言。循序漸進:本書編寫順序按C語言的知識點循序漸進地介紹。例如,先介紹數據的存儲,再介紹數據的輸入/輸出;先介紹簡單的程序設計概念,再介紹指針等C語言的難點。重點突出:指針是C語言的重點和難點,本書用了大量的篇幅,從不同方面對其進行講解,並列舉了大量的實例,幫助讀者理解並掌握指針。
然後在加點這本書分幾章,各是什麼內容,主要針對的是C語言什麼功能,最後寫些祝福大家學習進步之類的話就可以了
⑤ C語言程序課程設計前言怎麼寫啊
誒
你想問什麼
⑥ C語言課程設計 引言模板 求助!
是的,可以建立一個模板,以後就不用那麼辛苦了
⑦ C語言課程設計怎麼寫啊
寫引言,你的程序流程圖,你的每個函數的作用,你程序的測試,你遇到了什麼問題,你是怎麼解決的,你的函數中運用到了寫什麼演算法,等等
⑧ c語言課程設計
剛為別人做了一個,和你這個很像,不過用的是單項鏈表方式而不是array.
自己修改下滿足你的要求吧
#include <stdio.h>
#include <string.h>
#include <stddef.h>
struct StudentCard {
int index; //學生號
char name[80]; //姓名
int age; //年齡
char sex[80]; //性別
int classroom; //班級
char school[80]; //學校
char birthday[80]; //出生年月
struct StudentCard *next; //到下一個學生卡,鏈表
};
typedef struct StudentCard ELEMENT; //自定義符號
typedef ELEMENT *LINK;
LINK add(LINK head){ //加入一個新的學生信息,該函數將返回一個struct的指針
int index,age,classroom;
char name[80],sex[80],school[80],birthday[80];
printf("Please input index number: ");
scanf("%d",&index);
printf("Please input name: ");
scanf("%s",name);
printf("Please input age: ");
scanf("%d",&age);
printf("Please input sex(nan or nv): ");
scanf("%s",sex);
printf("Please input classroom: ");
scanf("%d",&classroom);
printf("Please input school: ");
scanf("%s",school);
printf("Please input birthday :");
scanf("%s",birthday);
if (!head){ //如果是頭鏈表為空的情況,也就是輸入第一個學生卡
head=malloc(sizeof(ELEMENT));
head->index=index;
head->age=age;
head->classroom=classroom;
strcpy(head->name,name);
strcpy(head->sex,sex);
strcpy(head->school,school);
strcpy(head->birthday,birthday);
head->next=NULL; //下一個元素為NULL,空
printf("Successful!\n");
return head; //返回頭鏈
}
else{
LINK tail=head;//用一個哨兵指針指向頭元素
while ((tail)&&(tail->index!=index))
//在tail為NULL並且tail的index不與用戶輸入的index相等之前,tail一直跳到下一個元素
tail=tail->next;
if (tail) //如果存在這個tail
printf("index has already existed! Failed!\n");
else{
tail=head;//再次初始化
while (tail->next) //當哨兵的下一個元素存在時,哨兵跳到哨兵下一個元素
tail=tail->next;
//當上面這個循環結束後,此時tail的下一個元素必定為NULL
tail->next=malloc(sizeof(ELEMENT));//創建新的元素
tail=tail->next; //跳轉到下一個新創建的元素
tail->index=index;
tail->age=age;
tail->classroom=classroom;
strcpy(tail->name,name);
strcpy(tail->sex,sex);
strcpy(tail->school,school);
strcpy(tail->birthday,birthday);
tail->next=NULL;
printf("Successful!\n");
return head;
}
}
}
void Print_ALL(LINK head){//該函數輸出所有學生信息
LINK tail=head;
if (!head) //如果頭元素為NULL,就是鏈表無一個元素
printf("Empty List!\n");
else{
printf("Indx\tName\tAge\tSex\tClass\tSchool\tBirth\n");
while (tail){//知道哨兵為NULL之前,一直輸出哨兵的內容
printf("%d\t%s\t",tail->index,tail->name);
printf("%d\t%s\t%d\t",tail->age,tail->sex,tail->classroom);
printf("%s\t%s\n",tail->school,tail->birthday);
tail=tail->next;
}
}
};
void Print_DEPEND_INDEX(LINK head){ //該函數輸出指定的學生號的學生信息
int tem;
LINK tail=head;
printf("Please input the index number of student: ");
scanf("%d",&tem);
if (!head)
printf("Empty List!\n");
else{
while ((tail)&&(tail->index!=tem))
tail=tail->next;
if (!tail)
printf("student not existed!\n");
else{
printf("Indx\tName\tAge\tSex\tClass\tSchool\tBirth\n");
printf("%d\t%s\t",tail->index,tail->name);
printf("%d\t%s\t%d\t",tail->age,tail->sex,tail->classroom);
printf("%s\t%s\n",tail->school,tail->birthday);
}
}
}
void Print_DEPEND_CLASS(LINK head){ //該函數輸出指定的班級的學生信息
int tem;
LINK tail=head;
printf("Please input classroom: ");
scanf("%d",&tem);
if (!head)
printf("Empty List!\n");
else{
while ((tail)&&(tail->classroom!=tem))
tail=tail->next;
if (!tail)
printf("No such classroom!\n");
else{
printf("Indx\tName\tAge\tSex\tClass\tSchool\tBirth\n");
while (tail){
if (tail->classroom==tem){
printf("%d\t%s\t",tail->index,tail->name);
printf("%d\t%s\t%d\t",tail->age,tail->sex,tail->classroom);
printf("%s\t%s\n",tail->school,tail->birthday);
}
tail=tail->next;
}
}
}
}
void Print_DEPEND_SEX(LINK head){ //該函數輸出男或女同學信息
char tem[80];
printf("please input sex(nan or nv): ");
scanf("%s",tem);
if (!head)
printf("Empty List!\n");
else{
LINK tail=head;
while ((tail)&&(strcmp(tem,tail->sex)!=0))
//當不相等或者tail有效時,tail跳到下一個元素
tail=tail->next;
if (!tail)
printf("No %s student!\n",tem);
else{
tail=head;
printf("Indx\tName\tAge\tSex\tClass\tSchool\tBirth\n");
while (tail){
if (strcmp(tem,tail->sex)==0){
printf("%d\t%s\t",tail->index,tail->name);
printf("%d\t%s\t%d\t",tail->age,tail->sex,tail->classroom);
printf("%s\t%s\n",tail->school,tail->birthday);
}
tail=tail->next;
}
}
}
}
LINK Edit(LINK head){ //該函數用來修改信息
int tem;
LINK tail=head;
printf("Please input index of student: ");
scanf("%d",&tem);
if (!head){
printf("Empty List!\n");
return NULL;
}
else{
while ((tail)&&(tail->index!=tem))
tail=tail->next;
if (!tail){
printf("No such student!\n");
return head;
}
else{
printf("Please input name: ");
scanf("%s",tail->name);
printf("Please input age: ");
scanf("%d",&tail->age);
printf("Please input sex(nan or nv): ");
scanf("%s",tail->sex);
printf("Please input classroom: ");
scanf("%d",&tail->classroom);
printf("Please input school: ");
scanf("%s",tail->school);
printf("Please input birthday :");
scanf("%s",tail->birthday);
printf("Edit successful!\n");
return head;
}
}
}
LINK DELETE(LINK head){ //該函數用來刪除學生信息
int tem;
LINK tail=head;
printf("Please input index of student: ");
scanf("%d",&tem);
if (!head){
printf("Empty List!\n");
return NULL;
}
else if ((head->index==tem)&&(!head->next)){//當頭元素滿足並且鏈表只有一個元素
printf("Deleted!\n");
return NULL;
}
else if ((head->index==tem)&&(head->next)){//當頭元素滿足並且鏈表有許多元素
printf("Deleted!\n");
return head->next;
}
else{ //當滿足條件的元素在鏈表中間或者結尾
while ((tail)&&(tail->index!=tem))
tail=tail->next;
if (!tail){
printf("No such student!\n");
return head;
}
else{
if (!tail->next){//當滿足條件的元素在鏈表結尾
LINK tail2=head;//新的哨兵
while (tail2->next!=tail)
tail2=tail2->next;
tail2->next=NULL; //直接指向為NULL,表示鏈表尾,跳過tail
printf("Deleted!\n");
return head;
}
else{ //當滿足條件的元素在鏈表中間
LINK tail2=head;//新的哨兵
while (tail2->next!=tail)
tail2=tail2->next;
tail2->next=tail->next; //跳過tail這個元素
printf("Deleted!\n");
return head;
}
}
}
}
void Display_MENU(){
printf("\t*********studentcard management system*********\n");
printf("\t1.Input student's informations (add a student)\n");
printf("\t2.Print all students' informations\n");
printf("\t3.Input index number,print selected student's information\n");
printf("\t4.Input classroom number,print informations of those students\n");
printf("\t5.Input index number, modify information\n");
printf("\t6.Input index number, remove information\n");
printf("\t7.Print nan or nv informations\n");
printf("\t8.Display Menu\n");
printf("\t9.Exit\n");
printf("\t***********************************************\n");
}
int main(){
LINK head=NULL; //鏈表頭的初始化
int asker;
Display_MENU();
while(1){
printf(">>");
scanf("%d",&asker);
if (asker==1)//加入新學生信息
head=add(head);
else if (asker==2)//輸出所有學生信息
Print_ALL(head);
else if (asker==3) //輸入學生號,輸出學生信息
Print_DEPEND_INDEX(head);
else if (asker==4) //輸入班級,輸出學生信息
Print_DEPEND_CLASS(head);
else if (asker==5) //輸入學生號,修改學生信息
head=Edit(head);
else if (asker==6) //輸入學生號,刪除學生信息
DELETE(head);
else if (asker==7) //輸入男或女,輸出學生信息
Print_DEPEND_SEX(head);
else if (asker==8) //顯示菜單
Display_MENU();
else if (asker==9) //退出程序,也就是退出while(1)循環
break;
else
printf("please select correct number!\n");
}
printf("system log-out!\n");
return 0;
}