c語言實驗指導_第1頁
c語言實驗指導_第2頁
c語言實驗指導_第3頁
c語言實驗指導_第4頁
c語言實驗指導_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

c語言實驗一、課程性質(zhì)和任務(wù)本課程的主要任務(wù):通過對該課程的學習,使學生掌握C語言程序設(shè)計的基本知識,程序結(jié)構(gòu),基本算法及程序設(shè)計思想,并培養(yǎng)使用C語言進行程序設(shè)計基本能力。本課程的目的:使學生掌握程序設(shè)計的基本方法及逐步形成正確的程序設(shè)計思想,能夠熟練地使用C語言進行程序設(shè)計并具備調(diào)試程序的能力,為后繼課程及其他程序設(shè)計課程的學習和應(yīng)用打下基礎(chǔ)。二、課程教學目標1、掌握C語言的基本詞法,熟練掌握C語言程序的基本結(jié)構(gòu)。2、掌握常量和變量的存儲類型及應(yīng)用;運算符和表達式的應(yīng)用3、掌握C語言的基本語句;形成正確的程序設(shè)計思想,對順序結(jié)構(gòu)程序要重點掌握,熟練掌握輸入輸出函數(shù)。4、掌握關(guān)系、邏輯表達式的形式和應(yīng)用;熟練掌握選擇結(jié)構(gòu)的思想;掌握IF語句的各種形式和應(yīng)用;掌握SWITCH語句和BREAK語句的使用,選擇結(jié)構(gòu)的嵌套語句。5、掌握循環(huán)結(jié)構(gòu)的思想、流程和執(zhí)行過程;掌握While循環(huán)、Do…While、FOR循環(huán)及其應(yīng)用;掌握循環(huán)嵌套的使用;掌握BREAK、CONTINUE及使用。6、掌握一維數(shù)組的定義、引用和應(yīng)用;掌握二維數(shù)組的定義、引用和應(yīng)用;掌握字符數(shù)組及其應(yīng)用。7、掌握函數(shù)的定義、參數(shù)、類型、返回值及參數(shù)傳遞;掌握變量的作用域(局部變量和全局變量)、存儲類型;了解內(nèi)部函數(shù)和外部函數(shù)及主函數(shù)和命令行參數(shù)。9、掌握直接存取和間接存?。徽莆罩羔樧兞康母拍詈蛻?yīng)用;掌握數(shù)組與指針、函數(shù)與指針之間的關(guān)系;了解指向指針的指針。10、掌握結(jié)構(gòu)體、共用體的概念、存儲特點,及應(yīng)用;了解結(jié)構(gòu)體數(shù)組的使用;掌握結(jié)構(gòu)體與數(shù)組、指針、函數(shù)之間的操作;掌握鏈表的概念和基本操作。了解共用體、自定義類型、枚舉類型的概念和應(yīng)用。三、實驗內(nèi)容安排試驗序號實驗內(nèi)容實驗1順序結(jié)構(gòu)實驗2分支結(jié)構(gòu)實驗3循環(huán)結(jié)構(gòu)實驗4一維數(shù)組實驗5二維數(shù)組實驗6函數(shù)實驗7指針實驗8結(jié)構(gòu)體實驗1:熟悉上機環(huán)境和順序結(jié)構(gòu)編程練習[實驗?zāi)康模?.熟練地利用文本編輯程序輸入、修改C程序。2.掌握和理解C程序的基本結(jié)構(gòu)。3.掌握C程序的編譯連接與運行。4.掌握和理解本實驗中出現(xiàn)的一些最基本的語句。[實驗內(nèi)容]1.鍵盤輸入與屏幕輸出練習問題1要使下面程序的輸出語句在屏幕上顯示1,2,34,則從鍵盤輸入的數(shù)據(jù)格式應(yīng)為以下備選答案中的。#include<stdio.h>main(){ chara,b; intc; scanf("%c%c%d",&a,&b,&c); printf("%c,%c,%d\n",a,b,c);}A)1234 B)1,2,34C)’1’,’2’,34 D)1234問題2在與上面程序的鍵盤輸入相同的情況下,要使上面程序的輸出語句在屏幕上顯示1234,則應(yīng)修改程序中的哪條語句?怎樣修改?問題3要使上面程序的鍵盤輸入數(shù)據(jù)格式為1,2,34,輸出語句在屏幕上顯示的結(jié)果也為1,2,34,則應(yīng)修改程序中的哪條語句?怎樣修改?問題4要使上面程序的鍵盤輸入數(shù)據(jù)格式為1,2,34,而輸出語句在屏幕上顯示的結(jié)果為'1','2',34,則應(yīng)修改程序中的哪條語句?怎樣修改?[提示:利用轉(zhuǎn)義字符輸出字符單引號字符。]2.計算定期存款本利之和設(shè)銀行定期存款的年利率rate為2.25%,并已知存款期為n年,存款本金為capital元,試編程計算n年后的本利之和deposit。要求定期存款的年利率rate、存款期n和存款本金capital均由鍵盤輸入。公式:deposit=capital*(1+rate*n)deposit=capital*(1+rate)n實驗2:選擇結(jié)構(gòu)程序設(shè)計[實驗?zāi)康腯1.進一步掌握各種表達式的使用。2.利用if語句實現(xiàn)選擇結(jié)構(gòu)。3.利用switch語句實現(xiàn)多分支選擇結(jié)構(gòu)。4.練習調(diào)試與修改程序,[實驗內(nèi)容]1.計算下列分段函數(shù)值: x(x<1) y=2x-1(1≤x≤10) 3x-11(x≧10)具體要求如下:(1)用if語句實現(xiàn)分支。自變量x與函數(shù)值均用雙精度類型。(2)自變量x用scanf函數(shù)輸入,且輸入前要有提示。結(jié)果的輸出采用以下形式:x=具體值,f(x)=具體值2、身高預(yù)測每個做父母的都關(guān)心自己孩子成人后的身高,據(jù)有關(guān)生理衛(wèi)生知識與數(shù)理統(tǒng)計分析表明,影響小孩成人后的身高的因素包括遺傳、飲食習慣與體育鍛煉等。小孩成人后的身高與其父母的身高和自身的性別密切相關(guān)。設(shè)faHeight為其父身高,moHeight為其母身高,身高預(yù)測公式為男性成人時身高=(faHeight+moHeight)×0.54cm女性成人時身高=(faHeight×0.923+moHeight)/2cm此外,如果喜愛體育鍛煉,那么可增加身高2%;如果有良好的衛(wèi)生飲食習慣,那么可增加身高1.5%。編程從鍵盤輸入用戶的性別(用字符型變量sex存儲,輸入字符F表示女性,輸入字符M表示男性)、父母身高(用實型變量存儲,faHeight為其父身高,moHeight為其母身高)、是否喜愛體育鍛煉(用字符型變量sports存儲,輸入字符Y表示喜愛,輸入字符N表示不喜愛)、是否有良好的飲食習慣等條件(用字符型變量diet存儲,輸入字符Y表示良好,輸入字符N表示不好),利用給定公式和身高預(yù)測方法對身高進行預(yù)測。3、簡單的計算器用switch語句編程設(shè)計一個簡單的計算器程序,要求根據(jù)用戶從鍵盤輸入的表達式:操作數(shù)1運算符op操作數(shù)2計算表達式的值,指定的算術(shù)運算符為加(+)、減(-)、乘(*)、除(/)。本實驗程序是在例4.8的基礎(chǔ)上,增加如下要求:(1)如果要求程序能進行浮點數(shù)的算術(shù)運算,程序應(yīng)該如何修改?如何比較實型變量data2和常數(shù)0是否相等?(2)如果要求輸入的算術(shù)表達式中的操作數(shù)和運算符之間可以加入任意多個空白符,那么程序如何修改?(3)(選作題)如果要求連續(xù)做多次算術(shù)運算,每次運算結(jié)束后,程序都給出提示:Doyouwanttocontinue(Y/Nory/n)?用戶輸入Y或y時,程序繼續(xù)進行其他算術(shù)運算;否則程序退出運行狀態(tài)。那么,程序如何修改?實驗三:循環(huán)結(jié)構(gòu)的程序設(shè)計[實驗?zāi)康腯1.進一步練習選擇結(jié)構(gòu)的程序設(shè)計。2.練習并掌握實現(xiàn)循環(huán)結(jié)構(gòu)的三種方法。3.練習并掌握選擇結(jié)構(gòu)與循環(huán)結(jié)構(gòu)的嵌套。4.練習調(diào)試與修改程序。[實驗內(nèi)容]1.求1-2+3-4+5……+99-100的值。2.計算下列級數(shù)和s=1-(1/3)+(1/5)-(1/7)+…+(-1)n(1/(2n+1))直到最后一項的絕對值小于10-4為止。要求輸出s和總的項數(shù)n。輸出形式為n=具體值,s=具體值3.猜數(shù)游戲在這個實驗中,我們將嘗試編寫一個猜數(shù)游戲程序,這個程序看上去有些難度,但是如果按下列要求循序漸進地編程實現(xiàn),會發(fā)現(xiàn)其實這個程序是很容易實現(xiàn)的。那么,現(xiàn)在就開始吧,先編寫第1個程序,然后試著在第1個程序的基礎(chǔ)上編寫第2個程序,……程序1編程先由計算機“想”一個1~100之間的數(shù)請人猜,如果人猜對了,則計算機然后結(jié)束游戲。要求每次運行程序時機器所“想”的數(shù)不能都一樣。程序2編程先由計算機“想”一個1~100之間的數(shù)請人猜,如果人猜對了,則結(jié)束游戲,并在屏幕上輸出人猜了多少次才猜對此數(shù),以此來反映猜數(shù)者“猜”的水平;否則計算機給出提示,告訴人所猜的數(shù)是太大還是太小,直到人猜對為止。程序3編程先由計算機“想”一個1~100之間的數(shù)請人猜,如果人猜對了,則結(jié)束游戲,并在屏幕上輸出人猜了多少次才猜對此數(shù),以此來反映猜數(shù)者“猜”的水平;否則計算機給出提示,告訴人所猜的數(shù)是太大還是太小,最多可以猜10次,如果猜了10次仍未猜中的話,結(jié)束游戲。程序4編程先由計算機“想”一個1~100之間的數(shù)請人猜,如果人猜對了,在屏幕上輸出人猜了多少次才猜對此數(shù),以此來反映猜數(shù)者“猜”的水平,則結(jié)束游戲;否則計算機給出提示,告訴人所猜的數(shù)是太大還是太小,最多可以猜10次,如果猜了10次仍未猜中的話,則停止本次猜數(shù),然后繼續(xù)猜下一個數(shù)。每次運行程序可以反復(fù)猜多個數(shù),直到操作者想停止時才結(jié)束。實驗四:一維數(shù)組[實驗?zāi)康腯1.清楚一維數(shù)組定義格式及下標范圍。2.學習利用數(shù)組解決簡單應(yīng)用問題。3.進一步熟悉條件控制和循環(huán)控制。4.通過二維數(shù)組的應(yīng)用學會二重循環(huán)的程序設(shè)計。[實驗內(nèi)容]1.下面的程序重新安排數(shù)組a中的元素,請讀懂這個程序:#include<stdio.h>main(){inta[]={2,3,-3,-5,6,-1,9,8,7,-7,-6,11};intsize=12;inti=-1,j=size,d,k;while(++i<--j){while(i<j&&a[i]>0)i++;while(i<j&&a[j]<0)j--;if(i<j){d=a[i];a[i]=a[j];a[j]=d;}} for(k=0;k<size;k++)printf(″%d″,a[k]);}2.編寫一個程序,從鍵盤輸入10個學生的成績,統(tǒng)計最高分`最低分和平均分。[要求]輸入的數(shù)據(jù)首先存入一個數(shù)組中,程序中不得改變數(shù)組中這些數(shù)據(jù)的排列順序;運行時輸入下列數(shù)據(jù)并記錄程序的輸出結(jié)果:829088786375948699713.思考題已有一個已排好序的數(shù)組,今輸入一個數(shù),要求按原來排序的規(guī)律將它插入數(shù)組中。 實驗五:二維數(shù)組1.檢驗并打印魔方矩陣在下面的5×5階魔方矩陣中,每一行、每一列、每一對角線上的元素之和都是相等的,試編寫程序?qū)⑦@些魔方矩陣中的元素讀到一個二維整型數(shù)組中,然后檢驗其是否為魔方矩陣,并將其按如下格式顯示到屏幕上。172418152357141646132022101219213111825292.餐飲服務(wù)質(zhì)量調(diào)查打分在商業(yè)和科學研究中,人們經(jīng)常需要對數(shù)據(jù)進行分析并將結(jié)果以直方圖的形式顯示出來。例如,一個公司的主管可能需要了解一年來公司的營業(yè)狀況,比較一下各月份的銷售收入狀況。如果僅給出一大堆數(shù)據(jù),這顯然太不直觀了,如果能將這些數(shù)據(jù)以條形圖(直方圖)的形式表示,將會大大增加這些數(shù)據(jù)的直觀性,也便于數(shù)據(jù)的分析與對比。下面以顧客對餐飲服務(wù)打分為例,練習這方面的程序編寫方法。假設(shè)有40個學生被邀請來給自助餐廳的食品和服務(wù)質(zhì)量打分,分數(shù)劃分為1~10這10個等級(1表示最低分,10表示最高分),試統(tǒng)計調(diào)查結(jié)果,并用*打印出如下形式的統(tǒng)計結(jié)果直方圖。GradeCount Histogram1 5 *****2 10 **********3 7 ******* ...3.通過賦初值按行順序給2*3的二維數(shù)組賦予2,4,6等偶數(shù),然后按列的順序輸出該數(shù)組,即輸出其轉(zhuǎn)置矩陣。實驗六:使用函數(shù)的程序設(shè)計[實驗?zāi)康腯1.掌握函數(shù)定義和調(diào)用方法。2.掌握函數(shù)遞歸調(diào)用的方法。3.理解變量的作用域和生存期。[實驗內(nèi)容與要求]1.分析程序運行結(jié)果(1)#include<stdio.h>intn;intf(intx);main(){inta,b;a=5;b=f(a); /*判斷輸出實際輸出*/printf(”\n局部a=%d”,a); /*()()*/printf(”\n局部b=%d”,b); /*()()*/printf(”\n全局n=%d\n”,n);/*()()*/a++;b=f(a);printf(”\n局部a=%d”,a); /*()()*/printf(”\n局部b=%d”,b); /*()()*/printf(”\n全局n=%d\n”,n);/*()()*/}intf(intx){inta=1;staticintb; /*判斷輸出實際輸出*/a++;b++;x++;n++;/*第一次第二次第一次第二次*/printf(”\n局部fa=%d”,a);/*()()()()*/printf(”\n局部fb=%d”,b);/*()()()()*/ printf(”\n叁數(shù)x=%d\n”,x);/*()()()()*/ returnx;}[要求]a.讀程序,判斷程序的輸出并填入相應(yīng)行行尾的”判斷輸出”欄目下;b.實際運行程序,記錄程序的輸出,并填入相應(yīng)行行尾的”實際輸出”欄目下;c.對比判斷輸出和實際輸出,如有不符,分析產(chǎn)生錯誤判斷的原因。(2)#include<stdio.h>main(){ voidfun(intn);fun(3); }voidfun(intn){if(n<=1)printf(“a”);else{ fun(n-1); printf(“b”); fun(n-2); printf(“c”); }}[要求]a.讀程序,判斷程序的輸出;b.實際運行程序,記錄程序的輸出;c.對比判斷輸出和實際輸出,如有不符,分析產(chǎn)生錯誤判斷的原因。2.寫一個判素數(shù)的函數(shù),在主函數(shù)輸入一個整數(shù),輸出是否素數(shù)的信息。3.計算并輸出m!(m-n)!n![具體要求]1.編制一個函數(shù)p(n),返回n!值.2.編制主函數(shù),由鍵盤輸入m與n(m≧n≧0).調(diào)用(1)中的函數(shù)計算的值。m!(m-n)!n!實驗七 使用指針的程序設(shè)計[實驗?zāi)康腯進一步練習模塊化設(shè)計的方法。掌握使用指針變量的程序設(shè)計。掌握字符串的指針表示方法。[實驗內(nèi)容]1.下面是一個涉及到一系列指針操作的程序:#include<stdio.h>main(){ intm[]={0,1,2,3,4,5,6,7,8,9};/*判斷輸出實際輸出*/intp=m+3; printf(“%d\n”,*p); /*() ()*/printf(“%d\n”,++*p); /*() ()*/printf(“%d\n”,*p); /*() ()*/printf(“%d\n”,*++p); /*() ()*/printf(“%d\n”,*p); /*() ()*/printf(“%d\n”,*p++);/*() ()*/printf(“%d\n”,*p); /*() ()*/printf(“%d\n”,(*p)++); /*() ()*/printf(“%d\n”,*p); /*()()*/printf(“%d\n”,++*p++); /*() ()*/printf(“%d\n”,*p); /*() ()*/printf(“%d\n”,++*p++); /*() ()*/printf(“%d\n”,*p); /*() ()*/}[要求](1)讀程序,判斷程序的輸出并填入相應(yīng)行行尾的”判斷輸出”欄目下;(2)實際運行程序,記錄程序的輸出,并填入相應(yīng)行行尾的”實際輸出”欄目下;(3)對比判斷輸出和實際輸出,如有不符,分析產(chǎn)生錯誤判斷的原因。2.打印最高分和學號假設(shè)每班人數(shù)最多不超過40人,具體人數(shù)由鍵盤輸入,試編程打印最高分及其學號。程序2用二維數(shù)組和指針變量作為函數(shù)參數(shù),編程打印3個班學生(假設(shè)每班4個學生)的某門課成績的最高分,并指出具有該最高分成績的學生是第幾個班的第幾個學生。程序3用指向二維數(shù)組第0行第0列元素的指針作為函數(shù)參數(shù),編寫一個計算任意m行n列二維數(shù)組中元素的最大值,并指出其所在的行列下標值的函數(shù),利用該函數(shù)計算3個班學生(假設(shè)每班4個學生)的某門課成績的最高分,并指出具有該最高分成績的學生是第幾個班的第幾個學生。程序4編寫一個計算任意m行n列二維數(shù)組中元素的最大值,并指出其所在的行列下標值的函數(shù),利用該函數(shù)和動態(tài)內(nèi)存分配方法,計算任意m個班、每班n個學生的某門課成績的最高分,并指出具有該最高分成績的學生是第幾個班的第幾個學生?!舅伎碱}】請讀者思考:編寫一個能計算任意m行n列的二維數(shù)組中的最大值,并指出其所在的行列下標值的函數(shù),能否使用二維數(shù)組或者指向二維數(shù)組的行指針作為函數(shù)參數(shù)進行編程實現(xiàn)呢?為什么?實驗八 結(jié)構(gòu)應(yīng)用程序設(shè)計[實驗?zāi)康腯1.掌握定義結(jié)構(gòu)類型的方法。2.掌握結(jié)構(gòu)變量的定義和初始化方法。3.掌握直接訪問(通過.)和間接訪問(通過->)結(jié)構(gòu)成員的方法。4.熟悉結(jié)構(gòu)數(shù)據(jù)處理的一些基本技巧.[實驗內(nèi)容]1.函數(shù)sortbyage對一個staff(職工)數(shù)組按年齡由小到大的順序進行排序,排序采用插入法,排序結(jié)果記錄在另一個數(shù)組中.下面給出了結(jié)構(gòu)類型和主函數(shù)及一個輸出函數(shù)。請完成sortbyage()函數(shù)的設(shè)計。structstaff{ charstaffno[5]; charname[10]; charsex[3]; intage;};voidsortbyage(staffa[],staff*b[],intn) { /*函數(shù)體請自已完成*/ } voidshowstaff(staffa){printf(“\n%5c%9c%3c%4d\n”,a.staffno,,a.sex.a.age);}main(){ staffa[]={ {“0751”,”陳潔”,”女”,34}, {“0682”,”趙仙”,”男”,28}, {“0853”,”鄭玲”,”女”,22}, {“0852”,”屈進”,”男”,56},{“0781”,”趙寧”,”男”,47},{“0752”,”張建”,”男”,23},{“0691”,”李芬”,”女”,25},{“0934”,”花季”,”女”,19}, {“0931”,”金全”,”男”,44},{“0932”,”王利”,”男”,37},};staff*b[10];inti;sortbyage(a,b,10);for(i=0;i<10;i++)showstaff(*b[i]);}2.在屏幕上模擬顯示一個數(shù)字式時鐘按如下方法定義一個時鐘結(jié)構(gòu)體類型:structclock{ inthour; intminute; intsecond;};typedefstructclockCLOCK;然后,將下列用全局變量編寫的時鐘模擬顯示程序改成用CLOCK結(jié)構(gòu)體變量類型重新編寫。已知用全局變量編寫的時鐘模擬顯示程序如下:#include<stdio.h>#include<stdio.h>inthour,minute,second;/*全局變量定義*//*函數(shù)功能:時、分、秒時間的更新函數(shù)參數(shù):無函數(shù)返回值:無*/voidUpdate(void){ second++; if(second==60)/*若second值為60,表示已過1分鐘,則minute值加1*/ { second=0; minute++; } if(minute==60) /*若minute值為60,表示已過1小時,則hour值加1*/ { minute=0; hour++; } if(hour==24) /*若ho

溫馨提示

  • 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

提交評論