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

下載本文檔

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

文檔簡介

1、上海大學(xué)計算機學(xué)院 夏季學(xué)期 計算機編程實訓(xùn)上海大學(xué) 計算機學(xué)院夏季學(xué)期計算機編程實訓(xùn)題2012年6月25可信計算與軟件工程研究室目 錄1. 基礎(chǔ)題11.1 數(shù)據(jù)構(gòu)造及其基本操作11.1.1 動態(tài)數(shù)組11.1.2 文件11.1.3 結(jié)構(gòu)體21.2 鏈表及應(yīng)用41.2.1 閱讀并完成單向鏈表程序41.2.2 單向鏈表綜合程序設(shè)計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 鞍點152.11 螺旋

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

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

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

5、t n, double x);功能:獲取與x的值最接近的數(shù)組元素的最大下標值。1.1.2 文件練習1.2 在文本文件records.txt中已存儲學(xué)生信息(學(xué)生人數(shù)不超過n,可以認為#define n 60),包括學(xué)號、姓名、身高三個數(shù)據(jù)項(數(shù)據(jù)項之間用字符't'分隔,姓名中可能含有空格字符,每位學(xué)生的數(shù)據(jù)占一行),要求編程從文件中獲取學(xué)生的學(xué)號和身高數(shù)據(jù)后,按身高從低到高的順序排序,并輸出排序后的學(xué)號、姓名、身高表?!疽蟆渴紫扔脀indows系統(tǒng)的“記事本”或其他文本編輯軟件編輯records.txt文件,每行為學(xué)號(整數(shù)或數(shù)碼字符串)、't'、姓名(不超過

6、8個字符)、't'、身高(浮點型數(shù)據(jù))、'n'。然后編寫程序:定義函數(shù)原型如下的功能函數(shù),并在main函數(shù)中調(diào)用這些函數(shù)測試其功能,源程序文件名為“學(xué)號_02.c”。 char *fgetline(file *fp, char *str, int n, char delim);功能:從文件fp中讀取字符串存入str,讀取的字符數(shù)不超過n,或遇到delim指定的字符為止,并將該字符換成串結(jié)束標志字符。函數(shù)返回所讀到的字符串,若直接遇到文件結(jié)束則返回空地址(null)。 int getrecs(char *filename, struct students *s,

7、int n);功能:從字符串filename為文件名所聯(lián)系的文件中讀取數(shù)據(jù)到結(jié)構(gòu)體數(shù)組s中,最多讀取n個元素,返回實際讀取的元素個數(shù)。 void sort(struct students *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)體練習1.3 已知頭文件seqlist.h給出學(xué)生信息順序表的類型定義和基本函數(shù)原型(用于函數(shù)聲明);程序文件seqlist.c中給出基本函數(shù)定義。(1) 順序表類型定義typedef struct

8、int id;/* 學(xué)號 */char name9;/* 姓名 */double height;/* 身高 */int sex;/* 性別,0為男生,1為女生 */ datatype;#define max 100typedef struct datatype datamax;/* 存放順序表元素的數(shù)組 */int last;/* 表示data中實際存放元素個數(shù) */ seqlist;(2) 基本操作函數(shù)的函數(shù)原型void initlist(seqlist *lp);/*置一個空表*/void createlist(seqlist *lp);/*建一個學(xué)生順序表*/void sort_id(s

9、eqlist *lp);/*按學(xué)號排序*/void error(char *s);/*自定義錯誤處理函數(shù)*/void printlist(seqlist *lp);/*輸出學(xué)生表*/void save(seqlist *lp, char *strname);/*保存學(xué)生順序表到指定文件*/(3) 要求 閱讀源代碼文件seqlist.h和seqlist.c(見電子文檔),理解順序表類型seqlist和基本操作函數(shù)。 采用多文件結(jié)構(gòu),另外編寫一個程序(文件名為“學(xué)號_03.c”),并將seqlist.h和seqlist.c移植到本程序中,完成如下測試:l 從給定的學(xué)生信息文件records.txt

10、中讀取數(shù)據(jù),創(chuàng)建一個包含學(xué)生學(xué)號、姓名(姓名中可能含有空格字符)、身高、性別的學(xué)生信息表;輸出學(xué)生信息到屏幕;l 對已建立的學(xué)生身高信息表按學(xué)號從小到大排序,并把結(jié)果寫入到數(shù)據(jù)文件中(results.txt);l 從鍵盤輸入一位學(xué)生的相關(guān)信息插入到已排序的學(xué)生身高信息表中后仍然保持學(xué)號的有序性;l 對新的學(xué)生身高信息表進行倒置,結(jié)果輸出在屏幕;l 從鍵盤輸入一個身高值,統(tǒng)計與該身高相同的學(xué)生個數(shù)并輸出在屏幕;l 將原學(xué)生表拆分為男生身高信息表和女生身高信息表,分別輸出在屏幕上。在程序文件“學(xué)號_03.c”需再定義以下5個功能函數(shù):(1) int pause(char *prompt)print

11、f("%s", prompt);return getch();功能:以字符串prompt為提示信息輸出,等待用戶按任意鍵,并返回所按鍵的掃描碼(注:getch函數(shù)并非標準c語言的函數(shù),一般在windows系列操作系統(tǒng)中的c語言集成開發(fā)環(huán)境都提供該函數(shù),其原型在<conio.h>頭文件中聲明)。(2) void insert(seqlist *lp, datatype x);功能:在學(xué)號從小到大排序的學(xué)生表中插入值為x的學(xué)生仍保持學(xué)號的有序性。(3) void reverse(seqlist *lp);功能:對lp指向的順序表進行倒置操作。(4) int coun

12、t(seqlist *lp,double y);功能:統(tǒng)計學(xué)生表中身高值為y的學(xué)生數(shù)并返回。(5) void split(seqlist *lp, seqlist *lpm, seqlist *lpfm);功能:對原lp學(xué)生表拆分成男生身高表lpm與女生身高表lpfm。1.2 鏈表及應(yīng)用1.2.1 閱讀并完成單向鏈表程序練習2.1 給定程序文件linklist.h和linklist.c及file4.c并將它們按mingw developer studio集成開發(fā)環(huán)境組織成工程文件ex_04.msp。請閱讀、分析程序,并完成file4.c文件中待完成的3個函數(shù)的定義(要求將文件名“file4.c

13、”改成“學(xué)號_04.c”,并修改工程文件): int count(struct node head, double height_fm, double height_m);功能:統(tǒng)計head為頭結(jié)點的學(xué)生鏈表中身高達標(女生身高、男生身高標準依次由第2、3個參數(shù)給定)人數(shù)并返回。 void split(struct node *head, struct node *hm, struct node *hfm);功能:將head為頭結(jié)點的學(xué)生鏈表拆分成男生鏈表hm與女生鏈表hfm。 void merge(struct node *hm, struct node *hfm, struct node

14、*head);功能:將男生鏈表hm與女生鏈表hfm,合并成一條鏈表head?!舅伎紗栴}】 頭文件中應(yīng)該編寫什么內(nèi)容,不能編寫什么內(nèi)容? 頭文件中#ifndef #endif的含義是什么,宏linklist_h的作用是什么? 為什么有些函數(shù)的形式參數(shù)設(shè)計成指針,用于接收鏈表頭結(jié)點的地址?而另一些函數(shù)卻不需要傳遞地址,即采用單向的值傳遞? 鏈表的增、刪、改、查等函數(shù)的算法步驟描述。1.2.2 單向鏈表綜合程序設(shè)計練習2.2 建一個帶頭結(jié)點的學(xué)生信息(學(xué)號、姓名、成績)單向鏈表,按成績降序排列,打印輸出,并計算及格人數(shù)。#define max_size 20typedef struct studen

15、tint stunum, score;char namemax_size;struct student *next;node, *linklist;【要求】采用多文件結(jié)構(gòu)(1個頭文件,2個源程序文件),定義功能函數(shù)實現(xiàn) 初始化一個空鏈表; 從鍵盤輸入數(shù)據(jù)(學(xué)號為非正數(shù)時結(jié)束),創(chuàng)建新結(jié)點添加到鏈表中; 釋放所有結(jié)點; 輸出所有結(jié)點的所有數(shù)據(jù); 計算并返回鏈表的結(jié)點數(shù); 計算及格(成績不低于60分)的人數(shù),輸出及格率; 將鏈表分割成及格結(jié)點、不及格結(jié)點組成的兩條鏈表; 在“學(xué)號_05.c”源程序文件中定義主函數(shù),調(diào)用上述函數(shù),測試其功能。1.2.3 josephus問題設(shè)計一個循環(huán)單向鏈表,求解

16、如下josephus問題,程序文件文件名為“學(xué)號_06.c”。有1至 n編號的n 個人按順時針方向圍坐一圈,每人持有一個密碼(正整數(shù))做游戲。游戲開始時,以正整數(shù)m作為報數(shù)上限值,從第一個人開始順時針方向自1開始順序報數(shù),報到m時停止報數(shù),報m的人出列,將其密碼作為新的報數(shù)上限值,從其下一個人開始重新報數(shù),如此下去,直至所有的人全部出列為止。要求產(chǎn)生記錄出列順序的表。如n=7,m=20,每個人的密碼依次是:3,1,7,2,4,8,4,則出列順序為6,1,4,7,2,3,5。2. 規(guī)范題2.1 最大公約數(shù)和最小公倍數(shù)問題描述從輸入文件中讀入兩個整數(shù)a,b,求最大公約數(shù)gcd(a,b)和最小公倍數(shù)

17、和lcm(a,b)。 輸入輸入有若干行,每行有兩個整數(shù)a和b,(|a|,|b|<65536)。輸入直到文件輸入結(jié)束。輸出對每一行測試數(shù)據(jù),在一行上先輸出“case #:”,其中“#”是測試數(shù)據(jù)的行編號(從1開始),接著在下面的兩行上分別輸出這兩個整數(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

18、 指數(shù)函數(shù)值問題描述通過ex的無窮級數(shù)展開公式ex= 1+x+x2/2!+x3/3!+x4/4!+計算ex的值。(a)編寫一個函數(shù)exp1(x),已知x,取無窮級數(shù)的前20項計算ex的近似值;(b)編寫一個函數(shù)exp2(x),已知x,用無窮級數(shù)計算ex,當某項的值小于10-6時,則從1到這項之和為ex的近似值;編寫程序,從文件中輸入一個x值,分別調(diào)用函數(shù)exp1(x)和exp2(x),并輸出ex的近似值。輸入輸入有若干行,每行有一個實數(shù)x,(-10.0x10.0)。輸入直到文件輸入結(jié)束。輸出對輸入中的每一個實數(shù)x,在一行上先輸出“e1(x) = ”,其中x以小數(shù)點后有3位小數(shù)的形式輸出,再將用

19、函數(shù)exp1(x)計算的值以四舍五入方式保留5位小數(shù)輸出;同樣地,在第二行上先輸出“e2(x) = ”,其中x以小數(shù)點后有3位小數(shù)的形式輸出,再將用函數(shù)exp2(x)計算的值以四舍五入方式保留5位小數(shù)輸出。兩組輸出數(shù)據(jù)之間空一行。輸入樣例 61輸出樣例e1(6.000) = 403.42664e2(6.000) = 403.42871e1(1.000) = 2.71828e2(1.000) = 2.718282.3 圓盤找數(shù)問題描述如圖找出3個連續(xù)數(shù)(緊挨著的3個數(shù)),它們相加和最大,再找出和數(shù)最小的3個數(shù),試編一程序求之。輸入輸入的第一行有一個整數(shù)n,表示測試數(shù)據(jù)的組數(shù)。接下來有n行,每行有

20、若干個整數(shù)a1,a2,,am,(-10000a1,a2,, am 10000),他們表示一個圓盤上的m個數(shù),(m1000)。輸入直到文件輸入結(jié)束。輸出對輸入中每一行表示的圓盤,在一行上先輸出“case #:”,其中“#”是測試數(shù)據(jù)的行編號(從1開始),接著在下面的一行上分別輸出這三個相鄰數(shù)字之和中最大和與最小和,以及取得最大和與最小和對應(yīng)的那三個相鄰數(shù)字的第一個數(shù)的下標maxindex與minindex。注:數(shù)的下標約定從1開始編起。假如這些數(shù)不到3個,那么就無法按圓盤方式計算,此時輸出“no maximal and minimal!”輸入樣例 220 1 8 4 13 6 10 15 2 1

21、7 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 minimal!2.4 回文串問題描述編寫一函數(shù)palindrome(char* s)用于判斷任一字符串是否是回文(即順序讀與反序讀一樣,例如“abcba”、“121”等)。輸入輸入文件有多組測試數(shù)據(jù)。第一行有一個整數(shù)n,它是測試數(shù)據(jù)組數(shù),(n10)。接下來有n行,每行至多有m個字符,(m1000)。但是,每一行末尾處的換行字符不能作為這一行的內(nèi)容。輸出對每一組

22、測試數(shù)據(jù),在一行上輸出你的判斷結(jié)果。若是回文串,則輸出“yes!”,否則輸出“no!”。(主函數(shù)調(diào)用判別函數(shù)并輸出判別結(jié)果)。輸入樣例3abcba121abca輸出樣例yes!yes!no!2.5 單向鏈表問題描述編程實現(xiàn)下述功能:編一函數(shù)struct node *create(),建立如下形式的單鏈表,并把每次讀入的整數(shù)添加到鏈首。head100-1050 20編寫一函數(shù)sort(struct node *head),按將無序單鏈表中的整數(shù)data成員按大到小的次序變?yōu)橛行騿捂湵?。主函?shù)調(diào)用函數(shù)create創(chuàng)建一個單鏈表,并分別輸出排序前和排序后的單鏈表。輸入輸入文件有多組測試數(shù)據(jù)。第一行有

23、一個整數(shù)n,它是測試數(shù)據(jù)組數(shù),(n20)。接下來有n行,每行至多有m個整數(shù),(m1000),整數(shù)之間有一個或多個空格。行尾無多余空格。每一行的數(shù)據(jù)輸入結(jié)束標志為換行符號。輸出對每一組測試數(shù)據(jù),先在一行上先輸出“case #:”,其中“#”是測試數(shù)據(jù)的行編號(從1開始),接著的一行上輸出“before sorting:”,再在接下來的行上輸出排序前的單鏈表,每行10個結(jié)點值;然后在下面的一行上輸出“after sorting:”,再在接下來的行上輸出排序后的單鏈表,也是每行10個結(jié)點值。輸入樣例31 3 2 -11 2 1 012 3 4 5 67 8 9 1 2 34 5 67 28 19 0

24、輸出樣例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: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 正讀反寫問題描述順序讀入一串數(shù)據(jù),讓機器以相反的次序輸出所有的數(shù)值。例如,讀入:abcde,輸出:edcba。輸入輸入的第1行是一個整數(shù)n,表示有n組測試數(shù)據(jù)。接

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

26、許出現(xiàn)空格,以回車符作為這一行的結(jié)束符。兩組測試數(shù)據(jù)之間有一個空行。輸出對輸入中的每一組2行測試字符串,先輸出“case #:”,其中“#”是測試數(shù)據(jù)的編號(從1開始),接著按要求在下面的兩行上分別輸出這兩個經(jīng)過交換過的字符串。輸入樣例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

27、-2*3581)/100%100-50(i=3,4,n),用選擇排序法把a重整為 a1a2an ,輸出結(jié)果。主函數(shù)調(diào)用排序函數(shù),排序應(yīng)盡量減少數(shù)據(jù)移動的次數(shù)。輸入輸入文件的每一行上有一個整數(shù)n,(1n1000),表示你要處理的這一組測試數(shù)據(jù)是由n個數(shù)組成的數(shù)組a。輸出對輸入中的每一個整數(shù)n,輸出數(shù)組a經(jīng)從小到大排序后的數(shù)組,元素之間有一個空格,尾部無多余空格。兩組輸出數(shù)據(jù)之間有一個空行。輸入樣例234輸出樣例-25 25-25 2 25-25 2 25 372.9 航空售票系統(tǒng)問題描述為一個容器為m個座位飛機的航班之每次飛行分配座位。飛機上分了2個區(qū):吸煙區(qū)、無吸煙區(qū),吸煙區(qū)座位數(shù)為n,無吸煙

28、區(qū)座位數(shù)為m-n。如果購票人鍵入了數(shù)1,那么程序就在吸煙區(qū)給他分配一個座位(座號1n);如果鍵入0,程序就在無吸煙區(qū)給他分配一個座位(座號n+1m)。分配座位號按從小到大方式進行。輸入輸入文件中有若干測試數(shù)據(jù)。每一組測試數(shù)據(jù)的第一行是兩個整數(shù)m、n,他們分別是飛機座位數(shù)與吸煙區(qū)座位數(shù)。接下來有若干行,每行有兩個整數(shù)b、s。這里b=1或0,表示購票人鍵入的數(shù);s=0表示購票人吸煙區(qū)滿員后,購票人愿意被分配到無吸煙區(qū)的座位;當s不是0時,系統(tǒng)不能將座位進行調(diào)整。當b=-1時表示這一組測試數(shù)據(jù)輸入結(jié)束。當一行上的兩個整數(shù)m、n為0時表示文件輸入結(jié)束。輸出然后程序打印出該購票者所得的座號以及座位是在無

29、吸煙區(qū)還是在吸煙區(qū)。對輸入中的每一組測試數(shù)據(jù),先輸出“case #:”,其中“#”是測試數(shù)據(jù)的編號(從1開始),接著按要求在下面的行上輸出每個購票者的座位信息:分區(qū)與座位號。如在吸煙區(qū),那么輸出“smoking”, 如在無吸煙區(qū),那么輸出“no smocking”。系統(tǒ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:

30、1smoking: 1smoking: 2no smoking: 2no smoking: 3smoking: 3smoking: 4smoking: 5no smoking: 4smoking: 6case 2:no smoking: 1smoking: 1smoking: 2no smoking: 2no smoking: 3smoking: 3smoking: 4no smoking: 4no smoking: 5next flight leaves 6 hours2.10 鞍點問題描述給定一個n*n矩陣a。矩陣a的鞍點是一個位置(i,j),在該位置上的元素是第i行上的最大數(shù),第j列上的

31、最小數(shù)。一個矩陣a也可能沒有鞍點。你的任務(wù)是找出a的鞍點。輸入輸入文件的第1行是一個整數(shù)t,(1<=t<=20),表示下面有t個矩陣。接下來是t個矩陣的描述。每一個矩陣a由若干行組成,第1行上是一個正整數(shù)n, (1<=n<=100),然后有n行,每一行有n個,同一行上兩個元素之間有一個或多個空格。兩個矩陣描述之間空一行。輸入直到文件結(jié)束。輸出對輸入文件中的t個矩陣,輸出“yes”或“no”,如果一個矩陣a有鞍點,那么輸出“yes”,否則輸出“no”。輸入樣例251 2 3 4 56 7 8 9 1087 45 98 65 378 94 34 67 589 65 88 5

32、0 4921 24 3輸出樣例noyes2.11 螺旋方陣問題描述下面是一個5*5螺旋方陣。你的任務(wù)是按順時針方向旋進的n*n螺旋方陣。1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9輸入輸入文件有若干行,每一行上有一個整數(shù)n,(1<=n<=100)。 輸出對輸入文件中的每個整數(shù)n,按n行n列的方式輸出n*n螺旋方陣,行尾無空格,同一行上兩個數(shù)之間空一格。兩個螺旋方陣之間空一行。輸入樣例54輸出樣例1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11

33、 10 91 2 3 412 13 14 511 16 15 610 9 8 72.12 三角形個數(shù)問題描述在平面中給出了n個點。這些點任三點不共線,并且每兩個點之間都有一條線相連,求三角形的數(shù)目。輸入輸入文件只有一行,這一行有若干個整數(shù),相鄰兩個整數(shù)用一個空格隔開。每個整數(shù)n滿足(1<=n<=2,000,000)。 輸出輸出文件有若干行。對輸入文件中的每個整數(shù)n,輸出一行,輸出內(nèi)容是三角形的數(shù)目。輸入樣例3 4 5輸出樣例14102.13 水仙花數(shù)問題描述水仙花數(shù)是一個三位數(shù),其各位數(shù)字立方和等于數(shù)本身。例如,153是一個水仙花數(shù),因為153=。你的任務(wù)是判斷一個數(shù)n是否是水仙花

34、數(shù)。輸入輸入文件有若干行,每一行上有一個整數(shù)n,(1<=n<=999)。 輸出輸出文件有若干行。對輸入文件中的每個整數(shù)n,在一行上輸出“yes”或“no”,如果數(shù)n是水仙花數(shù),那么輸出“yes”,否則輸出“no”。輸入樣例153100輸出樣例yesno2.14 統(tǒng)計字符數(shù)字空格和其它字符個數(shù)問題描述一行字符中有字符、數(shù)字、空格及其它字符。你的任務(wù)是統(tǒng)計這一行字符串中字符、數(shù)字、空格和其它字符的個數(shù)。輸入輸入文件有若干行,每一行上若干個字符組成的字符串。輸出輸出文件有若干行。對輸入文件中的每一行字符串,在一行上輸出字符、數(shù)字、空格和其它字符的個數(shù)之間空一個空格。輸入樣例123fe*&

35、amp;54 0934jdf *as輸出樣例3 9 1 24 0 1 12.15 完全數(shù)問題描述一個數(shù)n如果恰好等于它的真因子之和,那么這個數(shù)就稱為完全數(shù)。例如,6是一個完全數(shù),因為6=1+2+3。你的任務(wù)是判斷一個數(shù)n是否是完全數(shù)。輸入輸入文件有若干行,每一行上有一個整數(shù)n,(1<=n<=65535)。 輸出輸出文件有若干行。對輸入文件中的每個整數(shù)n,先輸出數(shù)n,接著空一格后輸出“yes”或“no”,如果數(shù)n是完全數(shù),那么輸出“yes”,否則輸出“no”。輸入樣例369輸出樣例3 yes6 yes9 no2.16 24點問題描述給定4個不超過10的正整數(shù)a,b,c,d(為了降低難

36、度要求不改變其順序),在其間添加括號及運算符+,-,*,/(浮點數(shù)除法)使其結(jié)果為24。輸入輸入數(shù)據(jù)文件中有若干行,每一行有4個正整數(shù)對應(yīng)一種情形。輸出對于每一種情形,要求先輸出“case #: ”(其中#為序號),然后輸出具體算式(有多種解法時僅需輸出一種),若不可能使計算結(jié)果為24,則輸出impossible!?!靖阶ⅰ?4個數(shù)需要3次算術(shù)運算(從4種運算符中可重復(fù)地任選3個運算符,共有4364種情形,可用3重循環(huán)實現(xiàn));添加括號共有5種可能情形(參見下面輸出樣例),其中,分別表示某種運算符(a b) c da (b c) d(a b) (c d)a (b c) da b (c d)建議將

37、運算設(shè)計成函數(shù),利用指向函數(shù)的指針數(shù)組對自定義的add(加),sub(減),mul(乘),div(除)函數(shù)進行有效地統(tǒng)一管理使用double (*op4)(double, double) = add, sub, mul, div; 若進一步考慮交換a,b,c,d的次序,其全排列共有4!=24種; 還可以考慮可取113之間的整數(shù)。輸入樣例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映射中的周期點(1) 概述logistic映射是混沌學(xué)中的例子,指的是如下迭代計算其中參數(shù)。取便可以進行迭代計算。對于某些給定的參數(shù),這個迭代過程可能收斂到一個點(即滿足,該點被稱為不動點,或者周期為1的點)此時稱迭代的周期為1;而對于某些給

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論