版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
本文格式為Word版,下載可任意編輯——程序設(shè)計(jì)基礎(chǔ)習(xí)題
7.8習(xí)題
1.編制一個(gè)C程序,從鍵盤輸入一個(gè)正整數(shù),假使該數(shù)為素?cái)?shù),則輸出該素?cái)?shù),否則輸出該數(shù)的所有因子(除去1與自身)。
2.編制一個(gè)C程序,從鍵盤輸入一個(gè)正整數(shù)N,然后計(jì)算并輸出S=1?21?22???2|N|最終計(jì)算并輸出T=1?111????(?1)K?123K其中K?S的整數(shù)部分。
3.編制一個(gè)C程序,計(jì)算并輸出多項(xiàng)式的值
Sn?1?05.x?05.(05.?1)205.(05.?1)(05.?2)305.(05.?1)?(05.?n?1)nx?x???x2!3!n!的值,直到|Sn-Sn-1|
(2)編寫一個(gè)主函數(shù),調(diào)用(1)中的函數(shù),對以下單詞序列進(jìn)行排序:zhang,gou,xu,zheng,mao,zhao,li,bai,qing
其中該單詞序列中各單詞以賦初值的方式用一維字符串指針數(shù)組的各元素指向。
(3)在主函數(shù)中,要求先輸出原序列,換行后再輸出排序后的序列。輸出時(shí)各單詞之間用兩個(gè)空格分隔。方法說明:
使用字符串比較函數(shù)strcmp(),需要包含頭文件string.h。
11.7習(xí)題
1.編寫一個(gè)C程序,要求定義一個(gè)有關(guān)日期的結(jié)構(gòu)體類型變量(包括年、月、日),從鍵盤為該變量中的各成員輸入數(shù)據(jù),然后再將輸入的日期顯示輸出。2.建立一個(gè)學(xué)生狀況登記表的表格空間(學(xué)生人數(shù)最多為20),包括學(xué)號(hào)、姓名、五門課程的成績與總分。在主函數(shù)中調(diào)用以下函數(shù)實(shí)現(xiàn)指定的功能:(1)輸入n個(gè)學(xué)生的數(shù)據(jù)(不包括總分)。其中n(≤20)在主函數(shù)中從鍵盤輸入。(2)計(jì)算每個(gè)學(xué)生的總分。(3)按總分進(jìn)行排序。
(4)顯示輸出給定學(xué)號(hào)學(xué)生的所有信息。其中學(xué)號(hào)在主函數(shù)中從鍵盤輸入。3.編寫一個(gè)C程序,根據(jù)鍵盤輸入的非負(fù)整數(shù)值,顯示輸出顏色的英文名稱。4.編制一個(gè)C程序,定義一個(gè)長度為10的聯(lián)合體類型數(shù)組。首先從鍵盤輸入一個(gè)標(biāo)志,標(biāo)志值為0時(shí)表示輸入五分制成績(整型),標(biāo)志值為1時(shí)表示輸入百分制成績(單精度實(shí)型)。然后從鍵盤輸入10個(gè)成績存放到數(shù)組中。最終輸出這些成績。5.編寫一個(gè)C函數(shù),功能是計(jì)算給定鏈表的長度。6.編寫一個(gè)C函數(shù),功能是逆轉(zhuǎn)給定鏈表。
7.設(shè)有兩個(gè)有序線性單鏈表,頭指針分別為ah與bh。編寫一個(gè)C函數(shù),將這兩個(gè)有序鏈表合并為一個(gè)頭指針為ch的有序鏈表。
8.設(shè)有一個(gè)鏈表,其結(jié)點(diǎn)值均為正整數(shù),且按值從大到小鏈接。編寫一個(gè)C函數(shù),將該鏈表分解為兩個(gè)鏈表,其中一個(gè)鏈表中的結(jié)點(diǎn)值均為奇數(shù),而另一個(gè)鏈表中的結(jié)點(diǎn)值均為偶數(shù),且這兩個(gè)鏈表均按值從小到大鏈接。
9.設(shè)有一個(gè)鏈表,其結(jié)點(diǎn)值均為整數(shù),且按絕對值從小到大鏈接。編寫一個(gè)C函數(shù),將此鏈表中的結(jié)點(diǎn)按值從小到大鏈接。
10.設(shè)有一個(gè)鏈表,其結(jié)點(diǎn)值均為正整數(shù)。編寫一個(gè)C函數(shù),反復(fù)找出鏈表中結(jié)點(diǎn)值最小的結(jié)點(diǎn)。并輸出該值,然后將該結(jié)點(diǎn)從鏈表中刪除,直到鏈表空為止。
11.給定學(xué)生成績登記表如表11.4所示。編寫一個(gè)C程序,用冒泡排序?qū)υ搶W(xué)生成績表按成績(grade)從低到高進(jìn)行排序。
表11.4學(xué)生成績登記表
學(xué)號(hào)(num)020304姓名(name)LinZhangZhao成績(grade)92877205091112131617202122MaZhenWangLiXuMaoHaoLuSongWu918510086837895827688
具體要求:
(1)定義一個(gè)結(jié)構(gòu)體數(shù)組表示學(xué)生成績登記表,其中的每個(gè)元素依次存放表11.4中各學(xué)生的狀況。結(jié)構(gòu)體類型為structstudent{intnum;
charname[10];intgrade;};
(2)在程序中另外定義一個(gè)結(jié)構(gòu)體指針數(shù)組,在排序前,其中每一個(gè)數(shù)組元素依次指向?qū)W生成績登記表(為結(jié)構(gòu)體類型數(shù)組)中的各學(xué)生狀況。(3)在程序中,首先輸出排序前的學(xué)生狀況,然后輸出排序后的結(jié)果。輸出形式如表11.4所示,但不要表中的框線。
(4)將冒泡排序的功能獨(dú)立編寫成一個(gè)函數(shù)。方法說明:
在實(shí)際排序的過程中,并不需要交換學(xué)生成績登記表中的各學(xué)生狀況,而只需要交換另一指針數(shù)組中的各指針。因此,排序的最終結(jié)果,學(xué)生成績登記表中各學(xué)生狀況之間的存儲(chǔ)順序并沒有改變,而只是按指針數(shù)組中各指針元素順序指向的各學(xué)生狀況是按成績有序的。12.鏈表基本操作。具體要求:
(1)定義一個(gè)結(jié)構(gòu)體數(shù)組表示學(xué)生成績登記表,其中的每個(gè)元素依次存放表11.4中各學(xué)生的狀況。結(jié)構(gòu)體類型為structstudent{intnum;
charname[10];intgrade;};
(2)對于表11.4所示的學(xué)生成績登記表,依次將每個(gè)學(xué)生的狀況作為一個(gè)結(jié)點(diǎn)插入到鏈表的鏈頭(即當(dāng)前插入的結(jié)點(diǎn)將成為鏈表中的第一個(gè)結(jié)點(diǎn))。初始時(shí)鏈表為空,即該鏈表的頭指針為空。
每個(gè)學(xué)生狀況結(jié)點(diǎn)結(jié)構(gòu)的結(jié)構(gòu)體類型為structstunode
{intnum;
charname[10];intgrade;
structstunode*next;};
(3)當(dāng)所有學(xué)生狀況都插入到鏈表后,從鏈頭開始,依次輸出鏈表中的各結(jié)點(diǎn)值(即每個(gè)學(xué)生的狀況)。輸出格式宛如表11.4所示,但不要表中的框線。方法說明:
為了給每個(gè)學(xué)生狀況的結(jié)點(diǎn)p動(dòng)態(tài)分派存儲(chǔ)空間,可以用如下語句:p=(structstunode*)malloc(sizeof(structstunode));其中p為結(jié)構(gòu)體類型structstunode的指針。
另外,為了使用函數(shù)malloc(),應(yīng)當(dāng)包含頭文件stdlib.h。
13.將表11.4所示的學(xué)生成績登記表劃分成三個(gè)子表,其中子表1登記的是成績在90~100之間的學(xué)生狀況,子表2登記的是成績在80~89之間的學(xué)生狀況,子表3登記的是成績在70~79之間的學(xué)生狀況。具體要求:
(1)定義一個(gè)結(jié)構(gòu)體數(shù)組表示學(xué)生成績登記表,其中的每個(gè)元素依次存放表11.4中各學(xué)生的狀況。結(jié)構(gòu)體類型為structstudent{intnum;
charname[10];intgrade;};
(2)劃分成的三個(gè)子表均采用鏈表結(jié)構(gòu),鏈表中各結(jié)點(diǎn)的數(shù)據(jù)域存放學(xué)生狀況在原登記表中的序號(hào)(即結(jié)構(gòu)體數(shù)組元素的下標(biāo)),而不是直接存放學(xué)生的成績狀況。即各鏈表結(jié)點(diǎn)的結(jié)構(gòu)體類型為structstunode
{structstudent*data;structstunode*next;};
(3)最終輸出原學(xué)生成績登記表以及劃分成的三個(gè)子表。輸出格式如表11.4所示,但不要表中的框線。方法說明:
劃分子表的方法如下:
對于表11.4中的各學(xué)生成績grade,計(jì)算k=10-int(grade/10)
其中int()表示取整。根據(jù)k值將學(xué)生狀況插入到相應(yīng)的子表中:若k=0或1,則插入到子表1中;若k=2,則插入到子表2中;若k=3,則插入到子表3中。
初始時(shí)各子表均為空。當(dāng)需要將一個(gè)學(xué)生狀況插入到某子表時(shí),首先動(dòng)態(tài)申請一個(gè)結(jié)點(diǎn)(structstunode類型),將該學(xué)生狀況在原表中的序號(hào)(元素下標(biāo))存放到結(jié)點(diǎn)的數(shù)據(jù)域中;然后將該結(jié)點(diǎn)鏈接到相應(yīng)鏈表的鏈頭。
12.4習(xí)題
1.編寫一個(gè)C程序,首先從鍵盤輸入20個(gè)雙精度實(shí)數(shù),并寫入文本文件fd.dat中。然后將寫入文件fdata.dat中的10個(gè)雙精度實(shí)數(shù)顯示輸出。
2.編寫一個(gè)C程序,從鍵盤輸入一個(gè)字符串(輸入的字符串以“#〞作為終止),將其中的小寫字母全部轉(zhuǎn)換成大寫字母,并寫入到文件upper.txt中。然后再從該文件中的內(nèi)容讀出并顯示輸出。
3.編寫一個(gè)C程序,主函數(shù)從命令行得到一個(gè)文件名,然后調(diào)用函數(shù)fgets()從文件中讀入一字符串存放到字符數(shù)組str中(字符個(gè)數(shù)最多為80個(gè))。在主函數(shù)中輸出字符串與該字符串的長度。fgets函數(shù)的格式為:char*fgets(char*string,intn,FILE*stream);
4.編寫一個(gè)C程序,將源文件拷貝到目的文件中。兩個(gè)文件均為文本文件,文件名均由命令行給出,并且源文件名在前,目的文件名在后。
5.設(shè)二進(jìn)制文件student.dat中存放著學(xué)生信息,這些信息由以下結(jié)構(gòu)體描述:structstudent{longintnum;charname[10];intage;charsex;
charsreciality[20];charaddr[40];};
請編寫一個(gè)C程序,顯示輸出學(xué)號(hào)在970101~970135之間的學(xué)生學(xué)號(hào)num、姓名name、年齡age與性別sex。
6.設(shè)有一學(xué)生狀況登記表如表12.1所示。
表12.1學(xué)生狀況登記表
學(xué)號(hào)(num)101102103104105106107108109110姓名(name)ZhangWangZhaoLiGaoLinMaZhenXuMao性別(sex)MFMMMMFMMF年齡(age)19181920191817211918成績(grade)95.692.485.796.390.291.598.790.189.594.5
編寫一個(gè)C程序,依次實(shí)現(xiàn)以下操作:(1)定義一個(gè)結(jié)構(gòu)體類型
structstudent{charnum[7];charname[8];charsex[3];charage[5];chargrade[9];};
(2)為表12.1定義一個(gè)結(jié)構(gòu)體類型(structstudent)數(shù)組,并進(jìn)行初始化。(3)開啟一個(gè)可讀寫的新文件stu.dat。
(4)用函數(shù)fwrite()將結(jié)構(gòu)體數(shù)組內(nèi)容寫入文件stu.dat中。(5)關(guān)閉文件stu.dat。
(6)開啟可讀寫文件stu.dat。
(7)從文件stu.dat中讀出各學(xué)生狀況并輸出。輸出格式如表12.1所示,但不要表格框線。
(8)關(guān)閉文件stu.dat。
7.將表12.1的內(nèi)容按結(jié)構(gòu)體類型寫入文本文件st.dat中;然后對該文件按成績從低到高進(jìn)行冒泡排序,并輸出排序結(jié)果;最終,在排序后的文件中用對分查找法查找并輸出成績在95.0到100分之間的學(xué)生狀況。具體要求:
(1)在定義的結(jié)構(gòu)體類型中,各成員均為字符數(shù)組。即結(jié)構(gòu)體類型的定義如下:structstudent{charnum[8];charname[8];charsex[5];charage[5];chargrade[10];};
(2)編寫一個(gè)對文本文件(其中每一個(gè)記錄的結(jié)構(gòu)如(1)中定義)按成績(grade)進(jìn)行冒泡排序的函數(shù)mudisk(fp,n)。其中:
fp為文件類型指針,指向待排序的文件;
n為長整型變量,存放待排序文件中的記錄個(gè)數(shù)(即學(xué)生的個(gè)數(shù))。
(3)編寫一個(gè)對按成績(grade)有序的文件(其中每一個(gè)記錄的結(jié)構(gòu)如(1)中定義)進(jìn)行對分查找的函數(shù)nibsrch(fp,n,a,b,m)。其中:fp為文件類型指針,指向給定的有序文件;
n為長整型變量,存放按成績有序文件中的記錄個(gè)數(shù)(即學(xué)生的個(gè)數(shù));
a與b均為字符串指針,分別指向成績(grade作為字符串)值的下限與上限(即查找成績在a到b之間的學(xué)生);m為整型變量指針,該指針指向的變量返回成績在a到b內(nèi)的第一個(gè)記錄號(hào)(即數(shù)組元素下標(biāo))。
(4)在主函數(shù)外定義結(jié)構(gòu)體類型,且主函數(shù)放在所有函數(shù)的前面。(5)在主函數(shù)中依次完成以下操作:
①為表12.1定義一個(gè)結(jié)構(gòu)體類型(structstudent)數(shù)組,并進(jìn)行初始化。②開啟可讀寫的新文本文件st.dat。
③使用函數(shù)fwrite()將結(jié)構(gòu)體數(shù)組內(nèi)容寫入文件st.dat中。
④關(guān)閉文件st.dat。
⑤開啟可讀寫文件st.dat。
⑥調(diào)用(2)中的函數(shù)mudisk(fp,n),對文件st.dat按成績(grade)從低到高進(jìn)行冒泡排序。⑦調(diào)用(3)中的函數(shù)nibsrch(fp,n,a,b,m),查找成績在95.0到100分之間的學(xué)生狀況。⑧根據(jù)查找的返回結(jié)果,使用函數(shù)fread(),從文件中讀出成績在95.0到100分之間的學(xué)生狀況并輸出。輸出格式如表12.1所示,但不要表格框線。⑨關(guān)閉文件st.dat。
13.4習(xí)題
1.寫出以下表達(dá)式的值:
(1)0x13b=(ac=(aa=b|c;
printf(\}
運(yùn)行上述程序后,輸出結(jié)果是什么?4.閱讀以下C程序:#includemain()
{chara=0x95,b,c;b=(ac=(aa=b|c;
printf(\}
(1)假使系統(tǒng)為“算術(shù)右移〞,則運(yùn)行上述程序后,輸出結(jié)果是什么?(2)假使系統(tǒng)為“規(guī)律右移〞,則運(yùn)行上述程序后,輸出結(jié)果是什么?
5.編寫一個(gè)C程序,分別計(jì)算并輸出C語言中為一個(gè)整型、長整型、無符號(hào)整型和字符型變量所分派存儲(chǔ)空間的二進(jìn)制位數(shù)。具體要求:
(1)編寫四個(gè)函數(shù),分別計(jì)算整型、長整型、無符
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025車輛保管合同書范文
- 2025保修工程合同范本
- 2025學(xué)校食堂承包合同書
- 2025關(guān)于試用期解除合同及案例
- 2025年度軍事電子對抗保密技術(shù)合同3篇
- 2025年度新能源充電設(shè)施建設(shè)公司合作協(xié)議書3篇
- 二零二五年度農(nóng)村房屋租賃合同(含農(nóng)業(yè)產(chǎn)業(yè)升級)
- 二零二五年度體育場館租賃合同及賽事運(yùn)營協(xié)議3篇
- 2025年度農(nóng)村個(gè)人地基使用權(quán)轉(zhuǎn)讓及農(nóng)業(yè)現(xiàn)代化設(shè)施配套協(xié)議書3篇
- 2025年度教育信息化項(xiàng)目經(jīng)理合作協(xié)議2篇
- 專題07:回憶性散文閱讀(考點(diǎn)串講)
- 公司IT運(yùn)維管理制度
- 護(hù)理帶教課件教學(xué)課件
- 促進(jìn)低空經(jīng)濟(jì)農(nóng)林生產(chǎn)應(yīng)用場景實(shí)施方案
- 重慶市市轄區(qū)(2024年-2025年小學(xué)四年級語文)人教版期末考試(上學(xué)期)試卷及答案
- 廣東省一年級數(shù)學(xué)上學(xué)期期末考試試卷部編版-(附解析)
- 2024年公安基礎(chǔ)知識(shí)考試題庫及答案
- 2024年北京通州區(qū)初三九年級上學(xué)期期末數(shù)學(xué)試題和答案
- 新蘇教版3三年級數(shù)學(xué)上冊(表格式)教案【全冊】
- 北師大版三年級數(shù)學(xué)上冊寒假作業(yè)96
- DB11∕T 1735-2020 地鐵正線周邊建設(shè)敏感建筑物項(xiàng)目環(huán)境振動(dòng)控制規(guī)范
評論
0/150
提交評論