一、選擇題((1)-(10)每題2分,(11)-(50)每題1分.共60分))
下列各題A)、B)、C)、D)四個選項中,只有一個是正確的,請將正確選項涂寫在答題卡上,答在試卷上不得分。
(1)軟件是指
A)程序 B)程序和文檔
C)算法加數(shù)據(jù)結構 D)程序、數(shù)據(jù)和相關文檔的集合
(2)軟件調(diào)試的目的是
A)發(fā)現(xiàn)錯誤 B)改正錯誤
C)改善軟件的性能 D)驗證軟件的正確性
(3)在面向?qū)ο蠓椒ㄖ校瑢崿F(xiàn)信息隱蔽是依靠
A)對象的繼承 B)對象的多態(tài)
C)對象的封裝 D)對象的分類
(4)下列敘述中,不符合良好程序設計風格的是
A)程序的效率第一,清晰第二 B)程序的可讀性好
C)程序中有必要的注釋 D)輸入數(shù)據(jù)前要有提示信息
(5)下列敘述中正確的是
A)程序執(zhí)行的效率與數(shù)據(jù)的存儲結構密切相關
B)程序執(zhí)行的效率只取決于程序的控制結構
C)程序執(zhí)行的效率只取決于所處理的數(shù)據(jù)量
D)以上三種說法都不對
(6)下列敘述中正確的是
A)數(shù)據(jù)的邏輯結構與存儲結構必定是一一對應的
B)由于計算機存儲空間是向量式的存儲結構,因此,數(shù)據(jù)的存儲結構一定是線性結構
C)程序設計語言中的數(shù)組一般是順序存儲結構,因此,利用數(shù)組只能處理線線結構
D)以上三種說法都不對
(7)冒泡排序在最壞情況下的比較次數(shù)是
A)n(n+1)/2 B)nlog2n C)n(n-1)/2 D)n/2
(8)一棵二叉樹中共有70個葉子結點與80個度為1的結點,則該二叉樹中的總結點數(shù)為
A)219 B)221 C)229 D)231
(9)下列敘述中正確的是
A)數(shù)據(jù)庫系統(tǒng)是一個獨立的系統(tǒng),不需要操作系統(tǒng)的支持
B)數(shù)據(jù)庫技術的根本目標是要解決數(shù)據(jù)的共享問題
C)數(shù)據(jù)庫管理系統(tǒng)就是數(shù)據(jù)庫系統(tǒng)
D)以上三種說法都不對
(10)下列敘述中正確的是
A)為了建立一個關系,首先要構造數(shù)據(jù)的邏輯關系
B)表示關系的二維表中各元組的每一個分量還可以分成若干數(shù)據(jù)項
C)一個關系的屬性名表稱為關系模式
D)一個關系可以包括多個二維表
(11)C語言源程序名的后綴是
A).exe B).C C).obj D).cp
(12)可在C程序中用做用戶標識符的一組標識符是
A)and B)Date C)Hi D)case
_2007 y-m-d Dr.Tom Bigl
(13)以下選項中,合法的一組C語言數(shù)值常量是
A)028 B)12. C).177 D)0x8A
. 5e-3 OXa23 4c1.5 10,000
-0xf 4.5e0 Oabc 3.e5
(14)以下敘述中正確的是
A)C語言程序?qū)脑闯绦蛑械谝粋€函數(shù)開始執(zhí)行
B)可以在程序中由用戶指定任意一個函數(shù)作為主函數(shù),程序?qū)拇碎_始執(zhí)行
C)C語言規(guī)定必須用main作為主函數(shù)名,程序?qū)拇碎_始執(zhí)行,在此結束
D)main可作為用戶標識符,用以命名任意一個函數(shù)作為主函數(shù)
(15)若在定義語句:int a,b,c,*p=&c;之后,接著執(zhí)行以下選項中的語句,則能正確執(zhí)行的語句是
A)scanf("%d",a,b,c); B)scanf("%d%d%d",a,b,c);
C)scanf("%d",p); D)scanf("%d",&p);
(16)以下關于long、int和short類型數(shù)據(jù)占用內(nèi)存大小的敘述中正確的是
A)均占4個字節(jié) B)根據(jù)數(shù)據(jù)的大小來決定所占內(nèi)存的字節(jié)數(shù)
C)由用戶自己定義 D)由C語言編譯系統(tǒng)決定
(17)若變量均已正確定義并賦值,以下合法的C語言賦值語句是
A)x=y==5; B)x=n%2.5; C)x+n=I; D)x=5=4+1;
(18)有以下程序段
int j; float y; char name[50];
scanf("%2d%f%s",&j,&y,name);
當執(zhí)行上述程序段,從鍵盤上輸入55566 7777abc后,y的值為
A)55566.0 B)566.0 C)7777.0 D)566777.0
(19)若變量已正確定義,有以下程序段
i=0;
do printf("%d,",i);while(i++);
printf("%d\n",i)
其輸出結果是
A)0,0 B)0,1 C)1,1 D)程序進入無限循環(huán)
(20)有以下計算公式
若程序前面已在命令中包含math.h文件,不能夠正確計算上述公式的程序段是
A)if(x>=0) y=sqrt(x); B)y=sqrt(x)
else y=sqrt(-x); if(x<0) y=sqrt(-x);
C)if(x>=0)y=sqrt(x); D)y=sqrt(x>=0?x:-x);
If(x<0)y=sqrt(-x);
(21)設有條件表達式:(EXP)?i++;j--,則以下表達式中(EXP)完全等價的是
A)(EXP= =0) B)(EXP!=0) C)(EXP= =1) D)(EXP!=1)
(22)有以下程序
#include
main()
{int y=9;
for( y>0;y--)
if(y%3= =0) printf("%d",--y);
}
程序的運行結果是
A)741 B)963 C)852 D)875421
(23)已有定義:char c; ,程序前面已在命令行中包含ctype.h文件,不能用于判斷c中的字符是否為大寫字母的表達式是
A)isupper(c) B)’A’<=c<=’Z’
C)’A’<=c&&c<=’Z’ D)c<=(‘2’-32)&&(‘a(chǎn)’-32)<=c
(24)有以下程序
#include
main()
{int i,j,m=55;
for(i=1;i<=3;i++)
for(j=3;j<=i;j++) m=m%j;
printf("%d\n",m);
}
程序的運行結果是
A)0 B)1 C)2 D)3
(25)若函數(shù)調(diào)用時的實參為變量時,以下關于函數(shù)形參和實參的敘述中正確的是
A)函數(shù)的實參和其對應的形參共占同一存儲單元
B)形參只是形式上的存在,不占用具體存儲單元
C)同名的實參和形參占同一存儲單元
D)函數(shù)的形參和實參分別占用不同的存儲單元
(26)已知字符’A’的ASCⅡ代碼值是65,字符變量c1的值是’A’,c2的值是’D’。執(zhí)行語句printf("%d,%d",c1,c2-2);后,輸出結果是
A)A,B B)A,68 C)65,66 D)65,68
(27)以下敘述中錯誤的是
A)改變函數(shù)形參的值,不會改變對應實參的值
B)函數(shù)可以返回地址值
C)可以給指針變量賦一個整數(shù)作為地址值
D)當在程序的開頭包含文件stdio.h時,可以給指針變量賦NULL
(28)以下正確的字符串常量是
A)"\\\" B)’abc’ C)OlympicGames D)""
(29)設有定義:char p[]={’1’,’2’,’3’},*q=p; ,以下不能計算出一個char型數(shù)據(jù)所占字節(jié)數(shù)的表達式是
A)sizeof(p) B)sizeof(char) C) sizeof(*q) D)sizeof(p[0])
(30)有以下函數(shù)
int aaa(char *s)
{char *t=s;
while(*t++);
t--;
return(t-s);
}
以下關于aaa函數(shù)的功能敘述正確的是
A)求字符串s的長度 B)比較兩個串的大小
C)將串s復制到串t D)求字符串s所占字節(jié)數(shù)
(31)若有定義語句:int a[3][6]; ,按在內(nèi)存中的存放順序,a數(shù)組的第10個元素是
A)a[0][4] B)a[1][3] C)a[0][3] D)a[1][4]
(32)有以下程序
#include
void fun(char **p)
{++p; printf("%s\n",*p);}
main()
{char *a[]={"Morning","Afternoon","Evening","Night"};
fun(a);
}
程序的運行結果是
A)Afternoon B)fternoon C)Morning D)orning
(33)若有定義語句:int a[2][3],*p[3]; ,則以下語句中正確的是
A)p=a; B)p[0]=a; C) p[0]=&a[1][2]; D)p[1]=&a;
(34)有以下程序
#include
void fun(int *a,int n)/*fun函數(shù)的功能是將a所指數(shù)組元素從大到小排序*/
{int t,i,j;
for(i=0;i for(j=i+1;j if (a}
main()
{int c[10]={1,2,3,4,5,6,7,8,9,0},i;
fun(c+4,6);
for (i=0;i<10;i++) printf("%d,",c);
printf("\n");
}
程序運行的結果是
A)1,2,3,4,5,6,7,8,9,0, B)0,9,8,7,6,5,1,2,3,4,
C) 0,9,8,7,6,5,4,3,2,1, D)1,2,3,4,9,8,7,6,5,0,
(35)有以下程序
#include
int fun(char s[])
{int n=0;
while(*s<=’9’&&*s>=’0’) {n=10*n+*s-’0’;s++;}
return(n);
}
main()
{char s[10]={’6’,’1’,’*’,’4’,’*’,’9’,’*’,’0’,’*’};
printf("%d\n",fun(s));
}
程序運行的結果是
A)9 B)61490 C)61 D)5
(36)當用戶要求輸入的字符串中含有空格時,應使用的輸入函數(shù)是
A)scanf() B)getchar() C)gets() D)getc()
(37)以下關于字符串的敘述中正確的是
A)C語言中有字符串類型的常量和變量
B)兩個字符串中的字符個數(shù)相同時才能進行字符串大小的比較
C)可以用關系運算符對字符串的大小進行比較
D)空串一定比空格打頭的字符串小
(38)有以下程序:
#include
void fun(char *t,char *s)
{
while(*t!=0)t++;
while((*t++=*s++)!=0);
}
main()
{
char ss[10]=”acc”,aa[10]=”bbxxyy”;
fun(ss,aa);
printf(“%s,%s\n”,ss,aa);
}
程序運行結果是
A) accxyy , bbxxyy B) acc, bbxxyy
C) accxxyy,bbxxyy D) accbbxxyy,bbxxyy
(39)有以下程序
#include
#include
void fun(char s[][10],int n)
{
char t;int i,j;
for(i=0;i for(j=i+1,j /*比較字符串的首字符大小,并交換字符串的首字符 */
if(s[0])>s[j][0]{t=s[0];s[0]=s[j][0];s[j][0]=t;}
}
main()
{
char ss[5][10]={“bcc”,”bbcc”,”xy”,”aaaacc””aabcc”}
fun(ss,5); printf(“%s,%s\n”,ss[0],ss[4]);
}
程序運行結果是
A) xy,aaaacc B) aaaacc,xy
C) xcc,aabcc D) acc,xabcc
(40) 在一個C語言源程序文件中所定義的全局變量,其作用域為:
A) 所在文件的全部范圍 B) 所在程序的全部范圍
C) 所在函數(shù)的全部范圍 D) 由具體定義位置和extern 說明來決定范圍
(41)有以下程序
#include
int a=1;
int f(int c)
{static int a=2;
c=c+1;
return (a++)+c;}
main()
{ int i,k=0;
for(i=0;i<2;i++){int a=3;k+=f(a);}
k+=a;
printf(“%d\n”,k);
}
程序運行結果是
A) 14 B) 15
C) 16 D) 17
(42)有以下程序
#include
void fun(int n,int *p)
{ int f1,f2;
if(n==1||n==2) *p=1;
else
{ fun(n-1,&f1); fun(n-2,&f2);
*p=f1+f2;
}
}
main()
{ int s;
fun(3,&s); printf("%d\n",s);
}
程序的運行結果是
A)2 B)3 C)4 D)5
(43)若程序中有宏定義行:#define N 100 則以下敘述中正確的是
A)宏定義行中定義了標識符N的值為整數(shù)100
B)在編譯程序?qū)源程序進行預處理時用100替換標識符N
C) 對C源程序進行編譯時用100替換標識符N
D)在運行時用100替換標識符N
(44)以下關于typedef的敘述錯誤的是
A)用typedef可以增加新類型
B)typedef只是將已存在的類型用一個新的名字來代表
C)用typedef可以為各種類型說明一個新名,但不能用來為變量說明一個新名
D)用typedef為類型說明一個新名,通??梢栽黾映绦虻目勺x性
(45)有以下程序
#include
struct tt
{int x;struct tt *y;} *p;
struct tt a[4]={20,a+1,15,a+2,30,a+3,17,a};
main()
{ int i;
p=a;
for(i=1;i<=2;i++) {printf("%d,",p->x); p=p->y;}
}
程序的運行結果是
A)20,30, B)30,17 C)15,30, D)20,15,
(46)有以下程序
#include
#include
typedef struct{ char name[9];char sex; float score[2]; } STU;
STU f(STU a)
{ STU b={"Zhao",'m',85.0,90.0}; int i;
strcpy(a.name,b.name);
a. sex=b.sex;
for(i=0;i<2;i++) a.score=b.score;
return a;
}
main()
{STU c={"Qian",'f',95.0,92.0},d;
d=f(c); printf("%s,%c,%2.0f,%2.0f\n",d.name,d.sex,d.score[0],d.score[1]);
}
程序的運行結果是
A)Qian,f,95,92 B)Qian,m,85,90 C)Zhao,m,85,90 D)Zhao,f,95,92
(47)設有以下定義
union data
{ int d1; float d2; }demo;
則下面敘述中錯誤的是
A)變量demo與成員d2所占的內(nèi)存字節(jié)數(shù)相同
B)變量demo中各成員的地址相同
C)變量demo和各成員的地址相同
D)若給demo.d1賦99后, demo.d2中的值是99.0
(48)有以下程序
#include
main()
{ int a=1,b=2,c=3,x;
x=(a^b)&c; printf("%d\n",x);
}
程序的運行結果是
A)0 B)1 C)2 D)3
(49)讀取二進制文件的函數(shù)調(diào)用形式為:fread(buffer,size,count,fp); ,其中buffer代表的是
A)一個文件指針,指向待讀取的文件
B)一個整型變量,代表待讀取的數(shù)據(jù)的字節(jié)數(shù)
C)一個內(nèi)存塊的首地址,代表讀入數(shù)據(jù)存放的地址
D)一個內(nèi)存塊的字節(jié)數(shù)
(50)有以下程序
#include
main()
{FILE *fp; int a[10]={1,2,3,0,0},i;
fp=fopen("d2.dat,"wb");
fwrite(a,sizeof(int),5,fp);
fwrite(a,sizeof(int),5,fp);
fclose(fp);
fp=fopen("d2.dat","rb");
fread(a,sizeof(int),10,fp);
fclose(fp);
for(i=0;i<10;i++) printf("%d",a);
}
程序的運行結果是
A)1,2,3,0,0,0,0,0,0,0, B)1,2,3,1,2,3,0,0,0,0,
C)123,0,0,0,0,123,0,0,0,0, D)1,2,3,0,0,1,2,3,0,0,
二、填空題(每空2分,共40分)
請將每一個空的正確答案寫在答題卡[1]至[20]序號的橫線上,答在試卷上不得分.
(1) 軟件需求規(guī)格說明書應具有完整性、無歧義性、正確性、可驗證性、可修改性等特性,其中最重要的_[1]_______.
(2) 在兩種基本測試方法中, _[2]_______測試的原則之一是保證所測模塊中每一個獨立路徑至少要執(zhí)行一次.
(3) 線性表的存儲結構主要分為順序存儲結構和鏈式存儲結構.隊列是一種特殊的線性表,循環(huán)隊列是隊列的_[3]_______存儲結構.
(4) 對下列二叉樹進行中序遍歷的結果為_[4]_______
F
/ \
C E
/ \ \
A D G
/ / \
B H P
(5) 在E-R圖中距形表示_[5]_______
(6) 執(zhí)行以下程序時輸入1234567,則輸出結果是_[6]_______.
#include
main()
{ int a=1,b;
scanf("%2d%2d",&a&b);printf("%d %d\n",a,b);
}
(7) 以下程序的功能是:輸出a、b、c三個變量中的最小值.請?zhí)羁铡?BR> #include
main()
{ int a,b,c,t1,t2;
scanf("%d%d%d",&a,&b,&c);
t1=a t2=c printf("%d\n",t2);
}
(8) 以下程序的輸出結果是_[9]_______.
#include
main()
{ int n=12345,d;
while(n!=0){ d=n%10; printf("%d",d); n/=10;}
}
(9) 有以下程序段,且變量已正確定義和賦值
for(s=1.0,k=1;k<=n;k++) s=s+1.0/(k*(k+1));
printf("s=%f\n\n",s);
請?zhí)羁?使下面程序段的功能為完全相同
s=1.0;k=1;
while(_[10]_______){ s=s+1.0/(k*(k+1)); _[11]_______;}
printf("s=%f\n\n",s);
(10) 以下程序的輸出結果是_[12]_______.
#include
main()
{ int i;
for(i='a';i<'f';i++,i++) printf("%c",i-'a'+'A');
printf("\n");
}
(11) 以下程序的輸出結果是_[13]_______.
#include
#include
char *fun(char *t)
{ char *p=t;
return(p+strlen(t)/2);
}
main()
{ char *str="abcdefgh";
str=fun(str);
puts(str);
}
(12)以下程序中函數(shù)f的功能是在數(shù)組x的n個數(shù)(假定n個數(shù)互不相同)中找出最小數(shù),將其中最小的數(shù)與第一個數(shù)對換,把的數(shù)與最后一個數(shù)對換.請?zhí)羁?
#include
viod f(int x[],int n)
{ int p0,p1,i,j,t,m;
i=j=x[0]; p0=p1=0;
for(m=0;m { if(x[m]>i) {i=x[m]; p0=m;}
else if(x[m] }
t=x[p0]; x[p0]=x[n-1]; x[n-1]=t;
t=x[p1];x[p1]= _[14]_______; _[15]_______=t;
}
main()
{ int a[10],u;
for(u=0;u<10;u++) scanf("%d",&a);
f(a,10);
for(u=0;u<10;u++) printf("%d",a);
printf("\n");
}
(13)以下程序統(tǒng)計從終端輸入的字符中大寫字母的個數(shù),num[0]中統(tǒng)計字母A的個數(shù),num[1]中統(tǒng)計字母B的個數(shù),其它依次類推.用#號結束輸入,請?zhí)羁?
#include
#include
main()
{ int num[26]={0},i; char c;
while((_[16]_______)!='#')
if(isupper(c)) num[c-‘A’]+= _[17]_______;
for(i=0;i<26;i++)
Printf("%c:%d\n",i+'A',num);
}
(14)執(zhí)行以下程序的輸出結果是_[18]_______.
#include
main()
{ int i,n[4]={1};
for(i=1;i<=3;i++)
{ n=n[i-1]*2+1; printf("%d",n); }
}
(15) 以下程序的輸出結果是_[19]_______.
#include
#define M 5
#define N M+M
main()
{ int k;
k=N*N*5; printf("%d\n",k);
}
(16)函數(shù)main()的功能是:在帶頭結點的單鏈表中查找數(shù)據(jù)域中值最小的結點.請?zhí)羁?BR> #include
struct node
{ int data;
struct node *next;
};
int min(struct node *first)/*指針first為鏈表頭指針*/
{ strct node *p; int m;
p=first->next; m=p->data;p=p->next;
for(;p!=NULL;p=_[20]_______)
if(p->datadata;
return m;
}
2007年9月全國計算機等級考試二級C語言參考答案
一、選擇題
1-5 DBCAA
6-10 CCABA
11-15 BABCC
16-20 DABBB
21-25 BCBBD
26-30 CCDAA
31-35 BACDC
36-37 CDDBC
42-45 AABAD
46-50 CDDCD
二、填空題
1、無歧義性
2、白盒測試
3、順序
4、ACBDFEHGP
5、實體集
6、12 34
7、a:b
8、c:t1
9、54321
10、k<=n
11、k++
下列各題A)、B)、C)、D)四個選項中,只有一個是正確的,請將正確選項涂寫在答題卡上,答在試卷上不得分。
(1)軟件是指
A)程序 B)程序和文檔
C)算法加數(shù)據(jù)結構 D)程序、數(shù)據(jù)和相關文檔的集合
(2)軟件調(diào)試的目的是
A)發(fā)現(xiàn)錯誤 B)改正錯誤
C)改善軟件的性能 D)驗證軟件的正確性
(3)在面向?qū)ο蠓椒ㄖ校瑢崿F(xiàn)信息隱蔽是依靠
A)對象的繼承 B)對象的多態(tài)
C)對象的封裝 D)對象的分類
(4)下列敘述中,不符合良好程序設計風格的是
A)程序的效率第一,清晰第二 B)程序的可讀性好
C)程序中有必要的注釋 D)輸入數(shù)據(jù)前要有提示信息
(5)下列敘述中正確的是
A)程序執(zhí)行的效率與數(shù)據(jù)的存儲結構密切相關
B)程序執(zhí)行的效率只取決于程序的控制結構
C)程序執(zhí)行的效率只取決于所處理的數(shù)據(jù)量
D)以上三種說法都不對
(6)下列敘述中正確的是
A)數(shù)據(jù)的邏輯結構與存儲結構必定是一一對應的
B)由于計算機存儲空間是向量式的存儲結構,因此,數(shù)據(jù)的存儲結構一定是線性結構
C)程序設計語言中的數(shù)組一般是順序存儲結構,因此,利用數(shù)組只能處理線線結構
D)以上三種說法都不對
(7)冒泡排序在最壞情況下的比較次數(shù)是
A)n(n+1)/2 B)nlog2n C)n(n-1)/2 D)n/2
(8)一棵二叉樹中共有70個葉子結點與80個度為1的結點,則該二叉樹中的總結點數(shù)為
A)219 B)221 C)229 D)231
(9)下列敘述中正確的是
A)數(shù)據(jù)庫系統(tǒng)是一個獨立的系統(tǒng),不需要操作系統(tǒng)的支持
B)數(shù)據(jù)庫技術的根本目標是要解決數(shù)據(jù)的共享問題
C)數(shù)據(jù)庫管理系統(tǒng)就是數(shù)據(jù)庫系統(tǒng)
D)以上三種說法都不對
(10)下列敘述中正確的是
A)為了建立一個關系,首先要構造數(shù)據(jù)的邏輯關系
B)表示關系的二維表中各元組的每一個分量還可以分成若干數(shù)據(jù)項
C)一個關系的屬性名表稱為關系模式
D)一個關系可以包括多個二維表
(11)C語言源程序名的后綴是
A).exe B).C C).obj D).cp
(12)可在C程序中用做用戶標識符的一組標識符是
A)and B)Date C)Hi D)case
_2007 y-m-d Dr.Tom Bigl
(13)以下選項中,合法的一組C語言數(shù)值常量是
A)028 B)12. C).177 D)0x8A
. 5e-3 OXa23 4c1.5 10,000
-0xf 4.5e0 Oabc 3.e5
(14)以下敘述中正確的是
A)C語言程序?qū)脑闯绦蛑械谝粋€函數(shù)開始執(zhí)行
B)可以在程序中由用戶指定任意一個函數(shù)作為主函數(shù),程序?qū)拇碎_始執(zhí)行
C)C語言規(guī)定必須用main作為主函數(shù)名,程序?qū)拇碎_始執(zhí)行,在此結束
D)main可作為用戶標識符,用以命名任意一個函數(shù)作為主函數(shù)
(15)若在定義語句:int a,b,c,*p=&c;之后,接著執(zhí)行以下選項中的語句,則能正確執(zhí)行的語句是
A)scanf("%d",a,b,c); B)scanf("%d%d%d",a,b,c);
C)scanf("%d",p); D)scanf("%d",&p);
(16)以下關于long、int和short類型數(shù)據(jù)占用內(nèi)存大小的敘述中正確的是
A)均占4個字節(jié) B)根據(jù)數(shù)據(jù)的大小來決定所占內(nèi)存的字節(jié)數(shù)
C)由用戶自己定義 D)由C語言編譯系統(tǒng)決定
(17)若變量均已正確定義并賦值,以下合法的C語言賦值語句是
A)x=y==5; B)x=n%2.5; C)x+n=I; D)x=5=4+1;
(18)有以下程序段
int j; float y; char name[50];
scanf("%2d%f%s",&j,&y,name);
當執(zhí)行上述程序段,從鍵盤上輸入55566 7777abc后,y的值為
A)55566.0 B)566.0 C)7777.0 D)566777.0
(19)若變量已正確定義,有以下程序段
i=0;
do printf("%d,",i);while(i++);
printf("%d\n",i)
其輸出結果是
A)0,0 B)0,1 C)1,1 D)程序進入無限循環(huán)
(20)有以下計算公式
若程序前面已在命令中包含math.h文件,不能夠正確計算上述公式的程序段是
A)if(x>=0) y=sqrt(x); B)y=sqrt(x)
else y=sqrt(-x); if(x<0) y=sqrt(-x);
C)if(x>=0)y=sqrt(x); D)y=sqrt(x>=0?x:-x);
If(x<0)y=sqrt(-x);
(21)設有條件表達式:(EXP)?i++;j--,則以下表達式中(EXP)完全等價的是
A)(EXP= =0) B)(EXP!=0) C)(EXP= =1) D)(EXP!=1)
(22)有以下程序
#include
main()
{int y=9;
for( y>0;y--)
if(y%3= =0) printf("%d",--y);
}
程序的運行結果是
A)741 B)963 C)852 D)875421
(23)已有定義:char c; ,程序前面已在命令行中包含ctype.h文件,不能用于判斷c中的字符是否為大寫字母的表達式是
A)isupper(c) B)’A’<=c<=’Z’
C)’A’<=c&&c<=’Z’ D)c<=(‘2’-32)&&(‘a(chǎn)’-32)<=c
(24)有以下程序
#include
main()
{int i,j,m=55;
for(i=1;i<=3;i++)
for(j=3;j<=i;j++) m=m%j;
printf("%d\n",m);
}
程序的運行結果是
A)0 B)1 C)2 D)3
(25)若函數(shù)調(diào)用時的實參為變量時,以下關于函數(shù)形參和實參的敘述中正確的是
A)函數(shù)的實參和其對應的形參共占同一存儲單元
B)形參只是形式上的存在,不占用具體存儲單元
C)同名的實參和形參占同一存儲單元
D)函數(shù)的形參和實參分別占用不同的存儲單元
(26)已知字符’A’的ASCⅡ代碼值是65,字符變量c1的值是’A’,c2的值是’D’。執(zhí)行語句printf("%d,%d",c1,c2-2);后,輸出結果是
A)A,B B)A,68 C)65,66 D)65,68
(27)以下敘述中錯誤的是
A)改變函數(shù)形參的值,不會改變對應實參的值
B)函數(shù)可以返回地址值
C)可以給指針變量賦一個整數(shù)作為地址值
D)當在程序的開頭包含文件stdio.h時,可以給指針變量賦NULL
(28)以下正確的字符串常量是
A)"\\\" B)’abc’ C)OlympicGames D)""
(29)設有定義:char p[]={’1’,’2’,’3’},*q=p; ,以下不能計算出一個char型數(shù)據(jù)所占字節(jié)數(shù)的表達式是
A)sizeof(p) B)sizeof(char) C) sizeof(*q) D)sizeof(p[0])
(30)有以下函數(shù)
int aaa(char *s)
{char *t=s;
while(*t++);
t--;
return(t-s);
}
以下關于aaa函數(shù)的功能敘述正確的是
A)求字符串s的長度 B)比較兩個串的大小
C)將串s復制到串t D)求字符串s所占字節(jié)數(shù)
(31)若有定義語句:int a[3][6]; ,按在內(nèi)存中的存放順序,a數(shù)組的第10個元素是
A)a[0][4] B)a[1][3] C)a[0][3] D)a[1][4]
(32)有以下程序
#include
void fun(char **p)
{++p; printf("%s\n",*p);}
main()
{char *a[]={"Morning","Afternoon","Evening","Night"};
fun(a);
}
程序的運行結果是
A)Afternoon B)fternoon C)Morning D)orning
(33)若有定義語句:int a[2][3],*p[3]; ,則以下語句中正確的是
A)p=a; B)p[0]=a; C) p[0]=&a[1][2]; D)p[1]=&a;
(34)有以下程序
#include
void fun(int *a,int n)/*fun函數(shù)的功能是將a所指數(shù)組元素從大到小排序*/
{int t,i,j;
for(i=0;i
main()
{int c[10]={1,2,3,4,5,6,7,8,9,0},i;
fun(c+4,6);
for (i=0;i<10;i++) printf("%d,",c);
printf("\n");
}
程序運行的結果是
A)1,2,3,4,5,6,7,8,9,0, B)0,9,8,7,6,5,1,2,3,4,
C) 0,9,8,7,6,5,4,3,2,1, D)1,2,3,4,9,8,7,6,5,0,
(35)有以下程序
#include
int fun(char s[])
{int n=0;
while(*s<=’9’&&*s>=’0’) {n=10*n+*s-’0’;s++;}
return(n);
}
main()
{char s[10]={’6’,’1’,’*’,’4’,’*’,’9’,’*’,’0’,’*’};
printf("%d\n",fun(s));
}
程序運行的結果是
A)9 B)61490 C)61 D)5
(36)當用戶要求輸入的字符串中含有空格時,應使用的輸入函數(shù)是
A)scanf() B)getchar() C)gets() D)getc()
(37)以下關于字符串的敘述中正確的是
A)C語言中有字符串類型的常量和變量
B)兩個字符串中的字符個數(shù)相同時才能進行字符串大小的比較
C)可以用關系運算符對字符串的大小進行比較
D)空串一定比空格打頭的字符串小
(38)有以下程序:
#include
void fun(char *t,char *s)
{
while(*t!=0)t++;
while((*t++=*s++)!=0);
}
main()
{
char ss[10]=”acc”,aa[10]=”bbxxyy”;
fun(ss,aa);
printf(“%s,%s\n”,ss,aa);
}
程序運行結果是
A) accxyy , bbxxyy B) acc, bbxxyy
C) accxxyy,bbxxyy D) accbbxxyy,bbxxyy
(39)有以下程序
#include
#include
void fun(char s[][10],int n)
{
char t;int i,j;
for(i=0;i
if(s[0])>s[j][0]{t=s[0];s[0]=s[j][0];s[j][0]=t;}
}
main()
{
char ss[5][10]={“bcc”,”bbcc”,”xy”,”aaaacc””aabcc”}
fun(ss,5); printf(“%s,%s\n”,ss[0],ss[4]);
}
程序運行結果是
A) xy,aaaacc B) aaaacc,xy
C) xcc,aabcc D) acc,xabcc
(40) 在一個C語言源程序文件中所定義的全局變量,其作用域為:
A) 所在文件的全部范圍 B) 所在程序的全部范圍
C) 所在函數(shù)的全部范圍 D) 由具體定義位置和extern 說明來決定范圍
(41)有以下程序
#include
int a=1;
int f(int c)
{static int a=2;
c=c+1;
return (a++)+c;}
main()
{ int i,k=0;
for(i=0;i<2;i++){int a=3;k+=f(a);}
k+=a;
printf(“%d\n”,k);
}
程序運行結果是
A) 14 B) 15
C) 16 D) 17
(42)有以下程序
#include
void fun(int n,int *p)
{ int f1,f2;
if(n==1||n==2) *p=1;
else
{ fun(n-1,&f1); fun(n-2,&f2);
*p=f1+f2;
}
}
main()
{ int s;
fun(3,&s); printf("%d\n",s);
}
程序的運行結果是
A)2 B)3 C)4 D)5
(43)若程序中有宏定義行:#define N 100 則以下敘述中正確的是
A)宏定義行中定義了標識符N的值為整數(shù)100
B)在編譯程序?qū)源程序進行預處理時用100替換標識符N
C) 對C源程序進行編譯時用100替換標識符N
D)在運行時用100替換標識符N
(44)以下關于typedef的敘述錯誤的是
A)用typedef可以增加新類型
B)typedef只是將已存在的類型用一個新的名字來代表
C)用typedef可以為各種類型說明一個新名,但不能用來為變量說明一個新名
D)用typedef為類型說明一個新名,通??梢栽黾映绦虻目勺x性
(45)有以下程序
#include
struct tt
{int x;struct tt *y;} *p;
struct tt a[4]={20,a+1,15,a+2,30,a+3,17,a};
main()
{ int i;
p=a;
for(i=1;i<=2;i++) {printf("%d,",p->x); p=p->y;}
}
程序的運行結果是
A)20,30, B)30,17 C)15,30, D)20,15,
(46)有以下程序
#include
#include
typedef struct{ char name[9];char sex; float score[2]; } STU;
STU f(STU a)
{ STU b={"Zhao",'m',85.0,90.0}; int i;
strcpy(a.name,b.name);
a. sex=b.sex;
for(i=0;i<2;i++) a.score=b.score;
return a;
}
main()
{STU c={"Qian",'f',95.0,92.0},d;
d=f(c); printf("%s,%c,%2.0f,%2.0f\n",d.name,d.sex,d.score[0],d.score[1]);
}
程序的運行結果是
A)Qian,f,95,92 B)Qian,m,85,90 C)Zhao,m,85,90 D)Zhao,f,95,92
(47)設有以下定義
union data
{ int d1; float d2; }demo;
則下面敘述中錯誤的是
A)變量demo與成員d2所占的內(nèi)存字節(jié)數(shù)相同
B)變量demo中各成員的地址相同
C)變量demo和各成員的地址相同
D)若給demo.d1賦99后, demo.d2中的值是99.0
(48)有以下程序
#include
main()
{ int a=1,b=2,c=3,x;
x=(a^b)&c; printf("%d\n",x);
}
程序的運行結果是
A)0 B)1 C)2 D)3
(49)讀取二進制文件的函數(shù)調(diào)用形式為:fread(buffer,size,count,fp); ,其中buffer代表的是
A)一個文件指針,指向待讀取的文件
B)一個整型變量,代表待讀取的數(shù)據(jù)的字節(jié)數(shù)
C)一個內(nèi)存塊的首地址,代表讀入數(shù)據(jù)存放的地址
D)一個內(nèi)存塊的字節(jié)數(shù)
(50)有以下程序
#include
main()
{FILE *fp; int a[10]={1,2,3,0,0},i;
fp=fopen("d2.dat,"wb");
fwrite(a,sizeof(int),5,fp);
fwrite(a,sizeof(int),5,fp);
fclose(fp);
fp=fopen("d2.dat","rb");
fread(a,sizeof(int),10,fp);
fclose(fp);
for(i=0;i<10;i++) printf("%d",a);
}
程序的運行結果是
A)1,2,3,0,0,0,0,0,0,0, B)1,2,3,1,2,3,0,0,0,0,
C)123,0,0,0,0,123,0,0,0,0, D)1,2,3,0,0,1,2,3,0,0,
二、填空題(每空2分,共40分)
請將每一個空的正確答案寫在答題卡[1]至[20]序號的橫線上,答在試卷上不得分.
(1) 軟件需求規(guī)格說明書應具有完整性、無歧義性、正確性、可驗證性、可修改性等特性,其中最重要的_[1]_______.
(2) 在兩種基本測試方法中, _[2]_______測試的原則之一是保證所測模塊中每一個獨立路徑至少要執(zhí)行一次.
(3) 線性表的存儲結構主要分為順序存儲結構和鏈式存儲結構.隊列是一種特殊的線性表,循環(huán)隊列是隊列的_[3]_______存儲結構.
(4) 對下列二叉樹進行中序遍歷的結果為_[4]_______
F
/ \
C E
/ \ \
A D G
/ / \
B H P
(5) 在E-R圖中距形表示_[5]_______
(6) 執(zhí)行以下程序時輸入1234567
#include
main()
{ int a=1,b;
scanf("%2d%2d",&a&b);printf("%d %d\n",a,b);
}
(7) 以下程序的功能是:輸出a、b、c三個變量中的最小值.請?zhí)羁铡?BR> #include
main()
{ int a,b,c,t1,t2;
scanf("%d%d%d",&a,&b,&c);
t1=a t2=c
}
(8) 以下程序的輸出結果是_[9]_______.
#include
main()
{ int n=12345,d;
while(n!=0){ d=n%10; printf("%d",d); n/=10;}
}
(9) 有以下程序段,且變量已正確定義和賦值
for(s=1.0,k=1;k<=n;k++) s=s+1.0/(k*(k+1));
printf("s=%f\n\n",s);
請?zhí)羁?使下面程序段的功能為完全相同
s=1.0;k=1;
while(_[10]_______){ s=s+1.0/(k*(k+1)); _[11]_______;}
printf("s=%f\n\n",s);
(10) 以下程序的輸出結果是_[12]_______.
#include
main()
{ int i;
for(i='a';i<'f';i++,i++) printf("%c",i-'a'+'A');
printf("\n");
}
(11) 以下程序的輸出結果是_[13]_______.
#include
#include
char *fun(char *t)
{ char *p=t;
return(p+strlen(t)/2);
}
main()
{ char *str="abcdefgh";
str=fun(str);
puts(str);
}
(12)以下程序中函數(shù)f的功能是在數(shù)組x的n個數(shù)(假定n個數(shù)互不相同)中找出最小數(shù),將其中最小的數(shù)與第一個數(shù)對換,把的數(shù)與最后一個數(shù)對換.請?zhí)羁?
#include
viod f(int x[],int n)
{ int p0,p1,i,j,t,m;
i=j=x[0]; p0=p1=0;
for(m=0;m
else if(x[m]
t=x[p0]; x[p0]=x[n-1]; x[n-1]=t;
t=x[p1];x[p1]= _[14]_______; _[15]_______=t;
}
main()
{ int a[10],u;
for(u=0;u<10;u++) scanf("%d",&a);
f(a,10);
for(u=0;u<10;u++) printf("%d",a);
printf("\n");
}
(13)以下程序統(tǒng)計從終端輸入的字符中大寫字母的個數(shù),num[0]中統(tǒng)計字母A的個數(shù),num[1]中統(tǒng)計字母B的個數(shù),其它依次類推.用#號結束輸入,請?zhí)羁?
#include
#include
main()
{ int num[26]={0},i; char c;
while((_[16]_______)!='#')
if(isupper(c)) num[c-‘A’]+= _[17]_______;
for(i=0;i<26;i++)
Printf("%c:%d\n",i+'A',num);
}
(14)執(zhí)行以下程序的輸出結果是_[18]_______.
#include
main()
{ int i,n[4]={1};
for(i=1;i<=3;i++)
{ n=n[i-1]*2+1; printf("%d",n); }
}
(15) 以下程序的輸出結果是_[19]_______.
#include
#define M 5
#define N M+M
main()
{ int k;
k=N*N*5; printf("%d\n",k);
}
(16)函數(shù)main()的功能是:在帶頭結點的單鏈表中查找數(shù)據(jù)域中值最小的結點.請?zhí)羁?BR> #include
struct node
{ int data;
struct node *next;
};
int min(struct node *first)/*指針first為鏈表頭指針*/
{ strct node *p; int m;
p=first->next; m=p->data;p=p->next;
for(;p!=NULL;p=_[20]_______)
if(p->data
return m;
}
2007年9月全國計算機等級考試二級C語言參考答案
一、選擇題
1-5 DBCAA
6-10 CCABA
11-15 BABCC
16-20 DABBB
21-25 BCBBD
26-30 CCDAA
31-35 BACDC
36-37 CDDBC
42-45 AABAD
46-50 CDDCD
二、填空題
1、無歧義性
2、白盒測試
3、順序
4、ACBDFEHGP
5、實體集
6、12 34
7、a:b
8、c:t1
9、54321
10、k<=n
11、k++