




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、C語言編程基礎(chǔ)(第2版)習(xí)題答案刖百C語言編程基礎(chǔ)(第2版)每章后面都安排了一定數(shù)量的習(xí)題,這有利于讀者理解、消化和掌握各單元的學(xué)習(xí)內(nèi)容。習(xí)題中,除了有填空題、選擇題、回答問題等適合掌握基本概念的題型外,大部分是分析程序運(yùn)行結(jié)果和要求編寫實(shí)用程序,這有利于讀者訓(xùn)練編程技巧和增強(qiáng)編程能力。應(yīng)廣大讀者要求,特別是一線教學(xué)老師的要求,我們給出全部習(xí)題答案,供讀者參考。編程答案只是實(shí)現(xiàn)題目算法要求的一種,并不一定是最好的。希望讀者自己多做思考,利用多種方法進(jìn)行編程,用以提高自己的程序設(shè)計(jì)水平和鍛煉自己的創(chuàng)新能力。由于作者水平所限,錯(cuò)誤和不當(dāng)之處在所難免,懇請批評指正。習(xí)題一1、填空題。C語言程序由函數(shù)
2、組成,其中必須有且只能有一個(gè)名為main的函數(shù)。C程序的執(zhí)行從名為main的主函數(shù)開始。每個(gè)C語句必、須以分號(hào)結(jié)束。標(biāo)識(shí)符只能由英文字母、數(shù)字和下劃線三類符號(hào)構(gòu)成,而且標(biāo)識(shí)符的第一個(gè)字符必須是英文字母或下劃線。關(guān)鍵是指C語言編譯系統(tǒng)所固有的、具有專門意義的標(biāo)識(shí)符。C程序中,注釋的內(nèi)容應(yīng)放在/和*/符號(hào)之間。2、選擇題。下面合法的C語言標(biāo)識(shí)符是C。C語言中主函數(shù)的個(gè)數(shù)是A。以下有關(guān)注釋的描述中,錯(cuò)誤的是C。C程序中,main函數(shù)的位置D。3、指出并改正下面程序中的錯(cuò)誤。(1)main應(yīng)為main()應(yīng)在本程序最后加上大括號(hào)。語句結(jié)束應(yīng)有分號(hào)。如:inta,b;a=1;b=2;printf(&qu
3、ot;%d",a+b);4、分析下列程序,寫出運(yùn)行結(jié)果該程序是計(jì)算兩個(gè)整數(shù)a和b的乘積并賦值給c,運(yùn)行結(jié)果為:c=30該程序輸出一個(gè)字符串和一排星號(hào),運(yùn)行結(jié)果為:Hello!*5、編程題。按題目要求,編寫輸出固定信息的程序如下:main()Pt();printf("Welcome!");Pt();Pt()printf("*");按題目要求,編寫輸入數(shù)據(jù)輸出其表達(dá)式的程序如下:main()inta,b,c;scanf("%d",&a);scanf("%d",&b);c=a*b+10;prin
4、tf("c=%d",c);習(xí)題二1、單項(xiàng)選擇題。C語言中的變量名只能由字母、數(shù)字和下劃線組成,且第一個(gè)字符CQ合法的常量是D。C語言中的基本數(shù)據(jù)類型所占存儲(chǔ)空間長度的順序是Do下列符號(hào)用中與相同的合法常量是C02、填空。C語言中的基本數(shù)據(jù)類型包括整型(int)_、浮點(diǎn)型(flot)和字符型(char)三種。整型常數(shù)有一十進(jìn)制整數(shù)、.八進(jìn)制整數(shù)和_十六進(jìn)制整數(shù)一三種表示形式;整型變量可分為四類:一般整型(int)_、短整型(short)_、長整型(long)、無符號(hào)型。其中一無符號(hào)型又可分為_無符號(hào)整型(unsignedint)、_無符號(hào)短整型(unsignedshort)和
5、_無符號(hào)長整型(unsignedlong)_3種。有10個(gè)用指數(shù)形式表示的符點(diǎn)常數(shù):請指出合法的有。在C中,沒有專為存貯字符串的變量,但可以用字符型數(shù)組或字符型指針變量存貯字符串。其定義格式為charstr6;禾口char*a;。數(shù)據(jù)類型混合運(yùn)算時(shí),要進(jìn)行同型轉(zhuǎn)換,轉(zhuǎn)換方式分為自動(dòng)轉(zhuǎn)換(隱式轉(zhuǎn)換)和強(qiáng)制轉(zhuǎn)換(顯式轉(zhuǎn)換)兩種。3、寫出下列程序運(yùn)行結(jié)果。(1) 215/9=238(2) 97b(3)4、編寫程序。按題目要求編寫求三個(gè)已知數(shù)的乘積,程序如下:main()inta,b,c;a=19;b=22;c=650;printf("a*b*c=%dn",a*b*c);按題目要求
6、,編寫將值整數(shù)化后賦值的程序如下:main()inta1,a2;floatb,c;b=35.425;c=52.954;a1=(int)(b*c);a2=(int)c%(int)b;printf("a1=%d;a2=%dn",a1,a2);按題目要求,編寫計(jì)算圓周長、面積和圓柱體積的程序如下:main()intr,h,c,s,v;r=15;h=3;c=2*3.14*15;s=3.14*r*r;v=s*h;printf("c=%d,s=%d,v=%dn",c,s,v);習(xí)題三1、填空題。設(shè)有intx=11;則表達(dá)式(x+*1/3)的值是3。已知數(shù)學(xué)表達(dá)式y(tǒng)=
7、x2-2x+5,寫出對應(yīng)的C語言表達(dá)式y(tǒng)=x*x-2*x+5。(3)已知a=10,則表達(dá)式x=(a=a+b,a-b)的值為x=1002、選擇題。在C語言中,下列運(yùn)算符的操作數(shù)必須是int類型的運(yùn)算符是(D)。假設(shè)所有變量均為整型,則表達(dá)式(a=2,b=5,a+,b+,a+b)的值為(A)。已定義intm=6,n=5;,則執(zhí)行m%=n-1之后,m的值是(B)。已有inta=1,b=1;則執(zhí)行b=(a=2*3,a*5),a+7之后,a,b的值是(B)。已有intx=2,y=1;則執(zhí)行x+=y-;的結(jié)果是(D)。3、求下面算術(shù)表達(dá)式的值。(1)4、分析下列程序,寫出運(yùn)行結(jié)果。注意,在C語言中,因?yàn)楹?/p>
8、數(shù)調(diào)用中參數(shù)按從右到左的順序求值,因此該程序執(zhí)行打印輸出的結(jié)果為:311該程序在計(jì)算條件表達(dá)式的值賦給a時(shí),其x值已為6,y值已為7,因此運(yùn)行結(jié)果為:a=7,b=0,c=6該程序利用運(yùn)算符與結(jié)合性的優(yōu)先級不同,而取得a與b的值。(因?yàn)樵擃}使用了邏輯運(yùn)算符,可在學(xué)了第5章以后再詳細(xì)分析)運(yùn)行結(jié)果如下:a=2,b=1該程序應(yīng)用復(fù)合的賦值運(yùn)算符和從右至左結(jié)合性的運(yùn)算規(guī)則,求取n的值,運(yùn)行結(jié)果如下:n=28該程序在執(zhí)行語句“y=x+-1;”時(shí),y為0而x在執(zhí)行后變?yōu)?;在執(zhí)行語句“z=-y+1;”時(shí),z為0而y便成了-1o運(yùn)行結(jié)果如下:x=2,y=-1,z=05、編程題。用符號(hào)常量編寫簡單計(jì)算程序如下
9、(復(fù)雜應(yīng)用應(yīng)在第9章學(xué)習(xí)后再做):#defineN12#defineM25main()floatc;printf("N+M=%dn",N+M);printf("N-M=%dn",N-M);printf("N*M=%dn",N*M);c=(float)N/M;printf("N/M=%fn",c);查看i+與+j運(yùn)算結(jié)果差異的程序,編寫如下:main()inti=20,j=20;printf("i+:%dn+j:%dn",i+,+j);查看m-與-n運(yùn)算結(jié)果差異的程序,編寫如下:main()int
10、m=20,n=20;printf("m-:%dn-n:%dn",m-,-n);習(xí)題四1、單項(xiàng)選擇題。下列敘述不正確的是B。當(dāng)輸入數(shù)據(jù)為12345678時(shí),下面程序運(yùn)行的結(jié)果是C。putchar函數(shù)可以向終端輸出一個(gè)D。按格式輸出的格式符C。2、回答問題。在鍵盤上輸入數(shù)據(jù)格式如下:12,24,Aa/(代表空格,其中數(shù)據(jù)1是為了對付*f占位,/代表回車)該題是求輸入任意兩個(gè)整數(shù)a與b的和。若讀入a=b=5,其運(yùn)行結(jié)果為:typeanumberplease!a=?5/typeanotherplease!b=?5/asumbis103、寫出下列程序的執(zhí)行結(jié)果。執(zhí)行結(jié)果:32767,
11、-327682147483647,-214748364865535,0執(zhí)行結(jié)果:yes,Iamcomputer.執(zhí)行結(jié)果:abtw123執(zhí)行結(jié)果:58.887,5.88873e+01,5.6e+02B,66,102,427567890,34675022,7a1211232,25740,2be0,11232COMPUTERABC4、編寫程序。對輸入的大寫字母改用小寫輸出的程序,編寫如下:#include<stdio.h>main()charc;printf("輸入一個(gè)大寫字母:n");c=getchar();putchar(c+32);計(jì)算三門課總成績等數(shù)據(jù)的程序
12、,編寫如下:#include<math.h>main()floata,b,c,sum,ave,mod;printf("輸入三門課程的成績:n");scanf("%f%f%f',&a,&b,&c);sum=a+b+c;ave=(a+b+c)/3;mod=fmod(sum,3);printf("總成績=%5.1f,平均成績=%5.1f,總成績除3的余值二%n",sum,ave,mod);已知數(shù)據(jù),按輸出結(jié)果的要求編寫輸出程序如下:main()inta=1,b=2,c=3,g=12345;floatd=7.
13、2,e=-5.5,f=1.56;longh=123456;chari='o',j='p'printf("a=%db=%dc=%dn",a,b,c);printf("d=%f,e=%f,f=%fn",d,e,f);printf("d+e=%e+f=%d+f=%n",d+e,e+f,d+f);printf("g=%7dh=%ldn",g,h);printf("i=%cor%dnj=%cor%dn",i,i,j,j);習(xí)題五1、單項(xiàng)選擇題。C語言用C表示邏輯量為“假”要
14、求當(dāng)A勺值為奇數(shù)時(shí),表達(dá)式的值為“真”;A勺值為偶數(shù)時(shí),表達(dá)式的值為“假”。以下不滿足要求的表達(dá)式是Do(3)在if語句的嵌套中,else總是與C配對。下面對for循環(huán)概念描述正確的是D。2、填空題。switch后面的“表達(dá)式”,通常為上型或字符_型表達(dá)式;每個(gè)case的常量表達(dá)式的值不能相同。如果不算goto語句構(gòu)成的循環(huán)結(jié)構(gòu),那么C語言可以構(gòu)建循環(huán)的語句一共有3不中,分另是for循環(huán)、while循環(huán)、do-while循環(huán)。continue語句與break語句在使用時(shí),有兩點(diǎn)主要的不同:它不適用于switch語句;它跳轉(zhuǎn)時(shí)是跳過循環(huán)體中下面的語句從下一次循環(huán)開始。把下面的兩條if分支語句合并
15、成一條if分支語句應(yīng)該寫成:if(x>=y)printf("m=%dn,m=2);elseprintf("n=%dn”,n=1);3、指出以下程序的打印結(jié)果。該程序運(yùn)行結(jié)果如下:x=11y=10x=55y=10x=8y=10z=10x=2y=2x=3y=3x=4y=4x=5y=5x=6y=6x=7y=7x=8y=8x=9y=9x=2y=2x=1y=1000x=2y=100x=3y=104、編寫程序。按要求,用兩種循環(huán)方式編寫相關(guān)程序如下:-的for循環(huán)#include<math.h>main()intr;floatv;for(r=1;r<=100;r
16、+=2)v=4/3*3.14*pow(r,3);printf("r=%d,v=%fn",r,v);-的while循環(huán)#include<math.h>main()intr;floatv;r=1;while(r<=100)v=4/3*3.14*pow(r,3);printf("r=%d,v=%fn",r,v);r+=2;-的for循環(huán)main()ints,i;s=0;for(i=13;i<=103;i+=10)s=s+i;printf("s=%dn",s);-的while循環(huán)main()ints,i;s=0;i=1
17、3;while(i<=103)s+=i;i+=10;printf("s=%dn",s);找出學(xué)生成績中的最高分和最低分的程序,編寫如下:main()intmax,min,n;printf("請輸入成績,-1結(jié)束:");scanf("%d",&n);max=min=n;while(n!=-1)if(n>max)max=n;if(n<min)min=n;scanf("%d",&n);printf("最高分:%d,最低分:%dn",max,min);輸出“水仙花數(shù)”的
18、程序,編寫如下:#include<math.h>main()intn,a,b,c;for(n=100;n<=999;n+)a=n/100;b=n%10;c=(n%100-b)/10;if(pow(a,3)+pow(b,3)+pow(c,3)=n)printf("%dn",n);習(xí)題六1、填空題。數(shù)組是一組具有相同類型的數(shù)據(jù)的集合。如果一個(gè)數(shù)組的長度為10,則該數(shù)組中數(shù)組元素下標(biāo)的最小值為0,最大值為9。(3)若有inta=10,20,30,40;則數(shù)組a的長度為4。在C語言中,沒有字符串變量,字符串的存儲(chǔ)是通過一字符數(shù)組來實(shí)現(xiàn)的。strlen函數(shù)的功能是_
19、測試字符串的長度_,strcmp函數(shù)的功能是_比較兩個(gè)字符串的大小2、選擇題。定義一個(gè)有100個(gè)元素的int型數(shù)組,下面正確的語句是_D_0下面正確的對數(shù)組b進(jìn)行初始化的語句是_C_0在C程序中,引用一個(gè)數(shù)組元素時(shí),其下標(biāo)的數(shù)據(jù)類型允許是_D_0下面語句中正確的是A。若有定義:charstr="Hello"則數(shù)組str所占的空間為B。3、分析下列程序,寫出運(yùn)行結(jié)果。該程序通過for循環(huán)為數(shù)組元素自動(dòng)賦值,然后輸出。運(yùn)行結(jié)果如下:a0=1a1=2a2=3a3=4a4=5a5=6a6=7a7=8a8=9a9=10該程序定義并初始化了a、b、c三個(gè)數(shù)組,然后分別輸出各數(shù)組的各個(gè)元
20、素,用來驗(yàn)證初始化的結(jié)果。運(yùn)行結(jié)果如下:數(shù)組a:1020304050數(shù)組b:12300數(shù)組c:0123該程序通過gets()函數(shù)為字符數(shù)組接收字符,然后輸出各元素。運(yùn)行結(jié)果如下:abc/(輸入的字符)str0=astr1=bstr2=c4、編寫程序。對輸入一組數(shù)進(jìn)行相關(guān)統(tǒng)計(jì)的程序,編寫如下:main()inti,num10;intmax,min,sum=0;floataverage;clrscr();printf("輸入10個(gè)數(shù):n");for(i=0,i<10;i+)scanf("%d",&numi);/*輸入數(shù)值*/sum+=numi;
21、/*累加求和*/average=(float)sum/10;/*求平均值*/max=min=num0;for(i=1;i<10;i+)if(numi>max)max=numi;/*求最大值*/elseif(numi<min)min=numi;/*求最小值*/printf("最大值=%dn",max);printf("最小值=%dn",min);printf("10個(gè)數(shù)的和為:%dn",sum);printf("平均值為:%6.2f",average);求素?cái)?shù)的程序編寫如下:main()inti,j
22、,k,m=0;clrscr();for(i=2;i<=100;i+)k=0;for(j=2;j<=i-1;j+)if(i%j=0)k=1;break;if(k=0)printf("%4d",i);m=m+1;if(m%8=0)printf("n");判斷一個(gè)浮點(diǎn)數(shù)是否在一個(gè)浮點(diǎn)型數(shù)組中的程序,編寫如下:main()inti,exist;floata4,n;printf("輸入浮點(diǎn)型數(shù)組:n");for(i=0;i<4;i+)printf("a%d=",i);scanf("%f"
23、,&ai);printf("n");printf("輸入一個(gè)浮點(diǎn)數(shù):");exist=0;scanf("%f",&n);for(i=0;i<4;i+)printf("a%d=%f;n",i,ai);if(ai=n)exist=1;if(exist=1)printf("%f在數(shù)組中。n",n);elseprintf("%f不在數(shù)組中!n”,n);此題前面的浮點(diǎn)型數(shù)組的值,也可通過初始化直接賦值的辦法得到。輸出二維數(shù)組中最大值及位置的程序,編寫如下:main()int
24、i,j,row=0,col=0,max;inta46;for(i=0;i<4;i+)for(j=0;j<6;j+)scanf(“%d”,&aij);max=a00;for(i=0;i<4;i+)for(j=0;j<6;j+)if(aij>max)max=aij;row=i;col=j;printf(“max=%d,row=%d,col=%dn”,max,row,col);main()charch110,ch23,ch313;inti=0,n;printf("輸入字符串1(長度為10):n");scanf("%s",c
25、h1);printf("輸入字符串2(長度為3):n");scanf("%s",ch2);printf("插入位置n(n<10):n");scanf("%d",&n);n-;for(i=0;i<n;i+)ch3i=ch1i;for(i=n;i<n+3;i+)ch3i=ch2i-n;for(i=n;i<10;i+)ch3i+3=ch1i;printf("%s",ch3);習(xí)題七1、填空題。C語言函數(shù)分成系統(tǒng)提供的庫函數(shù)口用戶自定義函數(shù)兩大類。一個(gè)C程序由主函數(shù)和若干
26、個(gè)自定義函數(shù)組成,各個(gè)函數(shù)在程序中的定義是相互獨(dú)立的。函數(shù)的遞歸調(diào)用是指函數(shù)直接或間接地調(diào)用自己。當(dāng)_用數(shù)組名_作函數(shù)參數(shù)時(shí),實(shí)參與形參的傳遞為“地址傳遞”。根據(jù)變量的作用范圍的不同,可將變量分為一局部變量和一全局變量。根據(jù)變量生存期的不同,可以將變量分為一動(dòng)態(tài)存儲(chǔ)變量和一靜態(tài)存儲(chǔ)變量。static變量的特點(diǎn)是其佰始終存在。2、選擇題。如果一個(gè)函數(shù)有返回值,那么這個(gè)函數(shù)只有A個(gè)返回值。下面關(guān)于空函數(shù)的定義,正確的是B。以下錯(cuò)誤的描述是C。調(diào)用一個(gè)不含return語句的函數(shù),以下正確的說法是D。下面函數(shù)調(diào)用語句中含有實(shí)參的個(gè)數(shù)為C。(6)數(shù)組名作函數(shù)參數(shù)時(shí),實(shí)參傳遞給形參的是B。3、指出并改正下
27、面程序在函數(shù)定義或調(diào)用中的錯(cuò)誤。被調(diào)函數(shù)f(x)定義時(shí)對形式參數(shù)x未做參數(shù)說明。應(yīng)改為:f(intx)或:f(x)intx;函數(shù)調(diào)用時(shí),實(shí)際參數(shù)的類型應(yīng)與被調(diào)函數(shù)形式參數(shù)的類型相一致。本題在主函數(shù)中的整型變量a應(yīng)改為浮點(diǎn)型:inta;改為floata;被調(diào)函數(shù)f()定義時(shí)不需要加分號(hào),f();應(yīng)改為:f()在C程序中,不能在一個(gè)函數(shù)的函數(shù)體內(nèi)定義另一個(gè)函數(shù)。該題在主函數(shù)中定義f()為空值類型且作為一個(gè)語句是錯(cuò)誤的。應(yīng)去掉voidf();4、分析下列程序,寫出運(yùn)行結(jié)果。主函數(shù)以a=2為實(shí)參調(diào)用f(x)函數(shù),f(x)通過return語句向主函數(shù)返回y的值賦給b,結(jié)果應(yīng)為:b=4在該程序中實(shí)參變量a
28、、b和形參變量x、y分別占用不同的存儲(chǔ)單元,雖然在swap函數(shù)中x、y的值發(fā)生了交換,但主函數(shù)中a、b的值卻沒有改變。運(yùn)行結(jié)果應(yīng)為:a=1/b=2/x=2,y=1a=1,b=2全局變量x初始化為1,調(diào)用被調(diào)函數(shù)f()執(zhí)行一次x+,然后再執(zhí)行x+后輸出x值應(yīng)為:x=3x為定義在整個(gè)函數(shù)體和復(fù)合語句內(nèi)的同名自動(dòng)變量,其作用域不同。intx=20;定義在復(fù)合語句中,只在復(fù)合語句中有效。運(yùn)行結(jié)果如下:x=20x=11執(zhí)行被調(diào)函數(shù),將原數(shù)組元素初值分別加1,因此輸出結(jié)果為:num0=2num1=3num2=4num3=5num4=65、編寫程序。該題目要求使用判斷奇偶數(shù)函數(shù),編寫程序如下:main()i
29、ntn;printf("輸入一個(gè)整數(shù):");scanf("%d",&n);a(n);a(intn)if(n%2=0)printf("%d是偶數(shù)n",n);elseprintf("%d是奇數(shù)n",n);編寫一個(gè)將3個(gè)數(shù)從小到大順序輸出的函數(shù)如下:sort(x,y,z)intx,y,z;intt;if(x>y)t=x;x=y;y=t;if(x>z)t=x;x=z;z=t;if(y>z)t=y;y=z;z=t;Printf("%d%d%d",x,y,z);將輸入的秒數(shù)值,轉(zhuǎn)換
30、為時(shí):分:秒輸出,編程如下:inthou=0,min=0;main()intsec,sec2;clrscr();printf("請輸入秒數(shù):n");scanf("%d",&sec);sec2=change(sec);printf("%d個(gè)小時(shí):%d分鐘:%d秒",hou,min,sec2);intchange(sec1)intsec1;if(sec1>3600)hou=sec1/3600;min=(sec1%3600)/60;sec1=sec1%60;elseif(sec1>60)hou=0;min=sec1/60
31、;sec1=(sec1%60);return(sec1);求一組學(xué)生成績的總分、平均分、最高分和最低分的程序,編寫如下:main()floats,ave,score100;intI,m;clrscr();printf("輸入學(xué)生人數(shù):");scanf("%d",&m);printf("輸入階學(xué)生的成績:n”,m);for(i=0;i<m;i+)scanf("%d",&scorei);s=s+scorei;printf("總成績=%.2fn",s);ave=average(score,
32、m);printf("最高分=%dn",max);printf("最低分=%dn",min);printf("平均成績=%.2f",ave);floatmax=0,min=0;floataverage(array,n)floatarray;intn;inti;floataver,sum=array0;max=min=array0;for(i=1;i<n;i+)if(arrayi>max)max=arrayi;/*求最高分*/elseif(arrayi<min)min=arrayi;/*求最低分*/sum=sum+ar
33、rayi;aver=sum/n;/*求取平均成績*/return(aver);/*返回主程序值*/顯示菜單并實(shí)現(xiàn)相應(yīng)選擇功能的程序,編寫如下:#include<math.h>main()inti;while(i!=3)clrscr();printf("I*n");printf("1.求整數(shù)n的立方n");printf("2.求整數(shù)n的立方根n");printf("3.結(jié)束程序n");printf("*n");scanf("%d",&i);if(i=1)li
34、fang();elseif(i=2)lifanggen();lifang()intn;longs;printf("inputn:n");scanf("%d",&n);s=pow(n,3);printf("%d的立方為:%ldnn",n,s);lifanggen()intn;doubles;printf("inputn:n");scanf("%d",&n);s=(double)1/3;s=pow(n,s);printf("%d的立方根為:%fnn",n,s);用
35、遞歸法求n!的程序,編寫如下:main()longf(),t;intn;printf("inputnumber:n");scanf("%d",&n);t=f(n);printf("%d的階乘為:%ld",n,t);longf(intn)staticlongs=1;if(n>1)f(n-1);s*=n;習(xí)題八1、填空。(1)文件是存貯在外部存貯設(shè)備上的信息集合一般分為J1莊_文件和_數(shù)據(jù)文件。(2)C語言文件存貯在磁盤上有兩種形式,一種是按ASCII碼存儲(chǔ),另一種是按二進(jìn)制碼存儲(chǔ)0(3)定義文件指針變量的格式為FILE*f
36、p。(4)feof()函數(shù)是文件尾檢測函數(shù),當(dāng)文件位置指針處于文件尾時(shí),它返回一個(gè)非0值。(5)對流式文件可以進(jìn)行順序讀寫,也可以進(jìn)行隨機(jī)讀寫,關(guān)鍵是一如何控制文件的位置指針。2、回答問題。有三大好處:保存運(yùn)算的中間結(jié)果或最終結(jié)果,方便使用;將數(shù)據(jù)獨(dú)立于程序之外,便于多處、多人共享;事先錄入保存所需數(shù)據(jù),可以提高程序運(yùn)行時(shí)的效率。在ASCII碼文件中,一個(gè)字節(jié)代表一個(gè)字符,便于字符的輸入輸出處理,但占用存儲(chǔ)空間較大;二進(jìn)制文件占用的存儲(chǔ)空間較小,但在文件中,一個(gè)字節(jié)并不代表一個(gè)字符。w:創(chuàng)建一個(gè)ASCII碼文件只寫;r:打開一個(gè)ASCII碼文件只讀;a:打開一個(gè)ASCII碼文件添加;wb:創(chuàng)建
37、一個(gè)二進(jìn)制文件只寫;rb+:打開一個(gè)二進(jìn)制文件讀/寫。文件操作完以后及時(shí)關(guān)閉,可將文件指針脫離該文件,并將內(nèi)存緩沖區(qū)中的數(shù)據(jù)寫入磁盤,用以保證寫入文件的數(shù)據(jù)完整。EOF在中定義為-1,它也是一個(gè)合法的二進(jìn)制整數(shù),用fgetc()函數(shù)檢查文件尾容易發(fā)生錯(cuò)判。3、程序改錯(cuò)。該程序是要求將鍵盤上輸入的一些字符寫入磁盤文件中,程序中有兩處錯(cuò)誤: (檢查文件是否存在且要向文件寫,注意文件名和打開方式)fp=fopen("","r")應(yīng)改為:fp=fopen("xt1.txt","w") (向文件中寫而不是讀)fgetc(fp
38、);應(yīng)改為:fputc(c,fp);該程序是要求從文件中讀并統(tǒng)計(jì)其正數(shù)、負(fù)數(shù)和零的個(gè)數(shù),在屏幕上顯示。程序中有兩處錯(cuò)誤:(當(dāng)不是文件尾時(shí)才讀取并統(tǒng)計(jì))while(feof(p)=1)應(yīng)改為:while(feof(p)=0)(f為存儲(chǔ)負(fù)數(shù)的變量應(yīng)取i<0)elseif(i=0)f+;應(yīng)改為:elseif(i<0)f+;4、編寫程序。將字符串寫入文件的程序,編寫如下:#include<stdio.h>FILE*fp;main()chara28="TurboC","BASIC"fp=fopen("lx1.txt",&
39、quot;w");fputs(a0,fp);fputs(a1,fp);fclose(fp);將字符串從文件中讀出的程序,編寫如下:#include<stdio.h>FILE*fp;main()char*a;if(fp=fopen("lx1.txt","r")=NULL)printf("cannotopenfilen");exit(1);fgets(a,13,fp);clrscr();printf("%sn",a);fclose(fp);將三個(gè)數(shù)寫入文件的程序,編寫如下:#include<
40、stdio.h>FILE*fp;main()inta,b,c;fp=fopen("lx2.txt","wb");fprintf(fp,"%dn%dn%d",100,200,300);fclose(fp);將數(shù)值從文件中讀出并求其和的程序,編寫如下:#include<stdio.h>FILE*fp;main()inta,b,c;if(!(fp=fopen("lx2.txt","rb")printf("cannotopenfile!n");exit(1);fsc
41、anf(fp,"%d%d%d",&a,&b,&c);printf("%d+%d+%d=%dn",a,b,c,a+b+c);fclose(fp);將10個(gè)整數(shù)寫入文件的程序,編寫如下:#include<stdio.h>FILE*fp;main()inti,a10=8,2,6,4,5,9,1,3,7,4;fp=fopen("lx3.txt","wb");for(i=0;i<10;i+)fwrite(&ai,2,1,fp);fclose(fp);將指定位置的整數(shù)從文件中讀
42、出的程序,編寫如下:#include<stdio.h>FILE*fp;main()intn,i,num;if(!(fp=fopen("lx3.txt","rb")printf("cannotopenfilen");exit(1);printf("輸入數(shù)值i:");scanf("%d",&i);n=2*(i-1);fseek(fp,n,SEEK_SET);fread(&num,2,1,fp);printf("第出數(shù)據(jù)是:dn",i,num);fclo
43、se(fp);習(xí)題九1選擇題。將C的庫函數(shù)中數(shù)學(xué)函數(shù)庫的頭文件包含到程序中,應(yīng)在程序的頭部加上(C)。欲將一個(gè)文件file.c包含到程序中,應(yīng)該在程序的頭部加上(A)。“文件包含”預(yù)處理語句的使用形式中,當(dāng)#include后面的文件名用“”括起時(shí),尋找被包含的文件的方式為(B)。在C語言中,編譯預(yù)處理命令都是以(B)符號(hào)開頭的。2、分析下列程序,寫出運(yùn)行結(jié)果。該程序是定義了一個(gè)帶參數(shù)的宏:S(x),在程序運(yùn)行時(shí)它的置換內(nèi)容是x*x,用實(shí)參代替形參后計(jì)算(3+1)的平方。其運(yùn)行結(jié)果為:a=16該程序是定義了一個(gè)帶兩個(gè)參數(shù)的宏:MIN(x,y),在程序運(yùn)行時(shí)它的置換內(nèi)容是條件表達(dá)式(x)<(
44、y)?(x):(y),用實(shí)參代替形參后其運(yùn)行結(jié)果為:500該程序運(yùn)行時(shí),先執(zhí)行宏P(guān)RINT1,輸出A*B的值,然后執(zhí)行宏P(guān)RINT輸出回車換行;最后執(zhí)行宏P(guān)RINT2輸出(A+1)*(B+1)的值,運(yùn)行結(jié)果為:1524在該程序中,定義宏時(shí)用了宏嵌套,控制循環(huán)終值的宏NUM其值應(yīng)為:(M+1)*M/2=(N+1+1)*(N+1)/2=(2+1+1)*(2+1)/2=4*2=8運(yùn)行結(jié)果為:123456783、編程題。用帶參數(shù)的宏實(shí)現(xiàn)求兩個(gè)整數(shù)相除取余的程序,編寫如下:#defineDIV(x,y)x%ymain()inta,b,d;scanf("%d%d",&a,&am
45、p;b);d=DIV(a,b);printf("%dn",d);利用宏按從大到小順序輸出3個(gè)整數(shù)的程序,編寫如下:#definechag(x,y)(x=x+y,y=x-y,x=x-y)main()inta,b,c;printf("輸入3個(gè)整數(shù):n");scanf("%d%d%d",&a,&b,&c);if(a<b)chag(a,b);if(a<c)chag(a,c);if(b<c)chag(b,c);printf("%d,%d,%d",a,b,c);按題目要求,利用條件編譯
46、方法編寫程序如下:#include<string.h>#defineLOWCASE0main()char*a;printf("輸入字符串:n");scanf("%s",a);#ifLOWCASEa=strlwr(a);#elsea=strupr(a);#endifprintf("%sn",a);習(xí)題十(1)若已定義“int*p,a;",則語句“p=&a”中的運(yùn)算符“&”的含義是(D)。執(zhí)行該程序斷后,a的值為(B)。該程序段的運(yùn)行結(jié)果是(A)0若有定義inta35,i,j;(且0&i<
47、;3,0<j<5),則a皿的地址不正確的是(D)。設(shè)有語句“int(*p)()”,則p是一個(gè)(B)0給出程序的輸出結(jié)果為(A)。2.填空題。以下程序用來輸出字符串。printf("sn",*p);exchange函數(shù)的調(diào)用語句為“exchange(&a,&b,&c);"。他將3個(gè)數(shù)按由小到大的順序調(diào)整后依次放入a,b,c三個(gè)變量中,a中放最大值,請?zhí)羁铡f(*q3>*q2)swap(q2,q3)if(*q1<*q3)swap(q1,q3J;if(*q1<*q2)swap(q1,q2J;以下程序段完成給數(shù)組所有
48、元素輸入數(shù)據(jù)。while(j<10)scanf("d,&aj);以下函數(shù)用來求出兩整數(shù)之和,并通過形參將結(jié)果傳回,請?zhí)羁?。voidfunc(intx,inty,_int*z)*z=x+y;該程序的輸出結(jié)果是7o3.分析下列程序,寫出運(yùn)行結(jié)果。該程序用指針變量取得a、b的地址,用來比較哪個(gè)地址中變量的值更大并輸出。運(yùn)行結(jié)果如下:max=33該程序用指針變量做循環(huán)控制變量,控制輸出字符的個(gè)數(shù)。運(yùn)行結(jié)果如下:ABCDEBCDECDEDEE(3)利用指針做函數(shù)參數(shù),在執(zhí)行子函數(shù)時(shí),將a+b的值賦給了c,a-b的值賦給了do輸出c、d,運(yùn)行結(jié)果如下:7,1利用指針做函數(shù)參數(shù),在執(zhí)
49、行子函數(shù)時(shí),用兩個(gè)指針變量指向a數(shù)組的首地址和尾地址,通過循環(huán)控制指針,交換不同位置的數(shù)組元素達(dá)到反序排列。運(yùn)行結(jié)果如下:GFEDCBA4、編程題。輸入三個(gè)數(shù)后,按由小到大的順序輸出。編程如下:main()inta,b,c,*p1,*p2,*p3;printf("輸入3個(gè)數(shù):n");scanf("%d%d%d",&a,&b,&c);if(a>=b)p1=&b,p3=&a;elsep1=&a,p3=&b;if(c>=*p3)p2=p3,p3=&c;elseif(c<=*p1)
50、p2=p1,p1=&c;elsep2=&c;printf("%d,%d,%dn",*p1,*p2,*p3);按題目要求,編寫排序函數(shù)及程序如下:int*sort(inta,intn)inti,j,t;for(i=0;i<n;i+)for(j=i+1;j<n;j+)if(ai>aj)t=ai,ai=aj,aj=t;returna;main()int*b,i,a10;printf("輸入10個(gè)數(shù):");for(i=0;i<10;i+)scanf("%d",&ai);b=sort(a,10);
51、for(i=0;i<10;i+)printf("%d",bi);printf("n");按題目要求,編寫統(tǒng)計(jì)輸入字符串中大小寫字母個(gè)數(shù)的函數(shù)及程序如下:#include<ctype.h>count(char*p)intu=0,l=0;while(*p)if(islower(*p)l+;if(isupper(*p)u+;p+;printf("大寫字母個(gè)數(shù):d;小寫字母個(gè)數(shù):d",u,l);main()char*a;printf("輸入字符串:n");scanf("%s",a);count(a);按題目要求,編寫連接字符串的函數(shù)及程序如下:main()char*strcat(),*str1,*str2,*p;printf("輸入字符串1:n");scanf("%s",str1);printf("輸入字符串2:n");scanf("%s&q
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 納米紙制備過程污染物控制-深度研究
- 高性能纖維材料應(yīng)用-深度研究
- 語義理解與多義詞消歧-深度研究
- 情緒管理在醫(yī)患溝通-深度研究
- 大型活動(dòng)承辦合同
- 山東省萊蕪市鋼城區(qū)2024-2025學(xué)年四下數(shù)學(xué)期末聯(lián)考模擬試題含解析
- 福建理工大學(xué)《行草創(chuàng)作》2023-2024學(xué)年第一學(xué)期期末試卷
- 皖北衛(wèi)生職業(yè)學(xué)院《生物信息學(xué)(雙語)》2023-2024學(xué)年第二學(xué)期期末試卷
- 福建電力職業(yè)技術(shù)學(xué)院《聲音創(chuàng)作》2023-2024學(xué)年第二學(xué)期期末試卷
- 東莞職業(yè)技術(shù)學(xué)院《康復(fù)護(hù)理學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 三峽大壩介紹課件
- 《休閑學(xué)概論》-課程教學(xué)大綱
- 衛(wèi)生部手術(shù)分級目錄(2023年1月份修訂)
- 2023年廣西水土保持監(jiān)測站招考聘用模擬檢測試卷【共500題含答案解析】
- 2023年韶關(guān)北江實(shí)驗(yàn)學(xué)校小升初招生數(shù)學(xué)題
- 眼科學(xué)基礎(chǔ)本科
- 小沈陽《四大才子》歡樂喜劇人臺(tái)詞
- 交通安全設(shè)施作業(yè)指導(dǎo)書
- 優(yōu)秀員工榮譽(yù)證書模板
- 城南舊事讀書匯報(bào)教學(xué)課件
- 不銹鋼容器制造通用標(biāo)準(zhǔn)工藝守則
評論
0/150
提交評論