#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è)計報告
課題名稱:學生成績管理
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三門成績以及平均成績;
}
只是個例子,不可照抄。
實驗內(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)