版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)報(bào)告書 </b></p><p><b> 一:課程設(shè)計(jì)題目</b></p><p><b> 一元多項(xiàng)式計(jì)算</b></p><p><b> 二:課程設(shè)計(jì)內(nèi)容</b></p><p> 1、能夠按照指數(shù)降序
2、排列建立并輸出多項(xiàng)式;能夠完成兩個(gè)多項(xiàng)式的相加,并將結(jié)果輸出。</p><p> 2、將任意給出的n次多項(xiàng)式建成單鏈表結(jié)構(gòu),結(jié)點(diǎn)的結(jié)構(gòu)為系數(shù)、指數(shù)、指針,然后實(shí)現(xiàn)多項(xiàng)式求和運(yùn)算。</p><p> 3、良好的用戶界面,對(duì)于錯(cuò)誤的輸入,要能給出信息提示。</p><p><b> 三:進(jìn)度安排</b></p><p>
3、; 1、2014年9月13日,自由分組,布置任務(wù)</p><p> 2、2014年9月14日,小組成員相互討論,分工合作,查閱資料,編寫源程序并調(diào)試</p><p> 3、2014年9月15-19日,完成模塊聯(lián)編并進(jìn)行測(cè)試</p><p> 4、2014年9月20-21日,成果驗(yàn)收,完成設(shè)計(jì)報(bào)告</p><p><b>
4、四:基本要求</b></p><p> 1、用C語(yǔ)言實(shí)現(xiàn)一元多項(xiàng)式計(jì)算</p><p> 2、利用單鏈表實(shí)現(xiàn)一元多項(xiàng)式的計(jì)算存儲(chǔ)</p><p> 3、完成設(shè)計(jì)任務(wù)并書寫課程設(shè)計(jì)報(bào)告</p><p><b> 目錄</b></p><p> 一 需求分析…………………………
5、……1</p><p> 二 概要設(shè)計(jì)………………………………2</p><p> 三 詳細(xì)設(shè)計(jì)………………………………3</p><p> 四 調(diào)試分析………………………………4</p><p> 五 用戶使用說(shuō)明…………………………5</p><p> 六 測(cè)試結(jié)果………………………………6&l
6、t;/p><p> 七 課程設(shè)計(jì)總結(jié)…………………………7</p><p> 八 附錄……………………………………8</p><p><b> 1.需求分析</b></p><p> (a)該程序能實(shí)現(xiàn)任意輸入兩個(gè)一元多項(xiàng)式,無(wú)論一元多項(xiàng)式的指數(shù)如何排列和是否有同類項(xiàng),都能先將其化簡(jiǎn)排序后,在實(shí)現(xiàn)兩個(gè)多項(xiàng)式相加的
7、功能。</p><p> (b)在這里我們運(yùn)用單鏈表來(lái)存放一元多項(xiàng)式,先用typedef struct定義了一個(gè)新類型datatype,再typedef struct Node來(lái)申明結(jié)點(diǎn),在其中定義了datatype data_1,data_1可以訪問一元多項(xiàng)式系數(shù)和指數(shù)。struct Node *next指向下一個(gè)結(jié)點(diǎn)的指針,用尾插法建立一元多項(xiàng)式的單鏈表。輸入一元多項(xiàng)式時(shí)系數(shù)和指數(shù)用0作為終止符。</
8、p><p> (c)通過(guò)選擇排序,將單鏈表中的多項(xiàng)式指數(shù)由高到低排序,再將單鏈表中的多項(xiàng)式指數(shù)相同的合并同類項(xiàng),得到化簡(jiǎn)后的一元多項(xiàng)式。最后調(diào)用pc = add_list(pa,pb);實(shí)現(xiàn)兩個(gè)多項(xiàng)式相加。</p><p><b> 2.概要設(shè)計(jì)</b></p><p> 1、本程序中用到的所有抽象數(shù)據(jù)類型</p><p&
9、gt; typedef struct </p><p><b> {</b></p><p> int cff;//系數(shù)</p><p> int exp;//指數(shù)</p><p> } datatype;</p><p> typedef struct Node</p>
10、<p><b> {</b></p><p> datatype data_1;//定義datatype的一個(gè)變量</p><p> struct Node *next;</p><p> }listnode;//自定義struct數(shù)據(jù)類型為linklist,而不是定義linklist,所以不能在這里定義pa,pb</
11、p><p> typedef listnode* linklist;</p><p> linklist create_list()</p><p> void Select_sort(linklist l)</p><p> void merge_list(linklist l)</p><p> linkli
12、st add_list(linklist l_fir, linklist l_sec)</p><p> void result_out(linklist p) </p><p> void free_list(linklist p)</p><p><b> 存儲(chǔ)結(jié)構(gòu)</b></p><p><b>
13、 模塊劃分</b></p><p> ?。╝)主程序(b)建立單鏈表(c)輸入一元多項(xiàng)式,排序合并(d)兩個(gè)多項(xiàng)式相加</p><p> A(x)=5*x^4-3*x^3+3*x^2+1*x^1; B(x)=6*x^5+4*x^3-3*x^2+1*x^1;</p><p> 相加后的一元多項(xiàng)式為:C(x)= 6*x^5+5*x^4+1*x^3+
14、2*x^1;</p><p><b> 主程序的流程</b></p><p> ?。╝)請(qǐng)輸入第一個(gè)多項(xiàng)式各項(xiàng)系數(shù)和指數(shù)<以數(shù)字0結(jié)束>; </p><p> (b)排序化簡(jiǎn)后的第一個(gè)多項(xiàng)式;</p><p> (c)請(qǐng)輸入第二個(gè)多項(xiàng)式各項(xiàng)系數(shù)和指數(shù)<以數(shù)字0結(jié)束>;</p>
15、<p> (d)排序化簡(jiǎn)后的第二個(gè)多項(xiàng)式;</p><p> (e)兩個(gè)一元多項(xiàng)式相加的結(jié)果。</p><p><b> 3.詳細(xì)設(shè)計(jì)</b></p><p> 1、根據(jù)一元多項(xiàng)式相加法則,對(duì)于任意兩個(gè)多項(xiàng)式所有指數(shù)相同的,對(duì)應(yīng)系數(shù)相加,若系數(shù)相加后不為0,則構(gòu)成一元多項(xiàng)式其中一項(xiàng)。對(duì)于指數(shù)不同的,則分別復(fù)制到單鏈表中。<
16、;/p><p><b> 2、系統(tǒng)流程圖</b></p><p><b> 4.調(diào)試分析</b></p><p> (1)通過(guò)多次程序調(diào)試,我們很快的發(fā)現(xiàn)程序并不完善,對(duì)異常處理不到位。當(dāng)程序采用指數(shù)升冪排序時(shí),該程序就不能實(shí)現(xiàn)兩個(gè)多項(xiàng)式相加操作后指數(shù)的排序問題。于是我們分析問題,采用了指數(shù)降冪排序,很快解決了問題。&l
17、t;/p><p> ?。?)在這里我們用到了選擇排序:時(shí)間復(fù)雜度O(n*n);空間復(fù)雜度O(1)</p><p> ?。?)我們每個(gè)小組在一起查詢資料,討論問題,通過(guò)分工合作來(lái)完成這次任務(wù)。在這里我們掌握了單鏈表的基本操作和一些排序算法,對(duì)大二和大一學(xué)習(xí)的知識(shí)有了很好的鞏固。同時(shí)我們還學(xué)會(huì)了用C語(yǔ)言編程,進(jìn)一步加深自己對(duì)C語(yǔ)言知識(shí)理解,并且將知識(shí)與實(shí)踐相結(jié)合。</p><p
18、><b> 5.用戶使用說(shuō)明</b></p><p><b> 6.測(cè)試結(jié)果</b></p><p><b> 7.附錄</b></p><p> #include <stdio.h></p><p> #include <malloc.h&g
19、t;</p><p> typedef struct </p><p><b> {</b></p><p> int cff;//系數(shù)</p><p> int exp;//指數(shù)</p><p> } datatype;</p><p> typedef st
20、ruct Node</p><p><b> {</b></p><p> datatype data_1;//定義datatype的一個(gè)變量</p><p> struct Node *next;</p><p> }listnode;//自定義struct數(shù)據(jù)類型為linklist,而不是定義linklist
21、,所以不能在這里定義pa,pb</p><p> typedef listnode* linklist;</p><p> linklist create_list()//創(chuàng)建帶頭結(jié)點(diǎn)的鏈表,返回頭結(jié)點(diǎn),尾插法</p><p><b> { </b></p><p> linklist head=(linkl
22、ist)malloc(sizeof(listnode));</p><p> linklist p, r;</p><p><b> int xs;</b></p><p><b> int zs;</b></p><p><b> r=head;</b></p
23、><p> while(scanf("%d %d",&xs, &zs) && xs != 0&& zs != 0)//系數(shù)和指數(shù)輸入00表示結(jié)束</p><p><b> {</b></p><p> p=(linklist)malloc(sizeof(listnode));
24、</p><p> p->data_1.cff = xs;</p><p> p->data_1.exp = zs;</p><p> r->next = p;</p><p><b> r = p; </b></p><p><b> }</b&g
25、t;</p><p> r->next = NULL;</p><p> return (head);</p><p><b> }</b></p><p> void Select_sort(linklist l)//選擇排序,將單鏈表中的多項(xiàng)式指數(shù)由高到低排序</p><p>&
26、lt;b> {</b></p><p> linklist p, r, q;</p><p> r = l->next;//指向單鏈表的第一個(gè)結(jié)點(diǎn)</p><p> p = (linklist)malloc(sizeof(listnode));</p><p> while( r != NULL)</p
27、><p><b> { </b></p><p> q = r->next;</p><p> while( q != NULL)</p><p><b> {</b></p><p> if( q->data_1.exp > r->data_
28、1.exp )</p><p><b> {</b></p><p> p->data_1.cff = r->data_1.cff;</p><p> p->data_1.exp = r->data_1.exp;</p><p> r->data_1.cff = q->data
29、_1.cff;</p><p> r->data_1.exp = q->data_1.exp;</p><p> q->data_1.cff = p->data_1.cff;</p><p> q->data_1.exp = p->data_1.exp;</p><p><b> }<
30、;/b></p><p> q = q->next;</p><p><b> }</b></p><p> r = r->next;</p><p><b> }</b></p><p><b> }</b></p&g
31、t;<p> void merge_list(linklist l)//將單鏈表中的多項(xiàng)式指數(shù)相同的合并同類項(xiàng),注意單鏈表中的多項(xiàng)式必須已經(jīng)按指數(shù)由高到低排好序</p><p><b> {</b></p><p> linklist r, q, p;</p><p><b> r = l;</b>&
32、lt;/p><p> while( r != NULL && r->next != NULL)</p><p><b> { </b></p><p> q = r->next;</p><p> while( q->next != NULL && q != NUL
33、L&& (q->data_1.exp == q->next->data_1.exp))</p><p><b> {</b></p><p> p = q->next;</p><p> q->data_1.cff += p->data_1.cff;</p><p&g
34、t; q->next = p->next;</p><p><b> free(p);</b></p><p><b> }</b></p><p> r = r->next;</p><p><b> }</b></p><p&
35、gt; r = l;//將l重新賦給r,查找多項(xiàng)式指數(shù)相同的合并同類項(xiàng)后,系數(shù)為0的項(xiàng)</p><p> while(r != NULL && r->next != NULL)</p><p><b> {</b></p><p> if( r->next->data_1.cff == 0)</p
36、><p><b> {</b></p><p> q = r->next;</p><p> r->next = q->next;</p><p><b> free(q);</b></p><p><b> }</b></
37、p><p> else r = r->next;</p><p><b> }</b></p><p><b> }</b></p><p> linklist add_list(linklist l_fir, linklist l_sec)//將單鏈表一中的多項(xiàng)式與單鏈表二中的多項(xiàng)式相
38、加后并將結(jié)果存放在單鏈表三中</p><p><b> {</b></p><p> linklist head=(linklist)malloc(sizeof(listnode));</p><p> linklist p, q, r, s;</p><p><b> r = head;</b&
39、gt;</p><p> p = l_fir->next;</p><p> q = l_sec->next;</p><p> while( p != NULL && q != NULL )//單鏈表一和單鏈表二中均有數(shù)據(jù)</p><p><b> {</b></p>
40、<p> s = (linklist)malloc(sizeof(listnode));</p><p> if(p->data_1.exp == q->data_1.exp)</p><p><b> { </b></p><p> s->data_1.cff = p->data_1.cff + q-
41、>data_1.cff;</p><p> s->data_1.exp = p->data_1.exp;</p><p> p = p->next;</p><p> q = q->next;</p><p><b> }</b></p><p> else
42、 if(p->data_1.exp > q->data_1.exp)</p><p><b> { </b></p><p> s->data_1.cff = p->data_1.cff;</p><p> s->data_1.exp = p->data_1.exp;</p>&l
43、t;p> p = p->next;</p><p><b> }</b></p><p> else if(p->data_1.exp < q->data_1.exp)</p><p><b> {</b></p><p> s->data_1.cff
44、= q->data_1.cff;</p><p> s->data_1.exp = q->data_1.exp;</p><p> q = q->next;</p><p><b> }</b></p><p> r->next = s;</p><p>&l
45、t;b> r = s;</b></p><p><b> }</b></p><p> while( p != NULL)//僅單鏈表一中有數(shù)據(jù)</p><p><b> {</b></p><p> s = (linklist)malloc(sizeof(listnod
46、e));</p><p> s->data_1.cff = p->data_1.cff;</p><p> s->data_1.exp = p->data_1.exp;</p><p> p = p->next;</p><p> r->next = s;</p><p>&
47、lt;b> r =s;</b></p><p><b> }</b></p><p> while( q != NULL)//僅單鏈表二中有數(shù)據(jù)</p><p><b> {</b></p><p> s = (linklist)malloc(sizeof(listnod
48、e));</p><p> s->data_1.cff = q->data_1.cff;</p><p> s->data_1.exp = q->data_1.exp;</p><p> q = q->next;</p><p> r->next = s;</p><p>&
49、lt;b> r =s;</b></p><p><b> }</b></p><p> r->next = NULL;</p><p> //清楚系數(shù)為0的項(xiàng)</p><p><b> r = head;</b></p><p> whil
50、e(r != NULL && r->next != NULL)</p><p><b> {</b></p><p> if( r->next->data_1.cff == 0)</p><p><b> {</b></p><p> q = r->n
51、ext;</p><p> r->next = q->next;</p><p><b> free(q);</b></p><p><b> }</b></p><p> r = r->next;</p><p><b> }</
52、b></p><p> return (head);</p><p><b> }</b></p><p> void result_out(linklist p)//輸出結(jié)果</p><p><b> { </b></p><p> if(p->
53、next == NULL)</p><p> printf("空單鏈表\n"); </p><p> while(p->next!=NULL)</p>&
54、lt;p><b> { </b></p><p> p=p->next;</p><p> if(p->next==NULL||p->next->data_1.cff<0)</p><p> printf("%d*X^%d",p->data_1.cff,p->data
55、_1.exp); </p><p> else printf("%d*X^%d+",p->data_1.cff,p->data_1.exp); </p><p><b> }</b></p><p><b> } </b></p><p> void fr
56、ee_list(linklist p)//釋放空間</p><p><b> {</b></p><p> linklist k, q;</p><p><b> k = p;</b></p><p> while(p != NULL && p->next != NUL
57、L)</p><p><b> {</b></p><p> q = p->next;</p><p> p->next = q->next;</p><p><b> free(q);</b></p><p><b> }</b&
58、gt;</p><p><b> }</b></p><p> void main()</p><p><b> {</b></p><p> linklist pa, pb, pc; </p><p> printf("................
59、..歡迎進(jìn)入一元多項(xiàng)式計(jì)算程序......................\n");</p><p> printf("請(qǐng)輸入第一個(gè)多項(xiàng)式各項(xiàng)系數(shù)和指數(shù)<以數(shù)字0結(jié)束>:\n");</p><p> pa = create_list();</p><p> Select_sort(pa);</p><
60、;p> merge_list(pa);</p><p> printf("排序化簡(jiǎn)后的第一個(gè)多項(xiàng)式為:\n");</p><p> result_out(pa);</p><p> printf("\n");</p><p> printf("請(qǐng)輸入第二個(gè)多項(xiàng)式各項(xiàng)系數(shù)和指數(shù)&
61、lt;以數(shù)字0結(jié)束>:\n");</p><p> pb = create_list();</p><p> Select_sort(pb);</p><p> merge_list(pb);</p><p> printf("排序化簡(jiǎn)后的第二個(gè)多項(xiàng)式為:\n");</p><p
62、> result_out(pb);</p><p> printf("\n");</p><p> printf("相加后的多項(xiàng)式為:\n");</p><p> pc = add_list(pa,pb);</p><p> result_out(pc);</p><
63、;p> printf("\n");</p><p> free_list(pa);</p><p><b> free(pa);</b></p><p> free_list(pb);</p><p><b> free(pb);</b></p>&
64、lt;p> free_list(pc);</p><p><b> free(pc);</b></p><p><b> }</b></p><p><b> 一:課程設(shè)計(jì)題目</b></p><p><b> 成績(jī)分析系統(tǒng)</b><
65、/p><p><b> 1.需求分析</b></p><p> ?。╝)編寫一個(gè)程序,完成學(xué)生成績(jī)系統(tǒng)的各種功能要求,包括成績(jī)錄入、按指定的課程成績(jī)排序、按學(xué)生的平均成績(jī)排序、成績(jī)分析與統(tǒng)計(jì)、按學(xué)號(hào)查詢?cè)搶W(xué)生的各科成績(jī)、平均成績(jī)和總分的名次,按姓名查詢學(xué)生的各科成績(jī)、平均成績(jī)和總分的名次。</p><p> (b)該程序在輸入成績(jī)時(shí)在[0,10
66、0]區(qū)間,如果超過(guò)這個(gè)區(qū)間,會(huì)出現(xiàn)出錯(cuò)信息,要求再次重新輸入。當(dāng)輸入姓名時(shí),可以采用字符串形式,當(dāng)不能超過(guò)規(guī)定的范圍。</p><p> (c)本程序可以用來(lái)管理學(xué)生成績(jī),用戶可以根據(jù)界面提示的相關(guān)信息完成自己想要的操作。</p><p><b> 2.概要設(shè)計(jì)</b></p><p> 1、本程序中用到的所有抽象數(shù)據(jù)類型</p&g
67、t;<p> struct student</p><p><b> {</b></p><p> char num[10];</p><p> char name[10];</p><p><b> int math;</b></p><p> i
68、nt english;</p><p> int computer;</p><p><b> int sum;</b></p><p><b> int aver;</b></p><p> }stu[10];//定義結(jié)構(gòu)體類型變量</p><p> int t;
69、//設(shè)置全局變量</p><p> void creat_data();</p><p> void add();</p><p> void delet();</p><p> void sort_stu();</p><p> void search();</p><p><
70、b> 模塊劃分</b></p><p> 主程序(b)定義結(jié)構(gòu)體,用一位數(shù)組儲(chǔ)存學(xué)生人數(shù)(c)定義新建、添加、刪除、查詢、排序函數(shù) </p><p><b> 3.詳細(xì)設(shè)計(jì)</b></p><p> (1)函數(shù)之間的調(diào)用關(guān)系</p><p> 1、void search()調(diào)用search_n
71、um();search_name();search_math();search_english();search_computer();search_sum();main();</p><p> void sort_stu()調(diào)用print ();</p><p> creat-data()調(diào)用sum-stu();print();</p><p> add()
72、調(diào)用sum-stu();print();</p><p><b> ?。?)系統(tǒng)流程圖</b></p><p><b> 4.調(diào)試分析</b></p><p> (1)在進(jìn)行調(diào)試時(shí),一般一維數(shù)組的下標(biāo)從0開始,在這里我們規(guī)定的下標(biāo)從1開始,要注意區(qū)分,以免混淆。</p><p> (2)在這里
73、我們用到了選擇排序:時(shí)間復(fù)雜度O(n*n);空間復(fù)雜度O(1);為了提高程序的效率,我們也可以采用堆排序其時(shí)間復(fù)雜度O(nlogn);空間復(fù)雜度O(1);如果用磁盤文件輸入數(shù)據(jù),可以方便操作。</p><p> (3)通過(guò)程序調(diào)試,我們很快的發(fā)現(xiàn)問題,并通過(guò)查資料分析問題,能夠很快的找到錯(cuò)誤,解決問題。同時(shí)我們還學(xué)會(huì)了用C語(yǔ)言編程,進(jìn)一步加深自己對(duì)C語(yǔ)言理解。在這里,我們可以親自動(dòng)手,把自己的想法融入的程序中,
74、程序得到實(shí)現(xiàn)和解決問題,自己的信心也增強(qiáng)了。</p><p><b> 5.用戶使用說(shuō)明</b></p><p> 在主菜單下,你可以選擇你想要選擇的功能,當(dāng)必須在新建數(shù)據(jù)下來(lái)實(shí)現(xiàn)其他功能。當(dāng)你新建數(shù)據(jù)后,你可以再繼續(xù)添加、刪除、排序、查詢。在打開排序和查詢菜單下,你會(huì)得到它們的子菜單,根據(jù)自己的要求來(lái)選擇你要實(shí)現(xiàn)的功能。</p><p>
75、<b> 6.測(cè)試結(jié)果</b></p><p><b> 7.附錄</b></p><p> #include<stdio.h></p><p> #include<string.h>//頭文件</p><p> struct student</p>
76、<p><b> {</b></p><p> char num[10];</p><p> char name[10];</p><p><b> int math;</b></p><p> int english;</p><p> int com
77、puter;</p><p><b> int sum;</b></p><p><b> int aver;</b></p><p> }stu[10];//定義結(jié)構(gòu)體類型變量</p><p> int t;//設(shè)置全局變量</p><p> void main(
78、)//主函數(shù)</p><p><b> {</b></p><p><b> int n;</b></p><p> void creat_data();</p><p> void add();</p><p> void delet();</p>
79、<p> void sort_stu();</p><p> void search();//函數(shù)的申明</p><p><b> do{</b></p><p> printf("************************************主菜單*****************************
80、*********\n");</p><p> printf("\t\t////////////////////////////////////////////////////\n");</p><p> printf("\t\t| *1.新建數(shù)據(jù) |\n") ;
81、</p><p> printf("\t\t| *2.添加數(shù)據(jù) |\n");</p><p> printf("\t\t| *3.刪除數(shù)據(jù) |\n");</p><p> p
82、rintf("\t\t| *4.排序 |\n");</p><p> printf("\t\t| *5.查詢 |\n");</p><p> printf("\t\t|
83、 *6.退出 |\n");</p><p> printf("\t\t////////////////////////////////////////////////////\n");</p><p> printf("請(qǐng)輸入序號(hào)選擇相應(yīng)操作:");</p
84、><p> scanf("%d",&n);</p><p><b> switch(n)</b></p><p><b> {</b></p><p> case 1:creat_data();break;</p><p> case 2:a
85、dd();break;</p><p> case 3:delet();break;</p><p> case 4:sort_stu();break;</p><p> case 5:search();break;</p><p> case 6:printf("\t\t\t\t謝謝使用!\n");break;&
86、lt;/p><p> default: printf("輸入錯(cuò)誤");</p><p><b> }</b></p><p> }while(n!=6);</p><p><b> }</b></p><p> void sum_stu() //各個(gè)
87、學(xué)生各科分?jǐn)?shù)總和和平均分</p><p><b> {</b></p><p><b> int i;</b></p><p> for(i=1;i<=t;i++)</p><p> { stu[i].sum=stu[i].math+stu[i].english+stu[i].comp
88、uter;</p><p> stu[i].aver=stu[i].sum/3;}</p><p><b> }</b></p><p> void print()</p><p><b> {</b></p><p><b> int i;</b&
89、gt;</p><p> printf("-------------------------------------------------------------------------------\n");</p><p> printf("|學(xué)號(hào) 姓名 數(shù)學(xué)成績(jī) 英語(yǔ)成績(jī) 計(jì)算機(jī)成績(jī) 總分 平均分
90、\n");</p><p> for(i=1;i<=t;i++)</p><p> printf("|%s %s %d %d %d %d %d\n",stu[i].num,stu[i].name,stu[i].math,stu[i].engli
91、sh,stu[i].computer,stu[i].sum,stu[i].aver);</p><p> printf("-------------------------------------------------------------------------------\n\n");</p><p><b> }</b></p&
92、gt;<p> void creat_data() //新建數(shù)據(jù)</p><p><b> {</b></p><p><b> int i;</b></p><p> printf("請(qǐng)輸入你想要?jiǎng)?chuàng)建的學(xué)生人數(shù): ");</p><p> scanf(&
93、quot;%d",&t);</p><p> for(i=1;i<=t;i++)</p><p><b> {</b></p><p> printf("\n請(qǐng)輸入學(xué)生學(xué)號(hào):");</p><p> scanf("%s",stu[i].num); &
94、lt;/p><p> printf("請(qǐng)輸入學(xué)生姓名:");</p><p> scanf("%s",stu[i].name); </p><p> printf("請(qǐng)輸入學(xué)生數(shù)學(xué)成績(jī):");</p><p> scanf("%d",&stu[i].m
95、ath); </p><p> while(stu[i].math<0||stu[i].math>100)</p><p> {printf("出錯(cuò),學(xué)生的成績(jī)不可能小于0或大于100");printf("\n"); printf("請(qǐng)重新輸入學(xué)生數(shù)學(xué)成績(jī):");</p><p> sca
96、nf("%d",&stu[i].math); }</p><p> printf("請(qǐng)輸入學(xué)生英語(yǔ)成績(jī):");</p><p> scanf("%d",&stu[i].english);</p><p> while(stu[i].english<0||stu[i].englis
97、h>100){printf("出錯(cuò),學(xué)生的成績(jī)不可能小于0或大于100");printf("\n"); </p><p> printf("請(qǐng)重新輸入學(xué)生英語(yǔ)成績(jī):");</p><p> scanf("%d",&stu[i].english);}</p><p>
98、printf("請(qǐng)輸入學(xué)生計(jì)算機(jī)成績(jī):");</p><p> scanf("%d",&stu[i].computer);</p><p> while(stu[i].computer<0||stu[i].computer>100){printf("出錯(cuò),學(xué)生的成績(jī)不可能小于0或大于100");printf
99、("\n");</p><p> printf("請(qǐng)重新輸入學(xué)生計(jì)算機(jī)成績(jī):");</p><p> scanf("%d",&stu[i].computer);} </p><p><b> }</b></p><p> sum_stu();&l
100、t;/p><p><b> print();</b></p><p><b> }</b></p><p> void add() //添加數(shù)據(jù)</p><p><b> {</b></p><p><b> char ch;</
101、b></p><p><b> do</b></p><p><b> {</b></p><p> printf("\n請(qǐng)輸入學(xué)生學(xué)號(hào):");</p><p> scanf("%s",stu[t+1].num); </p><
102、;p> printf("請(qǐng)輸入學(xué)生姓名:");</p><p> scanf("%s",stu[t+1].name); </p><p> printf("請(qǐng)輸入學(xué)生數(shù)學(xué)成績(jī):");</p><p> scanf("%d",&stu[t+1].math); <
103、/p><p> while(stu[t+1].math<0||stu[t+1].math>100)</p><p><b> {</b></p><p> printf("出錯(cuò),學(xué)生的成績(jī)不可能小于0或大于100");printf("\n"); printf("請(qǐng)重新輸入學(xué)生數(shù)學(xué)成
104、績(jī):");</p><p> scanf("%d",&stu[t+1].math); </p><p><b> }</b></p><p> printf("請(qǐng)輸入學(xué)生英語(yǔ)成績(jī):");</p><p> scanf("%d",&
105、;stu[t+1].english);</p><p> while(stu[t+1].english<0||stu[t+1].english>100)</p><p><b> {</b></p><p> printf("出錯(cuò),學(xué)生的成績(jī)不可能小于0或大于100");printf("\n&qu
106、ot;); </p><p> printf("請(qǐng)重新輸入學(xué)生英語(yǔ)成績(jī):");</p><p> scanf("%d",&stu[t+1].english);</p><p><b> }</b></p><p> printf("請(qǐng)輸入學(xué)生計(jì)算機(jī)成績(jī):&
107、quot;);</p><p> scanf("%d",&stu[t+1].computer);</p><p> while(stu[t+1].computer<0||stu[t+1].computer>100)</p><p><b> {</b></p><p> p
108、rintf("出錯(cuò),學(xué)生的成績(jī)不可能小于0或大于100");printf("\n");</p><p> printf("請(qǐng)重新輸入學(xué)生計(jì)算機(jī)成績(jī):");</p><p> scanf("%d",&stu[t+1].computer);</p><p><b>
109、}</b></p><p><b> t++;</b></p><p> printf("是否繼續(xù)添加y/n:");</p><p> ch=getchar();</p><p> printf("\n");</p><p> }whi
110、le(ch=='y');</p><p> sum_stu();</p><p><b> print();</b></p><p><b> }</b></p><p> void delet()//刪除數(shù)據(jù)</p><p><b> {
111、</b></p><p> char num1[10];</p><p> int i,j,count=0;</p><p> printf("輸入想要?jiǎng)h除的學(xué)生的學(xué)號(hào)");</p><p> scanf("%s",num1);</p><p> for (
112、i=1;i<=t;i++)</p><p> if(strcmp(num1,stu[i].num)==0)</p><p><b> {</b></p><p> for(j=i;j<t+1;j++)</p><p> stu[j]=stu[j+1];</p><p><
113、b> count++;</b></p><p><b> t--;</b></p><p><b> }</b></p><p> if(count==0) printf("沒有該生信息!");</p><p> else print();</
114、p><p><b> }</b></p><p> void sort_stu() //選擇排序,由大到小</p><p><b> {</b></p><p> int k,j,i;</p><p> struct student temp;</p>
115、<p> printf("************************************排序菜單************************************\n");</p><p> printf("\t\t\t*-------*-------*-------*-------*-------* \n");</p><
116、p> printf("\t\t\t| 1.數(shù)學(xué)成績(jī)排序 |\n");</p><p> printf("\t\t\t| 2英語(yǔ)成績(jī)排序 |\n");</p><p> printf("\t\t\t| 3計(jì)算機(jī)成績(jī)排序
117、 |\n");</p><p> printf("\t\t\t| 4.總分排序 |\n");</p><p> printf("\t\t\t| 5.平均分排序 |\n");</p><p&g
118、t; printf("\t\t\t| 6.返回主菜單 |\n");</p><p> printf("\t\t\t*-------*-------*-------*-------*-------*\n");</p><p> printf("請(qǐng)按序號(hào)選擇相應(yīng)操作:");<
119、;/p><p> scanf("%d",&k);</p><p> if(k==1)//第一趟在所有學(xué)生中找到某一科的最大的成績(jī)</p><p><b> {</b></p><p> for(i=1;i<t;i++)</p><p> for(j=i+1;
120、j<=t;j++)</p><p> if(stu[i].math<stu[j].math)</p><p> {temp=stu[i];stu[i]=stu[j];stu[j]=temp;}</p><p><b> print();</b></p><p><b> }</b>
121、;</p><p> else if(k==2)</p><p><b> {</b></p><p> for(i=1;i<t;i++)</p><p> for(j=i+1;j<=t;j++)</p><p> if(stu[i].english<stu[j].e
122、nglish)</p><p> {temp=stu[i];stu[i]=stu[j];stu[j]=temp;}</p><p><b> print();</b></p><p><b> }</b></p><p> else if(k==3)</p><p>
123、;<b> {</b></p><p> for(i=1;i<t;i++)</p><p> for(j=i+1;j<=t;j++)</p><p> if(stu[i].computer<stu[j].computer)</p><p> {temp=stu[i];stu[i]=stu[j]
124、;stu[j]=temp;}</p><p><b> print();</b></p><p><b> }</b></p><p> else if(k==4)</p><p><b> {</b></p><p> for(i=1;i&
125、lt;t;i++)</p><p> for(j=i+1;j<=t;j++)</p><p> if(stu[i].sum<stu[j].sum)</p><p> {temp=stu[i];stu[i]=stu[j];stu[j]=temp;}</p><p><b> print();</b>&l
126、t;/p><p><b> }</b></p><p> else if(k==5)</p><p><b> {</b></p><p> for(i=1;i<t;i++)</p><p> for(j=i+1;j<=t;j++)</p>
127、<p> if(stu[i].aver<stu[j].aver)</p><p> {temp=stu[i];stu[i]=stu[j];stu[j]=temp;}</p><p><b> print();</b></p><p><b> }</b></p><p>
128、else main();</p><p><b> }</b></p><p> void search_num()</p><p><b> {</b></p><p> char m[10];int i, count=0;</p><p> printf(&qu
129、ot;輸入學(xué)號(hào):");</p><p> scanf("%s",m);</p><p> for(i=1;i<=t;i++)</p><p> if(strcmp(m,stu[i].num)==0) </p><p><b> {</b></p><p>
130、; printf("----------------------------------------------------------------------");</p><p> printf("%s %s %d %d %d %d %d\n",stu[i].num,stu[i].name,stu[i].math,stu
131、[i].english,stu[i].computer,stu[i].sum,stu[i].aver);count++;</p><p> printf("----------------------------------------------------------------------");</p><p><b> }</b><
132、;/p><p> if (count==0) printf("沒有找到相關(guān)信息!\n");</p><p><b> }</b></p><p> void search_name()</p><p><b> {</b></p><p> char
133、 m[10];int i,count=0;</p><p> printf("輸入姓名:");</p><p> scanf("%s",m);</p><p> for(i=1;i<=t;i++)</p><p> if(strcmp(m,stu[i].name)==0) {</p
134、><p> printf("----------------------------------------------------------------------");</p><p> printf("%s %s %d %d %d %d %d\n",stu[i].num,stu[i
135、].name,stu[i].math,stu[i].english,stu[i].computer,stu[i].sum,stu[i].aver);count++;</p><p> printf("----------------------------------------------------------------------");</p><p><
136、;b> }</b></p><p> if (count==0) printf("沒有找到相關(guān)信息!\n");</p><p><b> }</b></p><p> void search_math()//數(shù)學(xué)課程的平均成績(jī)、最高分、最低分、不及格人數(shù)、60~69分人數(shù)、70~79分人數(shù)、80~8
137、9分人數(shù)、90分以上人數(shù)</p><p><b> {</b></p><p> int sum1=0,aver1,max1=1,min1=1,i,count1=0,count2=0,count3=0,count4=0,count5=0;</p><p> for(i=1;i<=t;i++)//順序查找</p><
138、;p> {if(stu[i].math>stu[max1].math) max1=i;</p><p> else if(stu[i].math<stu[min1].math) min1=i;</p><p><b> }</b></p><p> for(i=0;i<=t;i++){</p>
139、<p> sum1+=stu[i].math;</p><p> aver1=sum1/t;}</p><p> printf("數(shù)學(xué)課程的平均成績(jī)、最高分、最低分為:\n");</p><p> printf("%d %d %d\n",aver1,stu[max1].math,stu[m
140、in1].math);</p><p> for(i=1;i<=t;i++)</p><p> if (stu[i].math>=90) count1++;</p><p> else if (stu[i].math>=80&&stu[i].math<90) count2++; </p><p>
141、 else if (stu[i].math>=70&&stu[i].math<79) count3++;</p><p> else if (stu[i].math>=60&&stu[i].math<69) count4++;</p><p> else if (stu[i].math<60) count5++;</
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 一元多項(xiàng)式運(yùn)算課程設(shè)計(jì)
- 一元多項(xiàng)式計(jì)算(數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì))
- 一元稀疏多項(xiàng)式計(jì)算器課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---一元多項(xiàng)式計(jì)算
- 課程設(shè)計(jì)報(bào)告---一元多項(xiàng)式計(jì)算器
- 一元多項(xiàng)式運(yùn)算課程設(shè)計(jì)報(bào)告
- 一元多項(xiàng)式課程設(shè)計(jì)--用c語(yǔ)言實(shí)現(xiàn)一元多項(xiàng)式的加減法計(jì)算
- 課程設(shè)計(jì)報(bào)告--一元多項(xiàng)式計(jì)算vs迷宮求解
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---一元多項(xiàng)式
- 課程設(shè)計(jì)---一元多項(xiàng)式的代數(shù)運(yùn)算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----一元多項(xiàng)式
- 一元多項(xiàng)式的計(jì)算數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-一元多項(xiàng)式計(jì)算器
- c++課程設(shè)計(jì)---一元多項(xiàng)式簡(jiǎn)單計(jì)算器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告一元多項(xiàng)式的計(jì)算
- c++課程設(shè)計(jì)--一元多項(xiàng)式簡(jiǎn)單計(jì)算器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告一元多項(xiàng)式的計(jì)算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告一元多項(xiàng)式的計(jì)算
- 一元多項(xiàng)式的計(jì)算數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--一元稀疏多項(xiàng)式計(jì)算器
評(píng)論
0/150
提交評(píng)論