




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
計算機等級考試二級C語言考前密卷(1)
(1)校和隊列的共同特點是
A)都是先進先出B)都是先進后出
C)只允許在端點處插入和刪除元素D)沒有共同點
(2)已知二叉樹后序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是
A)acbcdB)decabC)deabcD)cedba
(3)鏈表不具有的特點是
A)不必事先估計存儲空間B)可隨機訪問任一元素
C)插入刪除不需要移動元素D)所需空間與線性表長度成正比
(4)結構化程序設計的3種結構是
A)順序結構、選擇結構、轉移結構
B)分支結構、等價結構、循環(huán)結構
C)多分支結構、賦值結構、等價結構
D)順序結構、選擇結構、循環(huán)結構
(5)為了提高測試的效率,應該
A)隨機選取測試數據
B)取一,切可能的輸入數據作為測試數據
C)在完成編碼以后制定軟件的測試計劃
D)集中對付那些錯誤群集的程序
(6)算法的時間復雜度是指
A)執(zhí)行算法程序所需要的時間
B)算法程序的長度
C)算法執(zhí)行過程中所需要的基本運算次數
D)算法程序中的指令條數
(7)軟件生命周期中所花費用最多的階段是
A)詳細設計B)軟件編碼
C)軟件測試D)軟件維護
(8)數據庫管理系統DBMS中用來定義模式、內模式和外模式的語言為
A)CB)BasicC)DDLD)DML
(9)下列有關數據庫的描述,正確的是
A)數據庫是一個DBF文件B)數據庫是一個關系
C)數據庫是一個結構化的數據集合D)數據庫是一組文件
(10)下列有關數據庫的描述,正確的是
A)數據處理是將信息轉化為數據的過程
B)數據的物理獨立性是指當數據的邏輯結構改變時,數據的存儲結構不變
C)關系中的每一列稱為元組,一個元組就是一個字段
D)如果一個關系中的屬性或屬性組并非該關系的關鍵字,但它是另一個關系的關鍵字,
則稱其為本關系的外關鍵字
(11)以下敘述中正確的是
A)C語言比其他語言高級
B)C語言可以不用編譯就能被計算機識別執(zhí)行
C)C語言以接近英語國家的自然語言和數學語言作為語言的表達形式
D)C語言出現的最晚,具有其他語言的一切優(yōu)點
(12)C語言中用于結構化程序設計的3種基本結構是
A)順序結構、選擇結構、循環(huán)結構B)if^switch,break
C)for,while,do-whileD)if^fbr,continue
(13)C語言中最簡單的數據類型包括
A)整型、實型、邏輯型B)整型、實型、字符型
C)整型、字符型、邏輯型D)字符型、實型、邏輯型
(14)若變量已正確定義并賦值,以下符合C語言語法的表達式是
A)a:=b+lB)a=b=c+2C)int18.5%3D)a=a+7=c+b
(15)下列可用于C語言用戶標識符的一組是
A)void,define,WORDB)a3_b3,_123,Car
C)For,-abc,IFCaseD)2a,DO,sizeof
(16)C語言中運算對象必須是整型的運算符是
A)%=B)/C)=D)<=
(17)若變量a,i已正確定義,且i已正確賦值,合法的語句是
A)a==1B)++i;C)a=a++=5;D)a=int(i);
(18)已知
intt=0;
while(t=l)
{-}
則以下敘述正確的是
A)循環(huán)控制表達式的值為0B)循環(huán)控制表達式的值為1
C)循環(huán)控制表達式不合法D)以上說法都不對
(19)若變量已正確說明為float型,要通過語句scanf("%f%f%f",&a,&b,&c);給a賦予
10.0,b賦予22.0,c賦予33.0,下列不正確的輸入形式是
A)10〈回車>22〈回車>33<回車〉
B)10.0,22.0,33.0<回車>
C)10.0〈回車>22.033.0〈回車〉
D)1022〈回車>33〈回車〉
(20)有如下程序:
main()
{
intx=l,a=0,b=0;
switch(x)
(
case0:b++;
case1:a++;
case2:a++;b++;
)
printf("a=%d,b=%d\n",a,b);}
該程序的輸出結果是
A)a=2,b=lB)a=l,b=lC)a=l,b=0D)a=2,b=2
(21)有以下程序
main()
{inti=l,j=l,k=2;
if((j++||k++)&&i++)
printf(M%d,%d,%d\n",i,j,k);
執(zhí)行后輸出結果是
A)1,1,2B)2,2,1C)2,2,2D)2,2,3
(22)有如下程序
main()
{floatx=2.0,y;
if(x<0.0)y=0.0;
elseif(x<10.0)y=1.0/x;
elsey=1.0;
printf("%f\n",y);}
該程序的輸出結果是
A)0.000000B)0.250000C)0.500000D)1.000000
(23)有如下程序:
main()
{intn=9;
while(n>6){n--;printf(”%d”,n);}
}
該程序的輸出結果是
A)987B)876C)8765D)9876
(24)在下列選項中,沒有構成死循環(huán)的是
A)inti=100;
while(I)
{i=i0+1;
if(i>100)break;
B)for(;;);
C)intk=10000;
do{k+4-;}while(k>10000);
D)ints=36;
while(s)—s;
(25)設intx=l,y=l;表達式(!x||y-)的值是
A)0B)1C)2D)-1
(26)若已定義的函數有返回值,則以下關于該函數調用的敘述中錯誤的是
A)函數調用可以作為獨立的語句存在
B)函數調用可以作為一個函數的實參
C)函數調用可以HI現在表達式中
D)函數調用可以作為一個函數的形參
(27)有以下程序
floatfun(intx,inty)
{return(x+y);}
main()
{inta=2,b=5,c=8;
printf("%3.0f\n",fun((int)fun(a+c,b),a-c));
}
程序運行后的輸出結果是
A)編譯出錯
B)9
C)21
D)9.0
(28)若有以下調用語句,則不正確的fun函數的首部是
main()
inta[50],n;
fun(n,&a[9]);
}
A)voidfun(intm,intx[])
B)voidfun(ints,inth[41])
C)voidfun(intp,int*s)
D)voidfun(intn,inta)
(29)fiseek函數的正確調用形式是
A)fseek(文件指針,起始點,位移量)
B)fseek(文件指針,位移量,起始點)
C)fseek(位移量,起始點,文件指針)
D)fseek(起始點,位移量,文件指針)
(30)若小是指向某文件的指針,且已讀到文件末尾,則函數feof(fp)的返回值是
A)EOF
B)-1
C)1
D)NULL
(31)若有說明語句:charc=\72;則變量c
A)包含1個字符
B)包含2個字符
C)包含3個字符
D)說明不合法,c的值不確定
(32)若有說明inta[3][4];則a數組元素的非法引用是
A)a[0][2*1]
B)aLl][3]
C)a[4-2][0
]
D)aL0][4](33)設有以下說明語句
structstu
{inta;
floatb;
}stutype;
則下面的敘述不正確的是
A)struct是結構體類型的關鍵字
B)structstu是用戶定義的結構體類型
C)stutype是用戶定義的結構體類型名
D)a和b都是結構體成員名
(34)在C語言中,引用數組元素時,其數組下標的數據類型允許是
A)整型常量
B)整型表達式
C)整型常量或整型表達式
D)任何類型的表達式
(35)若運行時給變量x輸入12,則以下程序的運行結果是
main()
{intx,y;
scanf("%d",&x);
y=x>12?x+10:x-12;
printf("%d\n",y);
}
A)0
B)22
C)12
D)10(
(36)以下說法正確的是
A)C語言程序總是從第一個的函數開始執(zhí)行
B)在C語言程序中,要調用函數必須在main()函數中定義
C)C語言程序總是從main()函數開始執(zhí)行
D)C語言程序中的main()函數必須放在程序的開始部分
(37)表達式0x13八0x17的值是
A)0x04
B)0x13
C)0xE8
D)0x17
(38)有以下程序
#defineF(X,Y)(X)*(Y)
main()
{inta=3,b=4;
printf("%d\n",F(a++,b++));
)
程序運行后的輸出結果是
A)12
B)15
C)16
D)20
(39)下列程序執(zhí)行后的輸出結果是
voidfunc(int*a,intb[])
{b[0]=*a+6;}
main()
{inta,b[5];
a=0;b[0]=3;
func(&a,b);printf("%d\n(b[0]);
}
A)6
B)7
C)8
D)9
(40)若有下面的程序段:
chars[]="chinan;char*p;p=s;
則下列敘述正確的是
A)s和p完全相同
B)數組s中的內容和指針變量p中的內容相等
C)s數組長度和p所指向的字符串長度相等
D)*p與s[0]相等
(41)以下程序中函數sort的功能是對a數組中的數據進行由大到小的排序
voidsort(inta[],intn)
{inti,j,t;
for(i=0;ifor(j=i+l;jif(a[i])
main()
{intaa[10]={1,2,3,4,5,6,7,8,9,10}/;
sort(&aa[31,5);
for(i=0;i<10;i++)printf(H%d,n,aa[i]);
printf(H\nn);
}
程序運行后的輸出結果是
A)1,2,3,4,5,6,7,8,9,10,
B)10,9,8,7,6,5,4,3,2,1,
C)1,2,3,8,7,6,5,4,9,10,
D)1,2,10,9,8,7,6,5,4,3,
(42)以下程序的運行結果是
#include"stdio.h"
main()
{structdate
{intyear,month,day;}today;
printf("%d\n",sizeof(structdate));
)
A)6
B)8
C)10
D)12
(43)若有語句int*point,a=4;和point=&a;下面均代表地址的一組選項是
A)a,point,*&a
B)&*a,&a,*point
C)*&point,*point,&a
D)&a,&*point,point
(44)在調用函數時,如果實參是簡單的變量,它與對應形參之間的數據傳遞方式是
A)地址傳遞
B)單向值傳遞
C)由實參傳形參,再由形參傳實參
D)傳遞方式由用戶指定
(45)已定義以下函數
fun(char*p2,char*pl)
(
while((*p2=*pl)!-\O'){pl++;p2++;}
)
函數的功能是
A)將pl所指字符串復制到p2所指內存空間
B)將pl所指字符串的地址賦給指針p2
C)對pl和p2兩個指針所指字符串進行比較
D)檢查pl和p2兩個指針所指字符串中是否有'(T
(46)若執(zhí)行下述程序時,若從鍵盤輸入6和8時,結果為
main()
{inta,b,s;
scanf("%d%d",&a,&b);
if(as=b;
s*=s;
printf("%d",s);
A)36
B)64
C)48
D)以上都不對
(47)自canf函數的正確調用形式是
A)fscanf(巾,格式字符串,輸出表列);
B)fi;canf(格式字符串輸出表列,用);
C)fscanf(格式字符串,文件指針,輸出表列);
D)fscanf(文件指針,格式字符串,輸入表列);
(48)下列關于C語言數據文件的敘述中正確的是
A)文件由ASCII碼字符序列組成,C語言只能讀寫文本文件
B)文件由二進制數據序列組成,C語言只能讀寫二進制文件
C)文件由記錄序列組成,可按數據的存放形式分為二進制文件和文本文件
D)文件由數據流形式組成,可按數據的存放形式分為二進制文件和文本文件
(49)有以下程序
voidss(char*s,chart)
{while(*s)
{if(*s==t)*s=t-,a,+'A,;
s++;
main()
{charstrl[100]=,,abcddfefdbd",c='d,;
ss(strl,c);printf("%s\nu,strl);
}
程序運行后的輸出結果是
A)ABCDDEFEDBD
B)abcDDfefDbD
C)abcAAfefAbA
D)Abcddfefdbd
(50)若以下定義:
structlink
{intdata;
structlink*next;
}a,b,c,*p,*q;
且變量a和b之間J有如下圖所示的鏈表結構:
指針p指向變量a,q指向變量c。則能夠把c插入到a和b之間并形成新的鏈表的語句
組是:
A)a.next=c;c.next=b;
B)p.next=q;q.next=p.next;
C)p->next=&c;q->next=p->next;
D)(*p).next=q;(*q),next=&b;
二、填空題
(1)算法的基本特征是可行性、確定性、【1】和擁有足夠的情報。
解析:算法是指解題方案的準確而完整的描述。它有4個基本特征,分別是可行性、確定
性、有窮性和擁有足夠的情報。
(2)在長度為n的有序線性表中進行二分查找。最壞的情況下,需要的比較次數為【2】。
解析:對于長度為n的有序線性表,在最壞情況下,二分查找只需要比較log2n次,而順
序查找需要比較n次。
(3)在面向對象的程序設計中,類描述的是具有相似性質的一組【3】。
解析:將屬性、操作相似的對象歸為類,也就是說,類是具有共同屬性、共同方法的對象
的集合。
(4)通常,將軟件產品從提出、實現、使用維護到停止使用退役的過程稱為【4】o
解析:軟件產品從考慮其概念開始,到該軟件產品不能使用為止的整個時期都屬于軟件生
命周期。一般包括可行性研究與需求分析、設計、實現、測試、交付使用以及維護等活動。
(5)數據庫管理系統常見的數據模型有層次模型、網狀模型和【5】3種。
解析:數據庫管理系統是位于用戶與操作系統之間的一層系統管理軟件,是一種系統軟件,
是用戶與數據庫之間的一個標準接口。其總是基于某種數據模型,可以分為層次模型、網狀
模型和關系模型。
(6)設y是int型,請寫出y為奇數的關系表達式【6】。
答案(y%2尸=1
(7)設inta=5,b=6,表達式(++a=b—)?++a:--b的值是[7]。
解析:此表達式為三目運算符,++a的值為6,b——的值為6,則整個表達式的值為++a
的值,++a的值為7。請注意前綴++,-和后綴++,—的區(qū)別。
(8)下列程序的輸出結果是[8L
maim()
{charb[]="Helloyou";
b[5]=0;
printf("%s\n",b);}
解析:語句b[5]=0:相當于語句b[5]='\0',且''0'為字符串結束標志,輸出時
遇到''0'就停止輸出。
(9)當調用函數時,實參是一個數組名,則向函數傳遞的是[91
解析:在函數中,可以通過指針變量來引用調用函數中對應的數組元素,此操作是通過傳
遞數組的首地址來實現。
(10)以下程序的輸出結果是【10】。
inta=1234;
printf("-\n",a);
解析:在%與格式符之間插入一個整形數來指這輸出寬度,并不影響數據的完整性,當插
入的寬度小于實際的寬度時,則實際的寬度輸出。
(11)用高級語言編寫的程序稱為【11】程序,它可以通過解釋程序翻譯一句執(zhí)行一句的
方式執(zhí)行,也可以通過編譯程序一次翻譯產生目標程序,然后執(zhí)行。
解析:用高級語言編寫的程序稱為源程序,源程序不能在計算機上直接運行,運行源程序
有兩種方式:一種是通過解釋程序,對源程序逐句解釋執(zhí)行;另一種是先讓編譯程序將源程
序一次翻譯產生目標程序(目標程序是計算機可直接執(zhí)行的機器語言程序,它是一種二進制
代碼程序),然后執(zhí)行目標程序。
(12)以下程序的輸出結果是【12】。
main()
{inta=0;
a+=(a=8);
printf("%d\n",a);}
解析:賦值表達式的值就是所賦值變量的值,本題中a+=8相當于a=a+8,對表達式逐步進
行求解:
a+=(a=8)此時,a的值由于賦值為8,而不是0
a+=8
a=a+8
a=16
(13)函數voidfun(float*sn,intn)的功能是:根據以下公式計算S,計算結果通過形參指
針sn傳回;n通過形參傳入,n的值大于等于0。請?zhí)羁铡?/p>
1―1
S
voidfun(float*sn,intn)
{floats=0.0,w,f=-1.0;
inti=0;
for(i=0;i<=n;i++)
{4[13]*f;
w=f7(2*i+l);
s+=w;}
[14]=s;}
解析:C語言中實參變量和形參變量的數據傳遞是單向的“值傳遞”方式。指針變量作函
數也要遵循這一規(guī)則。調用函數不可能改變實參指針變量的值,但可以改變實參指針變量所
指變量的值。
(14)函數ftin的功能是:根據以下公式求p的值,結果由函數值返回。m與n為兩個正數
且要求m>no
F=
。!(m-n)I
例如:m=12,n=8時,運行結果應該是495.000000。請在題目的空白處填寫適當的程序語
句,將該程序補充完整。
#include
#include
floatfiin(intm,intn)
{inti;
doublep=1.0;
for(i=l;i<=m;i-H-)【15】;
for(i=l;i<=n;i-H-)[16];
for(i=l;i<=m-n;i++)p=p/i;
returnp;}
main()
{clrscr();
printf("p=%f\n\fun(12,8));}
解析:本題中,欲求p的值,需要先求m,n,m?n的階乘值,可用循環(huán)語句實現。
(15)該程序運行的結果是【17】。
#include
#include
#defineM100
voidfun(intm,int*a,int*n)
{inti,j=0;
for(i=l;i<=m;i-H-)
if(i%7==0||i==0)
a[j++]=i;
*n=j;}
main()
{intaa[M],n,k;
clrscr();
ftin(10,aa,&n);
for(k=0;kif((k+1)==0)printf("\n");
elseprintf(nMH,aa[k]);
printf("\nn);}
解析:解答本題的關鍵是要讀懂程序,試題要找出能被7或11整除的所有整數,注意數學
中的“或”和C語言中的“或”的區(qū)別,但在此處,if條件語句中用了“『'運算符,若要
找能同時被7和11整除的所有整數則在if()中應用“&&”運算符。
當然,如果m的值輸入50,即表達式firn(10,aa,&n);為ftin(50,aa,&n);時輸入結果為:
711142122283335424449。
(16)下列程序的功能是:求出ss所指字符串中指定字符的個數,并返回此值。
例如,若輸入字符串123412132,輸入字符1,則輸出3,請?zhí)羁铡?/p>
#include
#include
#defineM81
intfun(char*ss,charc)
{inti=0;
for(;【18];ss++)
if(*ss==c)i-HF;
returni;}
main()
{chara[M],ch;
clrscr();
printf("\nPleaseenterastring:");gets(a);
printf("\nPleaseenterachar:");ch=getchar();
printf("\nThenumberofthecharis:%d\n",fun(a,ch));}
解析:從字符串ss中找出子字符串的方法是:從第1個字符開始,對字符串進行遍歷;若
SS串的當前字符等于t串的第1個字符,兩字符串的指針自動加1,繼續(xù)比較下一個字符;
若比較至字符串的結尾,則跳出循環(huán);若SS串的字符和C串的字符對應不同,繼續(xù)對SS串
的下一個字符進行處理。本程序是采用逐一比較的方式找出出現的次數。循環(huán)的作用是在串
中從左到右逐一走動,if()的作用是進行判斷是否相同,若與C相同則表示又出現一次。
(17)下面程序把從終端讀入的文本(用@作為文本結束標志)輸出到一個名為bi.dat的新
文件中,請?zhí)羁铡?/p>
#include"stdio.h"
FILE*fp;
{charch;
if((fp=fbpen([19]))=NULL)exit(0);
while((ch=getchar())fputc(ch,fp);
fclose(fp);}
解析:fbpen函數的調用方式通常為:
FILE*fp
fp=fopen(文件名,使用文件方式);
(18)設有如下宏定義
#defineMYSWAP(z,x,y)
{z=x;x=y;y=z;}
以下程序段通過宏調用實現變量a,b內容交換,請?zhí)羁铡?/p>
floata=5,b=16,c;
MYSWAP([20],a,b);
解析:該題考查兩個知識點:
(1)用一個指定的標識符(即名字)來代表一個字符串,它的?般形式為#define標識符字
符串
(2)在MYSWAP宏定義中,利用中間變量z來交換x和y的值,所以要實現a和b的交
換,只需通過中間變量即可,所以,此處應填c。
計算機等級考試二級C語言考前密卷答案(1)
選擇題
01-05CDBDD06-10CDCCB
11-15CABBB16-20ABBBA
21-25CCADB26-30DBDBC
31-35ADCCA36-40CAAAD
41-45CABBA46-50BDDBD
計算機等級考試二級C語言考前密卷(2)
一、選擇題
(1)已知一棵二叉樹前序遍歷和中序遍歷分別為ABDEGCFH和DBGEACHF,則該二叉樹
的后序遍歷為
A)GEDHFBCA
B)DGEBHFCA
C)ABCDEFGH
D)ACBFEDHG
(2)樹是結點的集合,它的根結點數目是
A)有且只有1
B)1或多于1
C)0或1
D)至少2
(3)如果進棧序列為el,e2,e3,e4,則可能的出棧序列是
A)e3,el,e4,e2
B)e2,e4,e3,el
C)e3,e4,el,e2
D)任意順序
(4)在設計程序時,應采納的原則之一是
A)不限制goto語句的使用
B)減少或取消注解行
C)程序越短越好
D)程序結構應有助于讀者理解
(5)程序設計語言的基本成分是數據成分、運算成分、控制成分和
A)對象成分
B)變量成分
C)語句成分
D)傳輸成分
(6)下列敘述中,不屬于軟件需求規(guī)格說明書的作用的是
A)便于用戶、開發(fā)人員進行理解和交流
B)反映出用戶問題的結構,可以作為軟件開發(fā)工作的基礎和依據
C)作為確認測試和驗收的依據
D)便于開發(fā)人員進行需求分析
(7)下列不屬于軟件工程的3個要素的是
A)工具
B)過程
C)方法
D)環(huán)境
(8)單個用戶使用的數據視圖的描述稱為
A)外模式
B)概念模式
C)內模式
D)存儲模式
(9)將E-R圖轉換到關系模式時,實體與聯系都可以表示成
A)屬性
B)關系
C)鍵
D)域
(10)SQL語言又稱為
A)結構化定義語言
B)結構化控制語言
C)結構化查詢語言
D)結構化操縱語言
(11)下列敘述中正確的是
A)C語言編譯時不檢查語法
B)C語言的子程序有過程和函數兩種
C)C語言的函數可以嵌套定義
D)C語言的函數可以嵌套調用
(12)在C語言中,退格符是
A)\n
B)\t
C)\f
D)\b
(13)以下敘述中正確的是
A)構成C程序的基本單位是函數
B)可以在一個函數中定義另一個函數
C)main()函數必須放在其他函數之前
D)所有被調用的函數一定要在調用之前進行定義
(14)在C程序中,判邏輯值時,用''非0”表示邏輯值“真”,又用“0”表示邏輯值“假”。
在求邏輯值時,用()表示邏輯表達式值為“真",又用()表示邏輯表達式值為“假”。
A)10
B)01
C)非0非0
D)11
(15)在C語言中,運算對象必須是整型數的運算符是
A)%
B)\
C)%和\
D)**
(16)字符型數據在機器中是用ASCH碼表示的,字符“5”和“7”在機器中表示為
A)10100011和01110111
B)01000101和01100011
C)00110101和00110111
D)01100101和01100111
(17)若已定義:inta=25,b=14,c=19;以下三目運算符(?:)所構成語句的執(zhí)行后
a<=25&&b-<=2&&c?printf("***a=%d,b=%d,c=%d\n",a,b,c):printf
("###a=%d,b=%d,c=%d\n",a,b,c);程序輸出的結果是
A)***a=25,b=13,c=19
B)***a=26,b=14,c=19
C)###a=25,b=13,c=19
D)###a=26,b=14,c=19
(18)若有定義:inta=7;floatx=2.5,y=4.7;則表達式x+a%3*(int)(x+y)%2/4的值是
A)2.500000
B)2.750000
C)3.500000
D)0.000000
(19)下列程序段的輸出結果是:
inta=1234;
floatb=123.456;
doublec=12345.54321;
printf("?,%2.1f,%2.1P,a,b,c);
A)無輸出
B)12,123.5,12345.5
C)1234,123.5,12345.5
D)1234,123.4,1234.5
(20)若運行以下程序時,從鍵盤輸入ADescriptor(表示回車),則下面程序的運行結果是
#include
main()
{charc;
intv0=l,vl=0,v2=0;
do{switch(c=getchar())
{case1a':caseA':
case'e':case'E’:
case'i':case'1':
case1o':case'O’:
case'u':caserU':vl+=l;
default:v0+=1;v2+=1;}
}while(c!='\n');
printf("v0=%d,v1=%d,v2=%d\nn,v0,v1,v2);}
A)v0=7,vl=4,v2=7
B)v0=8,vl=4,v2=8
C)v0=ll,vl=4,v2=ll
D)v0=13,vl=4,v2=12
(21)設有以下程序段
intx=0,s=0;
while(!x!=0)s+=++x;
printf("%d",s);
則
A)運行程序段后輸出0
B)運行程序段后輸出1
C)程序段中的控制表達式是非法的
D)程序段執(zhí)行無限次
(22)有如下程序
main()
{floatx=2.0,y;
if(x<0.0)y=0.0;
elseif(x>10.0)y=1.0/x;
elsey=1.0;
printf("%f\n",y);}
該程序的輸出結果是
A)0.000000
B)0.250000
C)0.500000
D)1.000000
(23)執(zhí)行下面的程序段后,變量k中的值為
intk=3,s[2];
s[0]=k;k=s[1]*10;
A)不定值
B)33
C)30
D)10
(24)以下程序段的描述,正確的是
x=-l;
do
{x=x*x;}
while(!x);
A)是死循環(huán)
B)循環(huán)執(zhí)行兩次
C)循環(huán)執(zhí)行一次
D)有語法錯誤
(25)以下選項錯誤的是
A)main()
{intx,y,z;
x=0;y=x-l;
z=x+y;}
B)main()
{intx,y,z;
x=0,y=x+l;
z=x+y;}
C)main()
{intx;int
inty;
x=0,y=x+l;
z=x+y;}
D)main()
{intx,y,z;
x=0;y=x+l;
z=x+y,}
(26)有如下程序段
inta=14,b=15,x;
charc=1A’;
x=(a&&b)&&(c<‘B');
執(zhí)行該程序段后,x的值為
A)ture
B)false
C)0
D)1
(27)下列程序執(zhí)行后的輸出結果是
voidfund(inti);
voidfunc2(inti);
charst[]="hello,friend!H;
voidfund(inti)
{printf(M%c",st[i]);
if(i<3){i+=2;fonc2(i);}}
voidfunc2(inti)
{printf("%c",stEi]);
if(i<3){i+=2;funcl(i);}}
main()
{inti=0;fund(i);printf(M\nH);}
A)hello
B)hel
C)hlo
D)him
(28)以下函數返回a所指數組中最大值所在的下標值
fun(int*a,intn)
{inti,j=O,p;
P=j;
for(i=j;iif(a[i]>a[p]);
return(p);}
在下劃線處應填入的內容是
A)i=p
B)a[p]=a[i]
C)p=j
D)p=I
(29)下面說明不正確的是
A)chara[10]="china";
B)charaL10],*p=a;p="china"
C)char*a;a-*china";
D)chara[10],*p;p=a=nchina"
(30)以下程序的輸出結果是
#include
voidprt(int*x,int*y,int*z)
{printf(n%d,%d,%d\nn,-H-*x,-H-*y,*(z++));}
main()
{inta=10,b=40,c=20;
prt(&a,&b,&c);
prt(&a,&b,&c);}
A)11,42,31
12,22,41
B)11,41,20
12,42,20
C)11,21,40
11,21,21
D)11,41,21
12,42,22
(31)若有函數內部說明:inta[3][4];則數組a中各元素
A)可在程序的運行階段得到初值0
B)可在程序的編譯階段得到初值0
C)不能得到確定的初值
D)可在程序的編譯或運行階段得到初值0
(34)定義如下變量和數組:
intk;
inta[3][3]={9,8,7,6,5,4,321};
則下面語句的輸出結果是
fbr(k=0;k〈3;k++)printf("%d”,a[k][k]);
A)753
B)951
C)963
D)741
(35)下列程序執(zhí)行后的輸出結果是
main()
{chararr[2][4];
strcpy(arr,"you");strcpy(arr[1]Jme“);
arr[0][3]=';
printf("%s\n”,arr);}
A)you&me
B)you
C)me
D)err
(36)有以下函數
charfiin(char*p)
{returnp;}
該函數的返回值是
A)無確切的值
B)形參p中存放的地址值
C)一個臨時存儲單元的地址
D)形參p自身的地址值
(37)以下正確的說法是
A)定義函數時,形參的類型說明可以放在函數體內
B)return后邊的值不能為表達式
C)如果函數值的類型與返回值類型不一致,以函數值類型為準
D)如果形參與實參類型不一致,以實參類型為準
(38)有以下程序
intf(intn)
{if(n==l)return1;
elsereturnf(n-1)+1;}
main()
{inti,j=O;
for(i=l;i〈3;i++)j+=f(i);
printf("%d\n\j);}
程序運行后的輸出結果是
A)4
B)3
C)2
D)1
(39)設有如下定義:
strucksk
{inta;
floatb;
}data;
int*p;
若要使P指向data中的a域,正確的賦值語句是
A)p=&a;
B)p=data.a;
C)p=&data.a;
D)*p=data.a;'
(40)以下對結構體類型變量的定義中,不正確的是
A)typedefstructaa
{intn;
floatm;
}AA;
AAtdl;
B)#defineAAstructaa
AA{intn;
floatm;
}tdl;
C)struct
{intn;
floatm;
}aa;
structaatdl;
D)struct
{intn;
floatm;
}tdl;
(41)若說明int*p,n;則通過語句scanf能夠正確讀入數據的程序段是
A)p=&n;scanf("%d”,&p);
B)p=&n;scanf("%d",*p);
C)scanf(u%d",n);
D)p=&n;scanf(n%dn,p);
(42)在下述程序中,判斷i刁共執(zhí)行的次數是
main()
{inti=0,j=10,k=2,s=0;
for(;;)
{i+=k;
if(i>j)
{printf(”%d”,s);
break;
}s+=i;
}
)
A)4
B)7
C)5
D)6
(43)以下4個選項中,不能看做一條語句的是
A);
B)a=5,b=2.5,c=3.6;
C)if(a<5);
D)if(b!=5)x=2;y=6;
(44)在C語言中,變量的隱含存儲類別是
A)auto
B)static
C)extern
D)無存儲類別
(45)若有以下程序
//include
voidf(intn);
main()
{voidf(intn);
f(5);
}
voidf(intn)
{printf(n%d\nH,n);}
則以下敘述中不正確的是
A)若只在主函數中對函數f進行說明,則只能在主函數中正確調用函數f
B)若在主函數前對函數f進行說明,則在主函數和其后的其他函數中都可以正確調用
函數f
C)對于以上程序,編譯時系統會提示出錯信息:提示對f函數重復說明
D)函數f無返回值,所以可用void將其類型定義為無返回值型
(46)若有下面的說明和定義
structtest
{intml;charm2;floatm3;
unionuu{charul[5];intu2[2];}ua;
}myaa;
則sizeof(structtest)的值是
A)12
B)16
C)14
D)9
(47)以下程序的輸出是
structst
{intx;int*y;}*p;
intdt[4]={10,20,30,40};
structstaa[4]={50,&dt[0],60,&dt[0],60,&dtL0],60,&dt[0]};
main()
{P=aa;
printf("%d\n",++(p->x));
)
A)10
B)11
C)51
D)60
(48)若有運算符w,sizeof,八,&=,則它們按優(yōu)先級由高至低的正確排列次序是
A)sizeof,&=,?,A
B)sizeof,?,A,&=
C)A,?,sizeof,&=
D)?,A,&=,sizeof
(49)函數代eek(pf,OL,SEEK_END)中的SEEK_END代表的起始點是
A)文件開始
B)文件末尾
C)文件當前位置
D)以上都不對
(50)有以下程序
#include
main()
{FILE*fp;inti=20,j=30,k,n;
fp=fopen(ndl.datn,"wn);
fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);
fclose(fp);
fp=fopen("dl.dat","r");
fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);
fclose(fp);
)
程序運行后的輸出結果是
A)2030
B)2050
C)3050
D)3020
二、填空題
(1)數據結構分為邏輯結構與存儲結構,線性鏈表屬于【1】。
解析:數據的邏輯結構是指反映數據元素之間邏輯關系的數據結構;數據的存儲結構是指
數據的邏輯結構在計算機存儲空間中的存放形式。在數據的存儲結構中,不僅要存放各數據
元素的信息,還需要存放各數據元素之間的前后件關系的信息。
(2)在面向對象方法中,類之間共享屬性和操作的機制稱為【2】。
解析:類是面向對象語言中必備的程序語言結構,用來實現抽象數據類型。類與類之間的
繼承關系實現了類之間的共享屬性和操作,一個類可以在另一個已定義的類的基礎上定義,
這樣使該類型繼承了其超類的屬性和方法,當然,也可以定義自己的屬性和方法。
(3)耦合和內聚是評價模塊獨立性的兩個主要標準,其中【3】反映了模塊內各成分之間
的聯系。
解析:內聚性是一個模塊內部各個元素間彼此結合的緊密程度的度量,內聚是從功能角度
來度量模塊內的聯系;耦合性是模塊間互相連接的緊密程度的度量。
(4)一個項目具有一個項目主管,一個項目主管可管理多個項目,則實體"項目主管"與實
體"項目"的聯系屬于【4】的聯系。
解析:兩個實體集間的聯系實際上是實體集間的函數關系,這種函數關系可以有3種,即
一對一(1:1)的聯系、一對多(1:N)或多對一(N:1)的聯系和多對多(N:N)的聯
系。
(5)數據庫設計分為以下6個設計階段:需求分析階段、【5】、邏輯設計階段、物理設
計階段、實施階段、運行和維護階段。
解析:數據庫設計分為以下6個設計階段:需求分析階段、概念設計階段、邏輯設計階段、
物理設計階段、實施階段及數據庫運行和維護階段。
(6)以下程序的運行結果是【6】。
#defineMAX(a,b)(a>b?a:b)+1
main()
{inti=6J=8,k;
printf("%d\n",MAX(i,j));
解析:本題考查宏定義與三目運算符的綜合用法,宏定義是原樣替換,本題中,如果a>b
成立,則a+1的值為整個表達式的值,否則為b+1的值為整個表達式的值,(應注意后面的
加1)?
(7)以下程序的功能是從健盤輸入若干學生的成績,并輸出最高成績和最低成績,當輸入
負數時結束。請?zhí)羁铡?/p>
main()
{floatx,amax,amin;
scanf("%f,,&x);
amax=x;
amin=x;
while([7])
{if(x>amax)
amax=x;
else
if[8]
amin=x;
elsescanf("%f\&x);
}
printf("\namax=%f\namin=%f\nu,amax,aiTiin);
}
解析:本題先從鍵盤接受數值,并分別賦給amax(用于保存最高成績)和amin(用干保
存最低成績),然后通過while循環(huán)控制是否結束輸入,并且通過if語句來給amax和amin
賦值和進行下一次的輸入。
(8)在對文件操作的過程中,若要求文件的位置指針回到文件的開始處,應當調用的函數
是【9】。
答案;rewind()
(9)在計算機中,字符的比較是對它們的【10】進行比較。
解析:C語言中,字符也可以進行比較運算,且是按照ASCH碼值進行的。
(10)在內存中,存儲字符'X,要占用1個字節(jié),存儲字符串"X"要占用【111個字節(jié)。
解析:計算機存儲--個字符用1個字節(jié),存儲字符串時,每個字符用占用1個字節(jié),另在
字符串的有效字符之后存儲1個字符串的結束標記符。所以存儲字符串“X”要占用2個字
節(jié),存儲字符‘X,只要1個字節(jié)。
(11)下列程序的輸出結果是16.00,請?zhí)羁铡?/p>
main()
{inta=9,b=2;
floatx=[12],y=l.l,z;
z=a/2+b*x/y+l/2;
printf("%5.2f\n",z);
解析:本題最后一條語句,表示以浮點格式輸出z的值,寬度為5,其中所含2位小數,
應該注意的是,兩個整型運算結果仍為整型,如1/2的結果為0,對本題可逐步求解:
16.00=9/2+2*x/l.1+1/2
16.00=4+2*x/l.l+0
12.00=2*x/l.l
所以,x的值為6.6o
(12)設在主函數中有以下定義和函數調用語句,且fim函數為void類型;請寫出ftm函數
的首部【13]。要求形參名為b。
main()
{doubles[10][22];
intn;?
?
?
fun(s);
解析:本題中,為了明確表示“不帶回值”,可以用“void”定義“無類型”(或稱“空類
型”)。這系統就保證不使函數帶回任何值,二維數組的第一維可以省略。
(13)下列程序的功能是輸入?個整數,判斷是否是素數,若為素數輸出1,否則輸出0,
請?zhí)羁铡?/p>
main()
{inti,x,y=l;
scanf("%d",&x);
for(i=2;i<=x/2;i++)
if[14]{y=0;break;}
printf("%d\n",y);
}
解析:為判數x是否是素數,預置變量y的值為1(x可能是素數),然后用循環(huán),用2至
x/2的整數i測試對x的整除性,若能被其中的某個整數整除,則x是合數,置y的值為0
(x不是素數),結束測試循環(huán)。若都不能整除,則x為素數。i能否整除x,可用求余運算
x%i等于0來判定。所以程序中的空框可填x%i==0。測試x為素數的代碼可寫成:y=1;
for(i=2;i<=x/2;i++)
if(x%i=0){y=0;break;}
(14)下面程序的功能是將一個字符串str的內容顛倒過來,請?zhí)羁铡?/p>
#include
main()
{intij,[15];charstr[]={"1234567");
for(i=Oj=strlen(str)[16];i{k=str[i];strEi]=str[j];strEj]=k;}
printf("%s\n",str);
}
解析:顛倒一個字符串中的字符,就是首尾對應的元素兩兩交換。簡單地可用兩個游標變
量i和j,i是前端元素的下標,j是后端元素的下標,交換以這兩個變量值為下標的元素str
[i]和str[jL開始時,i的值為0,j的值為字符串末元素的F
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 明確責任的工作目標設定計劃
- 如何提升財務團隊的協作效率計劃
- 2025年鞋用乳液膠粘劑項目合作計劃書
- 2025年醫(yī)用冷療項目發(fā)展計劃
- 2025年其它核材料及相關特殊材料合作協議書
- 遠程在線教育平臺學習免責協議
- 電動汽車充電樁安裝施工合同
- Rac-Ganoderic-acid-C2-生命科學試劑-MCE
- 財務顧問聘用協議
- 工作總結寫作培訓
- 酒店工作安全培訓(共60張課件)
- 2024年委托招商代理合同經典版(三篇)
- 新課標背景下“教學評一體化”評的策略
- 兒童兒童矮身材臨床診治矮身材臨床診治
- 早產兒護理查房課件圖
- 2.3.1直線與平面垂直的判定(公開課)省公開課獲獎課件說課比賽一等獎課件
- 03S702鋼筋混凝土化糞池-標準圖集
- 自我保護-保護自己勇敢說不
- 安全設施檢查維護保養(yǎng)記錄表
- 滴定管的使用
- 部編版道德與法治四年級下冊第一單元課時備課
評論
0/150
提交評論