




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 C語(yǔ)言程序設(shè)計(jì) 實(shí)驗(yàn)報(bào)告專業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 班級(jí) 卓越工程師班 日期 2014年12月3日 成績(jī) 第七次實(shí)驗(yàn) 數(shù)組實(shí)驗(yàn) 指導(dǎo)教師 李開(kāi) 學(xué)生姓名 彭佳偉 學(xué) 號(hào) U201414716 實(shí)驗(yàn)組別 同組人姓名 實(shí)驗(yàn)名稱 數(shù)組實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康模?) 掌握數(shù)組的說(shuō)明、初始化和使用。(2) 掌握一維數(shù)組作為函數(shù)參數(shù)時(shí)實(shí)參和形參的用法。(3) 掌握字符串處理函數(shù)的設(shè)計(jì),包括串操作函數(shù)及數(shù)字串與數(shù)之間轉(zhuǎn)換函數(shù)的實(shí)現(xiàn)算法。(4) 掌握基于分治策略的二分查找算法和選擇法排序算法的思想,以及相關(guān)算法的實(shí)現(xiàn)。二、實(shí)驗(yàn)任務(wù)1.源程序改錯(cuò)下面是用來(lái)將數(shù)組a中元素按升序排序后輸出的源程序。分析源程序中存在的問(wèn)題,
2、并對(duì)源程序進(jìn)行修改,使之能夠正確完成任務(wù)。源程序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)下面的源程序用于求解瑟夫問(wèn)題:M個(gè)人圍成一圈,從第一個(gè)人開(kāi)始依次從1至N循環(huán)報(bào)數(shù),每當(dāng)報(bào)數(shù)為N時(shí)報(bào)數(shù)人出圈,知道圈中只剩下一個(gè)人為止。請(qǐng)?jiān)谠闯绦?中的下劃線處填寫(xiě)合適的代碼來(lái)完善該程序。源程序2:#include<stdio.h>#define M 10#define N 3int main(void) int aM, bM;/*數(shù)組a存放圈中人的編號(hào),數(shù)組b存放
4、出圈人的編號(hào)*/ int i, j, k; for (i = 0; i < M; i+)/*對(duì)圈中人安順序編號(hào)1M*/ ai = i + 1; for (i = M, j = 0; i > 1; i-)/*i表示圈中人的個(gè)數(shù),初始為M個(gè),剩一個(gè)時(shí)循環(huán)結(jié)束;j表示當(dāng)前報(bào)數(shù)人的位置*/ for (k = 1; k <= N; k+)/*1至N報(bào)數(shù)*/ if(+j > i - 1) j = 0;/*最后一個(gè)人報(bào)數(shù)后第一個(gè)人接著報(bào),形成一個(gè)圈*/ bM - i = j? : ;/*將報(bào)數(shù)為N的人的編號(hào)存入數(shù)組b*/ if (j) for (k = -j; k < i; k
5、+)/*壓縮數(shù)組a,使報(bào)數(shù)為N的人出圈*/ ; for (i = 0; i < M - 1; i+)/*按次輸出出圈人的編號(hào)*/ printf("%6d", bi); printf("%6dn", a0);/*圈中最后一個(gè)人的編號(hào)*/ return 0;(2)上面的源程序中使用數(shù)組元素的值表示圈中人的編號(hào),故每當(dāng)有人出圈時(shí)都要壓縮數(shù)組,這種算法不夠精煉。如果采用做標(biāo)記的方法,即每當(dāng)有人出圈時(shí)對(duì)相應(yīng)數(shù)組元素做標(biāo)記,從而可省掉壓縮數(shù)組的時(shí)間,這樣處理效率會(huì)更高一些。因此,請(qǐng)采用做標(biāo)記的方法修改(1)中的程序,并使修改后的程序與(1)中的程序具有相同的功
6、能。3.跟蹤調(diào)試源程序在下面所給的源程序中,函數(shù)strncat(s, t, n)本來(lái)應(yīng)該將字符數(shù)組t的前n個(gè)字符連接到字符數(shù)組s中字符串的尾部。但函數(shù)strncat在定義時(shí)代碼有誤,不能實(shí)現(xiàn)上述功能。請(qǐng)按下面的要求進(jìn)行操作,并回答問(wèn)題和排除錯(cuò)誤。(1) 單步執(zhí)行源程序。進(jìn)入函數(shù)strncat后觀察表達(dá)式s、t和i。當(dāng)光條落在for語(yǔ)句所在行時(shí),i為何值?當(dāng)光條落在strncat函數(shù)塊結(jié)束標(biāo)記“”所在行時(shí),s、t分別為何值?(2) 分析函數(shù)出錯(cuò)的原因,排除錯(cuò)誤,使函數(shù)正確實(shí)現(xiàn)功能,最后寫(xiě)出程序的輸出結(jié)果。源程序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.程序設(shè)計(jì)編寫(xiě)并上機(jī)調(diào)試運(yùn)行能實(shí)現(xiàn)一下功能的程序:(1) 編寫(xiě)一個(gè)程序,從鍵盤(pán)讀取數(shù)據(jù),對(duì)一個(gè)3 * 4矩陣進(jìn)行賦值,求其轉(zhuǎn)置矩陣,然后輸出原矩陣和轉(zhuǎn)置矩陣。(2) 編寫(xiě)一個(gè)程序,其功能要求是:輸入一個(gè)整數(shù),將它在內(nèi)存中二進(jìn)制表示的每一位轉(zhuǎn)換成對(duì)應(yīng)的數(shù)字字符,存放到一個(gè)字符數(shù)組中,然后輸出該整數(shù)的二進(jìn)制表示。(3) 編寫(xiě)一個(gè)程序,其功能要求是:輸入n個(gè)學(xué)生的姓名和C語(yǔ)言課程的成績(jī),將成績(jī)按從高到低的次序排序,姓名同時(shí)作相應(yīng)的調(diào)整,輸出排序后學(xué)生的姓名和C語(yǔ)言課程的成績(jī)。然后,輸入一個(gè)C語(yǔ)言課程成績(jī)值,用二分查找進(jìn)行搜索。如果查找到有該成績(jī),輸出該成績(jī)同學(xué)的姓名和C語(yǔ)言課程的成績(jī);否則輸出提
9、示“not found”。三、實(shí)驗(yàn)步驟及結(jié)果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;運(yùn)行結(jié)果: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;/*數(shù)組a存放圈中人的編號(hào),數(shù)組b存放出圈人的編號(hào)*/ int i, j, k; for (i = 0; i < M; i+)/*對(duì)圈中人安順序編號(hào)1M*/ ai = i + 1; for (i = M, j = 0; i > 1; i-)/*i表示圈中人的個(gè)數(shù),初始為M個(gè),剩一個(gè)時(shí)循環(huán)結(jié)束;j表示當(dāng)前報(bào)數(shù)人的位置*/ for (k = 1; k <= N; k+)/*1至N報(bào)數(shù)*/ if(+j > i - 1) j = 0;/
12、*最后一個(gè)人報(bào)數(shù)后第一個(gè)人接著報(bào),形成一個(gè)圈*/ bM - i = j? aj-1 : ai;/*將報(bào)數(shù)為N的人的編號(hào)存入數(shù)組b*/ if (j) for (k = -j; k < i-1; k+)/*壓縮數(shù)組a,使報(bào)數(shù)為N的人出圈*/ ak=ak+1; for (i = 0; i < M - 1; i+)/*按次輸出出圈人的編號(hào)*/ printf("%3d", bi); printf("%3dn", a0);/*圈中最后一個(gè)人的編號(hào)*/ return 0;運(yùn)行結(jié)果: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;運(yùn)行結(jié)果: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'運(yùn)行結(jié)果: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;運(yùn)行結(jié)果: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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 苗木花卉采購(gòu)協(xié)議書(shū)模板
- 融資違約協(xié)議書(shū)范本
- 裝飾公司融資合同協(xié)議
- 茶葉禮盒購(gòu)買(mǎi)合同協(xié)議
- 2024年紡織工程師證書(shū)考試考題分析試題及答案
- 2024年紡織工程師證書(shū)考試備考指南試題及答案
- 紡織品多重功能檢驗(yàn)試題及答案
- 紡織工程師的職業(yè)挑戰(zhàn)與試題答案
- 紡織工業(yè)的數(shù)字化轉(zhuǎn)型與創(chuàng)新案例試題及答案
- 2024年設(shè)計(jì)師證書(shū)考試的科學(xué)備考策略試題及答案
- 公益事業(yè)對(duì)外捐贈(zèng)管理辦法
- 拓?fù)浯朋w研究-洞察分析
- 尾礦庫(kù)防汛演練
- 廣東省深圳市南山區(qū)2024-2025學(xué)年第一學(xué)期期末考試九年級(jí)英語(yǔ)試卷(含答案)
- 【MOOC】心理學(xué)基礎(chǔ)-上海大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 《西方經(jīng)濟(jì)學(xué)(本)》形考任務(wù)(1-6)試題答案解析
- 2025屆上海高中高考英語(yǔ)三模試卷含解析
- 國(guó)家安全反對(duì)邪教
- 2025年春九年級(jí)語(yǔ)文下冊(cè) 第三單元綜合測(cè)試卷(人教陜西版)
- 創(chuàng)業(yè)創(chuàng)新執(zhí)行力學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2024秋期國(guó)家開(kāi)放大學(xué)《可編程控制器應(yīng)用實(shí)訓(xùn)》一平臺(tái)在線形考(形成任務(wù)1)試題及答案
評(píng)論
0/150
提交評(píng)論