




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
C語言程序設(shè)計實驗指導(dǎo)書桂林電子科技大學(xué)信息科技學(xué)院C語言程序設(shè)計實驗指導(dǎo)書C語言程序設(shè)計實驗指導(dǎo)書前言上機實驗的目的和要求一上機實驗的目的上機實驗的目的,絕不僅僅是為了驗證教材和講課的內(nèi)容,或者驗證自己所編程序正確與否。學(xué)習(xí)程序語言,上機實驗的目的如下:加深對講授內(nèi)容的理解,尤其是一些語法規(guī)定,光靠課堂講授,既枯燥無味又難以記住,通過多次上機,就能自然、熟練地掌握語法規(guī)定。了解和熟悉C語言程序開發(fā)環(huán)境。熟悉一兩種環(huán)境(計算機系統(tǒng)的軟件和硬件條件),再遇到其他的系統(tǒng)時便會觸類旁通,很快學(xué)會。學(xué)會上機調(diào)試程序,也就是善于發(fā)現(xiàn)程序中的錯誤,并且能很快地排除這些錯誤,使程序能夠正確地運行。要真正掌握計算機應(yīng)用技術(shù),就不僅應(yīng)當(dāng)了解和熟悉有關(guān)理論和方法,而且要求自己動手實踐能力強。在做實驗時千萬不要在程序通過后就認(rèn)為萬事大吉,完成任務(wù)了,應(yīng)當(dāng)在通過的程序上做一些調(diào)試和修改,看看會得到什么結(jié)果。多動腦筋思考,將會對你有很大幫助。上機實驗前的準(zhǔn)備工作了解所用的計算機系統(tǒng)的性能和使用方法;復(fù)習(xí)和掌握與本實驗有關(guān)的教學(xué)內(nèi)容;準(zhǔn)備好上機所用的程序,切忌自己不思考、不編制程序或抄襲別人的程序;準(zhǔn)備好調(diào)試和運行時所需的數(shù)據(jù)。上機實驗的步驟1調(diào)出C語言編譯系統(tǒng),進入C語言工作環(huán)境;輸入自己編制好的程序;檢查輸入是否有錯,及時更正;進行編譯和連接;運行程序,分析結(jié)果。四、實驗結(jié)束,整理實驗報告實驗報告應(yīng)包括以下內(nèi)容:上機題目;程序清單;3運行結(jié)果;4對結(jié)果的分析和本次獲得的經(jīng)驗和體會。實驗一C語言程序初步數(shù)據(jù)類型、運算符和表達(dá)式一實驗?zāi)康?熟悉C語言運行環(huán)境——MicrosoftVisualC++6.0中文版。2掌握口語言程序的書寫格式和口語言程序的結(jié)構(gòu),初步了解C源程序的特點。3掌握C語言上機步驟,了解如何編輯、編譯、調(diào)試和運行一個C程序的方法。4掌握C語言數(shù)據(jù)類型,熟悉如何定義一個整型、字符型和實型的變量,以及對他們賦值的方法。5掌握不同的類型數(shù)據(jù)之間賦值的規(guī)律。二實驗內(nèi)容C語言上機步驟⑴開機,啟動MicrosoftVisualC++6。⑵建立工程文件:在“文件”菜單中選擇“新建”命令項,在彈出的“新建”對話框的“工程”選項卡中選擇“Win32ConsoleApplication”選項,在“工程”框中輸入工程文件名sy1,在“c:位置”下拉框中輸入或選擇文件夾,單擊“確定”;在以下彈出的兩個對話框中分別單擊命令按鈕“完成”和“確定”。⑶建立C++源文件:在“工程”菜單中選擇“添加到工程”—“新建”命令項,在彈出的“新建”對話框的“文件”選項卡中選擇“C++SourceFile”,在右邊的“文件”框中輸入文件名sy11后單擊“確定”口⑷輸入源程序:在彈出的文件編輯窗口中輸入下面的源程序:#include<stdio.h>voidmain(){printf("Hello,World!\n");printf("WelcometotheClanguageworld!\n");printf("Everyonehasbeenwaitingfor.\n");}⑸編譯:用“編譯”菜單的“編譯”命令項對源文件sy11.cpp進行編譯,如果程序有語法或語義錯誤,在屏幕下面的窗口會出現(xiàn)錯誤信息;這時候要修改源程序、保存后重新編譯。直到修改了全部錯誤,屏幕下面的窗口會出現(xiàn)下面的信息:表示已通過編譯,生成了目標(biāo)程序sy11.obj。⑹調(diào)試:接下來進行調(diào)試,操作如下圖所示。完成調(diào)試后,生成可執(zhí)行程序文件sy1.exe。syl-創(chuàng)天中文¥匚++-[wll.cpp]E)文件編輯查看插及j(Ghbsls)工程編譯工具漏口幫助gT鎏編譯tt,rl+F7一一:料件打LejicF7網(wǎng)g圈重建全部鹵竄sy1files力,白SourceFiles國syl1xppOHeaderFilesOResourceFile批構(gòu)件…清潔Id八武)之開始調(diào)試去F5調(diào)試程序遠(yuǎn)程連接,,,和Mt叩1nt口F11?執(zhí)行切Lc燦Gtrl+F5'IHuntoCursorCtrl+FIQAttachtoProcess/..放置可遠(yuǎn)行配置,,,一=配置一簡檔…⑺運行:最后用“編譯”菜單的“!執(zhí)行sy1.exe”命令項運行可執(zhí)行程序文件sy1.exe。運行結(jié)果如下:F:"E:\sy1\Debug\sy1.ewe"^.|n|xj2用同樣的方法,完成下面程序的運行eClanguageworld?beenwaitingfor.tocontinue_jlello,World*UeIcometotEueryonehasPressanyke1輸入并運行下面的程序,運行后記錄并分析結(jié)果。#include<stdio.h>main(){charc1,c2;c1=97;c2=98;編譯工具甯口郁助覆編譯Ctri+F7料件算I,球0F7-圈重建全部批構(gòu)件…清潔開始調(diào)試調(diào)試程序遠(yuǎn)程連接…放置可遠(yuǎn)行配置…配置…一檔…執(zhí)行syl.es;eCtrl+F5/*第2行*//*第3行*/printf("%c%c\n",c1,c2);}在此基礎(chǔ)上:⑴在程序最后增加一個語句,再運行,并分析結(jié)果。printf("%d%d\n",c1,c2);⑵將第2行改為:intc1,c2;再次運行,并分析結(jié)果。⑶再將第3行改為:c1=305;c2=340;再使之運行,分析運行結(jié)果。輸入并運行下面的程序#include<stdio.h>main(){charc1='a',c2='b',c3='c',c4='\101',c5='\116';printf("a%cb%c\tc%c\tabc\n",c1,c2,c3);printf("\t\t\b%c%c\n",c4,c5);}在上機前先用人工分析程序,寫出應(yīng)得結(jié)果,上機后將二者對照。三分析與討論1下在調(diào)試過程中所發(fā)現(xiàn)的錯誤、系統(tǒng)給出的出錯信息和對策。分析討論成功或失敗的原因。2總結(jié)叫序的結(jié)構(gòu)和書寫規(guī)則。四思考題1請寫出C語言程序的構(gòu)成和運行C語言程序的一般步驟。2編寫一個C語言程序,輸入a、b、c三個數(shù),輸出其中最大者??谙耄绻笏膫€數(shù)中的最大者,則程序該如何編寫。五注意事項當(dāng)程序在編譯時發(fā)現(xiàn)很多錯誤,此時應(yīng)從上到下逐一改正,或改一個錯誤,就重新再編譯,因為有時一個錯誤會引起很多錯誤信息。當(dāng)需要用比較復(fù)雜的邏輯表達(dá)式時,要避免發(fā)生優(yōu)先級上的錯誤,可以使用最高優(yōu)先級的運算符()將其括起來,這樣既增加可讀性,又不會出現(xiàn)不必要的錯誤。實驗二順序結(jié)構(gòu)與輸入/輸出方法一實驗?zāi)康?學(xué)會使用C的有關(guān)算術(shù)運算符,以及包含這些運算符的表達(dá)式,特別是自加(++)和自減(--)運算符的使用。2掌握C語言中賦值語句的使用。3掌握C語言中各種數(shù)據(jù)的輸入/輸出方法,能正確使用各種格式轉(zhuǎn)換符。4理解C語言程序的順序結(jié)構(gòu)。二實驗內(nèi)容上機調(diào)通以下程序。1輸入下面的程序#include<stdio.h>main(){inti,j,m,n;i=8;j=10;m=++i;/*第5行*/n=j++;/*第6行*/printf("%d,%d,%d,%d\n",i,j,m,n);}運行程序,注意i、j、m、n各變量的值;然后分別作以下改動并運行:⑴將第5、6行改為如下以后再運行:m=i++;n=++j;⑵將程序改為:#include<stdio.h>main(){inti,j;i=8;j=10;printf("%d,%d\n",i++,j++);/*第5行*/}⑶在⑵的基礎(chǔ)上,將第5行printf語句改為:printf("%d,%d\n",++i,++j);⑷再將printf語句改為:printf("%d,%d,%d,%d\n",i,j,i++,j++);⑸將程序改為:#include<stdio.h>main(){inti,j,m=0,n=0;i=8;j=10;m+=i++;n-=--j;printf("i=%d,j=%d,m=%d,n=%d\n",i,j,m,n);}2運行以下程序,并分析其輸出結(jié)果#include<stdio.h>main(){shorti;i=-2;printf("\ni:dec=%d,oct=%o,hex=%x,unsigned=%u\n",i,i,i,i);}【注意】在VC++6.0中,short和int類型的數(shù)據(jù)在內(nèi)存中占用4個字節(jié)。按格式要求輸入、輸出數(shù)據(jù)。#include<stdio.h>main(){inta,b;floatx,y;charc1,c2;scanf("a=%d,b=%d",&a,&b);scanf("%f,%e",&x,&y);scanf("%c%c%c",&c1,&c1,&c2);/*第8行*/printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2);}運行該程序,按如下方式在鍵盤上輸入數(shù)據(jù):a=3,b=785,71.82aA請同學(xué)們寫出輸出的結(jié)果?!舅伎肌砍绦虻?行中,為什么變量cl要輸入兩次?運行以下程序,并分析其輸出結(jié)果#include<stdio.h>main(){floatf;f=3.1415;printf("\n%f,%4.3f,%5.3f,%-10.3f,%10.3f\n",f,f,f,f,f);}4運行以下程序,并分析其輸出結(jié)果#include<stdio.h>main(){inta,b;floatc,d;charc1,c2;a=61;b=62;c=31.5;d=-68.87;c1='a';c2='A';printf("\n");printf("a=%d,b=%d\n",a,b);printf("c=%f,d=%f\n",c,d);printf("c=%e,d=%e\n",c,d);printf("c1=%c,%c\n",c1,c2);}【注意】在VC++6.0中,實數(shù)的指數(shù)形式是:±X.XXXXXXe±XXX以下程序的功能是從鍵盤輸入一個整型數(shù),一個實型數(shù)和一個字符型數(shù),并把他們在屏幕上輸出。完成以下填空,并把程序調(diào)通,寫出口輸入為45,34.5,AQ車>時程序的運行結(jié)果。#include<stdio.h>main(){inta;floatb;charc;scanf("%d,%f,%c",);printf("a=\n",a);printf("b=\n",b);printf("c=\n",c);}6指出以下程序的錯誤并改正,并上機把程序調(diào)通。#include<stdio.h>main(){inta;scanf("%f",a);printf("a=%f,a);charc;c=A;printf("%f,c)}三思考題1編寫程序,用getchar函數(shù)讀入兩個字符c1,c2,然后分別用putchar函數(shù)和printf函數(shù)輸出這兩個字符。并思考以下問題:⑴變量c1,c2應(yīng)定義為字符型或整型?還是二者皆可?⑵要求輸出cl和c2的ASCII碼,應(yīng)如何處理?用putchar函數(shù)還是printf函數(shù)?⑶整型變量和字符型變量是否在任何情況下都可以互相代替?2設(shè)圓半徑r=2,圓柱高h(yuǎn)=3,求圓周長,圓柱底面積,圓柱體積。用scanf輸入數(shù)據(jù),用printf輸出計算結(jié)果,輸出時要求有文字說明,取小數(shù)點后兩位數(shù)字。實驗三邏輯運算和選擇結(jié)構(gòu)程序設(shè)計一實驗?zāi)康?掌握C語言表示邏輯量的方法(000000,1代表“真”);2學(xué)會正確使用邏輯運算符和邏輯表達(dá)式;3熟練掌握if語句和switch語句。二實驗內(nèi)容1已知三個數(shù)a,b,c,找出最大值放在max中口#include<stdio.h>main(){inta,b,c,max;printf(”請輸入3個整數(shù)(中間用逗號分開):”);
scanf("%d,%d,%d",&a,&b,&c);if(a>=b)max=a;elsemax=b;if(c>max)max=c;printf("max=%d\n",max);}70口70口80分(包括70):C60口70分(包括60):D60分以下:E方法一:用嵌套的60分以下:E方法一:用嵌套的if語句#include"stdio.h"main(){intscore;chargrade;printf("請輸入學(xué)生成績:”);scanf("%d",&score);if(score〉100||score<0)printf("\n輸入成績錯誤!\n");else{if(score>=90)grade='A';elseif(score〉=80)grade='B';elseif(score〉=70)grade='C';elseif(score〉=60)grade='D';elsegrade='E';printf("\n成績等級是%c\n",grade);}}輸入測試數(shù)據(jù),調(diào)試程序。測試數(shù)據(jù)要覆蓋所有路徑,注意臨界值,例如此題中100分,60分,0分以及小于0和大于100的數(shù)據(jù)。如果稍不注意就會出現(xiàn)小的程序缺陷。方法二:用switchDO分析:switch語句是用于處理多分支的語句。注意,case后的表達(dá)式必須是一個常量表若輸入下列數(shù)據(jù),分析程序的執(zhí)行順序并寫出輸出結(jié)果。序號輸入的3個整數(shù)a、b、c輸出max11,2,321,3,232,1,342,3,153,1,263,2,12輸入某學(xué)生的成績,經(jīng)處理后給出學(xué)生的等級,等級如下:90分以上(包括90口:A80口90分(包括80):B
達(dá)式,所以在用switch達(dá)式,所以在用switch語句之前,必須把0口100之間的成績分別化成相關(guān)的常量。所有此外都是E類。則由此可把score(除100以外)、B、C此外都是E類。則由此可把score請同學(xué)們自己根據(jù)分析寫出完整的程序段,并編譯、運行、查看結(jié)果。三思考題1有一函數(shù):yIX-1、-x+1yIX-1、-x+1要求輸入x的值,輸出分別用:⑴不用嵌套的(-5<x<0)(x=0)(0<x<10)y的值。if語句;⑵用嵌套的if語句;⑶用switch語句編寫程序。C程序;如果能構(gòu)成2C程序;如果能構(gòu)成組成的三角形屬于什么類型(不等邊,等腰,等邊或不構(gòu)成三角形)的三角形,求出三角形的面積(取小數(shù)2位)。用下面的數(shù)據(jù)運行程序,記錄程序的輸出結(jié)果:abc類型三角形面積1.582.371.583.214.255.162.482.482.482.359.283.83【提示】已知三角形邊長a、b、c,計算三角形面積s的公式是:「寸TT7Tnna+b+CS=Jp(p-a)(p-b)(P-c)其中p二四注意事項:if-else語句書寫時應(yīng)采用分層縮進的格式。switch語句的句法格式。實驗四循環(huán)結(jié)構(gòu)程序設(shè)計一目的和要求1掌握在設(shè)計條件型循環(huán)結(jié)構(gòu)時,如何正確地設(shè)定循環(huán)條件,以及如何正確地控制計數(shù)型循環(huán)結(jié)構(gòu)的次數(shù)。熟悉用whileDO,do-whileDOOfor語句實現(xiàn)循環(huán)的方法。掌握在程序設(shè)計中用循環(huán)的方法實現(xiàn)各種算法(如窮舉、選代、遞推等)。掌握選擇結(jié)構(gòu)與循環(huán)結(jié)構(gòu)的嵌套。二實驗內(nèi)容1程序分析下面是一個計算e的近似值(使誤差小于給定的61的程序。#include<stdio.h>main()doublee=1.0,x=1.0,y,delta;inti=1;");y=1/x;1.01111while(y>=delta)e=1+1i=2x=2y=1/2{e=e+y;2+1/232*31/6i++;2+1/2+1/642*3*41/24printf("請輸入給定的誤差:scanf("%lf",&delta);2++1/(n-1)!x=x*i;nn!1/n!y=1/x;printf("計算結(jié)果是:%12.10lf\n",e);閱讀上面的程序,寫出程序所依據(jù)的計算公式。當(dāng)輸入的不進入循環(huán);只循環(huán)一次;只循環(huán)兩次;進入死循環(huán)delta是什么值時,能分別使程序按下面的要求運行:>0.5<=1>=0.5>1/6(程序?qū)⒂肋h(yuǎn)循環(huán)下去)。<=0為了能知道程序循環(huán)了多少次,應(yīng)該在程序中增加一條什么樣的語句?原程序中while語句中的y>=delta,分別換成y>delta,y=delta,y<delta,y<=detax觀察程序運行將會有什么變化。把程序中的while結(jié)構(gòu)改寫成do-while結(jié)構(gòu),口運行程序,說明兩種結(jié)構(gòu)的區(qū)別。將程序改成用for循環(huán)結(jié)構(gòu),計算前50項,并運行程序,寫出運行結(jié)果。有一數(shù)列:2/1,3/2,5/3,8/5,?求出這個數(shù)列的前10項之和。#include<stdio.h>main(){intn,t;floata=2,b=1,s=0;for(n=1;n<=10;n++){s=s+a/b;t=a;a=a+b;b=t;}printf("%f\n",s);}要求:跟蹤執(zhí)行,觀察s、t、a、b的變化。方法:使用功能鍵F10單步跟蹤執(zhí)行程序,可以在監(jiān)視窗口設(shè)置要觀察的變量或表達(dá)式。3計算兩個數(shù)的最大公約數(shù)。算法:⑴輸入兩個整數(shù)m、n,并求m除以n的余數(shù)k。k;反⑵當(dāng)k口0,將除數(shù)n作為被除數(shù)m,余數(shù)k作為除數(shù)n,繼續(xù)求m除以nk;反復(fù)做第⑵步,直到余數(shù)為0結(jié)束循環(huán)。⑶結(jié)束循環(huán)后,除數(shù)n就是m與n的最大公約數(shù)。請同學(xué)們根據(jù)算法寫出完整的程序,并編譯、運行、檢查結(jié)果的正確性。三思考題編寫程序:輸入6名學(xué)生5門課程的成績,分別統(tǒng)計出每個學(xué)生5門課程的平均成績。四、注意事項while語句的句法格式及用法。for語句的正確使用方法。注意它的初始值、終止條件及步長的確定。當(dāng)循環(huán)不能停止(出現(xiàn)死循環(huán)),應(yīng)該用Ctrl+break中斷程序的運行。實驗五數(shù)組一實驗?zāi)康恼莆找痪S數(shù)組和二維數(shù)組的定義、賦值和輸入輸出的方法;掌握字符數(shù)組和字符串函數(shù)的使用;掌握與數(shù)組有關(guān)的算法(特別是排序算法)二、實驗內(nèi)容編程序并上機調(diào)試運行。12個整數(shù),按每行12個整數(shù),按每行3個數(shù)輸出這些整數(shù),最后輸出12個整數(shù)的平均值。寫出調(diào)試過程。#include<stdio.h>defineN12main(){inti,a[N],av;for(i=0;i<N;i++)scanf("%d",a[i]);for(i=0;i<N;i++){printf("%d",a[i]);if(i%3==0)printf("\n");}for(i=0;i!=N;i++)av+=a[i];printf("av=%f\N",av);}
上面給出的程序有錯誤和缺陷,請找出程序中的錯誤并改正?!咎崾尽空堊⒁廨斎胩崾?、變量賦初值、循環(huán)結(jié)束條件、輸出格式等問題。2編寫程序,輸入9個整數(shù)到3口3二維數(shù)組,輸出:1231123456455678978993有一個3口4的矩陣,要求輸出其中值最大的元素的值,以及它的行號和列號。#include<stdio.h>defineM3defineN4main(){intmax,i,j,r,c;inta[M][N]={{123,94,-10,218},{3,9,10,-83},{45,16,44,-99}};max=a[0][0];for(i=0;i<M;i++)for(j=0;j<N;j++)if(a[i][j]>max){max=a[i][j];r=i;c=j;}輸入并調(diào)試、運行程序,記錄程序的輸出;若將應(yīng)如何修改程序?printf("max=%d,row=%d,colum=%d\n"輸入并調(diào)試、運行程序,記錄程序的輸出;若將應(yīng)如何修改程序?4按照下面算法編一個程序,將兩個字符串連接起來,不能用strcat函數(shù)。⑴定義整型變量i、j,字符串s1、s2⑵輸入字符串s1、s2⑶當(dāng)字符串si尚未結(jié)束,改變字符串si的下口,使之到si結(jié)束處⑷當(dāng)字符串s2尚未結(jié)束,將字符串s2逐個字符連接到字符串si的后面⑸為字符串si添加結(jié)束標(biāo)志a[0][0]改為1230,程序運行結(jié)果有錯,⑹輸出連接后的字符串s1[4]=s2[0]S1ABCd/0S1[0]s1[1]s1[2]s1[3]s1[4]S2EFHI/0三思考題將一個數(shù)組中的值按逆序重新存放,例如,原來順序為8,6,5,4,1,要求改為1,4,5,6,8。最常用的排序方法除了冒泡排序外,還有選擇排序。程序設(shè)計思路:設(shè)有10個元素a[0]口a[9],將a[0]與a[1]口a[9]比較,若a[0]比a[1]口a[9]都小,則不進行交換,即無任何操作。若a[1]口a[9]中有一個以上比a[0]小,則將其中最小的一個(假設(shè)為a[i])與a[0]交換,此時a[0]中存放了10個中最小的數(shù)。第二遍將a[1]與a[2]口a[9]比較,將剩下9個口中的最小者a[i]與a[1]對口,此時a[1]中存放的是10個中第2小的數(shù)。依此類推,共進行9口比較,a[0]到a[9]就已按由小到大順序存放。n個數(shù)的選擇排序的N-S圖如下:定義變量口輸入n及數(shù)組a各元素for(i=0;i<nT;i++)k=ifor(j=i+1;j<n;j++)''^'^'^-^^^a[j]<a[k]k=j交換a[k]與a[i]輸出已排序的n個數(shù)用冒泡排序同樣的主函數(shù),請根據(jù)上面的N-S圖編寫選擇排序函數(shù)。四、注意事項1。1在C語言中,數(shù)組元素的下標(biāo)從01。在C語言中,定義數(shù)組時,其長度必須指定且必須用常量表示。一實驗?zāi)康膶嶒灹瘮?shù)掌握定義函數(shù)的方法;掌握函數(shù)實參與形參的對應(yīng)關(guān)系以及“值傳遞”的方式;掌握函數(shù)的嵌套調(diào)用和遞歸調(diào)用的方法;掌握全局變量和局部變量動態(tài)變量、靜態(tài)變量的概念和使用方法。二實驗內(nèi)容1編寫兩個函數(shù),分別求兩個正整數(shù)的最大公約數(shù)和最小公倍數(shù),用主函數(shù)調(diào)用這兩個函數(shù),并輸出結(jié)果,兩個正整數(shù)由鍵盤輸入?!咎崾尽吭O(shè)有兩個正整數(shù)m和n⑴實驗五介紹了求最大公約數(shù)的算法,下面介紹用遞歸求法。設(shè)hcf(intm,intn)是用來求m和n的最大公約數(shù)h函數(shù),h_[hcf(n,k)
In⑵若最大公約數(shù)為h,則最小公倍數(shù)l=m*n/h實驗時,完成以下兩個函數(shù)的定義,使之和主程序構(gòu)成完整的程序,實現(xiàn)題目的要求。#include<stdio.h>inthcf(intm,intn){??}intlcd(intm,intn,int{??}voidmain(){intm,n,h,l;printf("請輸入兩個正整數(shù)scanf("%d,%d",&m,&n)h=hcf(m,n);printf("%d和%d的最大公約數(shù)是:/*求最大公約數(shù)的函數(shù)h)/*求最小公倍數(shù)的函數(shù)m、n:");%d\n",m,n,h)m和n的最大公約數(shù)h的方k=m%n,則:*/*/l=lcd(m,n,h);printf("%d和%d的最大公約數(shù)是:%d\n",m,n,l);}程序調(diào)試通過后,用m=350、n=125和m=96、n=64兩組數(shù)據(jù)運行程序,記錄程序的輸出。2上機調(diào)試下面的程序,記錄系統(tǒng)給出的出錯信息,并指出錯誤原因。main(){intx,y;printf("%d\n",sum(x+y));intsum(a,b);{inta,b;return(a+b);}}f(intn),在主函數(shù)中輸入兩個整數(shù)m、n,然后調(diào)用函數(shù)求:f(intn),在主函數(shù)中輸入兩個整數(shù)m、n,然后調(diào)用函數(shù)求:CnCnmm!n!(m-n)!【注意】函數(shù)f的類型應(yīng)用long或double4有一個字符串,內(nèi)有若干個字符,今輸入一個字符,要求程序?qū)⒆址兄付ǖ淖址麆h去,用外部函數(shù)實現(xiàn)。整個程序由4個文件組成,這4個文件如下:sy64a.cpp#include<stdio.h>voidmain(){externvoidenter_string(charstr[]);externvoiddelete_string(charstr[],charch);externvoidprint_string(charstr[]);/*以上3行聲明在本函數(shù)中要調(diào)用在其他文件中定義的3個函數(shù)*/charc;charstr[80];enter_string(str);printf("請輸入欲刪除的字符:");scanf("%c",&c);delete_string(str,c);print_string(str);}sy64b.cpp#include<stdio.h>voidenter_string(charstr[80])/*定義外部函數(shù)enter_string*/{printf("請輸入字符串:");gets(str);/*從鍵盤輸入字符串到數(shù)組str*/}sy64c.cpp#include<stdio.h>voiddelete_string(charstr[],charch)/*定義外部函數(shù)delete_string*/{inti,j;for(i=j=0;str[i]!='\0';i++)if(str[i]!=ch)str[j++]=str[i];str[j]='\0';}sy64d.cpp#include<stdio.h>voidprint_string(charstr[])/*定義外部函數(shù)printr_string*/{printf("刪除指定字符后的結(jié)果:%s\n",str);}建立工程sy64,然后在工程sy64中建立這4個文件,調(diào)試并運行程序:輸入字符串:abcdceccfg輸入要刪去的字符:c記錄運行后的輸出結(jié)果。三注意事項參數(shù)是一個函數(shù)與外界的接口,其有無、多少,取決于在實現(xiàn)該函數(shù)功能時是否需要已知數(shù)據(jù),以及需要多少,它的所需,即為參數(shù)。注意函數(shù)調(diào)用返回的特點:返回調(diào)用處,而后繼續(xù)執(zhí)行下面的語句。函數(shù)中無return語句時,函數(shù)的類型定義為void或int,不可定義為其他。當(dāng)被調(diào)函數(shù)定義在主調(diào)函數(shù)之后時,應(yīng)在主調(diào)函數(shù)中說明被調(diào)函數(shù),否則,調(diào)用時將出現(xiàn)錯誤。當(dāng)一個程序由2個或2個以上的源程序文件組成時,必須將這些源程序文件組織在一個工程——項目文件中。在編譯時,系統(tǒng)會分別對項目文件中的每個文件進行編譯,然后將所得到的目標(biāo)文件連接成一個整體,再與系統(tǒng)的有關(guān)資源連接,生成一個可執(zhí)行文件,最后執(zhí)行這個文件。一實驗?zāi)康?了解指針的概念,學(xué)會定義和使用指針變量。2掌握指針、變量和數(shù)組的關(guān)系及使用方法。3學(xué)會使用指向函數(shù)的指針變量。二實驗內(nèi)容實驗七指針1運行下列程序,寫出運行結(jié)果。#include"stdio.h"main(){inta[5],*p,j;for(j=0;j<5;j++)a[j]=j+1;p=a;for(j=0;j<5;j++)printf("*(p+%d)=%d\n",j,*(p+j));}將輸出語句中的*改成方括號的形式,修改后再運行程序。2函數(shù)voidfun(float*sn,intn)的功能是:根據(jù)以下公式計算S,計算結(jié)果通過形參指針snDO;n通過實參傳入,n的值大于等于0。口填空,并編寫出主函數(shù),使之成為完整程序,上機調(diào)試運行。1一3+11———十...57voidfun(float*sn,intn){floats=0.0,w,f=-1.0;inti=0;for(i=0;i<=n;i++);{f=*f;w=f/(2*i+1);s+=w;}=s;3口使指針變量pt1指向a和b中的大者,pt2指向小者,以下程序能否實現(xiàn)此目的?swap(int*p1,int*p2){int*p;p=p1;p1=p2;p2=p}main(){inta,b;int*pt1,*pt2;scanf("%d,%d",&a,&b);pt1=&a;pt2=&b;if(a<b)swap(pt1,pt2);printf("%d,%d\n",*pt1,*pt2);}上機調(diào)試此程序。如果不能實現(xiàn)題目要求,指出原因并修改之。分析并驗證以下程序的運行結(jié)果。#include"stdio.h"main(){charstr[]="ABC",*p=str;printf("%c\n",*(p+1));}分析并驗證以下程序的運行結(jié)果:#include"stdio.h"main(){chara[4][5]={"ABCD","EFGH","IJKL","MNOP"};char(*p)[5];inti,j;p=a;for(i=0;i<4;i++)*/{for(j=0;j<4;j++)printf("%c",*(*(p+i)+j));/*第9行*/printf("\n");}}若將程序第9行中的%c改成%s,應(yīng)該怎樣修改?6分析以下程序運行結(jié)果,說明程序的作用。#include"stdio.h"char*strc(char*s1,char*s2){char*p=s1;while(*s2!='\0'){*p++=*s2++;}returns1;}main(){chars1[30]="computerok!",s2[]="language",*pt;pt=strc(s1,s2);printf("%s\n",pt);}三思考題1下面的程序用來實現(xiàn)將一個3口3的矩陣轉(zhuǎn)口。#include"stdio.h"voidtranf(int(*p)[3]){intt,i,j;for(i=0;i<3;i++)for(j=0;j<i;j++){t=p[i][j];p[i][j]=p[j][i];p[j][i]=t;}}main(){inti,j,a[3][3];for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);tranf(a);for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%3d",a[i][j]);printf("\n");}}將上面程序tranf函數(shù)中的的方括號改成札的表示形式,調(diào)試并運行程序。程序輸入:123456789,記錄程序的輸出。2用指向指針的方法對n個整數(shù)排序并輸出。要求將排序單獨寫一個函數(shù)。n和各個整數(shù)在主函數(shù)中輸入,最后在主函數(shù)中輸出。
四注意事項,否則,如果直接應(yīng)用它一個指針變量定義后,必須使其指向確定值(即給它賦值)的目標(biāo),就會破壞內(nèi)存,使程序出錯,甚至造成死機。,否則,如果直接應(yīng)用它注意二維數(shù)組元素的不同表示方法,必須靈活掌握。字符數(shù)組保存一字符串后,其長度一般不再起作用,對它的各種操作以字符串結(jié)束,標(biāo)志'\0'作為結(jié)束條件。字符串中%s格式整體輸入和輸出時,其輸入輸出項均為數(shù)組名。當(dāng)用一個字符串給一字符型變量賦值時,是把該字符串的首地址賦值給它,而不是該字符串。字符型指針變量的目標(biāo)是一個字符,而不是整個字符串。實驗八結(jié)構(gòu)體和文件一實驗?zāi)康恼莆战Y(jié)構(gòu)體類型的概念和定義方法與使用。掌握指向結(jié)構(gòu)體變量的指針變量的概念和應(yīng)用。掌握文件的基本概念掌握文件指針與打開、關(guān)閉文件的相關(guān)函數(shù)實驗內(nèi)容1定義一個結(jié)構(gòu)體類型,其成員包括:學(xué)號(num),姓名(name[20]),性別(sex),年齡(age),三門課的成績(score[3])。2按上面的結(jié)構(gòu)體類型定義一個結(jié)構(gòu)體數(shù)組并初始化,然后調(diào)用一個函數(shù)count,在該函數(shù)中計算出每個學(xué)生的總分和平均分,最后返回主函數(shù)輸出所有各項數(shù)據(jù)(包括原有的和新求出的)?!咎崾尽竣僭诙x結(jié)構(gòu)體類型時應(yīng)預(yù)留出準(zhǔn)備計算結(jié)果的成員項。②設(shè)結(jié)構(gòu)體變量為函數(shù)參數(shù),將各數(shù)據(jù)傳給count函數(shù)。#include"stdio.hstructstudent{charnum[9],name[20],sex;{charnum[9],name[20],sex;}st[3]={{"06040106","LiPing",'M',{"06040125","ChenFen",'F',{"06040132","WangYifei",'M',voidcount(structstudent*p)inta
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 云南2025年02月昆明市人力資源和社會保障中心招考1名合同制勞務(wù)派遣人員筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 神木職業(yè)技術(shù)學(xué)院《現(xiàn)代生物技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 餐飲行業(yè)創(chuàng)新經(jīng)營模式與市場趨勢調(diào)研
- 木工搭架合同范本
- 西昌學(xué)院《酒店概論》2023-2024學(xué)年第二學(xué)期期末試卷
- 江西現(xiàn)代職業(yè)技術(shù)學(xué)院《礦井災(zāi)害防治技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 天津市部分區(qū)2025年四年級數(shù)學(xué)第二學(xué)期期末考試模擬試題含解析
- 昆明幼兒師范高等??茖W(xué)校《舞蹈基本功訓(xùn)練(4)》2023-2024學(xué)年第二學(xué)期期末試卷
- 數(shù)據(jù)庫訪問日志分析流程
- 貴州農(nóng)業(yè)職業(yè)學(xué)院《機電一體化系統(tǒng)設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 新統(tǒng)編版五年級下冊道德與法治全冊課時練一課一練(同步練習(xí))(含答案)
- 法律方法階梯PPT課件
- 計算機2級二級浙江旅游概述
- 《色彩基礎(chǔ)知識》PPT課件(完整版)
- 故事我把媽媽弄丟了ppt課件
- NACE產(chǎn)品金屬材料要求
- 布朗德戰(zhàn)略導(dǎo)向的薪酬管理體系
- 食品經(jīng)營餐飲操作流程(共1頁)
- 中儲糧購銷電子交易平臺成交合同
- SL/T212-2020 水工預(yù)應(yīng)力錨固技術(shù)規(guī)范_(高清-有效)
- 河北省省直行政事業(yè)單位資產(chǎn)(房屋)租賃合同書(共7頁)
評論
0/150
提交評論