版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
C語言程序設(shè)計實驗指導(dǎo)書(新編)C語言程序設(shè)計實驗指導(dǎo)書(新編)/C語言程序設(shè)計實驗指導(dǎo)書(新編)C語言程序設(shè)計實驗指導(dǎo)書桂林電子科技大學(xué)信息科技學(xué)院前言上機實驗的目的和要求一上機實驗的目的上機實驗的目的,絕不僅僅是為了驗證教材和講課的內(nèi)容,或者驗證自己所編程序正確與否。學(xué)習(xí)程序語言,上機實驗的目的如下:1加深對講授內(nèi)容的理解,尤其是一些語法規(guī)定,光靠課堂講授,既枯燥無味又難以記住,通過多次上機,就能自然、熟練地掌握語法規(guī)定。2了解和熟悉C語言程序開發(fā)環(huán)境。熟悉一兩種環(huán)境(計算機系統(tǒng)的軟件和硬件條件),再遇到其他的系統(tǒng)時便會觸類旁通,很快學(xué)會。3學(xué)會上機調(diào)試程序,也就是善于發(fā)現(xiàn)程序中的錯誤,并且能很快地排除這些錯誤,使程序能夠正確地運行。要真正掌握計算機應(yīng)用技術(shù),就不僅應(yīng)當(dāng)了解和熟悉有關(guān)理論和方法,而且要求自己動手實踐能力強。4在做實驗時千萬不要在程序通過后就認(rèn)為萬事大吉,完成任務(wù)了,應(yīng)當(dāng)在通過的程序上做一些調(diào)試和修改,看看會得到什么結(jié)果。多動腦筋思考,將會對你有很大幫助。二上機實驗前的準(zhǔn)備工作1了解所用的計算機系統(tǒng)的性能和使用方法;2復(fù)習(xí)和掌握與本實驗有關(guān)的教學(xué)內(nèi)容;3準(zhǔn)備好上機所用的程序,切忌自己不思考、不編制程序或抄襲別人的程序;4準(zhǔn)備好調(diào)試和運行時所需的數(shù)據(jù)。三上機實驗的步驟1調(diào)出C語言編譯系統(tǒng),進入C語言工作環(huán)境;2輸入自己編制好的程序;3檢查輸入是否有錯,與時更正;4進行編譯和連接;5運行程序,分析結(jié)果。四、實驗結(jié)束,整理實驗報告實驗報告應(yīng)包括以下內(nèi)容:1上機題目;2程序清單;3運行結(jié)果;4對結(jié)果的分析和本次獲得的經(jīng)驗和體會。實驗一C語言程序初步數(shù)據(jù)類型、運算符和表達式一實驗?zāi)康?熟悉C語言運行環(huán)境——MicrosoftVisualC++6.0中文版。2掌握C語言程序的書寫格式和C語言程序的結(jié)構(gòu),初步了解C源程序的特點。3掌握C語言上機步驟,了解如何編輯、編譯、調(diào)試和運行一個C程序的方法。4掌握C語言數(shù)據(jù)類型,熟悉如何定義一個整型、字符型和實型的變量,以與對他們賦值的方法。5掌握不同的類型數(shù)據(jù)之間賦值的規(guī)律。二實驗內(nèi)容1⑴開機,啟動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。⑺運行:最后用“編譯”菜單的“!執(zhí)行sy1.exe”命令項運行可執(zhí)行程序文件sy1.exe。運行結(jié)果如下:2用同樣的方法,完成下面程序的運行1輸入并運行下面的程序,運行后記錄并分析結(jié)果。#include<stdio.h>main(){charc1,c2;/*第2行*/c1=97;c2=98;/*第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é)果。2輸入并運行下面的程序#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é)C程序的結(jié)構(gòu)和書寫規(guī)則。四思考題1請寫出C語言程序的構(gòu)成和運行C語言程序的一般步驟。2編寫一個C語言程序,輸入a、b、c三個數(shù),輸出其中最大者。試想,如果求四個數(shù)中的最大者,則程序該如何編寫。五注意事項1當(dāng)程序在編譯時發(fā)現(xiàn)很多錯誤,此時應(yīng)從上到下逐一改正,或改一個錯誤,就重新再編譯,因為有時一個錯誤會引起很多錯誤信息。2當(dāng)需要用比較復(fù)雜的邏輯表達式時,要避免發(fā)生優(yōu)先級上的錯誤,可以使用最高優(yōu)先級的運算符()將其括起來,這樣既增加可讀性,又不會出現(xiàn)不必要的錯誤。實驗二順序結(jié)構(gòu)與輸入/輸出方法一實驗?zāi)康?學(xué)會使用C的有關(guān)算術(shù)運算符,以與包含這些運算符的表達式,特別是自加(++)和自減(--)運算符的使用。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é)。3按格式要求輸入、輸出數(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é)果。【思考】程序第8行中,為什么變量c1要輸入兩次?4運行以下程序,并分析其輸出結(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±XXX5以下程序的功能是從鍵盤輸入一個整型數(shù),一個實型數(shù)和一個字符型數(shù),并把他們在屏幕上輸出。完成以下填空,并把程序調(diào)通,寫出當(dāng)輸入為45,34.5,A<回車>時程序的運行結(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)定義為字符型或整型?還是二者皆可?⑵要求輸出c1和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語言表示邏輯量的方法(0代表“假”,1代表“真”);2學(xué)會正確使用邏輯運算符和邏輯表達式;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);}若輸入下列數(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):B70~80分(包括70):C60~70分(包括60):D60分以下: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)小的程序缺陷。方法二:用switch語句分析:switch語句是用于處理多分支的語句。注意,case后的表達式必須是一個常量表達式,所以在用switch語句之前,必須把0~100之間的成績分別化成相關(guān)的常量。所有A(除100以外)、B、C、D類的成績的共同特點是十位數(shù)相同,此外都是E類。則由此可把score除十取整,化為相應(yīng)的常數(shù)。請同學(xué)們自己根據(jù)分析寫出完整的程序段,并編譯、運行、查看結(jié)果。三思考題1有一函數(shù):x(-5<x<0)y=x-1(x=0)x+1(0<x<10)要求輸入x的值,輸出y的值。分別用:⑴不用嵌套的if語句;⑵用嵌套的if語句;⑶用switch語句編寫程序。2從鍵盤上輸入三個實數(shù),它們分別代表三條線段的長度,請寫一個判斷這三條線段所組成的三角形屬于什么類型(不等邊,等腰,等邊或不構(gòu)成三角形)的C程序;如果能構(gòu)成三角形,求出三角形的面積(取小數(shù)2位)。用下面的數(shù)據(jù)運行程序,記錄程序的輸出結(jié)果:abc類型三角形面積1.582.371.562.482.482.482.359.283.83【提示】已知三角形邊長a、b、c,計算三角形面積s的公式是:四注意事項:1if-else語句書寫時應(yīng)采用分層縮進的格式。2switch語句的句法格式。實驗四循環(huán)結(jié)構(gòu)程序設(shè)計一目的和要求1掌握在設(shè)計條件型循環(huán)結(jié)構(gòu)時,如何正確地設(shè)定循環(huán)條件,以與如何正確地控制計數(shù)型循環(huán)結(jié)構(gòu)的次數(shù)。2熟悉用while語句,do-while語句和for語句實現(xiàn)循環(huán)的方法。3掌握在程序設(shè)計中用循環(huán)的方法實現(xiàn)各種算法(如窮舉、選代、遞推等)。4掌握選擇結(jié)構(gòu)與循環(huán)結(jié)構(gòu)的嵌套。二實驗內(nèi)容1有一數(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è)置要觀察的變量或表達式。停止調(diào)試停止調(diào)試運行的程序單步運行此處監(jiān)視窗口2程序修改題#include<math.h>#include<stdio.h>floatfun(floatnum){ints;floatn,t,pi;t=1;pi=0;n=1;s=1;/**************found**************/while(t>=num){pi=pi+t;n=n+2;s=-s;/**************found**************/t=s%n;}pi=pi*4;returnpi;}main(){floatn1,n2;printf("Enterafloatnumber:");scanf("%f",&n1);n2=fun(n1);printf("%6.4f\n",n2);}3計算兩個數(shù)的最大公約數(shù)。算法:⑴輸入兩個整數(shù)m、n,并求m除以n的余數(shù)k。⑵當(dāng)k≠0,將除數(shù)n作為被除數(shù)m,余數(shù)k作為除數(shù)n,繼續(xù)求m除以n的余數(shù)k;反復(fù)做第⑵步,直到余數(shù)為0結(jié)束循環(huán)。⑶結(jié)束循環(huán)后,除數(shù)n就是m與n的最大公約數(shù)。請同學(xué)們根據(jù)算法寫出完整的程序,并編譯、運行、檢查結(jié)果的正確性。三思考題編寫程序:輸入6名學(xué)生5門課程的成績,分別統(tǒng)計出每個學(xué)生5門課程的平均成績。四、注意事項1while語句的句法格式與用法。2for語句的正確使用方法。注意它的初始值、終止條件與步長的確定。3當(dāng)循環(huán)不能停止(出現(xiàn)死循環(huán)),應(yīng)該用Ctrl+break中斷程序的運行。實驗五數(shù)組一實驗?zāi)康?掌握一維數(shù)組和二維數(shù)組的定義、賦值和輸入輸出的方法;2掌握字符數(shù)組和字符串函數(shù)的使用;3掌握與數(shù)組有關(guān)的算法(特別是排序算法)二、實驗內(nèi)容編程序并上機調(diào)試運行。1、程序填空#include<stdio.h>voidfun(inta[],intn){inti,t;/**********found**********/for(i=0;i<___1___;i++){t=a[i];/**********found**********/a[i]=a[n-1-___2___];/**********found**********/___3___=t;}}main(){intb[9]={1,2,3,4,5,6,7,8,9},i;printf("\nTheoriginaldata:\n");for(i=0;i<9;i++)printf("%4d",b[i]);printf("\n");fun(b,9);printf("\nThedataafterinvert:\n");for(i=0;i<9;i++)printf("%4d",b[i]);printf("\n");}2、程序填空題#include<stdio.h>#defineN3#defineM4/**********found**********/voidfun(int(*a)[N],int__1__){inti,temp;/**********found**********/for(i=0;i<__2__;i++){temp=a[0][i];/**********found**********/a[0][i]=__3__;a[k][i]=temp;}}main(){intx[M][N]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}},i,j;printf("Thearraybeforemoving:\n\n");for(i=0;i<M;i++){for(j=0;j<N;j++)printf("%3d",x[i][j]);printf("\n\n");}fun(x,2);printf("Thearrayaftermoving:\n\n");for(i=0;i<M;i++){for(j=0;j<N;j++)printf("%3d",x[i][j]);printf("\n\n");}}3、程序修改題#include<stdio.h>intfun(doublex[],intn){/************found************/intj,c=0,doublexa=0.0;for(j=0;j<n;j++)xa+=x[j]/n;printf("ave=%f\n",xa);for(j=0;j<n;j++)/************found************/if(x[j]=>xa)c++;returnc;}main(){doublex[100]={193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763};printf("%d\n",fun(x,8));}4按照下面算法編一個程序,將兩個字符串連接起來,不能用strcat函數(shù)。⑴定義整型變量i、j,字符串s1、s2⑵輸入字符串s1、s2⑶當(dāng)字符串s1尚未結(jié)束,改變字符串s1的下標(biāo),使之到s1結(jié)束處⑷當(dāng)字符串s2尚未結(jié)束,將字符串s2逐個字符連接到字符串s1的后面⑸為字符串s1添加結(jié)束標(biāo)志⑹輸出連接后的字符串三思考題1將一個數(shù)組中的值按逆序重新存放,例如,原來順序為8,6,5,4,1,要求改為1,4,5,6,8。2最常用的排序方法除了冒泡排序外,還有選擇排序。程序設(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個數(shù)中的最小者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<n-1;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在C語言中,數(shù)組元素的下標(biāo)從0開始,最大下標(biāo)總是比定義的數(shù)組長度少1。2在C語言中,定義數(shù)組時,其長度必須指定且必須用常量表示。實驗六函數(shù)一實驗?zāi)康?掌握定義函數(shù)的方法;2掌握函數(shù)實參與形參的對應(yīng)關(guān)系以與“值傳遞”的方式;3掌握函數(shù)的嵌套調(diào)用和遞歸調(diào)用的方法;4掌握全局變量和局部變量動態(tài)變量、靜態(tài)變量的概念和使用方法。二實驗內(nèi)容1程序填空題#include<stdio.h>doublef1(doublex){returnx*x;}doublef2(doublex,doubley){returnx*y;}/**********found**********/__1__fun(inti,doublex,doubley){if(i==1)/**********found**********/return__2__(x);else/**********found**********/return__3__(x,y);}main(){doublex1=5,x2=3,r;r=fun(1,x1,x2);r+=fun(2,x1,x2);printf("\nx1=%f,x2=%f,x1*x1+x1*x2=%f\n\n",x1,x2,r);}2上機調(diào)試下面的程序,記錄系統(tǒng)給出的出錯信息,并指出錯誤原因。main(){intx,y;printf("%d\n",sum(x+y));intsum(a,b);{inta,b;return(a+b);}}3程序填空題#include<stdio.h>/**********found**********/___1___fun(charch){/**********found**********/if(ch>='0'&&___2___)/**********found**********/return'9'-(ch-___3___);returnch;}main(){charc1,c2;printf("\nTheresult:\n");c1='2';c2=fun(c1);printf("c1=%cc2=%c\n",c1,c2);c1='8';c2=fun(c1);printf("c1=%cc2=%c\n",c1,c2);c1='a';c2=fun(c1);printf("c1=%cc2=%c\n",c1,c2);}4程序填空題#include<stdio.h>intfun(chars[]){inti,n;n=0;/**********found**********/for(i=0;___1___!=0;i++)/**********found**********/if(s[i]>='0'&&s[i]<=___2___)n++;/**********found**********/___3___;}main(){chars[80]="abcdef35adgh3kjsdf7";intt;printf("\nTheoriginalstringis:%s\n",s);t=fun(s);printf("\nTheresultis:%d\n",t);}三注意事項1參數(shù)是一個函數(shù)與外界的接口,其有無、多少,取決于在實現(xiàn)該函數(shù)功能時是否需要已知數(shù)據(jù),以與需要多少,它的所需,即為參數(shù)。2注意函數(shù)調(diào)用返回的特點:返回調(diào)用處,而后繼續(xù)執(zhí)行下面的語句。3函數(shù)中無return語句時,函數(shù)的類型定義為void或int,不可定義為其他。4當(dāng)被調(diào)函數(shù)定義在主調(diào)函數(shù)之后時,應(yīng)在主調(diào)函數(shù)中說明被調(diào)函數(shù),否則,調(diào)用時將出現(xiàn)錯誤。5當(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程序修改題#include<stdio.h>intfun(int*x,inty){intt;/**************found**************/t=x;x=y;/**************found**************/return(y);}main(){inta=3,b=8;printf("%d%d\n",a,b);b=fun(&a,b);printf("%d%d\n",a,b);}3程序修改題#include<stdio.h>#defineN20intfun(float*s,intn,float*aver){floatave,t=0.0;intcount=0,k,i;for(k=0;k<n;k++)/**************found**************/t=s[k];ave=t/n;for(i=0;i<n;i++)if(s[i]<ave)count++;/**************found**************/*aver=Ave;returncount;}main(){floats[30],aver;intm,i;printf("\nPleaseenterm:");scanf("%d",&m);printf("\nPleaseenter%dmark:\n",m);for(i=0;i<m;i++)scanf("%f",s+i);printf("\nThenumberofstudents:%d\n",fun(s,m,&aver));printf("Ave=%f\n",aver);}4程序填空題#include<stdio.h>intfun(char*s,char*t){intn=0;while(*s){if(*s<97){/**********found**********/*(t+n)=__1__;n++;}/**********found**********/__2__;}*(t+n)=0;/**********found**********/return__3__;}main(){chars[81],t[81];intn;printf("\nEnterastring:\n");gets(s);n=fun(s,t);printf("\nThereare%dletterwhichASCIIcodeislessthan97:%s\n",n,t);}三思考題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ù)中輸出。四注意事項1一個指針變量定義后,必須使其指向確定值(即給它賦值),否則,如果直接應(yīng)用它的目標(biāo),就會破壞內(nèi)存,使程序出錯,甚至造成死機。2注意二維數(shù)組元素的不同表示方法,必須靈活掌握。3字符數(shù)組保存一字符串后,其長度一般不再起作用,對它的各種操作以字符串結(jié)束,標(biāo)志'\0'作為結(jié)束條件。4字符串中%s格式整體輸入和輸出時,其輸入輸出項均為數(shù)組名。5當(dāng)用一個字符串給一字符型變量賦值時,是把該字符串的首地址賦值給它,而不是該字符串。字符型指針變量的目標(biāo)是一個字符,而不是整個字符串。實驗八結(jié)構(gòu)體和文件一實驗?zāi)康?掌握結(jié)構(gòu)體類型的概念和定義方法與使用。2掌握指向結(jié)構(gòu)體變量的指針變量的概念和應(yīng)用。3掌握文件的基本概念4掌握文件指針與打開、關(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ù)(包括原有的和新求出的)。【提示】①在定義結(jié)構(gòu)體類型時應(yīng)預(yù)留出準(zhǔn)備計算結(jié)果的成員項。②設(shè)結(jié)構(gòu)體變量為函數(shù)參數(shù),將各數(shù)據(jù)傳給count函數(shù)。#include"stdio.h"structstudent{charnum[9],name[20],sex;intage,score[3],sum;floatav;}st[3]={{"06040106","LiPing",'M',18,87,89,91},{"06040125","ChenFen",'F',19,78,75,81},{"06040132","WangYifei",'M',19,65,67,69}};voidcount(structstudent*p){inti,j;for(i=0;i<3;i++){p[i].sum=0;for(j=0;j<3;j++)p[i].sum+=p[i].score[j];p[i].av=p[i].sum/3.0;}}voidmain(){inti,j;count(st);printf("Thestudent'sinformation:\n");printf("NumNameSexAgeScoreSumAverage\n");for(i=0;i<3;i++){printf("%-10s%-12s%-3c%5d",st[i].num,st[i].name,st[i].sex,st[i].age);for(j=0;j<3;j++)printf("%3d",st[i].score[j]);printf("%6d%9.1f\n",st
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版民政局離婚協(xié)議書制作及審核流程3篇
- 2025年度航空航天行業(yè)個人勞動合同范本4篇
- 2025年度個人沙石環(huán)保處理與資源回收合同3篇
- 2025年度個人股東股權(quán)轉(zhuǎn)讓及綠色建筑項目合作協(xié)議4篇
- 評價幼兒大班課程設(shè)計
- 重塑睡眠生態(tài)課程設(shè)計
- 2025年鐵藝欄桿生產(chǎn)、銷售、安裝及維護合同3篇
- 飲酒駕車問題課程設(shè)計
- 二零二五版供應(yīng)商簽訂商業(yè)機密保密協(xié)議2篇
- 2025年度綠色建筑項目投資借款合同樣本4篇
- 《C語言從入門到精通》培訓(xùn)教程課件
- 2023年中國半導(dǎo)體行業(yè)薪酬及股權(quán)激勵白皮書
- 2024年Minitab全面培訓(xùn)教程
- 社區(qū)電動車棚新(擴)建及修建充電車棚施工方案(純方案-)
- 項目推進與成果交付情況總結(jié)與評估
- 鐵路項目征地拆遷工作體會課件
- 醫(yī)院死亡報告年終分析報告
- 建設(shè)用地報批服務(wù)投標(biāo)方案(技術(shù)方案)
- 工會工作人年度考核個人總結(jié)
- 上海民辦楊浦實驗學(xué)校初一新生分班(摸底)語文考試模擬試卷(10套試卷帶答案解析)
- 機器人論文3000字范文
評論
0/150
提交評論