《吉林大學(xué)《程序設(shè)計(jì)基礎(chǔ)》歷年試題及答案.pdf》由會(huì)員分享,可在線閱讀,更多相關(guān)《吉林大學(xué)《程序設(shè)計(jì)基礎(chǔ)》歷年試題及答案.pdf(80頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
第 1 頁 共 1 頁 2011-2012 學(xué)年 第1 學(xué)期 2008 級(jí)《 高級(jí)語 言 程 序設(shè)計(jì) 》 重修 考試 試題(B 卷) 考試時(shí)間:2012 年 04 月 班級(jí) 學(xué)號(hào) 姓名 ? 請(qǐng)將答 案寫 在答 題紙 上, 寫清題 號(hào), 不必 抄題 ,字 跡工整 、清 晰; ? 答題紙和試題紙上都寫上班級(jí)、 學(xué)號(hào)和姓名,交卷時(shí)將試題紙、答題紙和草紙一并交上來。 ? 每個(gè)題目不必給出對(duì)應(yīng)的 PAD 圖,但要添加必要的注釋,程序命名和書寫要規(guī)范 。 一、[20 分] 編 寫函 數(shù), 實(shí)現(xiàn) 按照 如下 公式 計(jì)算 的功 能。 f(n)=0/(1*2!)+1/(2*3!)+2/(3*4!)+3/(4*5!)+…+n/((n+1)*(n+2)!),其 中 n 為自 然數(shù)。 二、[20 分] 編寫 bool 函數(shù) , 判 斷 給定 的整 數(shù)數(shù)組 a[n] 中 是 否存 在元素 a[i] (0
next; } //文件關(guān)閉(2分) fclose(file); } 參考要點(diǎn):結(jié)構(gòu)體定義(5分 ); stdio.h頭文件 包含命令 (2分) ; 文件定義 (2 分) 、 存儲(chǔ) (5分 )、 打 開(4 分)和關(guān)閉(2分 )。 第 1 頁 共 1 頁 2010-2011 學(xué)年 第1 學(xué)期 2010 級(jí)《 高 級(jí) 語言程 序設(shè)計(jì) 》考試 試題(A) 考試時(shí)間:2011 年 01 月 班級(jí) 學(xué)號(hào) 姓名 ? 請(qǐng)將答 案寫 在答 題紙 上, 寫清題 號(hào), 不必 抄題 ,字 跡工整 、清 晰; ? 請(qǐng) 在答題紙和試題紙上都寫上你的班級(jí) 、 學(xué)號(hào)和姓名, 交卷時(shí)請(qǐng)將試題紙、 答題紙和草紙一并交上來。 一、[20 分] 編 寫程 序, 根據(jù) 如下 公式 計(jì) 算圓 周率 π 的值( 精 確到 1e-5) 。 π 2 = ? 2 1 ? 2 3 ? ? ? 4 3 ? 4 5 ? ? ? 6 5 ? 6 7 ? ? ? 8 7 ? 8 9 ? ? ? ? ? 2n 2n ?1 ? 2n 2n+1 ? ? ? 二、[20 分] 編寫 程序, 由鍵盤輸入一 個(gè)字 符串 (僅 包括 數(shù)字字 符、 英文 字符 和空 格) , 把該 字符 串中英文 字符 和空 格過 濾掉 ,提取 所有 整數(shù) , 并將得到的 整數(shù) 序列 輸 出到 文件 int.txt 中。 例 如 :輸入字 符串為:12A34 □567Bc89D ,則得 到的整 數(shù)序列為 :12□34 □567□89(□表 示 空格) 三、[20 分] 編寫 程序 , 打印 一個(gè) n 行 n 列矩 陣中 所有 滿足 下 面條 件的 元素 a ij : 1) a ij 是第 i 行中 所有 元素 的最 大 值; 2) 如果將 第 j 列中 所有 元素 a 1j, a 2j, ……, a nj 按照從 小到 大 的順序 排序 ,a ij 為第 j/2 個(gè) 元素( 最小 元素為 第 0 個(gè)元 素,j/2 為 整數(shù)除 法) 。 四、 [20 分] 每個(gè) 學(xué)生 的信息卡片包括 學(xué)號(hào)、 姓名 和性別 三項(xiàng) , 編寫 程序 , 由鍵盤 依 次輸入 n 個(gè) 學(xué)生的 信息 , 創(chuàng) 建一 個(gè)用 于管理 學(xué)生 信息 的單 鏈表 , 如下 圖所 示 (必 須說 明 該單鏈 表中 每個(gè) 結(jié)點(diǎn)的 數(shù)據(jù) 類型 定義 ) ;并在 該 單鏈 表中 添加 一個(gè) 給定 結(jié)點(diǎn) x。 05 張三 男 03 李四 女 33 王五 男 ... 07 趙九 男 圖 1 管 理學(xué) 生信 息的 單鏈表 五、[20 分] 編 寫程 序, 在 上述 建立的 單鏈 表中 刪除 所有 學(xué) 號(hào)為 z 的結(jié) 點(diǎn) (學(xué) 號(hào)為 z 的結(jié)點(diǎn) 可能 有 多個(gè)) 。 第 1 頁 共 1 頁 2010-2011 學(xué)年 第1 學(xué)期 2010 級(jí)《 高 級(jí) 語言程 序設(shè)計(jì) 》考試 試題(B) 考試時(shí)間:2011 年 01 月 班級(jí) 學(xué)號(hào) 姓名 ? 請(qǐng)將答 案寫 在答 題紙 上, 寫清題 號(hào), 不必 抄題 ,字 跡工整 、清 晰; ? 請(qǐng) 在答題紙和試題紙上都寫上你的班級(jí) 、 學(xué)號(hào)和姓名, 交卷時(shí)請(qǐng)將試題紙、 答題紙和草紙一并交上來。 一、[20 分] 編 寫程 序, 根據(jù) 如下 公式 計(jì)算 X 的值(精 確到 1e-5) 。 X= 1 1 ? 2 1 + 1 3 ? 4 3 + 1 5 ? 6 5 + 1 7 ? 8 7 + ?+ 1 2n ?1 ? 2n 2n ?1 + ? 二、[20 分] 編寫 程序, 由鍵盤輸入一 個(gè)字 符串 (僅 包括 數(shù)字字 符、 英文 字符 和空 格) , 把該 字符 串?dāng)?shù)字 字符 和 空格 過濾 掉, 提取所 有字符 , 并將 得 到的字符序列 逆序 輸出 到文件 char.txt 中。 例如 :輸入字 符串為:12A34 □567Bc89D (□表 示空格 ) ,則 輸出到文 件中的字符 序列為 : DcBA 三、[20 分] 編寫 程序 ,輸出 一個(gè) n 行 n 列矩 陣中 所有 鞍點(diǎn) a ij ,即元素 a ij 滿足下列 條件: 1) a ij 是第 i 行中 所有 元素 的最 小值; 2) a ij 是第 j 列中所 有元 素的最 大值; 四、[20 分] 編 寫程 序, 將 一個(gè) 單鏈表 轉(zhuǎn)換 為一 個(gè)反 向的 單鏈表 。 五、[20 分] 每個(gè)教師的信息 卡片包括教工號(hào)、姓名、職 稱 和學(xué)院名稱三項(xiàng),編 寫程序,由鍵盤 依次輸 入 n 個(gè)教師 的信 息, 創(chuàng)建 一個(gè) 用于 管理 教師 信息的 單鏈 表, 如下 圖所 示 (必 須說 明該 單 鏈表中每 個(gè)結(jié)點(diǎn)的 數(shù)據(jù)類 型定義 ) ;并保 證添加完所 有信息后 ,該單鏈 表按照 教工號(hào)從 小 到大排 序。 1005 Zhang San Prof CCST 1420 Li Si Lect CS 5862 Wang Wuchang Assi CCST ... 7582 Zhao Tianyi Prof CS 圖 1 管理 教師 信 息的 單鏈表 第 1 頁 共 1 頁 2011-2012 學(xué)年 第1 學(xué)期 2011 級(jí)《 高級(jí)語 言 程 序設(shè)計(jì) 》考試 試題(A 卷) 考試時(shí)間:2012 年 01 月 班級(jí) 學(xué)號(hào) 姓名 ? 請(qǐng)將答 案寫 在答 題紙 上, 寫清題 號(hào), 不必 抄題 ,字 跡工整 、清 晰; ? 請(qǐng) 在答題紙和試題紙上都寫上你的班級(jí) 、 學(xué)號(hào)和姓名, 交卷時(shí)請(qǐng)將試題紙、 答題紙和草紙一并交上來; ? 每個(gè)題目必須添加必要的注釋,程序命名和書寫盡可能規(guī)范 。 一、[20 分] 編 寫函 數(shù), 判定 正 整數(shù) m 和 n(均 至少為 2 )是 否滿 足:數(shù) m 為數(shù) n 可分解 的最 小 質(zhì)因數(shù) ( 數(shù) n 可 分解 的最 小質(zhì)因 數(shù)為能整除 n 的 最小質(zhì)數(shù)) 。 //提示:判 定 m 為質(zhì) 數(shù)且 m 是 n 的最 小因 數(shù)。 二、[20 分] 編寫 函數(shù) ,對(duì) 給定 的整型 數(shù)組 a 的前 n 個(gè) 元素 排序 ,使 得所 有正 整數(shù) 均出現(xiàn) 在負(fù) 整 數(shù)和 0 之前 。 //提示:排 序結(jié) 果中 ,正整數(shù) 之間 的出 現(xiàn)順 序不 限制 , 負(fù) 整數(shù)和 0 之 間的 出現(xiàn) 順序不 限制 。 例如: 原數(shù) 組為-1、4 、-3、0、2 、1、-9、7 ,則排序 后 可以為 4、2、1 、7、0、-1、-3、-9。 三、[20 分] 編寫 遞歸函數(shù) ,實(shí) 現(xiàn)按照 如下 公式 計(jì)算 的功 能。 //提示:如 果獨(dú) 立編 寫階 乘 運(yùn)算函 數(shù), 可以 不考 慮存 儲(chǔ)溢出 ,默 認(rèn)結(jié) 果類 型為 整型。 f(n)=0/(1*2!)+1/(2*3!)+2/(3*4!)+3/(4*5!)+…+n/((n+1)*(n+2)!),其 中:n 為自 然數(shù)。 四、[20 分] 定義 一 個(gè)表 示學(xué) 生的 結(jié) 構(gòu)體 (包含 3 個(gè)字 段: 姓 名、 性別 、 成 績) , 編寫 函數(shù),將 下 圖所示 的結(jié)構(gòu) 體數(shù)組 s 中的 前 n 個(gè)學(xué) 生的 信息 ,存 儲(chǔ)到當(dāng)前 目錄 下 的 output.txt 文件 中。 //提示:性 別可 以定 義為 bool 、int、enum 等類 型均 可,存 儲(chǔ)信 息的 具體 形式 不限制 。 張三 李四 趙九 男(true) 女(false) … 男(true) 83 76 97 圖 1 管 理學(xué) 生信 息的 結(jié)構(gòu)體 數(shù) 組 例 如 :一 個(gè)學(xué) 生的 信息為 ZhangSan 、true 、83 ,另 一個(gè) 學(xué) 生的 信息為 LiSi 、false 、76 。 五、[20 分] 定義 一 個(gè)單 鏈表 (每 個(gè) 結(jié)點(diǎn) 包含 2 個(gè)字 段: 整數(shù)信 息、 后繼 指針 ) , 如 下圖所 示。 編 寫函數(shù) ,刪除 該單 鏈表 中所含整數(shù) 信息 等于 整數(shù) x 的多個(gè) 重復(fù) 結(jié)點(diǎn) 。 1 5 5 … 1 圖 2 單 鏈表 例 如: 若單 鏈表 中存 儲(chǔ)的整 數(shù) 信息 依次為 1、5、5 、0、5 、6、0、0、5 、1 , 如果 x 為 5, 則 得到的 單鏈 表中 相應(yīng) 信息 依次 為 1、0、6 、0 、0、1 。 第 1 頁 共 3 頁 2011-2012 學(xué)年 第1 學(xué)期 2011 級(jí)《 高級(jí)語 言 程 序設(shè)計(jì) 》考試 試題(A 卷) 答案及評(píng)分標(biāo)準(zhǔn) 考試時(shí)間:2012 年 1 月 一、滿分20 分。 bool f(int m, int n) { int i; //保證m 為n的因數(shù) (5 分) if(n%m!=0) return false; //保證m為質(zhì)數(shù) (10分) for(i=2;inext; //刪除p 指向結(jié)點(diǎn) if(q!=NULL) //p為非頭結(jié)點(diǎn) q->next=p; else //p為頭結(jié)點(diǎn) h=p; } } return h; } 參考要點(diǎn):鏈表定義(5分 ); 刪除函數(shù)(15分) 第 1 頁 共 1 頁 2011-2012 學(xué)年 第1 學(xué)期 2011 級(jí)《 高級(jí)語 言 程 序設(shè)計(jì) 》考試 試題(B) 考試時(shí)間:2012 年 01 月 班級(jí) 學(xué)號(hào) 姓名 ? 請(qǐng)將答 案寫 在答 題紙 上, 寫清題 號(hào), 不必 抄題 ,字 跡工整 、清 晰; ? 請(qǐng) 在答題紙和試題紙上都寫上你的班級(jí) 、 學(xué)號(hào)和姓名, 交卷時(shí)請(qǐng)將試題紙、 答題紙和草紙一并交上來。 ? 每個(gè)題目必須添加必要的注釋,程序命名和書寫盡可能規(guī)范 。 一、[20 分] 編 寫函 數(shù), 實(shí)現(xiàn) 按照 如下 公式 計(jì)算 的功 能。 f(n)=0/(1*2!)+1/(2*3!)+2/(3*4!)+3/(4*5!)+…+n/((n+1)*(n+2)!),其 中 n 為自 然數(shù)。 二、[20 分] 編寫 函數(shù) , 對(duì)給 定的 整 數(shù)數(shù)組 a (數(shù) 組長 度和 元素個(gè) 數(shù)均 為 N ) 進(jìn)行 判定 : 是否 存在 某個(gè)整 數(shù) a[i] (0=max) { i++; max*=10; } printf("%d", i); } 二、滿分20 分。 參考答案(1 ) int f(int a[], int n) { int i, j; for(i=0; inext=p->next; else //刪除頭結(jié)點(diǎn) h=p->next; } else //偶數(shù)結(jié)點(diǎn)(3 分) q=p; p=p->next; //循環(huán)控制 } return h; } //刪除函數(shù)(15分)——參考答案(2 ) struct node * del(struct node * h) { //p為當(dāng)前結(jié)點(diǎn),q 為p 的前驅(qū)結(jié)點(diǎn)(2分) struct node * p = h, * q = NULL; while(p!=NULL) //循環(huán)控制(5 分) { if(p->key%2==0) //偶數(shù)結(jié)點(diǎn)(3分) q=p; else //奇數(shù)結(jié)點(diǎn)(5 分) if(q==NULL) //刪除頭結(jié)點(diǎn) h=p->next; else //刪除非頭結(jié)點(diǎn) q->next=p->next; p=p->next; //循環(huán)控制 } return h; } //刪除函數(shù)(15分)——參考答案(3 ) struct node * del(struct node * h) { //過濾掉前面的奇數(shù)結(jié)點(diǎn)(3分) while(h!=NULL //p為當(dāng)前結(jié)點(diǎn),q 為p 的前驅(qū)結(jié)點(diǎn)(2分) struct node * p = h, * q = NULL; while(p!=NULL) //循環(huán)控制(5分) { if(p->key%2==0) //偶數(shù)結(jié)點(diǎn)(3分) q=p; else //奇數(shù)結(jié)點(diǎn)(2 分) q->next=p->next; p=p->next; //循環(huán)控制 } return h; } 第 1 頁 共 1 頁 2012-2013 學(xué)年 第1 學(xué)期 2012 級(jí)《 高級(jí)語 言 程 序設(shè)計(jì) 》考試 試題(B 卷) 考試時(shí)間:2013 年 01 月 班級(jí) 學(xué)號(hào) 姓名 ? 請(qǐng)將答案寫在答題紙 上, 寫清題號(hào),不必抄題 ,字 跡工整、清晰; ? 請(qǐng)?jiān)谠囶}紙、答題紙和草稿紙上都寫上班級(jí)、學(xué)號(hào)和姓名,交卷時(shí)一并提交。 ? 每個(gè)題目不必給出對(duì)應(yīng)的 PAD 圖,但要添加必要的注釋,程序命名和書寫要規(guī)范。 一、 [20 分] 編寫函數(shù),輸出任 意正整數(shù) n 的最高位數(shù) 字(n 默認(rèn)為存儲(chǔ)十進(jìn)制數(shù) 的整型變量) 。 例如:正整數(shù) 13 ,則輸出 1 ;正整數(shù) 3088 ,則輸出 3 。 二、 [20 分] 編寫函數(shù),對(duì)給定 的 有序 整型數(shù)組進(jìn)行 整理 ,使得所有整數(shù)重復(fù) 2 次 出現(xiàn)。 例如: 原數(shù)組為-2 、-1 、-1 、0 、0、1、4、4、4,則 處理后的結(jié)果為-2 、-2 、-1 、-1 、-1 、-1 、0 、 0、0 、0 、1 、1 、4 、4 、4 、4 、4 、4 。 三、 [20 分] 編寫遞歸函數(shù), 求任意正整數(shù) n 從右邊開始 的第 j 位數(shù)字 ( 默認(rèn): 最 右側(cè) 為第 1 位) 。 公式遞歸定義如下: ???? ???? ???? ???????? ( ???? , ???? ) = ? ???? % ???????? , ???? = ???? ???? ???? ???? ???????? ( ???? /???????? , ???? ? ???? ) , ???? > ???? 四、 [20 分] 構(gòu)造圖 1 所示的存 儲(chǔ)學(xué)生信息的結(jié)構(gòu)體 數(shù)組 (每個(gè)結(jié)構(gòu)體包含 3 個(gè)字段: 姓名、 性別、 成績) ,編寫 函數(shù),將 該結(jié) 構(gòu)體數(shù)組中 前 M 個(gè)成績?yōu)閮?yōu)秀的學(xué)生信息存儲(chǔ)到 指定文件 out.txt 中。 張三 李四 趙九 男(true) 女(false) … 男(true) 83 76 97 圖 1 存儲(chǔ) 學(xué)生信息的結(jié)構(gòu) 體數(shù)組 例如:一個(gè)學(xué)生的信 息為 Zhangsan 1 83 ,另一個(gè)學(xué) 生的信息為 Lisi 0 76 。 五、 [20 分] 構(gòu) 造圖 2 所示的 單 鏈表 (每個(gè)結(jié)點(diǎn)包 含 2 個(gè)字段: 整數(shù)信息 、 后繼指針 ) , 編寫函數(shù), 從單鏈表的頭結(jié)點(diǎn)依 次處 理 每個(gè)結(jié)點(diǎn), 僅 保留 其整 數(shù)信息 大于當(dāng)前前驅(qū) 結(jié)點(diǎn) 的整數(shù)信息的結(jié)點(diǎn) , 使得處理后的單鏈表 中整 數(shù)信息滿足 遞增 順序 。 1 5 6 … 1 圖 2 單鏈表 例如: 若單鏈表中存儲(chǔ)的 整數(shù)信息依次為 1 、5 、6、3、7 、7 、0 、5、8 、1,則 處理后 得到的單 鏈表中存儲(chǔ)的整數(shù)信息 依次 為 1 、5 、6 、7 、8 。 (處理過程 : 在保留了 1 、5 、6 之后,3 由于小 于之前保留的 6 而舍棄, 之后保留第一個(gè) 7 ,第二 個(gè) 7 由于等于之前保 留的 7 而舍棄,0 和 第 二個(gè) 5 由于小于之前保留 的 7 而舍棄, 之后 保留 8 ,第二個(gè) 1 由于小于之前 保留的 8 而舍棄) 第 1 頁 共 3 頁 2011-2012 學(xué)年 第1 學(xué)期 2012 級(jí)《 高級(jí)語 言 程 序設(shè)計(jì) 》考試 試題(B 卷) 答案及評(píng)分標(biāo)準(zhǔn) 考試時(shí)間:2013 年 1 月 一、滿分20 分。 參考答案(1 ) #include //頭文件包含命令(2 分) void f(int n) // (18分) { while(n>=10) //直到剩余1 位 n/=10; printf("%d", n); } 參考答案(2 ) #include //頭文件包含命令(2 分) void f(int n) // (18分) { int max=1; //大于n的最小10冪次max do max*=10; while(n>=max); printf("%d", n/(max/10)); } 三、滿分20分。 參考要點(diǎn): 遞歸出口 (10分 ) ;遞 歸 過 程( 10分) 。 參考答案(1 ) int digit(int n, int j) { if(j==1) return n%10; else return digit(n/10, j-1); } 參考答案(2 ) int digit(int n, int j) { if(j==1) return n%10; return digit(n/10, j-1); } 第 2 頁 共 3 頁 二、滿分20 分。 參考答案(1 ) void f(int a[], int n) { int i, j; for(i=0; ii; j--)// 復(fù)制第i個(gè) 元素(10分) a[j]=a[j-1]; } 參考答案(2 ) void f(int a[], int n)// 參考答 案2 (20 分) { int i, j=n; for(i=0; ikey>=p->key) //刪除(3分) q->next=p->next; else //保留(3 分) q=p; p=p->next; //循環(huán)控制 } } //刪除函數(shù) (15分)——參考答案(2 ) void del(struct node * h) { if(h==NULL) //空鏈表處理(2 分) return; //q為當(dāng)前結(jié)點(diǎn)的前驅(qū)節(jié)點(diǎn)(2 分) struct node * q = h; while(q->next!=NULL) //循環(huán)控制(5 分) { if(q->key>=q->next->key) //刪 除( 3 分) q->next=q->next->next; else //保留(3 分) q=q->next; } } 第 1 頁 共 1 頁 2013-2014 學(xué)年 第1 學(xué)期 2013 級(jí)《 高級(jí)語 言 程 序設(shè)計(jì) 》考試 試題(A 卷) 考試時(shí)間:2014 年 01 月 班級(jí) 學(xué)號(hào) 姓名 ? 請(qǐng)將答案寫在答題紙 上, 寫 清題號(hào),不必抄題 ,字 跡工整、清晰; ? 請(qǐng)?jiān)谠囶}紙、答題紙和草稿紙上都寫上班級(jí) 、 學(xué)號(hào)和姓名,交卷時(shí)一并提交 。 ? 每個(gè)題目不必給出對(duì)應(yīng)的 PAD (第一題除外) ,但要添加必要的注釋,程序命名和書寫 要 規(guī)范 。 一、 [20 分] 畫 出對(duì)長度為 n 的整型數(shù)組 a 進(jìn)行冒泡排序 (Bubble Sort )的 PAD 。 注: 請(qǐng)先簡要描述排 序思 想 ,之后畫出完整的 PAD ,不需要編寫程序。 二、 [20 分] 編寫函數(shù),實(shí)現(xiàn)按 照如下公式計(jì)算的功 能。 f(n)=2/(3*0!)+3/(4*1!)+4/(5*2!)+…+n/((n+1)*(n-2)!) ,其中 n 為自然數(shù)且 n>=2 ,0!=1 。 三、 [20 分] 編寫遞歸函數(shù),按 照如下定義計(jì)算 Hermite 多項(xiàng)式???? ???? ( ???? ) ,公式遞歸定義 如下 : ???? ???? ( ???? ) = ? ???? , ???? = ???? ???????? , ???? = ???? ???????? ???? ???? ? ???? ( ???? ) ? ???? ( ???? ? ???? ) ???? ???? ? ???? ( ???? ) , ???? > 1 四、 [20 分] 定義存儲(chǔ)學(xué)生信息的結(jié)構(gòu)體至少 應(yīng) 包含: 學(xué)號(hào)、姓名、成績、指向 下一個(gè)結(jié)構(gòu)體 的指針等字段。編寫 函數(shù) ,從指定文件 class531316.txt 中 讀入所有學(xué)生信息 (假定文件中 存儲(chǔ)信息與結(jié)構(gòu)體信 息格 式對(duì)應(yīng)) ,構(gòu)建為圖 1 所 示的 鏈表。 53131601 53131602 53131603 53131636 Zhangsan Lisi Wangwu … Zhaosanliu 85 37 98 79 圖 1 存儲(chǔ)學(xué)生信息的結(jié)構(gòu) 體 鏈表 五、 [20 分] 給定圖 2 所示的鏈表 , 每個(gè)結(jié)點(diǎn)包含: 整數(shù)信 息 key 和后繼指針 next 。 編寫函數(shù), 刪除 該鏈表中的具有 最大 key 值和最小 key 值的結(jié) 點(diǎn)(注:key 值可能重復(fù)) 。 1 0 3 … 1 圖 2 單鏈表 例如: 若 鏈表中 存儲(chǔ)的 key 值 依次為 1 、0 、3 、5 、2 、5 、3 、0 、7 、9 、1 , 最大 key 值為 9 , 最小 key 值為 0 ,則處理后的鏈表中存儲(chǔ)的 key 值依次為 1 、3 、5 、2 、5 、3 、7 、1 。 第 1 頁 共 1 頁 2013-2014 學(xué)年 第1 學(xué)期 2013 級(jí)《 高級(jí)語 言 程 序設(shè)計(jì) 》考試 試題(B 卷) 考試時(shí)間:2014 年 01 月 班級(jí) 學(xué)號(hào) 姓名 ? 請(qǐng)將答案寫在答題紙 上, 寫 清題號(hào),不必抄題 ,字 跡工整、清晰; ? 請(qǐng)?jiān)谠囶}紙、答題紙和草稿紙上都寫上班級(jí) 、 學(xué)號(hào)和姓名,交卷時(shí)一并提交 。 ? 每個(gè)題目不必給出對(duì)應(yīng)的 PAD (第一題除外) ,但要添加必要的注釋,程序命名和書寫 要 規(guī)范 。 一、 [20 分] 給定長度為 n 的整型數(shù)組,畫出將其中 每個(gè) 元素右移 j 個(gè)位置的 PAD (0next = p1; p2 = p1; } p2->next = NULL; //鏈表尾結(jié)點(diǎn)的后繼指針 為空 (2 分 ) return (head); // (2 分 ) } 五、滿分20分。 #include //頭文件包含命令(2分) #include void save(struct Student * h, int z) { //文件定義(2分)和打開(4 分) FILE* file; if((file=fopen("output.txt","w"))==NU LL) printf("File Open Error!"); //過濾掉前面的刪除結(jié)點(diǎn)(2分) while(h!=NULL //p為當(dāng)前結(jié)點(diǎn),q 為p 的前驅(qū)結(jié)點(diǎn) struct node * p = h, * q = NULL; while(p!=NULL) //循環(huán)控制(5分) { if(p->age!=z) //保留結(jié)點(diǎn) q=p; else //刪除結(jié)點(diǎn) q->next=p->next; p=p->next; //循環(huán)控制 } //文件存儲(chǔ)過程(3分) while(h!=NULL) { fprintf(file,"%5d\n", h->id); fprintf(file,"%10s", h->name); fprintf(file,"%5d\n", h->age); h=h->next; } //文件關(guān)閉(2分) fclose(file); } 第 1 頁 共 2 頁 2014-2015 學(xué)年 第 1 學(xué)期 2014 級(jí)唐 班《程序設(shè) 計(jì) 綜 合課 I》 期末 考 試試題 (A 卷 ) 考試時(shí)間:2015 年 01 月 班級(jí) 學(xué)號(hào) 姓名 ? 請(qǐng)將答案寫在答題紙上,寫清題號(hào),不必抄題,字跡工整、清晰 。 ? 請(qǐng)?jiān)谠囶}紙、答題紙和草稿紙上都寫上班級(jí)、學(xué)號(hào)和姓名,交卷時(shí)一并提 交 。 ? 每題均需要編寫程序或函數(shù) , 必須添加必要的注釋,程序命名和書寫要規(guī) 范 ,個(gè)別題目還需要畫出對(duì)應(yīng)的 PAD 。 ? 務(wù)必使用同一顏色的中性筆 或 鋼筆答題,不允許 使 用鉛筆答題 和 畫圖 。 一、 [20 分] 編寫遞歸函數(shù) float comp(float a[][2],n) ,計(jì)算 兩個(gè)給定 n 維向 量 u ,v 的內(nèi)積 。a 的每 行為一個(gè)向量;函數(shù)值 為計(jì) 算出的內(nèi)積 。 二、 [20 分] 編寫函數(shù) int changestr(char *s) ,把給定字符 串 s 修改成回文 字字符串。修改方法 是: 以左半段為基本字符 串, 把右半段修改成左 半段的反序(不考慮 默認(rèn) 字符串結(jié)束符\0 ) 。函數(shù) 值帶回結(jié)果字符串 長度。設(shè),對(duì)應(yīng) s 的實(shí)在 參數(shù)是一個(gè)字符數(shù)組 。 例:字符串“aba”、“ a □□a ”和“abcacba ”均為回文字,而“ab” 不是回文字(□表示 空格 ) 。 注:本題不允許使用 string.h 頭文件和相關(guān)的字符串 處理函數(shù) ,不允 許再聲明其他數(shù)組。 三、 [20 分] 編寫函數(shù) int delarr(int a[][10],int n) ,刪除 n 行 10 列兩維 正整 型數(shù)組 a 中所有素?cái)?shù),要求 : 1 )a 數(shù)組中剩余元素保存 原來次序, 2 )將處理后的數(shù)組 的最后 一個(gè)有效元素位置的 行、 列號(hào) 輸出, 3 )函數(shù)值返回剩余 元素個(gè) 數(shù) , 4 )不能定義額外的 新數(shù)組 。 四、 [20 分] 職工的信息卡內(nèi)容 包括:工號(hào)(字符串 型) 、姓 名 (字符串 型)和出生時(shí)間(結(jié) 構(gòu)體 型,包括年、月、日 )三項(xiàng) 。 1 )定義存儲(chǔ)職工 信 息的單 向鏈表的結(jié)點(diǎn)類型 ; 2 )編寫函數(shù),由鍵 盤依次 輸入 職工的信息,按工 號(hào)順 序 創(chuàng)建一個(gè)用 于管理職工信息的單 向鏈表 。直到輸入的工號(hào) 為“0000 ”為止。要求邊錄第 2 頁 共 2 頁 入邊建立鏈表;不允 許先 建立鏈表后,再排序 。 五、 [20 分] 編寫函數(shù),把 上題 創(chuàng)建的 單向鏈表存儲(chǔ) 到文 件名為 output.dat 的二進(jìn)制文件中。 第 1 頁 共 4 頁 2014-2015 學(xué)年 第1 學(xué)期 2014 級(jí)唐 班《程 序 設(shè)計(jì) 綜 合課 I》 期末 考試 A 卷 答案及評(píng)分標(biāo)準(zhǔn) 考試時(shí)間:2015 年 01 月 一、滿分20分。 float comp(float a[][2],int n) { if(n==0) return 0; return comp(a,n-1)+a[n-1][0]*a[n-1][1]; } 二、滿分20分。 int changestr(char *s) { int num=0; while(s[num]!=\0) num++; int k=num-1; while(k>=0) { s[num]=s[k]; num++; k--; } s[num]=\0; return num; } 三、滿分20分。 #include //頭文件包含命令(2 分) int prime(int x) //判斷x是否為素?cái)?shù)(8分) { if(x==1) //特殊情況(2分) return 0; int i; for(i=2;i<=x/2;i++) 第 2 頁 共 4 頁 if(x%i==0) return 0; return 1; } int delarr(int a[][10], int n) // (10分) { int i,j,num=10*n,rowandcol=-1; for(i=0;iname, if(head==NULL) { head = p1; p1->next = NULL; } else if(strcmp(p1->id,head->id)next=head; head=p1; } else { p2=head; while(strcmp(p1->id,p2->next->id)>0) p2=p2->next; p1->next=p2->next; p2->next=p1; } scanf("%s",tempid); } return (head); //(2分) } 五、滿分20分。 #include //頭文件包含命令(2分) #include void save(struct Teacher * h) { //文件定義(2分)和打開(4 分) FILE* file; 第 4 頁 共 4 頁 if((file=fopen("output.txt","wb"))==NULL) printf("File Open Error!"); //文件存儲(chǔ)過程(10分) while(h!=NULL) { fprintf(file,"%10s\n", h->id); fprintf(file,"%10s", h->name); fprintf(file,"%5d", h-> birthdate.y); fprintf(file,"%5d", h-> birthdate.m); fprintf(file,"%5d\n", h-> birthdate.d); h=h->next; } //文件關(guān)閉(2分) fclose(file); } 第 1 頁 共 1 頁 2014-2015 學(xué)年 第 1 學(xué)期 2014 級(jí) 《程序 設(shè)計(jì) 基礎(chǔ) 》 期末考試試 題 (B) 考試時(shí)間:2015 年 01 月 班級(jí) 學(xué)號(hào) 姓名 ? 請(qǐng)將答案寫在答題紙上,寫 清 題號(hào),不必抄題,字跡工整、清晰 。 ? 請(qǐng)?jiān)谠囶}紙、答題紙和草稿紙上都寫上班級(jí) 、 學(xué)號(hào)和姓名,交卷時(shí)一并提 交 。 ? 每題均需要編寫程序或函數(shù) , 必須添加必要的注釋,程序命名和書寫 要 規(guī) 范 ,個(gè)別題目還需要畫出對(duì)應(yīng)的 PAD 。 ? 務(wù)必使用同一顏色的中性筆 或 鋼筆答題,不允許 使 用鉛筆答題 和 畫圖 。 一、 [20 分] 編寫函數(shù)并畫出對(duì) 應(yīng)的 PAD , 刪除整型數(shù)組 中所有 為 0 的元素, 將處理后的數(shù)組輸出 ,并 返回剩余元素個(gè)數(shù) 。 注:函數(shù)中不能定義 額外 的新數(shù)組。 二、 [20 分] 編寫函數(shù), 對(duì)一個(gè) 給定字符串 中的所有 字符 (不考慮默認(rèn)字符 串結(jié)束符\0 )進(jìn)行排序, 使得排序后的字符串 滿足 從左到右 為 ASCII 碼遞增的字符序列。 注: 本題不允許使用 string.h 頭文件和相關(guān)的字符串 處理函數(shù) , 以及系 統(tǒng)定義的各類排序函 數(shù) 。 三、 [20 分] 編寫遞歸函數(shù), 計(jì) 算給定數(shù)組中所有元 素的 中位數(shù)。 中位數(shù)標(biāo) 準(zhǔn)定義為: 按照從小到大 排序后 的正中間的 數(shù)。 如 果元素個(gè)數(shù)為偶數(shù) , 取最中間的兩個(gè)數(shù)的 平 均數(shù) 作為中位數(shù)。本題 可以 粗略 地認(rèn)為 n 個(gè)元 素的中位數(shù)為按照從 小到 大 排序后的第 n/2 個(gè)數(shù)。 四、 [20 分] 每個(gè)教師的信息卡 片包括 教工號(hào)、姓 名 、性別 、入職年份 (限 定為 1900-2100 之間的整 數(shù)) 四項(xiàng)。 定義存儲(chǔ)教師信 息 的單向鏈表的結(jié) 點(diǎn)類型 ; 編寫函數(shù), 由當(dāng) 前目錄下文件名為 input.txt 的文件依次 讀入 n (n ≥1 )個(gè)教師的信息, 創(chuàng)建一個(gè)用于管理教 師信 息的單 向鏈表。 五、 [20 分] 編寫函數(shù), 在上題創(chuàng)建的單向鏈表中刪 除所 有入職年份信息大 于 k (k 的 值由用戶從鍵盤 輸入, 且 限定為 1900-2100 之間的整數(shù)) 的 結(jié)點(diǎn)。 第 1 頁 共 3 頁 2014-2015 學(xué)年 第1 學(xué)期 2014 級(jí)《 程序設(shè) 計(jì) 基礎(chǔ) 》考 試試題(B 卷) 答案及評(píng)分標(biāo)準(zhǔn) 考試時(shí)間:2015 年 01 月 一、滿分20分。 #include //頭文件包含命令(2 分) int delarr(int a[], int n) // (4 分 ) { int i,j; for(i=0;iname); fscanf(file,"%d", fscanf(file,"%d", fscanf(file,"\n"); p2->next = p1; p2=p1; m++; } p2->next = NULL; //文件關(guān)閉(2分) fclose(file);
鏈接地址:http://m.appdesigncorp.com/p-12810856.html