c語言函數(shù)程序設(shè)計報告,C語言函數(shù)程序設(shè)計

C語言函數(shù)調(diào)用程序設(shè)計實驗報告求解。

#include?cstdio

創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)朗縣,十多年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575

void?menu(){

printf("1.求兩個數(shù)的和\n");

printf("2.求兩個數(shù)的差\n");

printf("3.求兩個數(shù)的積\n");

printf("4.求兩個數(shù)的商\n");

printf("5.求兩個數(shù)的余\n");

}

int?add(int?x,int?y){return?x+y;}

int?sub(int?x,int?y){return?x-y;}

int?mul(int?x,int?y){return?x*y;}

int?drv(int?x,int?y){return?x/y;}

int?mod(int?x,int?y){return?x%y;}

int?main(){

int?a,b,n;

printf("Please?input?2?numbers:");

scanf("%d%d",a,b);

menu();

printf("Please?input?the?number:");

scanf("%d",n);

switch(n){

case?1:printf("%d\n",add(a,b));break;

case?2:printf("%d\n",sub(a,b));break;

case?3:printf("%d\n",mul(a,b));break;

case?4:printf("%d\n",drv(a,b));break;

case?5:printf("%d\n",mod(a,b));break;

default:printf("Wrong?number!");

}

}

望采納

學生成績記錄薄 c語言 課程設(shè)計報告

C語言程序設(shè)計報告

課題名稱:學生成績管理

1 系統(tǒng)概述:

本程序為一個學生成績管理系統(tǒng),對學生的成績進行管理,學生的信息包括學號,姓名,學期,三門課程的成績,輸入這些信息,本程序可以自動計算總成績,可以按高分到低分進行排名,并對輸入信息的人數(shù)進行匯總.

2 數(shù)據(jù)結(jié)構(gòu)設(shè)計:

(1)結(jié)構(gòu)體;

(2)數(shù)組的設(shè)計:運用指針代替數(shù)組,使用指針來建立線性表,使程序更加簡潔,可讀性更強.

3 各函數(shù)的設(shè)計:

函數(shù)原型:void InitList(SqLinkList L);

功能: 創(chuàng)建一個空的線性鏈表;

入口參數(shù):L為要創(chuàng)建的線性鏈表;

出口參數(shù):創(chuàng)建鏈表的L.head為空,L.length為0;

返回值: 無;

函數(shù)原型:void EmptyLinkList(SqLinkList L);

功能: 清空整個線性鏈表;

入口參數(shù):L為要清空的鏈表名稱;

出口參數(shù):若清空成功則鏈表長度L.length為0;

返回值: 無;

函數(shù)原型:int ScanE(ElemType e);

功能: 輸入學生信息;

入口參數(shù):e為要輸入信息的學生名稱;

出口參數(shù):e.num保存學號,e.name保存姓名,e.team保存所在學期,e.s1,e.s2,e.s3分別保存三門課程的成績;

返回值: 輸入合法返回1,否則返回0;

錯誤處理:若學號、姓名等輸入不合法會有提示及重輸;

函數(shù)原型:Status SqLinkListAppend(SqLinkList L,ElemType e);

功能: 追加一個結(jié)點到線性鏈表中;

入口參數(shù):e為所追加的結(jié)點名稱,L為e所追加到的線性鏈表的名稱;

出口參數(shù):若追加成功,則e為頭結(jié)點,鏈表長度L.length增1;

返回值: 若追加成功返回1;

函數(shù)原型:Link SearchNode(SqLinkList L,int NUM);

功能: 查找學號為NUM的學生;

入口參數(shù):查找的鏈表名稱L,學號NUM;

出口參數(shù):若找到結(jié)點指針p指向該結(jié)點,否則指向空結(jié)點;

返回值: 結(jié)點指針p;

函數(shù)原型:void SearchTeam(SqLinkList L,int team);

功能: 查找學期為team的所有記錄并輸出其信息;

入口參數(shù):查找的鏈表名稱L,要查找的學期team;

出口參數(shù):無;

返回值: 無;

函數(shù)原型:void SearchUnpass(SqLinkList L,float s1,float s2,float s3);

功能: 查找所有有掛科記錄的學生并輸出其信息;

入口參數(shù):查找的鏈表名稱L,要查找的各門學科成績s1,s2,s3;

出口參數(shù):無;

返回值: 無;

函數(shù)原型:void SqLinkListSearch(SqLinkList L);

功能: 對鏈表進行分類查找;

入口參數(shù):要查找的鏈表名稱L;

出口參數(shù):無;

返回值: 無;

函數(shù)原型: void inputData(SqLinkList L);

功能: 輸入數(shù)據(jù),并追加一個結(jié)點;

入口參數(shù): L為要追加結(jié)點的鏈表名稱;

出口參數(shù): 無;

返回值: 無;

函數(shù)原型:void SqLinkListTraverse(SqLinkList L);

功能: 輸出鏈表中所有學生成績列表;

入口參數(shù):L為要輸出信息的鏈表名稱;

出口參數(shù):無;

返回值: 無;

函數(shù)原型:void PrintE(ElemType e);

功能: 輸出一個結(jié)點的所有信息;

入口參數(shù):要輸出的結(jié)點名稱e;

出口參數(shù):無;

返回值: 無;

4 使用程序的說明:

本程序為一個學生成績管理系統(tǒng)。對學生的成績信息進行管理,學生的信息包括學號、姓名、學期、三門課程的成績、平均成績、名次。本管理系統(tǒng)實現(xiàn)學生的學號、姓名、學期、每門課程的成績的錄入,并自動按平均分排名,使用時按屏幕上的提示,輸入使用代碼.如下圖所示:

例如:輸入代碼數(shù)字”1”,程序執(zhí)行”輸入學生成績或已存在的學生成績進行修改”這條小程序.輸入學生個人信息后,如下圖所示:

如此分別輸入相應(yīng)的程序代碼,就執(zhí)行相應(yīng)的程序段.

如下的程序是按學號進行成績排名:

當輸入”6”時,執(zhí)行相應(yīng)的程序,即匯總一共輸入學生的人數(shù):

5 總結(jié)和體會:

通過對C語言學習,尤其是這學期本班開展C語言雙語教學,體會到學習難的同時,也真正了解到C語言作為一門高級的計算機語言的強大功能,特別是在當今實際生活,生產(chǎn),辦公,信息管理等方面的強大作用. 這次合作我們遇到了許多的困難。時間的緊迫,知識的不足,給我很大的壓力。最終我還是還是完成了任務(wù)。團結(jié)就是力量是我這次最真切的感受。

6 程序代碼:

void InitList(SqLinkList L) {

// 構(gòu)造一個空的線性表L;

L.head = 0; //頭指針為空;

L.length = 0; //長度初始為0;

}

void EmptyLinkList(SqLinkList L){

//入口參數(shù)為整個線性表的數(shù)據(jù),功能為清空線性表;

Node *p;

if(!L.head)printf("系統(tǒng)中不存在記錄。\n");

//頭指針為空時沒有學生錄入;

else {

while (L.head){

//每個循環(huán)將下一結(jié)點賦值給頭指針,并釋放本結(jié)點空間,直至線性表清空;

p=L.head;

L.head=p-next;

free(p);

} //end while;

L.length=0; //長度為0;

printf("該管理系統(tǒng)學生信息已清空。\n");

}//end else;

}

int ScanE(ElemType e){

//輸入一個學生的成績數(shù)據(jù)結(jié)點。返回0為無效結(jié)點數(shù)據(jù),1為有效結(jié)點數(shù)據(jù);

printf("\n學號:");

scanf("%d",e.num);

if(e.num==0){

//學號為0輸入不合法,重新輸入;

printf("學號輸入不合法.\n");

return 0;

}

printf("\n姓名:");

scanf("%s",e.name);

printf("\n學期:");

scanf("%d",e.team);

while(e.team12){

//系統(tǒng)只記錄小于12的學期數(shù);

printf("輸入的學期不能大于12,請重新輸入:");

scanf("%d",e.team);

}

printf("\n成績A:");

scanf("%f",e.s1);

printf("\n成績B:");

scanf("%f",e.s2);

printf("\n成績C:");

scanf("%f",e.s3);

return OK;

}

Status SqLinkListAppend(SqLinkList L,ElemType e){

//追加一個結(jié)點到線性表中;

Node *p;

p=SearchNode(L,e.num);

//查找學號為e.num的記錄并將其地址賦給指針p;

if (p==0){

//若不存在添加學號相同的結(jié)點,追加一個結(jié)點;

p=(Node *)malloc(sizeof(Node));

if (!p) return ERROR;

memcpy((p-data),e,sizeof(ElemType));

p-next=L.head ;

L.head=p;

//追加的一個結(jié)點為首結(jié)點;

L.length++; //表長度加1;

}

else { //如果該學號記錄已存在,則進行修改操作;

memcpy((p-data),e,sizeof(ElemType));

printf("該學生記錄已經(jīng)存在,已完成修改操作。\n");

}

return OK;

}

Link SearchNode(SqLinkList L,int NUM){

//查找學生記錄,該學生的學號為NUM;

Node *p;

p=L.head; //p先指在頭結(jié)點;

while (p p-data.num !=NUM ) p=p-next;

//如果該學生的學號不為NUM則查找下一個結(jié)點;

return p;

}

void SearchTeam(SqLinkList L,int team){

//按學期查找并輸出所有該學期存在的記錄;

Node *p;

p=L.head;

int n,sum=0;

//sum記錄該學期的學生總?cè)藬?shù);

printf("請輸入您要查詢的學生的學期:");

scanf("%d",n);

printf("\n學號 姓名 學期 成績A 成績B 成績C 平均成績\n");

while(pp-next){

//如果p結(jié)點和它的下一結(jié)點不為空,且該結(jié)點的學期等于要查找學期,則格式輸出所有該學期學生信息;

if(p-data.team==n){

PrintE(p-data);

sum++;

//查找到一個該學期的學生記錄計數(shù)加1;

}

p=p-next;

//轉(zhuǎn)向下一結(jié)點;

} //end while;

if(p-data.team==n){

//如果p的下一結(jié)點為空,且本結(jié)點學期為n,則格式輸出該結(jié)點信息;

sum++;

PrintE(p-data);

}

if(sum==0)printf("沒有這學期的記錄。\n");

if(sum)printf("該學期共有%d人的記錄.\n",sum);

}

void SearchUnpass(SqLinkList L,float s1,float s2,float s3){

//查找并輸出有掛科的學生信息;

Node *p;

p=L.head;

int sum=0;

//sum計數(shù)掛科總?cè)藬?shù),初始為0;

printf("以下是有一門以上不及格科目的學生的成績:\n");

printf("\n學號 姓名 學期 成績A 成績B 成績C 平均成績\n");

while(pp-next){

//如果p及其下一結(jié)點為真,且該結(jié)點有一門以上科目分數(shù)低于60則輸出該結(jié)點成績并使sum計數(shù)加1;

if((p-data.s160)||(p-data.s260)||(p-data.s360))

{

PrintE(p-data);

sum++;

} //end if;

p=p-next;

//轉(zhuǎn)到下一結(jié)點;

} //end while;

if((p-data.s160)||(p-data.s260)||(p-data.s360)){

//查看最后一個結(jié)點,若有掛科,sum加1并格式輸出結(jié)點信息;

sum++;

PrintE(p-data);

}

if(sum==0)printf("沒有不及格的記錄。\n");

if(sum)printf("共有%d人的掛科記錄.\n",sum);

}

void SqLinkListSearch(SqLinkList L){

//分類查找學生記錄;

Node *p;

p=L.head;

int n,reg; //reg為查詢方式的指令;

printf("1--按學號查詢\n2--按學期查詢\n3--掛科學生信息列表\n");

printf("請您輸入查詢方式:");

scanf("%d",reg);

if(L.length){

if(reg3)printf("對不起沒有您要求的選項。\n");

//若reg3則輸入不合法;

else if(reg==1){

//reg==1按學號查詢;

printf("請輸入您要查詢的學生的學號:");

scanf("%d",n);

while(pp-next p-data.num !=n) p=p-next;

//當p和他下一結(jié)點為真時且結(jié)點數(shù)據(jù)不為要查找數(shù)據(jù)時轉(zhuǎn)向下一結(jié)點;

if(p-data.num==n){

//找到所要查詢結(jié)點,格式輸出;

printf("\n學號 姓名 學期 成績A 成績B 成績C 平均成績\n");

PrintE(p-data);

}

else printf("沒有您要查找的學號。\n");

} //end reg==1 if ;

else if(reg==2)SearchTeam(L,p-data.team);

//reg==2,調(diào)用SearchTeam函數(shù)按學期查詢并輸出;

else if(reg==3)SearchUnpass(L,p-data.s1,p-data.s2,p-data.s3);

//reg==3,調(diào)用SearchUnpass函數(shù),輸出全部有掛科記錄的學生信息;

}//end if;

else printf("系統(tǒng)中無記錄.\n");

}

void inputData(SqLinkList L){

//請求輸入學生成績,則追加一個結(jié)點并輸入;

ElemType e;

if (ScanE(e)) SqLinkListAppend(L,e); //輸入數(shù)據(jù),追加一個結(jié)點;

}

void SqLinkListTraverse(SqLinkList L){

//所有學生信息列表輸出;

Node *p;

char c;

p=L.head;

if(p) //非空表;

{

printf("\n學號 姓名 學期 成績A 成績B 成績C 平均成績\n");

for (p=L.head ;p;p=p-next )PrintE(p-data);

//從第一個結(jié)點開始輸出所有信息直到結(jié)點為空;

}

else printf("系統(tǒng)中無記錄。\n");

//空表;

c=getchar();

}

void PrintE(ElemType e){

//輸出各科成績和平均成績;

printf("%d\t%s\t%d\t%f\t%f\t%f\t%f\n",e.num,e.name,e.team,e.s1,e.s2,e.s3,(e.s1+e.s2+e.s3)/3);

//格式輸出學生的學號、姓名、學期、A、B、C三門成績以及平均成績;

}

C語言程序設(shè)計實驗報告怎么寫啊

只是個例子,不可照抄。

實驗內(nèi)容與要求:

[實驗內(nèi)容]

1、 通過本試驗初步培養(yǎng)計算機邏輯解題能力。熟練掌握賦值語句和if語句的應(yīng)用;掌握switch多路分支語句和if嵌套語句的使用

2、 將前期所學習到的基本數(shù)據(jù)類型、運算符和表達式等程序設(shè)計基礎(chǔ)知識運用于具體的程序設(shè)計。

3、 進一步熟練掌握輸入輸出函數(shù)scanf, printf和getchar的使用,熟悉math.h中常用數(shù)學函數(shù)的使用方法

4、 掌握循環(huán)語句的應(yīng)用方法。

5、 了解隨機數(shù)生成函數(shù)。

[實驗要求]

在規(guī)定期限獨立完成實驗內(nèi)容

1、 提交實驗報告(電子版)

2、 提交相應(yīng)源程序文件(文件名 EX6_x姓名.c, 如EX6_1彭健.c)

3、 要求從簡單到復(fù)雜,后面的要求均在前面的基礎(chǔ)上進行修改,前六題,每題均需要保留各自的程序,六題以后,每題均在前一題基礎(chǔ)上修改,保留最后一個程序即可(如做到第九題,則保留EX6_9姓名.c,做到第11題,則保留ex6_11姓名.c)

二、實驗原理和設(shè)計方案:

1、函數(shù)頭的選則,while循環(huán)語句,switch(case)語句,條件表達式,if else條件語句,自增運算符,設(shè)置復(fù)雜變量,輸出隨機操作數(shù)。

2、 變量要有分數(shù)變量和等級變量,要有選擇算法題數(shù)的變量和計算正確與否的變量,要有隨機輸出的兩個操作數(shù)變量和自己按運算符號輸入結(jié)果的變量,最后還有判斷是否要進行的變量字符。中間結(jié)果有選擇運算符的switch()和分數(shù)等級的switch()和錯題對題的自增和選擇運算符計算的自增。

3、 問題的分析方法:先考慮設(shè)置整形變量和字符變量,考慮到要不斷循環(huán)計算,選擇用while語句來循環(huán)。在循環(huán)體中,將前面的輸出提示運算符,和自行選擇運算符、答案及輸出隨機操作數(shù)完成。再用switch語句對選擇的運算符進行判斷,并用變量進行自增運算,計算出錯題于對題個數(shù)和選擇了那種運算符號。在循環(huán)體最后用if else語句來判斷是否繼續(xù)執(zhí)行還是跳出循環(huán)。最后根據(jù)自增計算的結(jié)果和公式進行分數(shù)計算,并用switch語句來是想等級的制定。

三、源代碼

#includestdio.h

#includestdlib.h

#includetime.h

void main()

{

..........

}

四、試驗結(jié)果和啟發(fā)

因為輸入y要繼續(xù)循環(huán),所以選擇用while語句。在while語句中要結(jié)合前面的按提示計算,并嵌套switch語句并用條件表達式,來計算結(jié)果正確與否,計算的題型是什么。最后再用switch語句來完成分數(shù)等級的判斷。

五、實驗體會:

描述自己在編程或程序編譯運行中遇到的難點和問題及解決的辦法。

網(wǎng)站題目:c語言函數(shù)程序設(shè)計報告,C語言函數(shù)程序設(shè)計
URL標題:http://muchs.cn/article2/phioic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名手機網(wǎng)站建設(shè)、建站公司、軟件開發(fā)、網(wǎng)站制作做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)