《C語(yǔ)言程序設(shè)計(jì)實(shí)例教程》課后習(xí)題 練習(xí)4_第1頁(yè)
《C語(yǔ)言程序設(shè)計(jì)實(shí)例教程》課后習(xí)題 練習(xí)4_第2頁(yè)
《C語(yǔ)言程序設(shè)計(jì)實(shí)例教程》課后習(xí)題 練習(xí)4_第3頁(yè)
《C語(yǔ)言程序設(shè)計(jì)實(shí)例教程》課后習(xí)題 練習(xí)4_第4頁(yè)
《C語(yǔ)言程序設(shè)計(jì)實(shí)例教程》課后習(xí)題 練習(xí)4_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

e練習(xí)4一、選擇題。.以下對(duì)編譯預(yù)處理命令的正確的說(shuō)法是(ABC)oA、C語(yǔ)言中的編譯預(yù)處理命令包含宏定義、文件包含和條件編譯B、C語(yǔ)言中的編譯預(yù)處理命令以#號(hào)開(kāi)頭C、C語(yǔ)言中的編譯預(yù)處理命令一般位于程序代碼的首部D、C語(yǔ)言中的編譯預(yù)處理命令以分號(hào)結(jié)束.設(shè)有不帶參的宏定義#defineN20+1,則以下說(shuō)法不正確的是:(C)。A、編譯預(yù)處理階段,程序代碼中所有的宏名N被原樣替換為20+1B、該不帶參宏定義中的20+1為宏替換字符串C、該不帶參宏定義中的20+1為整型表達(dá)式D、該不帶參宏定義中的宏名N沒(méi)有數(shù)據(jù)類(lèi)型的概念.定義一個(gè)帶參的宏名f(x)計(jì)算表達(dá)式2*x*(x+l)的值,則以下帶參宏定義中正確的定義形式是:(B)oA、#definef(x)2*x*(x+l)B、#definef(x)(2*(x)*((x)+l))C、#define2*(x)*((x)+l)f(x)D、#definef2*x*(x+l).以下對(duì)條件編譯不正確的說(shuō)法是(B)。A、條件編譯是指在部分程序代碼在滿(mǎn)足指定條件的情況下才參與編譯,否則不參與編譯。B、無(wú)論是否使用條件編譯,所有程序代碼均要進(jìn)行編譯C、使用條件編譯和使用if語(yǔ)句是有區(qū)別的D、合理使用條件編譯可以減少需要參與編譯的語(yǔ)句數(shù)量,生成的目標(biāo)程序小,程序執(zhí)行效率高。.文件包含命令#include<math.h〉^[1#include"math.h”的區(qū)別在于(D)。A、前者先在編譯系統(tǒng)指定的目錄下查找文件math.h,如果找不到再到用戶(hù)當(dāng)前目錄下查找B、后者先在編譯系統(tǒng)指定的目錄下查找文件math.h,如果找不到再到用戶(hù)當(dāng)前目錄下查找C、兩者均是先在編譯系統(tǒng)指定的目錄下查找文件math.h,如果找不到再到用戶(hù)當(dāng)前目錄下查找D、前者僅在編譯系統(tǒng)指定的目錄下查找文件math.h,后者先在用戶(hù)當(dāng)前目錄中查找文件,如果找不到再到編譯系統(tǒng)指定的目錄下查找.以下對(duì)將C程序的多個(gè)源文件連接生成可執(zhí)行文件的說(shuō)法中不正確的是(C)oA、使用工程文件的方式下,每個(gè)源文件分別編譯生成一個(gè)目標(biāo)文件,然后再進(jìn)行連接生成可執(zhí)行文件B、使用文件包含命令的方式下,通過(guò)編譯預(yù)處理生成一個(gè)包含所有源文件代碼的新的源文件,將該源文件編譯成目標(biāo)文件,然后再進(jìn)行連接生成可執(zhí)行文件。C、使用文件包含命令的方式下,不必考慮多條文件包含命令的順序。D、工程文件的作用是告訴編譯系統(tǒng)需要將那些源文件進(jìn)行編譯、連接并生成一個(gè)可執(zhí)行文件.當(dāng)說(shuō)明一個(gè)結(jié)構(gòu)體變量時(shí),系統(tǒng)分配給它的內(nèi)存是(A)A、結(jié)構(gòu)體中各成員所需內(nèi)存量的總和B、結(jié)構(gòu)體中第一個(gè)成員所需內(nèi)存量k=0;printf(”請(qǐng)輸入年月日(1999618):");scanf(H%d.%d.%dH,&s.year,&s.month,&s.day);if(s.year%4==0&&s.year%100!=0||s.year%400==0)t=l;if(s.month<l||s.month>12)(printf(”月份輸入錯(cuò)誤!\n");k=l;continue;}switch(s.month)(casel:case3:case5:case7:case8:case10:case12:if(s.day<l||s.day>31){printf(HH期輸入錯(cuò)誤!\n");k=l;}break;case4:case6:case9:case11:if(s.day<11|s.day>30){printf("日期輸入錯(cuò)誤八n");k=l;}break;case2:if(t==0&&(s.day<11|s.day>28)){printf(nH期輸入錯(cuò)誤!');k=l;break;}elseif(t==l&&(s.day<l||s.day>29)){printf(HB期輸入錯(cuò)誤!\n");k=l;}break;}}while(k==l);n=Day(&s);printf("是第%4天}7、編寫(xiě)一個(gè)C程序,將指定的文本文件中的所有小寫(xiě)字母轉(zhuǎn)換成對(duì)應(yīng)的大寫(xiě)字母,其他的字符格式不變。#include<stdio.h>voidmain()|FILE*fp;charc;fp=fopen(nabc.txt,\Hr+u);while(!feof(fp))(c=fgetc(fp);if(c>=,a,&&c<=,z,)(fseek(fprlL,SEEK_CUR);fputc(c-32,fp);fseek(fp,ftell(fp),SEEK_SET);}}fclose(fp);C、結(jié)構(gòu)體中占內(nèi)存量最大的成員所需的內(nèi)存量D、結(jié)構(gòu)體中最后一個(gè)成員所需內(nèi)存量.當(dāng)說(shuō)明一個(gè)共用體變量時(shí),系統(tǒng)分配給它的內(nèi)存是(C)A、共用體中各成員所需內(nèi)存量的總和B、共用體中第一個(gè)成員所需內(nèi)存量C、共用體中占內(nèi)存量最大的成員所需的內(nèi)存量D、共用體中最后一個(gè)成員所需內(nèi)存量.以下關(guān)于typedef的敘述不正確的是(B)A、用typedef可以定義各種類(lèi)型名,但不能用來(lái)定義變量B、用typedef可以增加新類(lèi)型C、用typedef只是將已存在的類(lèi)型用一個(gè)新的名稱(chēng)來(lái)代表D、使用typedef便于程序通用.下面四個(gè)運(yùn)算符中,優(yōu)先級(jí)最低的是(A)A、()B、.C、->D、++.以下關(guān)于枚舉的敘述不正確的是(D)A、枚舉變量只能取對(duì)應(yīng)的枚舉類(lèi)型的枚舉元素表中的元素B、可以在定義枚舉類(lèi)型時(shí)對(duì)枚舉元素進(jìn)行初始化C、枚舉元素表中元素有先后次序,可以進(jìn)行比較D、枚舉元素的值可以是整數(shù)或者字符串。.在下列程序中,枚舉變量cl和c2的值分別是(A)和(D)#include<stdio.h>voidmain()(enumcolor{red,yellow,blue=4,green,white}c1,c1;cl=yellow;c2=white;printf("%d,%d\nn,cl,c2);)A、1B、3C、5D、6.已知有如下定義,若有p=&data,則對(duì)data中的成員a的正確引用是(B)structsk{inta;floatb;}data,*p;A、(*p).data.aB、(*p).aC、p->data.aD、.設(shè)有以下定義和語(yǔ)句,structstudent(intnum,age;);structstudentstu[3]={{2001,20},{2001,21},{2001,19}};structstudeng*p=stu;則以下錯(cuò)誤的引用是(D)A、(p++)->numB、p++C、(*p).numD、p=&stu.age.設(shè)有以下說(shuō)明語(yǔ)句,stuctex{intx;floaty;charz;}example;則下面的敘述中不正確的是(B)A、struct是結(jié)構(gòu)類(lèi)型的關(guān)鍵字B、example是用戶(hù)定義的結(jié)構(gòu)類(lèi)型名C、x,y,z都是結(jié)構(gòu)成員名D、structex是用戶(hù)定義的結(jié)構(gòu)類(lèi)型.設(shè)有以下語(yǔ)句:structst(intn;st*next;);staticsta[3]={5,&a[1],7,&a[2],9,NULL},*p;p=&a[0];則以下表達(dá)式值為6的是(B)A、p++->nB、++p->nC、(*p).n++D、p->n++.選擇下面程序的運(yùn)行結(jié)果是(B)#include<stdio.h>structstu(intnum;charname[10];intage;);voidfun(stu*p)(printf("%s\n”,(*p).name);)voidmain()(structstustudents[3]={{9801;,Zhangn,20},{9802;,Long,,,21},{9803,HXueM9}};fun(students+2);)A、ZhangB、XueC、LongD、18.當(dāng)已存在一個(gè)abc.txt文件時(shí),執(zhí)行£(^611(匕改仆「"[+”)的功能是(D)A、打開(kāi)abc.txt文件,清除原有的內(nèi)容B、打開(kāi)abc.txt文件,只能寫(xiě)入新的內(nèi)容C、打開(kāi)abc.txt文件,只能讀取原有內(nèi)容D、打開(kāi)abc.txt文件,可以讀取和寫(xiě)入新的內(nèi)容19.若用fopen函數(shù)打開(kāi)一個(gè)新的二進(jìn)制文件,該文件可以讀也可以寫(xiě),則文件打開(kāi)的模式是(C)A、”ab+“B、"wb+“C、"rb+“D、“ab”.若用fopen函數(shù)打開(kāi)一個(gè)已經(jīng)存在的文本文件,保留該文件原有數(shù)據(jù)且可以讀也可以寫(xiě),則文件操作模式是(C)A、二+“B、“w+”C、"a+“D、.使用fseek函數(shù)可以實(shí)現(xiàn)的操作是(C)A、改變文件的位置指針的當(dāng)前位置B、文件的順序讀寫(xiě)C、文件的隨機(jī)讀寫(xiě)D、以上都不對(duì).fread(buf,64,2,fp)的功能是(D)A、從fp文件流中讀出整數(shù)64,并存放在buf中;B、從fp文件流中讀出整數(shù)64和2,并存放在buf中;C、從fp文件流中讀出64個(gè)字節(jié)的字符,并存放在buf中;D、從fp文件流中讀出2個(gè)64個(gè)字節(jié)的字符,并存放在buf中;.以下程序的功能是(B)#include<stdio.h>voidmain()(FILE*fp;charstr[]=nHellon;fp=fopen(HPRN,V,wn);fputs(str,fp);fclose(fp);)A、在屏幕上顯示"Hello"B、把"Hello”存入PRN文件中C、在打印機(jī)上打印出"Hello”D、以上都不對(duì).檢測(cè)fp文件流的文件位置指針在文件頭的條件是(B)A、fp==OB、ftell(fp)=OC、fseek(fp,O,SEEK_SET)D、feof(fp).以下程序的功能是(A)#include<stdio.h>voidmain()(FILE*fp;fp=fopen("abc","r+”);while(!feof(fp))if(場(chǎng)etc(fjp尸=,*')(fseek(fp,-1L,SEEK_CUR);fputc(4$\fp);fseek(fp,ftell(fp),SEEK_SET);)fclose(fp);)A、將abc文件中所有'均替換成'$'B、查找abc文件中所有'C、查找abc文件中所有'$'D、將abc文件中所有字符均替換成'$'二、填空題1、C語(yǔ)言提供的預(yù)處理命令功能主要有三種:宏定義,文件包含,條件編譯。且分別用#defhie,#indude,#if或#011出£來(lái)實(shí)現(xiàn)。為了與一般的C語(yǔ)句相區(qū)別,這些命令以#符號(hào)開(kāi)頭。2、結(jié)構(gòu)體變量成員的引用方式是使用成員運(yùn)算符運(yùn)算符,結(jié)構(gòu)體指針變量成員的引用方式是使用成員運(yùn)算符運(yùn)算符。3、設(shè)structstudent{intno;charname[12];floatscore[3];}si,*p=&sl;TOC\o"1-5"\h\z用指針?lè)ńosi的成員no賦值1234的語(yǔ)句是一p->no=1234。4、運(yùn)算sizeof是求變量或類(lèi)型的內(nèi)存字節(jié)數(shù),typedef的功能是類(lèi)型定義。5、C語(yǔ)言可以定義枚舉類(lèi)型,其關(guān)鍵字為emim。6、設(shè)unionstudent{intn;chara[100];}b;貝Usizeof(b)的值是100。7、C語(yǔ)言流式文件的兩種形式是ASCII碼文件和二進(jìn)制文件。8、C語(yǔ)言打開(kāi)文件的函數(shù)是fopen,關(guān)閉文件的函數(shù)是fclose。9、按指定格式輸出數(shù)據(jù)到文件中的函數(shù)是fprintf,按指定格式從文件讀取數(shù)據(jù)的函數(shù)是fscanf,判斷文件指針到文件末尾的函數(shù)是EOF。10、輸出一個(gè)數(shù)據(jù)塊到文件中的函數(shù)是fwrite,從文件中輸入一個(gè)數(shù)據(jù)塊的函數(shù)是fread;輸出一個(gè)字符串到文件中的函數(shù)是fputs,從文件中輸入一個(gè)字符串的函數(shù)是fgets11、feof(fp)函數(shù)用來(lái)判斷文件是否結(jié)束,如果遇到文件結(jié)束,函數(shù)值為0,否則為1。12、在C語(yǔ)言中,文件的存取是以字節(jié)為單位的,這種文件被稱(chēng)作流式文件。三、閱讀程序,寫(xiě)出運(yùn)行結(jié)果。#definePI3#defineSPI*r東r#defineV4*S*r/3voidmain()(floatr=2;printfTS=%.2f,V=%.2P,S,V);)答案:S=12.00,V=32.002.#defineFX(x)x*(x+2)(x-2)voidmain()(inta=3,b=2;printf(n%d\nH,FX(2+a+b));}答案:95.#definePRT(x)printf("%d\t",x)#dcfincPRINT(x)PRT(x);printf(uwclldone!")voidmain()(intx=3,i;for(i=0;i<3;i++)PRINT(x-i);printff'n");答案:321welldone!.#include<stdio.h>structtwo(intx,*y;}*P;inta[8]={123,4,5,6,7,8};twob[4]={100,&a[l],200,&a[3],10,&a[5],20,&a[7]};voidmain(){p=b;printf(',%d\n'\++(p->x));)答案:101.#include<stdio.h>structn_c(intx;charc;};voidfunc(structn_cb)(b.x=20;b.c-y';)voidmain()(structn_ca={10/x1};func(a);printf(H%d%cn,a.x,a.c);return0;)答案:10x四、編程題。1、圓柱形體積公式為:v=area*ho其中area=兀*r*r,圓周率兀取值為3.14。要求使用不帶參宏定義實(shí)現(xiàn)計(jì)算圓柱體體積功能,r和h的值由用戶(hù)鍵盤(pán)輸入。#include<stdio.h>#definePI3.14#defineAreaPI*r*r#defineVArea*hvoidmain()(intr,h;printf("請(qǐng)輸入圓柱的半徑:”);scanf(H%dn,&r);printf「請(qǐng)輸入圓柱的高:”);scanf(H%du,&h);prints圓柱的體積為%.2f:”,V);}2、編寫(xiě)一個(gè)帶參的宏定義,實(shí)現(xiàn)通過(guò)宏替換求式子f(x)=4x3+3x2-2x+l值的功能,其中x為形參。要求在main函數(shù)中通過(guò)宏替換求下面兩個(gè)式子的值,式子中的m由用戶(hù)鍵盤(pán)輸入。#include<stdio.h>#definef(x)4*(x)*(x)*(x)+3*(x)*(x)?2*(x)+lvoidmain()(intm,f;printf("請(qǐng)輸入一個(gè)整數(shù):");scanf(n%dn,&m);printf(Hf(x)=%d,\f(m));)3、編寫(xiě)3個(gè)源文件filel.c、31e2.c和file3.c,在file2.c中編寫(xiě)函數(shù)funl求兩個(gè)整數(shù)的和,在file3.c中編寫(xiě)函數(shù)fun2求兩個(gè)整數(shù)的差,在filel.c中編寫(xiě)main函數(shù)調(diào)用這兩個(gè)函數(shù)求兩個(gè)整數(shù)的和與差并輸出結(jié)果。filel.c:#include<stdio.h>intfunl(inta,intb);intfun2(inta,intb);voidmain()(intx,y,sum,Diff;printf,請(qǐng)輸入x和y兩個(gè)整數(shù):");scanf(''%d,%d'',&x,&y);sum=funl(x,y);Diff=fun2(x,y);printf(H\n%d+*%d=%d'',x,y,sum);printf(H\n%d-%d=%dn,x,y,Diff);file2.c:intfunl(inta,intb)(intc;c=a+b;returnc;)file3.c:intfun2(inta,intb)|intc;c=a-b;returnc;}4、要求:分別使用工程文件和文件包含命令兩種方式將3個(gè)源文件連接生成一個(gè)可執(zhí)行文件。答案:見(jiàn)例題。5、有4個(gè)學(xué)生,每個(gè)學(xué)生包括學(xué)號(hào),姓名,成績(jī)。要求找出成績(jī)最高者的姓名和成績(jī)。#include<stdio.h>structstu(intNo;charName[10];intScore;);intsearchMax(structstu*stu

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論