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ì)和任務

本課程的主要任務:通過對該課程的學習,使學生掌握C語言程序設計的基

本知識,程序結(jié)構(gòu),基本算法及程序設計思想,井培養(yǎng)使用C語言進行程序設計

基本能力。

本課程的目的:使學生掌握程序設計的基本方法及逐步形成正確的程序設計

思想,能夠熟練地使用c語言進行程序設計并具備調(diào)試程序的能力,為后繼課程

及其他程序設計課程的學習和應用打下基礎。

二、課程教學目標

1、掌握C語言的基本詞法,熟練掌握C語言程序的基本結(jié)構(gòu)。

2、掌握常量和變量的存儲類型及應用;運算符和表達式的應用

3、掌握C語言的基本語句;形成正確的程序設計思想,對順序結(jié)構(gòu)程序要

重點掌握,熟練掌握輸入輸出函數(shù)。

4、掌握關(guān)系、邏輯表達式的形式和應用;熟練掌握選擇結(jié)構(gòu)的思想;掌握

IF語句的各種形式和應用;掌握SWITCH語句和BREAK語句的使用,選

擇結(jié)構(gòu)的嵌套語句。

5、掌握循環(huán)結(jié)構(gòu)的思想、流程和執(zhí)行過程;掌握While循環(huán)、Do…While、

FOR循環(huán)及其應用;掌握循環(huán)嵌套的使用;掌握BREAK、CONTINUE及使

用。

6、掌握一維數(shù)組的定義、引用和應用;掌握二維數(shù)組的定義、引用和應用;

掌握字符數(shù)組及其應用。

7、掌握函數(shù)的定義、參數(shù)、類型、返回值及參數(shù)傳遞;掌握變量的作用域

(局部變量和全局變量)、存儲類型;了解內(nèi)部函數(shù)和外部困數(shù)及主困數(shù)

和命令行參數(shù)。

9、掌握直接存取和間接存??;掌握指針變量的概念和應用;掌握數(shù)組與指

針、函數(shù)與指針之間的關(guān)系;了解指向指針的指針。

10、掌握結(jié)構(gòu)體、共用體的概念、存儲特點,及應用;了解結(jié)構(gòu)體數(shù)組的使

用;掌握結(jié)構(gòu)體與數(shù)組、指針、函數(shù)之間的操作;掌握鏈表的概念和基

本操作。了解共用體、自定義類型、枚舉類型的概念和應用。

三、實驗內(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)編程練習

[實驗目的]

I.熟練地利用文不編輯程序輸入、修改C程序。

2.掌握和理解C程序的基本結(jié)構(gòu)。

3.掌握C程序的編譯連接與運行。

4.掌握和理解本實驗中出現(xiàn)的一些最基本的語句。

[實驗內(nèi)容]

1.鍵盤輸入與屏幕輸出練習

問題1要使下面程序的輸出語句在屏幕上顯示1,2,34,則從鍵盤輸入的數(shù)據(jù)格

式應為以下備選答案中的0

#include<stdio.h>

main()

(

chara,b;

intc;

scanf(H%c%c%d",&a,&b,&c);

printf%cz%d\n",a,bzc);

)

A)1234B)1,2,34

C)'1,,2,34D)1234

問題2在與上面程序的鍵盤輸入相同的情況下,要使上面程序的輸出語句在屏

幕上顯示1234,則應修改程序中的哪條語句?怎樣修改?

問題3要使上面程序的犍盤輸入數(shù)據(jù)格式為1234,輸出語句在屏幕上顯示的

結(jié)果也為1,2,34,則應修改程序中的哪條語句?怎樣修改?

問題4要使上面程序的鍵盤輸入數(shù)據(jù)格式為1234,而輸出語句在屏幕上顯示

的結(jié)果為T,2,34,則應修改程序中的哪條語句?怎樣修改?

[提示:利用轉(zhuǎn)義字符輸出字符單引號字符。]

2.計算定期存款本利之和

設銀行定期存款的年利率rate為2.25%,并已知存款期為〃年,存款本金為capital

元,試編程計算〃年后的本利之和deposit。要求定期存款的年利率rate、存款期

n和存款本金capital均由鍵盤輸入。

公式:deposit=capilal*(l+rate*n)

dcposit=capitcd*(1Irate)11

實驗2:選擇結(jié)構(gòu)程序設計

[實驗目的]

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(IWXWIO)

3x-ll(x三10)

具體要求如下:

(1)用if語句實現(xiàn)分支。自變量x與函數(shù)值均用雙精度類型。

(2)自變量x用scanf函數(shù)輸入,且輸入前要有提示。結(jié)果的輸出采用以下

形式:

x=具體值,f(x)=具體值

2、身高預測

每個做父母的都關(guān)心自己孩子成人后的身高,據(jù)有關(guān)生理衛(wèi)生知識與數(shù)理統(tǒng)

計分析表明,影響小孩成人后的身高的因素包括遺傳、飲食習慣與體育鍛煉等。

小孩成人后的身高與其父母的身高和自身的性別密切相關(guān)。

設faHeight為其父身高,moHeight為其母身高,身高預測公式為

男性成人時身高=(faHeight+moHeight)x0.54cm

女性成人時身高二(faHeightx0.923+moHeight)/2cm

此外,如果喜愛體育鍛煉,那么可增加身高2%;如果有良好的衛(wèi)生飲食習慣,

那么可增加身高1.5%。

編程從鍵盤輸入用戶的性別(用字符型變量sex存儲,輸入字符F表示女性,輸

入字符M表示男性)、父母身高(用實型變量存儲,faHeight為其父身高,moHeight

為其母身高)、是否喜愛體育鍛煉(用字符型變量sports存儲,輸入字符Y表示

喜愛,輸入字符N表示不喜愛)、是否有良好的飲食習慣等條件(用字符型變量

diel存儲,輸入字符Y表示良好,輸入字符N表示不好),利用給定公式和身高

預測方法對身高進行預測。

3、簡單的計算器

用switch語句編程設計一個簡單的計算器程序,要求根據(jù)用戶從鍵盤輸入的表

達式:

操作數(shù)1運算符op操作數(shù)2

計算表達式的值,指定的算術(shù)運算符為加(+)、減(-)、乘(*)、除(/)。

本實驗程序是在例4.8的基礎上,增加如下要求:

(1)如果要求程序能進行浮點數(shù)的算術(shù)運算,程序應該如何修改?如何比較

實型變量data2和常數(shù)()是否相等?

(2)如果要求輸入的算術(shù)表達式中的操作數(shù)和運算符之間可以加入任意多個

空白符,那么程序如何修改?

(3)(選作題)如果要求連續(xù)做多次算術(shù)運算,每次運算結(jié)束后,程序都給

出提示:

Doyouwanttocontinue(Y/Nory/n)?

用戶輸入Y或y時,程序繼續(xù)進行其他算術(shù)運算;否則程序退出運行狀態(tài),那

么,程序如何修改?

實驗三:循環(huán)結(jié)構(gòu)的程序設計

[實驗目的]

1.進一步練習選擇結(jié)構(gòu)的程序設計。

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=l-(l/3)+(l/5)-(l/7)+…+(T)n(l/(2n+D)直到最后一項的絕對值小

于IO』為止。

要求輸出s和總的項數(shù)n。輸出形式為n=具體值,s=具體值

3.猜數(shù)游戲

在這個實驗中,我們將嘗試編寫一個猜數(shù)游戲程序,這個程序看上去有些難度,

但是如果按下列要求循序漸進地編程實現(xiàn),會發(fā)現(xiàn)其實這個程序是很容易實現(xiàn)

的。那么,現(xiàn)在就開始吧,先編寫第1個程序,然后試著在第1個程序的基礎上

編寫第2個程序,...

程序1編程先由計算機“想”一個1~100之間的數(shù)請人猜,如果人猜對了,

則計算機給出提示“Right!”,否則提示“Wrong!”,并告訴人所猜的數(shù)是大(Toohigh)

還是小(To。low),然后結(jié)束游戲。要求每次運行程序時機器所“想”的數(shù)不能

都一樣。

程序2編程先由計算機“想”一個1?1()0之間的數(shù)請人猜,如果人猜對了,

則結(jié)束游戲,并在屏幕上輸出人猜了多少次才猜對此數(shù),以此來反映猜數(shù)者“猜”

的水平;否則計算機給出提示,告訴人所猜的數(shù)是太大還是太小,直到人猜對為

止。

程序3編程先由計算機“想”一個1~100之間的數(shù)請人猜,如果人猜對了,

則結(jié)束游戲,并在屏幕上輸出人猜了多少次才猜對此數(shù),以此來反映猜數(shù)者“猜”

的水平;否則計算機給出提示,告訴人所猜的數(shù)是太大還是太小,最多可以猜

10次,如果猜了10次仍未猜中的話,結(jié)束游戲。

程序4編程先由計算機“想”一個1?100之間的數(shù)請人猜,如果人猜對了,

在屏幕上輸出人猜了多少次才猜對此數(shù),以此來反映猜數(shù)者“猜”的水平,則結(jié)

束游戲;否則計算機給出提示,告訴人所猜的數(shù)是太大還是太小,最多可以猜

1()次,如果猜了1()次仍未猜中的話,則停止本次猜數(shù),然后繼續(xù)猜下一個數(shù)。

每次運行程序可以反復猜多個數(shù),直到操作者想停止時才結(jié)束。

實驗四:一維數(shù)組

[實驗目的]

1.清楚一維數(shù)組定義格式及下標范圍。

2.學習利用數(shù)組解決簡單應用問題。

3.進一步熟悉條件控制和循環(huán)控制。

4.通過二維數(shù)組的應用學會二重循環(huán)的程序設計。

[實驗內(nèi)容]

1.下面的程序重新安排數(shù)組a中的元素,請讀懂這個程序:

Sinclude<stdio.h>

mainO

(

inta[]={2,3,-3,-5,6,-1,9,8,7,-7,-6,11};

intsize=12;

inti=-l,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(w%dw,a[k]);

}

2.編寫一個程序,從鍵盤輸入10個學生的成績,統(tǒng)計最高分'最低分和平均

分。

[要求]

輸入的數(shù)據(jù)首先存入一個數(shù)組中,程序中不得改變數(shù)組中這些數(shù)據(jù)的排列順

序;

運行時輸入下列數(shù)據(jù)并記錄程序的輸出結(jié)果:

82908878637594869971

3.思考題

已有一個已排好序的數(shù)組,今輸入一個數(shù),要求按原來排序的規(guī)律將它插入

數(shù)組中。

實驗五:二維數(shù)組

1.檢驗并打印魔方矩陣

在下面的5x5階魔方矩陣中,每一行、每一列、每一對角線上的元素之和都是相

等的,試編寫程序?qū)⑦@些魔方矩陣中的元素讀到一個二維整型數(shù)組中,然后檢驗

其是否為魔方矩陣,并將其按如下格式顯示到屏幕上。

17241815

23571416

46132022

1()1219213

11182529

2.餐飲服務質(zhì)量調(diào)查打分

在商業(yè)和科學研究中,人們經(jīng)常需要對數(shù)據(jù)進行分析并將結(jié)果以直方圖的形式顯

示出來。例如,一個公司的主管可能需要了解一年來公司的營業(yè)狀況,比較一下

各月份的銷售收入狀況。如果僅給出一大堆數(shù)據(jù),這顯然太不直觀了,如果能將

這些數(shù)據(jù)以條形圖(直方圖)的形式表示,將會大大增加這些數(shù)據(jù)的直觀性,也

便于數(shù)據(jù)的分析與對比。下面以顧客對餐飲服務打分為例,練習這方面的程序編

寫方法。假設有40個學生被邀請來給自助餐廳的食品和服務質(zhì)量打分,分數(shù)劃

分為1?10這1()個等級(1表示最低分,1()表示最高分),試統(tǒng)計調(diào)查結(jié)果,并

用*打印出如下形式的統(tǒng)計結(jié)果直方圖。

GradeCountHistogram

15*****

210**********

37木小小小小小小

3.通過賦初值按行順序給2*3的二維數(shù)組賦予2,4,6等偶數(shù),然后按列的順序

輸出該數(shù)組,即輸出其轉(zhuǎn)置矩陣。

實驗六:使用函數(shù)的程序設計

[實驗目的]

1.掌握函數(shù)定義和調(diào)用方法。

2.掌握函數(shù)遞歸調(diào)用的方法。

3.理解變量的作月域和生存期。

[實驗內(nèi)容與要求]

1.分析程序運行結(jié)果

(1)#include<stdio.h>

intn;

intf(intx);

main()

(

inia,b;

a=5;

b=f(a);/*判斷輸出實際輸出*/

printf("\n局部a=%d,\a);/*()()*/

printf(,,\n局部b=%d,,,b);/*()()*/

printf("\n全局n=%d\n,,,n);/*()(產(chǎn)/

a++;

b=f(a);

printf(,,\n局部a=%d,\a);/*()()*/

printff'n局部b=%d”,b);/*()()*/

primf("\n全局n=%d\n,,,n);/*()()*/

)

intf(intx)

{

inta=l;

staticintb;/*判斷輸出實際輸出*/

a++;b++;x++;n++;/*第一次第二次第一次第二次*/

printf("\n局部fa=%d,5,a);/*()()()(//

printf("\n局部fb=%d",b);/*()()()()*/

printf("\n叁數(shù)x=%d\n5,,x);/*()()()(產(chǎn)/

returnx;

[要求]

a.讀程序,判斷程序的輸出并填入相應行行尾的“判斷輸出”欄目下;

b.實際運行程序,記錄程序的輸出,并填入相應行行尾的“實際輸出”欄目下;

c.對比判斷輸出和實際輸此如有不符,分析產(chǎn)生錯誤判斷的原因。

(2)#include<stdio.h>

main()

voidfun(intn);

fun⑶;

)

voidfun(intn)

(

if(n<=l)printf("a”);

else{

fun(n-l);

printfCb");

fun(n-2):

printf("c”);

I

)

[要求]

a.讀程序,判斷程序的輸出;

b.實際運行程序,記錄程序的輸出;

c.對比判斷輸出和實際輸出,如有不符,分析產(chǎn)生錯誤判斷的原因。

2.寫一個判素數(shù)的函數(shù),在主函數(shù)輸入一個整數(shù),輸出是否素數(shù)的信息。

3.計算并輸出

ml

(m-n)!n!

[具體要求]

1.編制一個函數(shù)p(n),返回n!值.

2.編制主函數(shù),由鍵盤輸入m與n(m^n&0).調(diào)用(1)中的函數(shù)計算的值。

m!

(m-n)!n!

實驗七使用指針的程序設計

[實驗S的]

1.進一步練習模塊化設計的方法。

2.掌握使用指針變量的程序設計。

3.掌握字符串的指針表示方法。

[實驗內(nèi)容]

1.下面是一個涉及到一系列指針操作的程序:

#include<stdio.h>

main()

(

intm[]={0,1,2,3,456,7,8,9);/*判斷輸出實際輸出*/

intp=m+3;

printf(“%d\n”,*p);/*()()*/

printf(M%d\n,,,-H-*p);/*()()*/

printf(u%d\nw,*p);/*()()*/

printf(w%d\n,,,*++p);/*()()*/

printf("%d\n”,*p);/*()()*/

printf(u%d\n,,,*p++);/*()()*/

printf("%d\n",*p);/*()()*/

printf(w%d\n,,,(*p)++);/*()()*/

printf(w%d\nw,*p);/*()()*/

printf(“%d\n”,H*p++);/*()()*/

printf("%d\n",*p);/*()()*/

printf(w%d\n,,,-H-*p++);/*()()*/

printf("%d\n",*p);/*()()*/

[要求]

(1)讀程序,判斷程序的輸出并填入相應行行尾的“判斷輸出”欄n卜;

(2)實際運行程序,記錄程序的輸出,并填入相應行行尾的“實際輸出”欄目

下;

(3)對比判斷輸出和實際輸出,如有不符,分析產(chǎn)生錯誤判斷的原因。

2.打印最高分和學號

假設每班人數(shù)最多不超過40人,具體人數(shù)由鍵盤輸入,試編程打印最高分及其

學號。

程序1用一維數(shù)組和指針變量作為函數(shù)參數(shù),編程打印某班一門課成績的最高分

及其學號。

程序2用二維數(shù)組和指針變量作為函數(shù)參數(shù),編程打印3個班學生(假設每班

4個學生)的某門課成績的最高分,并指出具有該最高分成績的學生是第幾個班

的第幾個學生。

程序3用指向二維數(shù)組第。行第0列元素的指針作為函數(shù)參數(shù),編寫一個計算

任意m行〃列二維數(shù)組中元素的最大值,并指出其所在的行列下標值的函數(shù),

利用該函數(shù)計算3個班學生(假設每班4個學生)的某門課成績的最高分,并指

出具有該最高分成績的學生是第幾個班的第幾個學生。

程序4編寫一個計算任意m行〃列二維數(shù)組中元素的最大值,并指出其所在的

行列下標值的函數(shù),利用該函數(shù)和動態(tài)內(nèi)存分配方法,計算任意加個班、每班〃

個學生的某門課成績的最高分,并指出具有該最高分成績的學生是第幾個班的第

兒個學生。

【思考題】請讀者思考:

編寫一個能計算任意加行〃列的二維數(shù)組中的最大值,并指出其所在的行列

下標值的函數(shù),能否使用二維數(shù)組或者指向二維數(shù)組的行指針作為函數(shù)參數(shù)

進行編程實現(xiàn)呢?為什么?

實驗八結(jié)構(gòu)應用程序設計

[實驗目的]

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ù)的設計。

structstaff{

charstaffno[5];

charname[10J;

charsex[3];

iniage;

);

voidsortbyage(staffa[],staffn)

{

/*函數(shù)體請自己完成*/

)

voidshowstaff(staffa)

(

printf(4t\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},

I;

staff*b[10];

inti;

sortbyage(a,b,IO);

for(i=0;i<l0;i++)showstaff(*b[ij);

}

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分鐘,貝I」minutefil加

1*/

(

second=0;

minute++;

}

if(minute==60)/*若minute值為60,表示已過1小時,則hour值力DI*/

(

minute=0;

hour++;

}

if(hour==24)/*若hour值為24,則hour的值從0開始計時*/

(

hour=0;

}

)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論