夏季計(jì)算機(jī)編程實(shí)訓(xùn)題_第1頁
夏季計(jì)算機(jī)編程實(shí)訓(xùn)題_第2頁
夏季計(jì)算機(jī)編程實(shí)訓(xùn)題_第3頁
夏季計(jì)算機(jī)編程實(shí)訓(xùn)題_第4頁
夏季計(jì)算機(jī)編程實(shí)訓(xùn)題_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、上海大學(xué)計(jì)算機(jī)學(xué)院 夏季學(xué)期 計(jì)算機(jī)編程實(shí)訓(xùn)上海大學(xué) 計(jì)算機(jī)學(xué)院夏季學(xué)期計(jì)算機(jī)編程實(shí)訓(xùn)題2012年6月25可信計(jì)算與軟件工程研究室目 錄1. 基礎(chǔ)題11.1 數(shù)據(jù)構(gòu)造及其基本操作11.1.1 動(dòng)態(tài)數(shù)組11.1.2 文件11.1.3 結(jié)構(gòu)體21.2 鏈表及應(yīng)用41.2.1 閱讀并完成單向鏈表程序41.2.2 單向鏈表綜合程序設(shè)計(jì)41.2.3 josephus問題52. 規(guī)范題62.1 最大公約數(shù)和最小公倍數(shù)62.2 指數(shù)函數(shù)值72.3 圓盤找數(shù)82.4 回文串92.5 單向鏈表92.6 正讀反寫112.7 字符串交換112.8 數(shù)組排序122.9 航空售票系統(tǒng)132.10 鞍點(diǎn)152.11 螺旋

2、方陣162.12 三角形個(gè)數(shù)172.13 水仙花數(shù)182.14 統(tǒng)計(jì)字符數(shù)字空格和其它字符個(gè)數(shù)192.15 完全數(shù)192.16 24點(diǎn)202.17 logistic映射中的周期點(diǎn)212.18 驗(yàn)證3n+1問題222.19 newton迭代法解方程232.20 計(jì)算若干個(gè)整數(shù)的和241. 基礎(chǔ)題通過本節(jié)基礎(chǔ)題的訓(xùn)練,使學(xué)生進(jìn)一步掌握c程序設(shè)計(jì)的數(shù)組、指針、鏈表和文件操作。所涉及的語法主要包括:c語言中數(shù)組、指針、函數(shù)、結(jié)構(gòu)體、鏈表、文件。1.1 數(shù)據(jù)構(gòu)造及其基本操作1.1.1 動(dòng)態(tài)數(shù)組練習(xí)1.1 隨機(jī)產(chǎn)生n個(gè)50100之間的整數(shù),輸出其中與平均值最接近的元素的值及下標(biāo)。【要求】定義函數(shù)原型如下的

3、功能函數(shù),并在main函數(shù)中調(diào)用這些函數(shù)測試其功能,源程序文件名為“學(xué)號_01.c”。 調(diào)用calloc或malloc函數(shù)創(chuàng)建動(dòng)態(tài)數(shù)組,free釋放動(dòng)態(tài)數(shù)組說明:標(biāo)準(zhǔn)c語言中,在定義數(shù)組時(shí),數(shù)組元素個(gè)數(shù)必須為常量(即在編譯時(shí)能確定的值)。而本題中的n為變量,是在程序運(yùn)行時(shí)確定的,為了“既不浪費(fèi)內(nèi)存空間,又沒有最大處理能力的限制”,應(yīng)采用動(dòng)態(tài)數(shù)組(相關(guān)標(biāo)準(zhǔn)函數(shù)原型在頭文件中聲明)。 void getdata(int *a, int n);功能:設(shè)置具有n個(gè)元素的數(shù)組a的各個(gè)元素值,要求元素值取自50至100之間的隨機(jī)整數(shù)(提示:為了獲得隨機(jī)性更好的隨機(jī)數(shù),請用語句srand(time(null)

4、;設(shè)置隨機(jī)數(shù)發(fā)生器的種子,然后調(diào)用原型為int rand();的函數(shù),它產(chǎn)生0rand_max之間的隨機(jī)整數(shù)。需要包含頭文件和)。 void display(int *a, int n);功能:輸出數(shù)組a的所有元素。 double getaverage(int *a, int n);功能:計(jì)算并返回包含n個(gè)元素的數(shù)組a的平均值。 int getindex1(int *a, int n, double x);功能:獲取與x的值最接近的數(shù)組元素的最小下標(biāo)值。 int getindex2(int *a, int n, double x);功能:獲取與x的值最接近的數(shù)組元素的最大下標(biāo)值。1.1.2 文

5、件練習(xí)1.2 在文本文件records.txt中已存儲(chǔ)學(xué)生信息(學(xué)生人數(shù)不超過n,可以認(rèn)為#define n 60),包括學(xué)號、姓名、身高三個(gè)數(shù)據(jù)項(xiàng)(數(shù)據(jù)項(xiàng)之間用字符t分隔,姓名中可能含有空格字符,每位學(xué)生的數(shù)據(jù)占一行),要求編程從文件中獲取學(xué)生的學(xué)號和身高數(shù)據(jù)后,按身高從低到高的順序排序,并輸出排序后的學(xué)號、姓名、身高表?!疽蟆渴紫扔脀indows系統(tǒng)的“記事本”或其他文本編輯軟件編輯records.txt文件,每行為學(xué)號(整數(shù)或數(shù)碼字符串)、t、姓名(不超過8個(gè)字符)、t、身高(浮點(diǎn)型數(shù)據(jù))、n。然后編寫程序:定義函數(shù)原型如下的功能函數(shù),并在main函數(shù)中調(diào)用這些函數(shù)測試其功能,源程序文

6、件名為“學(xué)號_02.c”。 char *fgetline(file *fp, char *str, int n, char delim);功能:從文件fp中讀取字符串存入str,讀取的字符數(shù)不超過n,或遇到delim指定的字符為止,并將該字符換成串結(jié)束標(biāo)志字符。函數(shù)返回所讀到的字符串,若直接遇到文件結(jié)束則返回空地址(null)。 int getrecs(char *filename, struct students *s, int n);功能:從字符串filename為文件名所聯(lián)系的文件中讀取數(shù)據(jù)到結(jié)構(gòu)體數(shù)組s中,最多讀取n個(gè)元素,返回實(shí)際讀取的元素個(gè)數(shù)。 void sort(struct s

7、tudents *s, int n);功能:對結(jié)構(gòu)體數(shù)組s按身高從低到高排序。 void display(struct students *s, int n);功能:輸出結(jié)構(gòu)體數(shù)組s中所有元素的所有數(shù)據(jù)成員的值。1.1.3 結(jié)構(gòu)體練習(xí)1.3 已知頭文件seqlist.h給出學(xué)生信息順序表的類型定義和基本函數(shù)原型(用于函數(shù)聲明);程序文件seqlist.c中給出基本函數(shù)定義。(1) 順序表類型定義typedef struct int id;/* 學(xué)號 */char name9;/* 姓名 */double height;/* 身高 */int sex;/* 性別,0為男生,1為女生 */ dat

8、atype;#define max 100typedef struct datatype datamax;/* 存放順序表元素的數(shù)組 */int last;/* 表示data中實(shí)際存放元素個(gè)數(shù) */ seqlist;(2) 基本操作函數(shù)的函數(shù)原型void initlist(seqlist *lp);/*置一個(gè)空表*/void createlist(seqlist *lp);/*建一個(gè)學(xué)生順序表*/void sort_id(seqlist *lp);/*按學(xué)號排序*/void error(char *s);/*自定義錯(cuò)誤處理函數(shù)*/void printlist(seqlist *lp);/*輸出

9、學(xué)生表*/void save(seqlist *lp, char *strname);/*保存學(xué)生順序表到指定文件*/(3) 要求 閱讀源代碼文件seqlist.h和seqlist.c(見電子文檔),理解順序表類型seqlist和基本操作函數(shù)。 采用多文件結(jié)構(gòu),另外編寫一個(gè)程序(文件名為“學(xué)號_03.c”),并將seqlist.h和seqlist.c移植到本程序中,完成如下測試:l 從給定的學(xué)生信息文件records.txt中讀取數(shù)據(jù),創(chuàng)建一個(gè)包含學(xué)生學(xué)號、姓名(姓名中可能含有空格字符)、身高、性別的學(xué)生信息表;輸出學(xué)生信息到屏幕;l 對已建立的學(xué)生身高信息表按學(xué)號從小到大排序,并把結(jié)果寫入到

10、數(shù)據(jù)文件中(results.txt);l 從鍵盤輸入一位學(xué)生的相關(guān)信息插入到已排序的學(xué)生身高信息表中后仍然保持學(xué)號的有序性;l 對新的學(xué)生身高信息表進(jìn)行倒置,結(jié)果輸出在屏幕;l 從鍵盤輸入一個(gè)身高值,統(tǒng)計(jì)與該身高相同的學(xué)生個(gè)數(shù)并輸出在屏幕;l 將原學(xué)生表拆分為男生身高信息表和女生身高信息表,分別輸出在屏幕上。在程序文件“學(xué)號_03.c”需再定義以下5個(gè)功能函數(shù):(1) int pause(char *prompt)printf(%s, prompt);return getch();功能:以字符串prompt為提示信息輸出,等待用戶按任意鍵,并返回所按鍵的掃描碼(注:getch函數(shù)并非標(biāo)準(zhǔn)c語言

11、的函數(shù),一般在windows系列操作系統(tǒng)中的c語言集成開發(fā)環(huán)境都提供該函數(shù),其原型在頭文件中聲明)。(2) void insert(seqlist *lp, datatype x);功能:在學(xué)號從小到大排序的學(xué)生表中插入值為x的學(xué)生仍保持學(xué)號的有序性。(3) void reverse(seqlist *lp);功能:對lp指向的順序表進(jìn)行倒置操作。(4) int count(seqlist *lp,double y);功能:統(tǒng)計(jì)學(xué)生表中身高值為y的學(xué)生數(shù)并返回。(5) void split(seqlist *lp, seqlist *lpm, seqlist *lpfm);功能:對原lp學(xué)生表

12、拆分成男生身高表lpm與女生身高表lpfm。1.2 鏈表及應(yīng)用1.2.1 閱讀并完成單向鏈表程序練習(xí)2.1 給定程序文件linklist.h和linklist.c及file4.c并將它們按mingw developer studio集成開發(fā)環(huán)境組織成工程文件ex_04.msp。請閱讀、分析程序,并完成file4.c文件中待完成的3個(gè)函數(shù)的定義(要求將文件名“file4.c”改成“學(xué)號_04.c”,并修改工程文件): int count(struct node head, double height_fm, double height_m);功能:統(tǒng)計(jì)head為頭結(jié)點(diǎn)的學(xué)生鏈表中身高達(dá)標(biāo)(女生身

13、高、男生身高標(biāo)準(zhǔn)依次由第2、3個(gè)參數(shù)給定)人數(shù)并返回。 void split(struct node *head, struct node *hm, struct node *hfm);功能:將head為頭結(jié)點(diǎn)的學(xué)生鏈表拆分成男生鏈表hm與女生鏈表hfm。 void merge(struct node *hm, struct node *hfm, struct node *head);功能:將男生鏈表hm與女生鏈表hfm,合并成一條鏈表head?!舅伎紗栴}】 頭文件中應(yīng)該編寫什么內(nèi)容,不能編寫什么內(nèi)容? 頭文件中#ifndef #endif的含義是什么,宏linklist_h的作用是什么? 為

14、什么有些函數(shù)的形式參數(shù)設(shè)計(jì)成指針,用于接收鏈表頭結(jié)點(diǎn)的地址?而另一些函數(shù)卻不需要傳遞地址,即采用單向的值傳遞? 鏈表的增、刪、改、查等函數(shù)的算法步驟描述。1.2.2 單向鏈表綜合程序設(shè)計(jì)練習(xí)2.2 建一個(gè)帶頭結(jié)點(diǎn)的學(xué)生信息(學(xué)號、姓名、成績)單向鏈表,按成績降序排列,打印輸出,并計(jì)算及格人數(shù)。#define max_size 20typedef struct studentint stunum, score;char namemax_size;struct student *next;node, *linklist;【要求】采用多文件結(jié)構(gòu)(1個(gè)頭文件,2個(gè)源程序文件),定義功能函數(shù)實(shí)現(xiàn) 初始化

15、一個(gè)空鏈表; 從鍵盤輸入數(shù)據(jù)(學(xué)號為非正數(shù)時(shí)結(jié)束),創(chuàng)建新結(jié)點(diǎn)添加到鏈表中; 釋放所有結(jié)點(diǎn); 輸出所有結(jié)點(diǎn)的所有數(shù)據(jù); 計(jì)算并返回鏈表的結(jié)點(diǎn)數(shù); 計(jì)算及格(成績不低于60分)的人數(shù),輸出及格率; 將鏈表分割成及格結(jié)點(diǎn)、不及格結(jié)點(diǎn)組成的兩條鏈表; 在“學(xué)號_05.c”源程序文件中定義主函數(shù),調(diào)用上述函數(shù),測試其功能。1.2.3 josephus問題設(shè)計(jì)一個(gè)循環(huán)單向鏈表,求解如下josephus問題,程序文件文件名為“學(xué)號_06.c”。有1至 n編號的n 個(gè)人按順時(shí)針方向圍坐一圈,每人持有一個(gè)密碼(正整數(shù))做游戲。游戲開始時(shí),以正整數(shù)m作為報(bào)數(shù)上限值,從第一個(gè)人開始順時(shí)針方向自1開始順序報(bào)數(shù),報(bào)到

16、m時(shí)停止報(bào)數(shù),報(bào)m的人出列,將其密碼作為新的報(bào)數(shù)上限值,從其下一個(gè)人開始重新報(bào)數(shù),如此下去,直至所有的人全部出列為止。要求產(chǎn)生記錄出列順序的表。如n=7,m=20,每個(gè)人的密碼依次是:3,1,7,2,4,8,4,則出列順序?yàn)?,1,4,7,2,3,5。2. 規(guī)范題2.1 最大公約數(shù)和最小公倍數(shù)問題描述從輸入文件中讀入兩個(gè)整數(shù)a,b,求最大公約數(shù)gcd(a,b)和最小公倍數(shù)和lcm(a,b)。 輸入輸入有若干行,每行有兩個(gè)整數(shù)a和b,(|a|,|b|65536)。輸入直到文件輸入結(jié)束。輸出對每一行測試數(shù)據(jù),在一行上先輸出“case #:”,其中“#”是測試數(shù)據(jù)的行編號(從1開始),接著在下面的兩

17、行上分別輸出這兩個(gè)整數(shù)的最大公約數(shù)和最小公倍數(shù)。如無最大公因數(shù),則輸出“no gcd”;如無最小公倍數(shù),則輸出“no lcm”;兩組輸出數(shù)據(jù)之間空一行。輸入樣例 6 110 06 9輸出樣例case 1:gcd(6,11) = 1lcm(6,11) = 66case 2:no gcdno lcmcase 3:gcd(6,9) = 3lcm(6,9) = 182.2 指數(shù)函數(shù)值問題描述通過ex的無窮級數(shù)展開公式ex= 1+x+x2/2!+x3/3!+x4/4!+計(jì)算ex的值。(a)編寫一個(gè)函數(shù)exp1(x),已知x,取無窮級數(shù)的前20項(xiàng)計(jì)算ex的近似值;(b)編寫一個(gè)函數(shù)exp2(x),已知x,

18、用無窮級數(shù)計(jì)算ex,當(dāng)某項(xiàng)的值小于10-6時(shí),則從1到這項(xiàng)之和為ex的近似值;編寫程序,從文件中輸入一個(gè)x值,分別調(diào)用函數(shù)exp1(x)和exp2(x),并輸出ex的近似值。輸入輸入有若干行,每行有一個(gè)實(shí)數(shù)x,(-10.0x10.0)。輸入直到文件輸入結(jié)束。輸出對輸入中的每一個(gè)實(shí)數(shù)x,在一行上先輸出“e1(x) = ”,其中x以小數(shù)點(diǎn)后有3位小數(shù)的形式輸出,再將用函數(shù)exp1(x)計(jì)算的值以四舍五入方式保留5位小數(shù)輸出;同樣地,在第二行上先輸出“e2(x) = ”,其中x以小數(shù)點(diǎn)后有3位小數(shù)的形式輸出,再將用函數(shù)exp2(x)計(jì)算的值以四舍五入方式保留5位小數(shù)輸出。兩組輸出數(shù)據(jù)之間空一行。輸入

19、樣例 61輸出樣例e1(6.000) = 403.42664e2(6.000) = 403.42871e1(1.000) = 2.71828e2(1.000) = 2.718282.3 圓盤找數(shù)問題描述如圖找出3個(gè)連續(xù)數(shù)(緊挨著的3個(gè)數(shù)),它們相加和最大,再找出和數(shù)最小的3個(gè)數(shù),試編一程序求之。輸入輸入的第一行有一個(gè)整數(shù)n,表示測試數(shù)據(jù)的組數(shù)。接下來有n行,每行有若干個(gè)整數(shù)a1,a2,,am,(-10000a1,a2,, am 10000),他們表示一個(gè)圓盤上的m個(gè)數(shù),(m1000)。輸入直到文件輸入結(jié)束。輸出對輸入中每一行表示的圓盤,在一行上先輸出“case #:”,其中“#”是測試數(shù)據(jù)的行

20、編號(從1開始),接著在下面的一行上分別輸出這三個(gè)相鄰數(shù)字之和中最大和與最小和,以及取得最大和與最小和對應(yīng)的那三個(gè)相鄰數(shù)字的第一個(gè)數(shù)的下標(biāo)maxindex與minindex。注:數(shù)的下標(biāo)約定從1開始編起。假如這些數(shù)不到3個(gè),那么就無法按圓盤方式計(jì)算,此時(shí)輸出“no maximal and minimal!”輸入樣例 220 1 8 4 13 6 10 15 2 17 3 19 7 16 8 11 14 9 12 51 -2輸出樣例case 1:maximum = 42, minimum = 13, maxindex = 12, minindex = 2case 2:no maximal and

21、 minimal!2.4 回文串問題描述編寫一函數(shù)palindrome(char* s)用于判斷任一字符串是否是回文(即順序讀與反序讀一樣,例如“abcba”、“121”等)。輸入輸入文件有多組測試數(shù)據(jù)。第一行有一個(gè)整數(shù)n,它是測試數(shù)據(jù)組數(shù),(n10)。接下來有n行,每行至多有m個(gè)字符,(m1000)。但是,每一行末尾處的換行字符不能作為這一行的內(nèi)容。輸出對每一組測試數(shù)據(jù),在一行上輸出你的判斷結(jié)果。若是回文串,則輸出“yes!”,否則輸出“no!”。(主函數(shù)調(diào)用判別函數(shù)并輸出判別結(jié)果)。輸入樣例3abcba121abca輸出樣例yes!yes!no!2.5 單向鏈表問題描述編程實(shí)現(xiàn)下述功能:編

22、一函數(shù)struct node *create(),建立如下形式的單鏈表,并把每次讀入的整數(shù)添加到鏈?zhǔn)住ead100-1050 20編寫一函數(shù)sort(struct node *head),按將無序單鏈表中的整數(shù)data成員按大到小的次序變?yōu)橛行騿捂湵怼V骱瘮?shù)調(diào)用函數(shù)create創(chuàng)建一個(gè)單鏈表,并分別輸出排序前和排序后的單鏈表。輸入輸入文件有多組測試數(shù)據(jù)。第一行有一個(gè)整數(shù)n,它是測試數(shù)據(jù)組數(shù),(n20)。接下來有n行,每行至多有m個(gè)整數(shù),(m1000),整數(shù)之間有一個(gè)或多個(gè)空格。行尾無多余空格。每一行的數(shù)據(jù)輸入結(jié)束標(biāo)志為換行符號。輸出對每一組測試數(shù)據(jù),先在一行上先輸出“case #:”,其中“

23、#”是測試數(shù)據(jù)的行編號(從1開始),接著的一行上輸出“before sorting:”,再在接下來的行上輸出排序前的單鏈表,每行10個(gè)結(jié)點(diǎn)值;然后在下面的一行上輸出“after sorting:”,再在接下來的行上輸出排序后的單鏈表,也是每行10個(gè)結(jié)點(diǎn)值。輸入樣例31 3 2 -11 2 1 012 3 4 5 67 8 9 1 2 34 5 67 28 19 0輸出樣例case 1:before sorting:-1 2 3 1 after sorting:3 2 1 -1 case 2:before sorting:0 1 2 1 after sorting:2 1 1 0 case 3:

24、before sorting:0 19 28 67 5 34 2 1 9 867 5 4 3 12 after sorting:67 67 34 28 19 12 9 8 5 54 3 2 1 02.6 正讀反寫問題描述順序讀入一串?dāng)?shù)據(jù),讓機(jī)器以相反的次序輸出所有的數(shù)值。例如,讀入:abcde,輸出:edcba。輸入輸入的第1行是一個(gè)整數(shù)n,表示有n組測試數(shù)據(jù)。接下來有n行,每行表示一組測試數(shù)據(jù),這一行由一串字符串構(gòu)成,字符串中允許出現(xiàn)空格,以回車符作為這一行的結(jié)束符。輸出對每一字符串表示的數(shù)據(jù),在一行上輸出對應(yīng)的逆序字符串。輸入樣例2abcde12輸出樣例edcba212.7 字符串交換問題

25、描述交換兩個(gè)不同長度的字符串指針,分別輸出之。要求:用函數(shù)調(diào)用的方式來實(shí)現(xiàn)。主函數(shù)中定義兩個(gè)字符串,然后調(diào)用交換函數(shù)。如將:x=“i am a good teacher.”與y=“hello good morning .”進(jìn)行交換。輸入輸入的第1行是一個(gè)整數(shù)n,表示有n組測試數(shù)據(jù)。接下來是n組測試數(shù)據(jù)的描述,每一組測試數(shù)據(jù)有2行,他們均由一串字符串構(gòu)成,字符串中允許出現(xiàn)空格,以回車符作為這一行的結(jié)束符。兩組測試數(shù)據(jù)之間有一個(gè)空行。輸出對輸入中的每一組2行測試字符串,先輸出“case #:”,其中“#”是測試數(shù)據(jù)的編號(從1開始),接著按要求在下面的兩行上分別輸出這兩個(gè)經(jīng)過交換過的字符串。輸入樣

26、例2i am a good teacher.hello good morning .123abcdef輸出樣例case 1:hello good morning .i am a good teacher.case 2:abcdef1232.8 數(shù)組排序問題描述任意給定整數(shù)n,及一組由下列公式定義的數(shù)組an:a1=25,a2=-25,ai=(ai-1*4627+ai-2*3581)/100%100-50(i=3,4,n),用選擇排序法把a(bǔ)重整為 a1a2an ,輸出結(jié)果。主函數(shù)調(diào)用排序函數(shù),排序應(yīng)盡量減少數(shù)據(jù)移動(dòng)的次數(shù)。輸入輸入文件的每一行上有一個(gè)整數(shù)n,(1n1000),表示你要處理的這一組測

27、試數(shù)據(jù)是由n個(gè)數(shù)組成的數(shù)組a。輸出對輸入中的每一個(gè)整數(shù)n,輸出數(shù)組a經(jīng)從小到大排序后的數(shù)組,元素之間有一個(gè)空格,尾部無多余空格。兩組輸出數(shù)據(jù)之間有一個(gè)空行。輸入樣例234輸出樣例-25 25-25 2 25-25 2 25 372.9 航空售票系統(tǒng)問題描述為一個(gè)容器為m個(gè)座位飛機(jī)的航班之每次飛行分配座位。飛機(jī)上分了2個(gè)區(qū):吸煙區(qū)、無吸煙區(qū),吸煙區(qū)座位數(shù)為n,無吸煙區(qū)座位數(shù)為m-n。如果購票人鍵入了數(shù)1,那么程序就在吸煙區(qū)給他分配一個(gè)座位(座號1n);如果鍵入0,程序就在無吸煙區(qū)給他分配一個(gè)座位(座號n+1m)。分配座位號按從小到大方式進(jìn)行。輸入輸入文件中有若干測試數(shù)據(jù)。每一組測試數(shù)據(jù)的第一行是

28、兩個(gè)整數(shù)m、n,他們分別是飛機(jī)座位數(shù)與吸煙區(qū)座位數(shù)。接下來有若干行,每行有兩個(gè)整數(shù)b、s。這里b=1或0,表示購票人鍵入的數(shù);s=0表示購票人吸煙區(qū)滿員后,購票人愿意被分配到無吸煙區(qū)的座位;當(dāng)s不是0時(shí),系統(tǒng)不能將座位進(jìn)行調(diào)整。當(dāng)b=-1時(shí)表示這一組測試數(shù)據(jù)輸入結(jié)束。當(dāng)一行上的兩個(gè)整數(shù)m、n為0時(shí)表示文件輸入結(jié)束。輸出然后程序打印出該購票者所得的座號以及座位是在無吸煙區(qū)還是在吸煙區(qū)。對輸入中的每一組測試數(shù)據(jù),先輸出“case #:”,其中“#”是測試數(shù)據(jù)的編號(從1開始),接著按要求在下面的行上輸出每個(gè)購票者的座位信息:分區(qū)與座位號。如在吸煙區(qū),那么輸出“smoking”, 如在無吸煙區(qū),那么

29、輸出“no smocking”。系統(tǒng)不能把已出售座位再分配給別人。當(dāng)無煙區(qū)或吸煙區(qū)滿員后,信息“next flight leaves 6 hours”。輸入樣例10 60 11 01 10 00 11 11 01 00 11 1-1 010 40 11 01 10 00 11 11 01 00 11 1-1 00 0輸出入樣例case 1:no smoking: 1smoking: 1smoking: 2no smoking: 2no smoking: 3smoking: 3smoking: 4smoking: 5no smoking: 4smoking: 6case 2:no smoking

30、: 1smoking: 1smoking: 2no smoking: 2no smoking: 3smoking: 3smoking: 4no smoking: 4no smoking: 5next flight leaves 6 hours2.10 鞍點(diǎn)問題描述給定一個(gè)n*n矩陣a。矩陣a的鞍點(diǎn)是一個(gè)位置(i,j),在該位置上的元素是第i行上的最大數(shù),第j列上的最小數(shù)。一個(gè)矩陣a也可能沒有鞍點(diǎn)。你的任務(wù)是找出a的鞍點(diǎn)。輸入輸入文件的第1行是一個(gè)整數(shù)t,(1=t=20),表示下面有t個(gè)矩陣。接下來是t個(gè)矩陣的描述。每一個(gè)矩陣a由若干行組成,第1行上是一個(gè)正整數(shù)n, (1=n=100),然后有n

31、行,每一行有n個(gè),同一行上兩個(gè)元素之間有一個(gè)或多個(gè)空格。兩個(gè)矩陣描述之間空一行。輸入直到文件結(jié)束。輸出對輸入文件中的t個(gè)矩陣,輸出“yes”或“no”,如果一個(gè)矩陣a有鞍點(diǎn),那么輸出“yes”,否則輸出“no”。輸入樣例251 2 3 4 56 7 8 9 1087 45 98 65 378 94 34 67 589 65 88 50 4921 24 3輸出樣例noyes2.11 螺旋方陣問題描述下面是一個(gè)5*5螺旋方陣。你的任務(wù)是按順時(shí)針方向旋進(jìn)的n*n螺旋方陣。1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9輸入輸入

32、文件有若干行,每一行上有一個(gè)整數(shù)n,(1=n=100)。 輸出對輸入文件中的每個(gè)整數(shù)n,按n行n列的方式輸出n*n螺旋方陣,行尾無空格,同一行上兩個(gè)數(shù)之間空一格。兩個(gè)螺旋方陣之間空一行。輸入樣例54輸出樣例1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 91 2 3 412 13 14 511 16 15 610 9 8 72.12 三角形個(gè)數(shù)問題描述在平面中給出了n個(gè)點(diǎn)。這些點(diǎn)任三點(diǎn)不共線,并且每兩個(gè)點(diǎn)之間都有一條線相連,求三角形的數(shù)目。輸入輸入文件只有一行,這一行有若干個(gè)整數(shù),相鄰兩個(gè)整數(shù)用一個(gè)空格隔開。每個(gè)整數(shù)n滿足

33、(1=n=2,000,000)。 輸出輸出文件有若干行。對輸入文件中的每個(gè)整數(shù)n,輸出一行,輸出內(nèi)容是三角形的數(shù)目。輸入樣例3 4 5輸出樣例14102.13 水仙花數(shù)問題描述水仙花數(shù)是一個(gè)三位數(shù),其各位數(shù)字立方和等于數(shù)本身。例如,153是一個(gè)水仙花數(shù),因?yàn)?53=。你的任務(wù)是判斷一個(gè)數(shù)n是否是水仙花數(shù)。輸入輸入文件有若干行,每一行上有一個(gè)整數(shù)n,(1=n=999)。 輸出輸出文件有若干行。對輸入文件中的每個(gè)整數(shù)n,在一行上輸出“yes”或“no”,如果數(shù)n是水仙花數(shù),那么輸出“yes”,否則輸出“no”。輸入樣例153100輸出樣例yesno2.14 統(tǒng)計(jì)字符數(shù)字空格和其它字符個(gè)數(shù)問題描述一

34、行字符中有字符、數(shù)字、空格及其它字符。你的任務(wù)是統(tǒng)計(jì)這一行字符串中字符、數(shù)字、空格和其它字符的個(gè)數(shù)。輸入輸入文件有若干行,每一行上若干個(gè)字符組成的字符串。輸出輸出文件有若干行。對輸入文件中的每一行字符串,在一行上輸出字符、數(shù)字、空格和其它字符的個(gè)數(shù)之間空一個(gè)空格。輸入樣例123fe*&54 0934jdf *as輸出樣例3 9 1 24 0 1 12.15 完全數(shù)問題描述一個(gè)數(shù)n如果恰好等于它的真因子之和,那么這個(gè)數(shù)就稱為完全數(shù)。例如,6是一個(gè)完全數(shù),因?yàn)?=1+2+3。你的任務(wù)是判斷一個(gè)數(shù)n是否是完全數(shù)。輸入輸入文件有若干行,每一行上有一個(gè)整數(shù)n,(1=n=65535)。 輸出輸出文件有若干

35、行。對輸入文件中的每個(gè)整數(shù)n,先輸出數(shù)n,接著空一格后輸出“yes”或“no”,如果數(shù)n是完全數(shù),那么輸出“yes”,否則輸出“no”。輸入樣例369輸出樣例3 yes6 yes9 no2.16 24點(diǎn)問題描述給定4個(gè)不超過10的正整數(shù)a,b,c,d(為了降低難度要求不改變其順序),在其間添加括號及運(yùn)算符+,-,*,/(浮點(diǎn)數(shù)除法)使其結(jié)果為24。輸入輸入數(shù)據(jù)文件中有若干行,每一行有4個(gè)正整數(shù)對應(yīng)一種情形。輸出對于每一種情形,要求先輸出“case #: ”(其中#為序號),然后輸出具體算式(有多種解法時(shí)僅需輸出一種),若不可能使計(jì)算結(jié)果為24,則輸出impossible!?!靖阶ⅰ?4個(gè)數(shù)需要

36、3次算術(shù)運(yùn)算(從4種運(yùn)算符中可重復(fù)地任選3個(gè)運(yùn)算符,共有4364種情形,可用3重循環(huán)實(shí)現(xiàn));添加括號共有5種可能情形(參見下面輸出樣例),其中,分別表示某種運(yùn)算符(a b) c da (b c) d(a b) (c d)a (b c) da b (c d)建議將運(yùn)算設(shè)計(jì)成函數(shù),利用指向函數(shù)的指針數(shù)組對自定義的add(加),sub(減),mul(乘),div(除)函數(shù)進(jìn)行有效地統(tǒng)一管理使用double (*op4)(double, double) = add, sub, mul, div; 若進(jìn)一步考慮交換a,b,c,d的次序,其全排列共有4!=24種; 還可以考慮可取113之間的整數(shù)。輸入樣例

37、1 2 3 45 1 5 56 8 7 52 3 4 55 5 1 55 5 5 1輸出樣例case 1: (1+2)+3*4 = 24case 2: 5-(1/5)*5 = 24case 3: (6*8)/(7-5) = 24case 4: 2*(3+4)+5 = 24case 5: 5*5-(1/5) = 24case 6: impossible!2.17 logistic映射中的周期點(diǎn)(1) 概述logistic映射是混沌學(xué)中的例子,指的是如下迭代計(jì)算其中參數(shù)。取便可以進(jìn)行迭代計(jì)算。對于某些給定的參數(shù),這個(gè)迭代過程可能收斂到一個(gè)點(diǎn)(即滿足,該點(diǎn)被稱為不動(dòng)點(diǎn),或者周期為1的點(diǎn))此時(shí)稱迭代的周期為1;而對于某些給定的參數(shù),這個(gè)迭代過程可能在兩個(gè)點(diǎn)

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論