版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 C語言程序設計 實驗報告專業(yè) 計算機科學與技術 班級 卓越工程師班 日期 2014年12月3日 成績 第七次實驗 數組實驗 指導教師 李開 學生姓名 彭佳偉 學 號 U201414716 實驗組別 同組人姓名 實驗名稱 數組實驗 一、實驗目的(1) 掌握數組的說明、初始化和使用。(2) 掌握一維數組作為函數參數時實參和形參的用法。(3) 掌握字符串處理函數的設計,包括串操作函數及數字串與數之間轉換函數的實現算法。(4) 掌握基于分治策略的二分查找算法和選擇法排序算法的思想,以及相關算法的實現。二、實驗任務1.源程序改錯下面是用來將數組a中元素按升序排序后輸出的源程序。分析源程序中存在的問題,
2、并對源程序進行修改,使之能夠正確完成任務。源程序1:#include<stdio.h>int main(void) int a10 = 27, 13, 5, 32, 23, 3, 17, 43, 55, 39; void sort(int , int); int i; sort (a0, 10); for (i = 0; i < 10; i+) printf("%6d", ai); printf("n"); return 0;void sort(int b, int n) int i, j, t; for (i = 0; i <
3、n - 1; i+) for (j = 0; j < n - i - 1; j+) if (bj < bj+1) t = bj, bj = bj + 1, bj + 1 = t;2.源程序完善、修改、替換(1)下面的源程序用于求解瑟夫問題:M個人圍成一圈,從第一個人開始依次從1至N循環(huán)報數,每當報數為N時報數人出圈,知道圈中只剩下一個人為止。請在源程序2中的下劃線處填寫合適的代碼來完善該程序。源程序2:#include<stdio.h>#define M 10#define N 3int main(void) int aM, bM;/*數組a存放圈中人的編號,數組b存放
4、出圈人的編號*/ int i, j, k; for (i = 0; i < M; i+)/*對圈中人安順序編號1M*/ ai = i + 1; for (i = M, j = 0; i > 1; i-)/*i表示圈中人的個數,初始為M個,剩一個時循環(huán)結束;j表示當前報數人的位置*/ for (k = 1; k <= N; k+)/*1至N報數*/ if(+j > i - 1) j = 0;/*最后一個人報數后第一個人接著報,形成一個圈*/ bM - i = j? : ;/*將報數為N的人的編號存入數組b*/ if (j) for (k = -j; k < i; k
5、+)/*壓縮數組a,使報數為N的人出圈*/ ; for (i = 0; i < M - 1; i+)/*按次輸出出圈人的編號*/ printf("%6d", bi); printf("%6dn", a0);/*圈中最后一個人的編號*/ return 0;(2)上面的源程序中使用數組元素的值表示圈中人的編號,故每當有人出圈時都要壓縮數組,這種算法不夠精煉。如果采用做標記的方法,即每當有人出圈時對相應數組元素做標記,從而可省掉壓縮數組的時間,這樣處理效率會更高一些。因此,請采用做標記的方法修改(1)中的程序,并使修改后的程序與(1)中的程序具有相同的功
6、能。3.跟蹤調試源程序在下面所給的源程序中,函數strncat(s, t, n)本來應該將字符數組t的前n個字符連接到字符數組s中字符串的尾部。但函數strncat在定義時代碼有誤,不能實現上述功能。請按下面的要求進行操作,并回答問題和排除錯誤。(1) 單步執(zhí)行源程序。進入函數strncat后觀察表達式s、t和i。當光條落在for語句所在行時,i為何值?當光條落在strncat函數塊結束標記“”所在行時,s、t分別為何值?(2) 分析函數出錯的原因,排除錯誤,使函數正確實現功能,最后寫出程序的輸出結果。源程序3:#include<stdio.h>void strncat(char
7、, char , int);int main(void) char a50 = "The adopted symbol is",b27 = "abcdefghijklmnopqrstuvwxyz" strncat(a, b, 4); printf("%sn", a); return 0;void strncat(char s, char t, int n) int i = 0, j; while (si+); for (j = 0; j < n && tj;) si+ = tj+; si = '0'
8、;4.程序設計編寫并上機調試運行能實現一下功能的程序:(1) 編寫一個程序,從鍵盤讀取數據,對一個3 * 4矩陣進行賦值,求其轉置矩陣,然后輸出原矩陣和轉置矩陣。(2) 編寫一個程序,其功能要求是:輸入一個整數,將它在內存中二進制表示的每一位轉換成對應的數字字符,存放到一個字符數組中,然后輸出該整數的二進制表示。(3) 編寫一個程序,其功能要求是:輸入n個學生的姓名和C語言課程的成績,將成績按從高到低的次序排序,姓名同時作相應的調整,輸出排序后學生的姓名和C語言課程的成績。然后,輸入一個C語言課程成績值,用二分查找進行搜索。如果查找到有該成績,輸出該成績同學的姓名和C語言課程的成績;否則輸出提
9、示“not found”。三、實驗步驟及結果1 源代碼:/ main.c/ 2.7.1/ Created by apple on 14/12/3./ Copyright (c) 2014年 pjwhust. All rights reserved./#include<stdio.h>int main(void) int a10 = 27, 13, 5, 32, 23, 3, 17, 43, 55, 39; void sort(int , int); int i; sort (a, 10); for (i = 0; i < 10; i+) printf("%-3d&q
10、uot;, ai); printf("n"); return 0;void sort(int b, int n) int i, j, t; for (i = 0; i < n - 1; i+) for (j = 0; j<n-i-1; j+) if (bj > bj+1) t = bj, bj = bj + 1, bj + 1 = t;運行結果:2.1 源代碼:/ main.c/ 2.7.2.1/ Created by apple on 14/12/3./ Copyright (c) 2014年 pjwhust. All rights reserved./
11、#include<stdio.h>#define M 10#define N 3int main(void) int aM, bM;/*數組a存放圈中人的編號,數組b存放出圈人的編號*/ int i, j, k; for (i = 0; i < M; i+)/*對圈中人安順序編號1M*/ ai = i + 1; for (i = M, j = 0; i > 1; i-)/*i表示圈中人的個數,初始為M個,剩一個時循環(huán)結束;j表示當前報數人的位置*/ for (k = 1; k <= N; k+)/*1至N報數*/ if(+j > i - 1) j = 0;/
12、*最后一個人報數后第一個人接著報,形成一個圈*/ bM - i = j? aj-1 : ai;/*將報數為N的人的編號存入數組b*/ if (j) for (k = -j; k < i-1; k+)/*壓縮數組a,使報數為N的人出圈*/ ak=ak+1; for (i = 0; i < M - 1; i+)/*按次輸出出圈人的編號*/ printf("%3d", bi); printf("%3dn", a0);/*圈中最后一個人的編號*/ return 0;運行結果:2.2 源代碼:/ main.c/ 2.7.2.2/ Created by
13、apple on 14/12/3./ Copyright (c) 2014年 pjwhust. All rights reserved./#include<stdio.h>#define M 10#define N 3int main(void) int aM, bM; int i, j, k,t; for(i = 0; i<M; i+) ai= i+1; for(i = M, j = 0; i > 1; i-) for(k = 1; k <= N; k+) for(;aj>10;j+); if(j+>=(M-1) j = 0; bM-i = j? a
14、j-1: aM-1 ; if(j) bM-i=aj-1; aj-1=11; else for(t=1;aM-t>10;t+); bM-i=aM-t; aM-t=11; for(i = 0;i < M-1 ; i+) printf("%-6d", bi); printf("n"); for(i=0;i<M;i+) if(ai<11) printf("the last one is %6dn",ai); return 0;運行結果:3 源代碼:/ main.c/ 2.7.3/ Created by apple on
15、 14/12/3./ Copyright (c) 2014年 pjwhust. All rights reserved./#include <stdio.h>void my_strncat(char s, char t, int);int main(void) char a50 = "The adopted symbol is",b27 = "abcdefghijklmnopqrstuvwxyz" my_strncat(a, b, 4); printf("%sn", a); return 0;void my_strncat
16、(char s, char t, int n) int i = 0, j; while (si+); for (j = 0; j < n && tj;) si+ = tj+; si = '0'運行結果:4.1 源代碼:/ main.c/ 2.7.4.1/ Created by apple on 14/12/3./ Copyright (c) 2014年 pjwhust. All rights reserved./#include <stdio.h>#define N 3#define M 4int main(void) int a1NM; in
17、t a2MN; int i,j; for (i=0; i<N; i+) printf("Please input %dth row:",i+1); for (j=0; j<M; j+) scanf(" %d",&a1ij); for (i=0; i<M; i+) for (j=0; j<N; j+) a2ij = a1ji; printf("the original array is:n"); for (i=0; i<N; i+) for (j=0; j<M; j+) printf(&quo
18、t;%dt",a1ij); printf("n"); printf("the changed array is:n"); for (i=0; i<M; i+) for (j=0; j<N; j+) printf("%dt",a2ij); printf("n"); return 0;4.2 源代碼:/ main.c/ 2.7.4.2/ Created by apple on 14/12/3./ Copyright (c) 2014年 pjwhust. All rights reserved./#
19、include <stdio.h>int main(void) int n; printf("please input the number:"); scanf("%d",&n); int max; max = sizeof(int) * 8; char chmax; int i; for (i = max-1; i>=0; i-) chi = (n & 1) + '0' n >>= 1; printf("the binary is:n"); for (i=0; i<
20、max; i+) printf("%c",chi); printf("n"); return 0;運行結果:4.4 源代碼:/ main.c/ 2.7.4/ Created by apple on 14/12/3./ Copyright (c) 2014年 pjwhust. All rights reserved./#include <stdio.h>#define N 5int BinaryChop (int a,int x,int n);int main(void) char nameN10,sN10; int scoreN,t,i,j,
21、k,score0,index; for(i=0;i<N;i+) printf("please input names:"); scanf("%s",namei); printf("please input scores:"); scanf("%d",&scorei); for(k=1;k<N;k+) for(i=0;i<N-k;i+) if(scorei<scorei+1) t=scorei, scorei=scorei+1, scorei+1=t; for(j=0;nameij!='0'j+) sij=nameij; for(j=0;nameij!='0'j+) nameij=namei+
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【模塊四文言文閱讀】考點8 文言文閱讀(全篇)【高分攻略】高考語文一輪復習學案
- 餐飲應急方案
- 第六單元《可能性》-2024-2025學年四年級數學上冊單元測試卷(蘇教版)
- 老年人電腦培訓內容
- 石河子大學《土力學》2023-2024學年第一學期期末試卷
- 石河子大學《嵌入式系統(tǒng)設計與開發(fā)》2022-2023學年期末試卷
- 石河子大學《大學生心理健康教育》2021-2022學年第一學期期末試卷
- 沈陽理工大學《娛樂空間設計》2022-2023學年第一學期期末試卷
- 沈陽理工大學《汽車電器與電子控制技術》2021-2022學年期末試卷
- 沈陽理工大學《激光器件與技術》2022-2023學年第一學期期末試卷
- 教學工作中存在問題及整改措施
- 內部項目跟投協議書(正)
- 鋼管靜壓樁質量監(jiān)理細則
- 5000頭奶牛養(yǎng)殖場新建項目環(huán)境評估報告書
- 16飛機顛簸教學課件
- IATF16949-過程審核檢查表-(含審核記錄)-
- 2022年中國鐵路成都局集團有限公司招聘畢業(yè)生考試真題及答案
- 散文閱讀精練(100篇優(yōu)秀散文每篇均附能力訓練)-現代文精練
- 《成本會計》考試復習題庫(濃縮300題)
- 工作成功案例分享模板
- 安全管理的幾點做法1000字
評論
0/150
提交評論