2007年高級語言程序設計試卷答案_第1頁
2007年高級語言程序設計試卷答案_第2頁
2007年高級語言程序設計試卷答案_第3頁
2007年高級語言程序設計試卷答案_第4頁
2007年高級語言程序設計試卷答案_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、2007年(下)高等教育自學考試全國統(tǒng)一命題考試高級語言程序設計(-)試卷及參考答案(考試時間150分鐘)一、單項選擇題(本大題共15小題,每小題2分,共30分)在每小題列出的四個備選項中只有一個是符合題目要求的,請將其代碼填寫在題后的括號內(nèi)。錯選、多選或未選均無分。1.可以作為自定義標識符的是()A. 2xB. breakC. m-nD. m_n注:P9:表2-3 保留字,也稱關鍵字。標識符,標識符是用戶自定義的字符序列,表示程序中的各種語法成分的名稱,比如符號常量,變量名,數(shù)組名,函數(shù)名等。C語言規(guī)定,標識符是由字母或下劃線開頭的字母,數(shù)字,下劃線(見P8,表2-1)組成的字符序列。C語言

2、中的標識符是區(qū)分大小寫的。注意:用戶定義標識符,比如符號常量,變量名,數(shù)組名,函數(shù)名等,標識符中的字母是區(qū)分大小寫的。系統(tǒng)保留字, P9:表2-3 保留字,也稱關鍵字,所有保留字都用小寫字母表示,不允許用戶使用,例如,字符類型符,int,長度運算符sizeof等,系統(tǒng)函數(shù)名,例如,printf()等。2.正確的變量定義是()A. unsigned long d = 1000;B. float m1 = m2 = 10.0;C. char c1 = A, c2= A;D. double x = 0.618, x = 3.14;注:字符標記:。P9,表2-2,ddd,13為8進制數(shù)對應的符號。xh

3、h,12位16進制數(shù)hh對應的符號。八進制數(shù)前面加一個數(shù)字:0。十六進制數(shù)前面加:0x。十進制數(shù)。符號唯一,不能重覆定義。注意:(1)由英文字母,數(shù)字,下劃線組成,標識符的第一個字母不能是數(shù)字,必須是字母或下劃線。(2)大小寫英文字母含義不同。(3)標識符中允許包含的字符個數(shù)隨編譯系統(tǒng)而有所不同,通常是可以識別前面6個字符。 3.表達式的值為0的是()A. 5/5%5B.5>2.C. !4D.0x7&7注:雙目運算符:*,/,%的優(yōu)先級相同,結合性是自左向右。4.設int a=1,b=2;,則執(zhí)行a=b+2,a+,.a+b;后a和b的值分別是()A.1和2B.3和2C.4和7D.

4、5和2注:P31,+a和a+的運算結果相同。注意:P31,int a=3,b=3;表達式+a-1的值是3; a的值是4;先將a加1,后運算表達式的值。表達式b-+1的值是4;b的值是2;先運算表達式的值,后為b減1。5.設int a=2,b=3,c=4;,則表達式a>b&&b<c|b的值是()A.-1B.0C.1D.2注:P33,邏輯運算符!,&&,和| 對關系式或邏輯值(真,假)進行運算,運算結果是邏輯值。對于已知數(shù)據(jù),非0的數(shù)據(jù)和0來表示邏輯真和假。運算結果真為1,假為0。邏輯與優(yōu)先于邏輯或,即&& 優(yōu)先于 |邏輯運算符的優(yōu)先級:

5、P34 !優(yōu)先于 雙目算術運算符 優(yōu)先于 關系運算符 優(yōu)先于 && 優(yōu)先于 | 單目邏輯運算符!和單目算術運算符的優(yōu)先級是相同的,結合性是自右向左。 !優(yōu)先于 雙目算術運算符 優(yōu)先于 關系運算符 優(yōu)先于 && 優(yōu)先于 | 雙目運算符的結合性自左向右。6.設int a=2,b=3,x,y;,則能正確執(zhí)行的語句是()A.scanf(”%d, %d”,x-y, x+y );B.printf(”%dn”,a%b);c.printf(”%fn”,a+b);D.scanf(”%d, %d”,x,y),注:變量在使用之前要賦初值,而變量x,y沒有賦初值。7.設char s10

6、=”abcde”,t=”12345”;,則s和t在內(nèi)存中分配的字節(jié)數(shù)分別是()A.6.和5B.6和6C.10和5D.10和6注:P115,字符串和字符數(shù)組,t=”12345”;其中必須有一個字符串結束標記0。必須注意利用字符數(shù)組存儲字符串時,需要的字節(jié)長度比有效字符數(shù)多1。注意:字符標記是單引號,字符串標記是雙引號”。8.設int a=10,*p=&a;,則執(zhí)行printf(”%dn”,*p+a);的結果是()A.10B.20C.30D.40注:P136,*在指針運算中,表示指向的變量。在定義指針變量標識符時,標識符前面必須有“*”,表示定義的是指針變量,而不是一般變量。這里的,*p與

7、a相同,都是變量a的值。*p表示指向的變量。p表示&a9.自定義函數(shù)中形式參數(shù)的作用域是()A.本文件B.本函數(shù)C.main函數(shù)D.整個程序注:P172,變量的作用域10.設int b5=1,2,3,4,5,6,7;,則元素b12的值是()A.0B.2C.6D.7注:P108P111,二維數(shù)組的初始化。只對前若干行若干個元素賦初值,此時,所有未賦初值的所有元素獲得0值。11.對函數(shù)而言,敘述正確的是()A.函數(shù)中只能有一個return語句B.當函數(shù)的形參是數(shù)組時形實結合為值傳遞方式C.程序中只能有一個main函數(shù)D.無參函數(shù)的函數(shù)體內(nèi)不能出現(xiàn)return語句注:(1)一個函數(shù)可以有多個

8、return語句,當執(zhí)行到某個return語句時,程序的控制流程返回到調用函數(shù),并將語句中的表達式的值作為函數(shù)值帶回。(2)若函數(shù)體內(nèi)沒有return語句,就一直執(zhí)行到函數(shù)體的末尾,然后返回到調用函數(shù)。12.執(zhí)行下列程序段后輸出的結果是()int x,y,z=1;for(x=1,y=-1;x<y;x+,y-)z+;printf(”%dn”,z);A.1B.2c.5D.6注:當型循環(huán),循環(huán)條件x<y不滿足,一次也不執(zhí)行,13.設static int a3=1,2,3,int *p=&a0,&a1,&a2;則與數(shù)組元素a1等價的是()A.*p1B.p1C.*p+

9、1D.p+1注:*p代表指向的變量,p的值是它指向變量的地址。14.設structchar name10;int ages;stu2=”Tom”,25,”Mary”,26,*p=stu;則執(zhí)行語句printf(”%s%dn”,p->name,stu1.age);后輸出結果是()A.Tom25B.Tom26C.Mary25D.Mary26注:P29,指針運算時,*表示指向的變量。而定義變量時,* 表示定義一個指針變量。P137,指針變量的定義和引用。15.設typedef double DB;,則與DB u5;的等價形式是()A.double db5;B.double DB5;C.doub

10、le u;D.double u5;注:P217,用戶調研類型。DB成為自定義類型符。代表雙精度類型符double第二部分非選擇題二、填空題(本大題共10小題,每小題2分,共20分)請在每小題的空格中填上正確答案。錯填、不填均無分。16.-個字符型變量所占內(nèi)存的字節(jié)數(shù)是 1 。注:P25,表3-117.寫出公式對應的C語言表達式 (x+sqrt(x+y)/(5*x))/2.0 或 1.0/2×(x+sqrt(x+y)/(5*x)) 。注:注意分明中的5*x18.執(zhí)行語句printf(”%sn”,”World0Wide0Web”);后的輸出結果是 World。注:P231下,P60,%s

11、是輸出一個字符串,而字符串結束標記是0。19.設int a,b=5;,則執(zhí)行表達式a=b-2=3后a的值是 1。注:=是關系運算符,-是算術運算符,P32,算術運算符優(yōu)先于 關系運算符,先計算,b-2然后計算關系運算符=,b-2=3,運算結果為1,賦值運算符優(yōu)先級最低。20.設char s20=”My”;,則執(zhí)行strcat(s,”Sun!”)后s的內(nèi)容是 MySun!。注:P121,字符串連接函數(shù)。21.設float x=23.65;,則執(zhí)行語句printf(”%dn”,(int)(x+0.5);后輸出結果是 24 。注:P46,運算結果的強制性數(shù)據(jù)類型轉換原則,(數(shù)據(jù)類型符)( 表達式);

12、22.若定義函數(shù)char *fun().,則該函數(shù)的返回值類型是 字符型指針 或字符型地址。注:P169,P178,指針型函數(shù)的定義,在函數(shù)名前面加一個*,表示函數(shù)返回值是指針類型,P178,例7-18,表示*fun()是指針型函數(shù),其返回值是指針型數(shù)據(jù)。指針型函數(shù)的返回值是指針型數(shù)據(jù)。23.設int x=-9,y;,則執(zhí)行y=x>=0?x:-x;后y的值是 9 。注:P37,條件運算符”?:”的優(yōu)先級如下,其他運算符 優(yōu)先于 條件運算符 預先于 賦值,算術自反賦值運算符, 優(yōu)先于 逗號運算符。本題中,按照優(yōu)先級關系,先執(zhí)行條件運算符?:后執(zhí)行賦值運算符=。24.若函數(shù)調用語句為f(a,

13、b,f(a+b,a-b,b);,則函數(shù)f的參數(shù)個數(shù)是 3 。25.設int a=10,則執(zhí)行語句。a+=a-=a+a;后a的值是 -20 。注:算術運算符 優(yōu)先于 關系運算符 優(yōu)先于 雙目運算符 算術自反運算符。算術自反運算符和賦值運算符優(yōu)先級相同,結合性自右向左的。按照優(yōu)先級,執(zhí)行a-=a+a,后,得到結果a=-10,再執(zhí)行a+=a,結果a=-20三、程序分析題(本大題共14小題,每小題4分,共16分)閱讀下列程序,請將輸出結果寫到各題右側的空白處。26.main()int a=1,b=2,c=3;if(a<=c)if(b=c)printf(”a=%dn”,a);else printf

14、(”b=%dn”,b);printf(”c=%dn”,c);注:b=2 c=327.int f(int n)static int m=5;/* m是靜態(tài)變量,函數(shù)第一次被調用時,執(zhí)行初始化,以后再次被調用時,m等于上次調用的結果值 */return +m+n;main()int i;for(i=0;i<3;i+) printf(”%5d”,f(i);printf(”n”);注: 循環(huán)體執(zhí)行3次,m是靜態(tài)變量,只有第一次賦初值,以后保存上一次運算的結果。m是靜態(tài)變量只有第一次訪問時賦初值5,因為+m運算,以后訪問m的值是:第一次訪問m=5,第二次m=6,第三次m=7。第一次循環(huán),實參i與形

15、參n的值傳遞,n=0,m=5,結果:+m+n=6,m=6第二次循環(huán),實參i與形參n的值傳遞,n=1,m=6,結果:+m+n=8,m=7,第三次循環(huán),實參i與形參n的值傳遞,n=2,m=7,結果:+m+n=10,m=8, 6 8 10m是靜態(tài)變量只有第一次訪問時賦初值,以后訪問的是當前值。第一次訪問m=5,第二次訪問fwm=6,第三次訪問m=7。28.#define SIZE 4main()int nSIZE=8,3,4,1;int i,j;for(i=0;i<SIZE;i+)printf(”%d”,ni)for(j=1;j<=ni;j+) printf(”*”);printf(”n

16、”);注:P24,#define 宏名 一串符號。注意是一串符號,或字符串。循環(huán)控制條件:j<=ni,控制打印的*個數(shù)。8*3*4*1*29.int fm(int a,int b)if(b=-1) return a;else return a+fm(a,b-1);main()printf(”%dn”,fm(4,3);注:對于調用fm(4,3)的返回值是a+fm(4,2);對于調用fm(4,2),返回值是a+fm(4,1); 對于調用fm(4,1),返回值是a+fm(4,0); 對于調用fm(4,0),返回值是a+fm(4,-1);對于調用fm(4,-1),返回值是a=4;遞歸過程如下:a

17、+fm(a,b-1)是返回值,其類型為int型。對于調用fm(4,3),返回值為:fm(4,3)=4+fm(4,2);該語句產(chǎn)生調用fm(4,2),對于調用fm(4,2)的返回值為:fm(4,2)=4+fm(4,1); 對于調用fm(4,1)的返回值為:fm(4,1)=4+fm(4,0); 對于調用fm(4,0)的返回值為:fm(4,0)=4+fm(4,-1); 對于調用fm(4,-1)的返回值為:fm(4,-1)=a=4;利用fm(4,-1)=4,fm(4,0)的值為:fm(4,0)=4+fm(4,-1)=8; 利用fm(4,0)=4,fm(4,1)的值為:fm(4,1)=4+fm(4,0)

18、=12; 利用fm(4,1)=12,fm(4,2)的值為:fm(4,2)=4+fm(4,3)=16; 利用fm(4,2)=16,fm(4,3)的值為:fm(4,3)=4+fm(4,2)=20四、程序填充題(本大題共3小題,母小題6分,共18分)請將下列程序橫線處處缺少的部分補上,使其能正確運行。30.函數(shù)fun用于計算數(shù)組各元素值的平方,主函數(shù)調用fun并輸出各元素的值。void fun(int num,int a)/* 參量num控制循環(huán)次數(shù) */ /* 形參是整型數(shù)組a */int i;for(i=0;i< num ;i+) ai=ai*ai; /*第一空*/main()int i,

19、b5=1,2,3,4,5;fun(5, b ); /*注:實參應該是數(shù)組名,地址傳送 */*第二空*/for(i=0;i<5;i+) printf(”%5d”, bi ); /*第三空*/printf(”n”);注:在函數(shù)fun(int num,int a)的函數(shù)體中可見,num是循環(huán)次數(shù)控制,與數(shù)組a的元素個數(shù)相同。P105,如果形參是數(shù)組名,實參形參的數(shù)據(jù)傳遞方式稱為地址傳送方式,調用該函數(shù)時,實參是地址型表達式,例如,數(shù)組的首地址,或者是已經(jīng)賦值的指針變量,指針數(shù)組元素等。調用函數(shù)時,將實參的地址賦予對應的形參數(shù)組作為首地址。由于形參數(shù)組首地址與實參的地址相同,即它們共享相同的內(nèi)存

20、,則在內(nèi)存中的數(shù)據(jù)是被主調函數(shù)和被調函數(shù)共享的。在函數(shù)調用語句fun(5, b );中應該給出數(shù)組b, 這樣實參是數(shù)組名,形參是數(shù)組a,方括號是數(shù)組標記。主調函數(shù)與被調函數(shù)共享同一個數(shù)組的內(nèi)存單元。數(shù)組b和數(shù)組a是同一個數(shù)組。31.從鍵盤輸人一串字符(”#”作為結束標志),將其寫入文本文件file.dat中保存。#include <stdio.h>#include <stdlib.h>main()char ch;FILE *fp;if(fp=fopen(”file.dat”,“ w ”)=NULL) /*第一空*/printf(”Can not open filen”)

21、;exit(0);ch=getchar(); /* 注:從鍵盤獲取第一個字符 */while(ch!=#)/* 當型循環(huán) */fputc( ch ,fp);/*第二空*/ /*把ch中的字符,寫入fp指向的文件。*/ ch=getchar(); /* 注:從鍵盤獲取下一個字符 */ fclose( fp ); /*第三空*/注:對文件進行操作前,要打開文件,由操作系統(tǒng)把文件從磁盤上讀入內(nèi)存中,供程序訪問。語句,ch=getchar();從鍵盤獲取一個字符,存入ch,fputc( ch ,fp)把ch中的字符,寫入fp指向的文件。當型循環(huán),當一次循環(huán)結束時,判斷循環(huán)條件while(ch!=#)當

22、ch!=#時,繼續(xù)進行循環(huán)。32.從鍵盤輸人x的值,根據(jù)以下公式計算并輸出x和y的值。 x0x<2 2x<6y= 6x<10 #include <math.h>#include <stdio.h>main()float x,y;/*自變量x,函數(shù)y */scanf(”%f”, &x ); /*第一空*/if(x<0) printf(”input error!n”);elseswitch(int)(x/2) /* case的值是整型數(shù) */case 0:y=x; break; ; /*第二空*/case1:case2:y=x*x+1;bre

23、ak;case3:casc4:y= sqrt(x+1) ;break; /*第三空*/default:y=l/(x*x+-1);printf(”x=%7.2f, y=%10.6fn”,x,y);注:P68,多分支選擇語句,關鍵詞:switch語句及其表達式,case語句,常量表達式,語句組表達式,(int)(x/2)常量表達式,0,1,2,3,4語句,switch(int)(x/2),switch語句計算表達式的值,即(int)(x/2)的值,如果該值和某個case中的常量表達式的值相同,則執(zhí)行該case語句組,后結束。例如:語句,case 0中的常量表達式值為0,break語句的功能是中斷正

24、在執(zhí)行的語句,退出該switch語句。如果沒有break語句,則執(zhí)行完某個語句組后,繼續(xù)執(zhí)行其后的語句組。default語句,沒有default語句時,即省略該語句,若計算的switch表達式的值與n個常量表達式的值均不相同,則該switch語句什么也不做。若有default語句,若計算的表達式的值與n個常量表達式的值均不相同,則執(zhí)行dafault語句組。允許具有相同操作的case及其對應的常量表達式連續(xù)排列,對應操作的的語句組及break只在最后一個case處出現(xiàn)。沒有操作的case也是運行的,其操作是向后依次找到出現(xiàn)的第一個語句組。五、程序設計題(本大題共2小題,每小題8分,共16分)33

25、.從鏈盤輸入100個整數(shù),計算并輸出大于等于零的數(shù)的平均值(保留小數(shù)點后兩位)。注:#include <stdio.h>#define N 100main()int aN,i,n=0;float sum=0,aver;for(i=0;i<N;i+) scanf(”%d”,&ai);for(i=0;i<N;i+)if(ai>=0) /* 在大于等于零的數(shù)中操作,先求和,然后求平均值 */sum = sum + ai;n+; /* 大于等于零的數(shù)的個數(shù) */if(n=0)printf(“All numbers are negative!n“);else ave

26、r = sum/n;printf(”aver=%7.2fn”,aver); /* 保留小數(shù)點后兩位 */34.(1).編寫一個計算梯形面積的函數(shù),函數(shù)頭是:float area(float t,float b,float h)其中變量t,b,和高h分別表示梯形的上底,下底和高。(2).編寫主函數(shù)從鍵盤輸入梯形的上底,下底和高的值,調用上述函數(shù)輸出梯形的面積(保留小數(shù)點后兩位)。注:#include <stdio.b>float area(f1oat t,float b,float h)return(t+b)*h*0.5;main()f1oat t1,b1,h1;scanf(”%f%f%f”,&t1,&b1,&h1);printf(”area=%7.2fn”,area(t1,b1,h1);2007年(下)高級語言程序設計(-)試卷參考答案一、1.D 2.A 3.C 4.D 5.C 6.B 7.D 8.B 9.B

溫馨提示

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

評論

0/150

提交評論