版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、c語言程序設(shè)計實驗題答案【篇一:c語H程序設(shè)計及實驗指導(dǎo)練習(xí)及習(xí)題參考答案(8-10)】8練習(xí)參考答案1、練習(xí)8-1.如果有定義:intm,n=5,*p=m;與m=n等價的語句是b<a.m=*p;b.*p=*n;c.m=n;d.m=*p;8-2.設(shè)計一個程序計算輸入的兩個數(shù)的和與差,要求自定義一個函數(shù)sum_diff(floatop1,floatop2,float*psum,float*pdiff),其中op1和op2是輸入的兩個數(shù),*psum和*pdiff是計算得出的和與差。解答:#includestdio.hintmain(void)floatop1,op2,sum,diff;voi
2、dsum_diff(floatop1,floatop2,float*psum,float*pdiff);printf(“inputop1andop2:");scanf("f%f,op1,op2);sum_diff(op1,op2,sum,diff);printf(“f+%f=%f;%fn”,op1,op2,sum,op1,op2,diff);return0;voidsum_diff(floatop1,floatop2,float*psum,float*pdiff)*psum=op1+op2;*pdiff=op1-op2;8-3.兩個相同類型的指針變量能不能相加?為什么?解答
3、:不能。因為指針變量是一種特殊的變量,指針變量的值存放的是所指向變量的地址,兩個地址相加并不能保證結(jié)果為一個有效的地址值,因而在c語言中指針變量相加是非法的。8-4.根據(jù)表8.2所示,這組數(shù)據(jù)的冒泡排序其實循環(huán)到第6遍(即n-2)時就已經(jīng)排好序了,說明有時候并不一定需要n-1次循環(huán)。請思考如何改進冒泡排序算法并編程實現(xiàn)(提示:當(dāng)發(fā)現(xiàn)一遍循環(huán)后沒有數(shù)據(jù)發(fā)生交換,說明已經(jīng)排好序了)。解答:設(shè)置一個標志變量flag,進入一輪循環(huán)前設(shè)置為0,在循環(huán)中有發(fā)生數(shù)據(jù)交換就改寫flag值為1。當(dāng)該輪循環(huán)結(jié)束后檢查flag值,如果變?yōu)?說明發(fā)生了數(shù)據(jù)交換,還沒有排好序,如果為0說明沒有發(fā)生交換,已經(jīng)排好序。#i
4、ncludestdio.hvoidbubble(inta,intn);intmain(void)intn,a8;inti;printf(entern(n=8):);scanf(%d,n);printf(entera%d:,n);for(i=0;in;i+)scanf(%d,ai);bubble(a,n);printf(aftersorted,a%d=,n);for(i=0;in;i+)printf(%3d,ai);return0;voidbubble(inta,intn)/*n是數(shù)組a中待排序元素的數(shù)量*/inti,j,t,flag;for(i=1;in;i+)/*外部循環(huán)*/flag=0;f
5、or(j=0;jn-i;j+)/*內(nèi)部循環(huán)*/if(ajaj+1)/*比較兩個元素的大小*/t=aj;aj=aj+1;aj+1=t;/*如果前一個元素大,則交換*/flag=1;/*發(fā)生交換,flag置為1*/if(flag=0)/*如果一輪循環(huán)沒有發(fā)生數(shù)據(jù)交換,排序結(jié)束*/break;8-5.重做例8-9,要求使用選擇排序算法。解答:#includestdio.hvoidbubble(inta,intn);intmain(void)intn,a8;inti;printf(entern(n=8):);scanf(%d,n);printf(entera%d:,n);for(i=0;in;i+)s
6、canf(%d,ai);bubble(a,n);printf(aftersorted,a%d=,n);for(i=0;in;i+)printf(%3d,ai);return0;voidbubble(inta,intn)/*n是數(shù)組a中待排序元素的數(shù)量*/inti,j,t,index;for(i=0;in-1;i+)/*外部循環(huán)*/index=i;for(j=i+1;jn;j+)/*內(nèi)部循環(huán)*/if(ajaindex)index=j;t=ai;ai=aindex;aindex=t;8-6.在使用scanf()函數(shù)時,輸入?yún)?shù)列表需要使用取地址操作符,但當(dāng)參數(shù)為字符數(shù)組名時并沒有使用,為什么?如果
7、在字符數(shù)組名前加上取地址操作符,會發(fā)生什么?解答:因為字符數(shù)組名的值是一個特殊的固定地址,可以看作是常量指針,因此不需要再使用取地址符來獲取該數(shù)組的地址。如果在字符數(shù)組名str前加上取地址操作符,那么對其取地址str可以看做是這個數(shù)組的第一個元素的地址,由于數(shù)組地址和數(shù)組第一個元素的地址相同,所以str表示地址值和str表示的地址值是相等的。對scanf()的變長參數(shù)列表的話,編譯器只負責(zé)參數(shù)傳遞,怎么解釋后邊的幾個地址的含義,是由前邊的字符串確定的。所以使用scanf("s,str)scanf(“S,st都能通過編譯且正常執(zhí)行。8-7.c語言不允許用賦值表達式直接對數(shù)組賦值,為什么
8、?解答:數(shù)組名可以看作是常量指針,因為不可以對一個常量進行賦值,所以不允許用賦值表達式直接對數(shù)組進行賦值。8-8.輸入一個字符串,把該字符串的前3個字母移到最后,輸出變換后的字符串。比如輸入“abcdef”,輸出為“defabc”。解答:includestdio.hincludestdlib.hincludestring.hdefinemaxline100intmain(void)charlinemaxline,str4;inti;printf(inputthestring:);gets(line);if(strlen(line)3)printf(字符串長度小于3,不符合要求!n);exit(
9、1);for(i=0;i3;i+)stri=linei;stri=0;for(i=3;linei!=0;i+)linei-3=linei;linei-3=0;strcat(line,str);printf(%s%sn,afterchanging:,line);return0;*8-9.使用動態(tài)內(nèi)存分配的方法實現(xiàn)例8-9的冒泡排序。解答:#includestdio.h#includestdlib.hvoidbubble(inta,intn);intmain(void)intn,*p;inti;printf(inputn:);scanf(%d,n);/*為數(shù)組p動態(tài)分配n個整數(shù)類型大小的空間*/i
10、f(p=(int*)calloc(n,sizeof(int)=null)printf(notabletoallocatememory.n);exit(1);printf(input%dintegers:,n);for(i=0;in;i+)scanf(%d,p+i);bubble(p,n);printf(aftersorted:);for(i=0;in;i+)printf(%3d,*(p+i);free(p);return0;voidbubble(inta,intn)/*n是數(shù)組a中待排序元素的數(shù)量*/inti,j,t;for(i=1;in;i+)/*外部循環(huán)*/for(j=0;jn-i;j+)
11、/*內(nèi)部循環(huán)*/if(ajaj+1)/*比較兩個元素的大小*/t=aj;aj=aj+1;aj+1=t;/*如果前一個元素大,則交換*/2習(xí)題參考答案_、選擇題1. 下列語句定義x為指向int類型變量a的指針,其中哪一個是正確的a,*x=a;a,*x=a;*x=a,a;a,x=a;2. 以下選項中,對基本類型相同的指針變量不能進行運算的運算符是aoa.+b.-c.=d.=若有以下說明,且0=i10,則對數(shù)組元素的錯誤引用是c。3. inta=(0,1,2,3,4,5,6,7,8,9,*p=a,i;a.*(a+i)b.ap-a+ic.p+id.*(ai)
12、下列程序的輸出結(jié)果是b。4. intmain(void)(inta10=(0,1,2,3,4,5,6,7,8,9,*p=a+3;printf("d,*+p);return0;a.3b.4c.a4的地址d.非法對于下列程序,正確的是a。voidf(int*p)(*p=5;intmain(void)(inta,*p;a=10;p=a;f(p);printf("d,(*p)+);return0;a.5b.6c.10d.11二、填空題1.下列函數(shù)在一維數(shù)組a中將x插入到下標為i(i=0)的元素前。如果i=元素的個數(shù),貝Ux插入到末尾。原有的元素個數(shù)存放在指針n所指向的變量中,插入后
13、元素個數(shù)加1。請?zhí)睢酒篶語言程序設(shè)計實驗指導(dǎo)(顏暉_主編)部分參考程序】txt實驗2#includestdio.hintmain()(/2-1-2intc,f=150;c=f*5/9-32*5/9;printf(fahr=%d,celsius=%dn,f,c);return0;#includestdio.hintmain()(/2-1-3intc=26,f;f=c*9/5+32;printf(celsius=%d,fahr=%dn,c,f);return0;#includestdio.hintmain()(/2-1-4intmath=87,eng=72,comp=93;printf(mat
14、h=%d,eng=%d,comp=%d,average=%dn,math,eng,comp,(math+eng+comp)/3);return0;#includestdio.hintmain()(/2-1/5intn=152,a,b,c;c=n%10;b=(n/10)%10;a=n/100;printf(整數(shù)%d的個位數(shù)字是%d,十位數(shù)字是%d,百位數(shù)字是%dn,n,c,b,a);return0;#includestdio.hintmain()(/2-1-6intx=3,y;y=x*x;printf(%d=%d*%dn,y,x,x);printf(%d*%d=%dn,x,x,y);return
15、0;#includestdio.hintmain()/2-2-1doublex,y;printf(enterx:);scanf_s(%lf,x);if(x!=0)y=1/x;elsey=0;printf(f(%.2f)=%.1fn,x,y);return0;#includestdio.hintmain()/2-2-2intcelsius,fahr;fahr=100;celsius=5*(fahr-32)/9;printf(fahr=%d,celsius=%dn,fahr,celsius);return0;#includestdio.hintmain()/2-2-3doublemoney,rat
16、e,x=1.0;inti,year;printf(entermoney,yearandrate:);scanf(%lf%d%lf,money,year,rate);for(i=1;i=year;i+)x=x*(1+rate);printf(intrest=%.2fn,money*x-money);return0;#includestdio.h#includemath.hintmain()/2-2-4doublex,y;printf(enterx);scanf_s(%lf,x);y=pow(x+1,2)+2*x+1/x;elsey=sqrt(x);printf(f(%.2f)=%.2fn,x,y
17、);return0;#includestdio.h#includemath.hintmain()/2-2-5doublex,y;printf(enterx:);scanf_s(%lf,x);if(x=10)y=1/x;elsey=x;printf(f(%.2f)=%.1fn,x,y);return0;#includestdio.hintmain()/2-2-6intx,y;printf(enternum1:);scanf_s(%d,x);printf(enternum2:);scanf_s(%d,y);printf(%d+%d=%dn,x,y,x+y);printf(%d-%d=%dn,x,y
18、,x-y);printf(%d*%d=%dn,x,y,x*y);printf(%d/%d=%dn,x,y,x/y);printf(%d%d=%dn,x,y,x%y);return0;#includestdio.hintmain()/2-3-1inti,sum=0;for(i=1;i=100;i+)sum=sum+i;printf(sum=%dn,sum);return0;#includestdio.hintmain()(/2-3-2inti,m,s=0;printf(enterm:);scanf(%d,m);for(i=m;i=100;i+)s=s+i;printf(sum=%dn,s);re
19、turn0;#includestdio.hintmain()(/2-3-3inti,m,n;doubles=0.0;printf(enterm:);scanf(%d,m);printf(entern:);scanf(%d,n);for(i=m;i=n;i+)s=s+1.0/i;printf(sum=%fn,s);return0;#includestdio.hintmain()(/2-3-4inti,n;doubles=0.0;printf(entern:);scanf(%d,n);for(i=1;i=n;i+)s=s+1.0/(2*i-1);printf(sum=%fn,s);return0;
20、#includestdio.hintmain()(/2-3-5inti,n;doubles=1.0,t=1.0,sign=1.0;printf(entern:);scanf(%d,n);for(i=1;in;i+)(sign=-sign;t=(t+3);s=s+1/t*sign;printf(sum=%.3fn,s);return0;#includestdio.hintmain()(/2-3-6intlow,uper;doublefahr,celsius;printf(enterlow:);scanf_s(%d,low);printf(enteruper:);scanf_s(%d,uper);
21、printf(fahrcelsiusn);for(fahr=low;fahr=uper;fahr+=2)celsius=5.0/9.0*(fahr-32.0);printf(%3.0f%6.1fn,fahr,celsius);return0;#includestdio.hintmain()/2-3-7intm,n,i;doublep,sum=0.0;printf(enterm:);scanf(%d,m);printf(entern:);scanf(%d,n);p=1.0;for(i=1;i=m;i+)p=p*i;sum=sum+p;p=1.0;for(i=1;i=n;i+)p=p*i;sum=
22、sum+p;printf(sum=%.0fn,sum);return0;#includestdio.hintmain()(/2-3-8intx,n,i;doublep=1.0;printf(enterx:);scanf(%d,x);printf(entern:);scanf(%d,n);for(i=1;i=n;i+)p=p*x;printf(%d的%d次方是%.0fn,x,n,p);return0;#includestdio.h#includemath.hintmain()(/2-4-1【篇三:c語言程序設(shè)計教程實驗及習(xí)題解答】一、上機指南turboc2.0?二、實驗安排?三、教材習(xí)題解答(第
23、1章一第11章)第一部分turboc集成開發(fā)環(huán)境簡介turboc是一個集程序編輯、編譯、連接、調(diào)試為一體的c語言程序開發(fā)環(huán)境,具有速度快、效率高、功能強、使用方便等優(yōu)點。c語言程序開發(fā)人員可以在該集成開發(fā)環(huán)境下利用菜單操作進行編輯、編譯、連接、調(diào)試、運行以及環(huán)境設(shè)置等工作。1、turboc的安裝turboc的安裝非常方便,只需將turboc系統(tǒng)中的安裝軟盤(含有install.exe程序)插入a:驅(qū)動器中,然后將a:盤設(shè)定為當(dāng)前盤,鍵入install?后,安裝即開始,在安裝過程中,只需按照屏帛提t(yī)k信息進行操作即可。如果采用系統(tǒng)提供的默認方式安裝,則安裝完成后,用戶的c盤上將會有以下主要的目錄
24、和文件:(1) c:tc(其中包括tc.exe、tcc.exe、make.exe、等可執(zhí)行文件)(2) c:tcinclude(其中包括stdio.h、math.h、string.h等頭文件)(3)c:tclib(其中包括maths.lib、mathl.lib、graphics.lib等庫函數(shù)文件)(4)c:tcbgi(其中包括多種顯示適配器的驅(qū)動程序)2、啟動turboc在dos平臺上啟動使用下面的dos命令可以進入turboc的集成開發(fā)環(huán)境:c:cdtc?(將tc目錄設(shè)置為當(dāng)前目錄)c:tctc?(執(zhí)行tc.exe文件)(2)在windows平臺上啟動進入包含tc.exe的文件夾,用鼠標雙
25、擊tc.exe文件的圖標,即可進入turboc的集成開發(fā)環(huán)境。turboc集成開發(fā)環(huán)境的屏幕顯示如下:圖1-13、turboc的窗口turboc的屏幕窗口分為如下幾部分:(1)主菜單區(qū)它在屏幕窗口的上方。包含8個菜單選項:file(文件)、edit、run(運行)、compile(編譯)、project(項目)、options(選項)、debug(調(diào)試)、break/switch(斷點/監(jiān)視),主菜單的選擇以alt鍵加上菜單名的第一個字母來實現(xiàn),如:alt+f即選擇file菜單。各個主菜單均有子菜單供用戶選擇來實現(xiàn)各種操作。(2)編輯窗口它在主菜單的下方,用于源程序的輸入。在其右上角可見當(dāng)前編
26、輯的文件的名字。(3)信息窗口它在編輯窗口的下方,用于顯示編譯和連接時的有關(guān)信息,用戶要注意其中顯示的錯誤提示信息,以幫助調(diào)試程序。(4)功能鍵區(qū)它在turboc的屏幕窗口的底部,它提示功能鍵的作用。具體如下:f1-help(幫助):按下f1,屏幕上顯示幫助信息。f5-zoom(放大):將當(dāng)前窗口放大或縮小。f6-switch(轉(zhuǎn)換):按下此鍵可選擇編輯窗口或信息窗口為當(dāng)前窗口,即在二者之間轉(zhuǎn)換。f7-trace(跟蹤):用于跟蹤程序的運行情況。f8-step(單步執(zhí)行):按一次f8鍵,執(zhí)行一條語句。f9-make(生成目標文件):按下此鍵將一次完成當(dāng)前編輯窗口里源文件的編譯和連接,生成.ob
27、j和.exe文件。f10-menu(菜單):回到主菜單行并激活某一個菜單項(如file此時file反相顯示),用戶可以使用鍵來激活自己想要的菜單項,回車后顯示其子菜單。4、編輯、編譯、運行程序(1)編輯源文件編輯源文件是將已經(jīng)編寫的程序輸入到計算機中去并將其以某個文件名保存。注意:turboc的源文件名的擴展名必須為.c。具體操作方法是: 編輯新文件單擊f6鍵,將光標置于編輯窗口后即可輸入文件內(nèi)容。編輯完成后注意應(yīng)保存該文件,具體方法是:按下alt+f鍵,屏幕上顯示file的子菜單,通過誠堆或者s鍵選擇save選項后,屏幕上顯示:用戶可以指定磁盤路徑并將noname改為自己所要的文件名后回車,
28、則當(dāng)前編輯的源文件就按照該路徑以及名字保存于計算機中。如:鍵入c:tcmyfile。 編輯已經(jīng)存在的文件按下alt+f鍵,屏幕上顯示file的字菜單,通過誠堆或者l鍵選擇load選項后,用戶在此可輸入需要編輯的文件名或直接回車,若回車則屏幕上將顯示當(dāng)前目錄下所有擴展名為.c的文件名,用戶可用“r“t”門鍵選擇需要編輯的文件,回車后屏幕上即顯示該文件的內(nèi)容供編輯。用戶在保存文件時有兩種選擇,一是使用alt+f調(diào)出file的子菜單后選擇save,這時,當(dāng)前編輯的文件被保存到當(dāng)前的文件名下,二是使用alt+f調(diào)出file的子菜單后選擇writeto,這時,屏幕提示輸入新文件名,用戶可以輸入新文件名后
29、回車,此時當(dāng)前編輯文件將保存到新文件名下。用戶在保存文件時應(yīng)特別注意屏帛上的提7K信息,以免出現(xiàn)操作失誤。 快捷鍵的使用在編輯過程中除了可以使用如“backspace”、“del等一般編輯鍵外還可以使用快捷鍵,提高編輯效率。用戶可以先將編輯窗口激活再按f1鍵,這時屏幕上顯示出各種快捷鍵的使用方法。例如:使用ctrl+y快捷鍵可以刪除光標所在的一整行。使用ctrl+qf快捷鍵可以在當(dāng)前編輯的源文件中查找某一字符串,方法是先按ctrl+q,再按f鍵并輸入所要查找的字符串即可。使用ctrl+kb和ctrl+kk可以選定塊”,用于復(fù)制、移動、刪除等操作。用戶應(yīng)仔細閱讀有關(guān)快捷鍵的使用說明并熟悉其使用方
30、法,這樣會大大提高自己的編輯效率。編譯源文件用戶在編輯好源文件后,可以對其進行編譯。對當(dāng)前文件進行編譯只需按alt+c然后選擇“compiletoobj”即可。編譯正常完成時,屏幕提示信息中會顯示asuccess.”信息,如果有錯誤則顯示“errors,”用戶可以按任意鍵,屏幕上反相顯示的行是可能有錯誤的行,這時應(yīng)注意信息窗口里的提示信息以幫助自己快速找出錯誤并進行修改。在進行修改時可配合使用f5、f6鍵以及“f、”鍵,以幫助對錯誤行的快速定位,提高修改速度。圖4編譯正常完成后,用戶將獲得一個名字于當(dāng)前編輯文件一致,擴展名為.obj的目標文件。連接程序當(dāng)編譯正常結(jié)束后,就需對.obj文件進行連接以得到.exe文件供執(zhí)行時使用。具體方法是使用alt+c,然后選擇“l(fā)inkexefile項;即對經(jīng)正常編譯后的.obj文件進行連接,若正常結(jié)束則得到一個.exe可執(zhí)行文件,若有錯誤則屏幕提示“errors.,”用戶可以按任意鍵,屏幕上信息窗口里顯示錯誤信息。運行程序運行程序有多種方式:在dos平臺上運行由于通過編譯、連接后得到一
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 維修安裝塔吊合同范例
- 私人賣買土地合同范例
- 路沿石工程合同范例
- 建筑塔吊用工合同范例
- 包場商鋪轉(zhuǎn)讓合同范例
- 固定單總價合同范例
- 茶油采購合同范例集
- 攤拉租賃合同范例
- 磚廠訂貨合同范例可
- 物理九年級 第十六章 第二節(jié)、電流的磁場教案
- 任職資格體系3-某公司營銷銷售族銷售、供應(yīng)、客服和職能任職資格
- 2024年省內(nèi)江市東興區(qū)公辦學(xué)校考調(diào)教師67人(高頻重點提升專題訓(xùn)練)共500題附帶答案詳解
- 2012電池制造行業(yè)分析報告
- 2024年軍隊文職統(tǒng)一考試《專業(yè)科目》管理學(xué)試卷(網(wǎng)友回憶版)
- JT-T-973-2015路用非氯有機融雪劑
- 物業(yè)工作未來規(guī)劃與展望
- 新制定《公平競爭審查條例》全文
- 人體漫游指南(山東聯(lián)盟)智慧樹知到期末考試答案章節(jié)答案2024年山東協(xié)和學(xué)院
- 現(xiàn)代生命科學(xué)與人居環(huán)境智慧樹知到期末考試答案章節(jié)答案2024年同濟大學(xué)
- 2024年淄博星辰供水有限公司招聘筆試參考題庫附帶答案詳解
- 2024年浙江紹興市高速公路運營管理有限公司招聘筆試參考題庫含答案解析
評論
0/150
提交評論