- 相關(guān)推薦
計算機二級C語(yǔ)言筆試歷年真題及答案
在現實(shí)的學(xué)習、工作中,我們最熟悉的就是試題了,借助試題可以更好地檢查參考者的學(xué)習能力和其它能力。你知道什么樣的試題才是好試題嗎?下面是小編收集整理的計算機二級C語(yǔ)言筆試歷年真題及答案,希望對大家有所幫助。
計算機二級C語(yǔ)言筆試歷年真題及答案 1
一、選擇題(每小題2分,共70分)
下列各題A)、B)、C)、D)四個(gè)選項中,只有一個(gè)選項是正確的。請將正確選項填涂在答題卡相應位置上,答在試卷上不得分。
(1)下列敘述中正確的是
A)線(xiàn)性表的鏈式存儲結構與順序存儲結構所需要的存儲空間是相同的
B)線(xiàn)性表的鏈式存儲結構所需要的存儲空間一般要多于順序存儲結構
C)線(xiàn)性表的鏈式存儲結構所需要的存儲空間一般要少于順序存儲結構
D)上述三種說(shuō)法都不對
(2)下列敘述中正確的是
A)在棧中,棧中元素隨棧底指針與棧頂指針的變化而動(dòng)態(tài)變化
B)在棧中,棧頂指針不變,棧中元素隨棧底指針的變化而動(dòng)態(tài)變化
C)在棧中,棧底指針不變,棧中元素隨棧頂指針的變化而動(dòng)態(tài)變化
D)上述三種說(shuō)法都不對
(3)軟件測試的目的是
A)評估軟件可靠性
B)發(fā)現并改正程序中的錯誤
C)改正程序中的錯誤
D)發(fā)現程序中的錯誤
(4)下面描述中,不屬于軟件危機表現的是
A)軟件過(guò)程不規范
B)軟件開(kāi)發(fā)生產(chǎn)率低
C)軟件質(zhì)量難以控制
D)軟件成本不斷提高
(5)軟件生命周期是指
A)軟件產(chǎn)品從提出、實(shí)現、使用維護到停止使用退役的過(guò)程
B)軟件從需求分析、設計、實(shí)現到測試完成的過(guò)程
C)軟件的開(kāi)發(fā)過(guò)程
D)軟件的運行維護過(guò)程
(6)面向對象方法中,繼承是指
A)一組對象所具有的相似性質(zhì)
B)一個(gè)對象具有另一個(gè)對象的性質(zhì)
C)各對象之間的共同性質(zhì)
D)類(lèi)之間共享屬性和操作的機制
(7)層次型、網(wǎng)狀型和關(guān)系型數據庫劃分原則是
A)記錄長(cháng)度
B)文件的大小
C)聯(lián)系的復雜程度
D)數據之間的聯(lián)系方式
(8)一個(gè)工作人員可以使用多臺計算機,而一臺計算機可被多個(gè)人使用,則實(shí)體工作人員、與實(shí)體計算機之間的聯(lián)系是
A)一對一
B)一對多
C)多對多
D)多對一
(9)數據庫設計中反映用戶(hù)對數據要求的模式是
A)內模式
B)概念模式
C)外模式
D)設計模式
(10)有三個(gè)關(guān)系R、S和T如下:
則由關(guān)系R和S得到關(guān)系T的操作是
A)自然連接
B)交
C)投影
D)并
(11)以下關(guān)于結構化程序設計的敘述中正確的是
A)一個(gè)結構化程序必須同時(shí)由順序、分支、循環(huán)三種結構組成
B)結構化程序使用goto語(yǔ)句會(huì )很便捷
C)在C語(yǔ)言中,程序的模塊化是利用函數實(shí)現的
D)由三種基本結構構成的程序只能解決小規模的問(wèn)題
(12)以下關(guān)于簡(jiǎn)單程序設計的步驟和順序的說(shuō)法中正確的是
A)確定算法后,整理并寫(xiě)出文檔,最后進(jìn)行編碼和上機調試
B)首先確定數據結構,然后確定算法,再編碼,并上機調試,最后整理文檔
C)先編碼和上機調試,在編碼過(guò)程中確定算法和數據結構,最后整理文檔
D)先寫(xiě)好文檔,再根據文檔進(jìn)行編碼和上機調試,最后確定算法和數據結構
(13)以下敘述中錯誤的是
A) C程序在運行過(guò)程中所有計算都以二進(jìn)制方式進(jìn)行
B)C程序在運行過(guò)程中所有計算都以十進(jìn)制方式進(jìn)行
C)所有C程序都需要編譯鏈接無(wú)誤后才能運行
D)C程序中整型變量只能存放整數,實(shí)型變量只能存放浮點(diǎn)數
(14)有以下定義:int a; long b; double x,y;則以下選項中正確的表達式是
A)a%(int)(x-y)
B)a=x!=y;
C)(a*y)%b
D)y=x+y=x
(15)以下選項中能表示合法常量的是
A)整數:1,200
B)實(shí)數:1.5E2.0
C )字符斜杠: ‘\’
D)字符串: "\007"
(16)表達式a+=a-=a=9的值是
A)9
B)_9
C)18
D)0
(17)若變量已正確定義,在if (W)printf(“%d\n,k”);中,以下不可替代W的是
A)a<>b+c
B)ch=get)
C)a==b+c
D)a++
(18)有以下程序
#include
main()
{int a=1,b=0;
if(!a) b++;
else if(a==0)if(a)b+=2;
else b+=3;
printf(”%d\n”,b);
。
程序運行后的輸出結果是
A)0
B)1
C)2
D)3
(19)若有定義語(yǔ)句int a, b;double x;則下列選項中沒(méi)有錯誤的是
A)switch(x%2) B)switch((int)x/2.0
{case 0: a++; break; {case 0: a++; break;
case 1: b++; break; case 1: b++; break;
default : a++; b++; default : a++; b++;
} }
C)switch((int)x%2) D)switch((int)(x)%2)
{case 0: a++; break; {case 0.0: a++; break;
case 1: b++; break; case 1.0: b++; break;
default : a++; b++; default : a++; b++;
} }
(20)有以下程序
#include
main()
{int a=1,b=2;
while(a<6){b+=a;a+=2;b%二10;}
printf(”%d,%d\n”,a,b);
。
程序運行后的輸出結果是
A)5,11
B)7,1
C)7,11
D)6,1
(21)有以下程序
#include
main()
{int y=10;
while(y--);
printf(”Y=%d\n”,Y);
。
程序執行后的輸出結果是
A)y=0
B)y= -1
C)y=1
D)while構成無(wú)限循環(huán)
(22)有以下程序
#include
main()
{char s[」=”rstuv";
printf(”%c\n”,*s+2);
。
程序運行后的輸出結果是
A)tuv
B)字符t的ASCII碼值
C)t
D)出錯
(23)有以下程序
#include
#include
main()
{char x[]=”STRING”;
x[0」=0;x[1]=’\0’;x[2」=’0’;
printf(”%d %d\n”,sizeof(x),strlen(x));
。
程序運行后的輸出結果是
A)6 1
B)7 0
C)6 3
D)7 1
(24)有以下程序
#include
Int f(int x);
main()
{int n=1,m;
m=f(f(f(n)));printf(”%d\n”,m);
。
int f(int x)
{return x*2;}
程序運行后的輸出結果是
A)1
B)2
C)4
D)8
(25)以下程序段完全正確的`是
A)int *p; scanf("%d",&p);
B)int *p; scanf(“%d”,p);
C)int k, *p=&k; scanf("%d",p);
D)int k, *p:; *p= &k; scanf(“%d”,p);
(26)有定義語(yǔ)句:int *p[4];以下選項中與此語(yǔ)句等價(jià)的是
A)int p[4];
B)int **p;
C)int *(p「4」);
D)int (*p)「4」;
(27)下列定義數組的語(yǔ)句中,正確的是
A)int N=10; B)#define N 10
int x[N]; int x[N];
C)int x[0..10]; D)int x[];
(28)若要定義一個(gè)具有5個(gè)元素的整型數組,以下錯誤的定義語(yǔ)句是
A)int a[5]=﹛0﹜;
B)int b[]={0,0,0,0,0};
C)int c[2+3];
D)int i=5,d[i];
(29)有以下程序
#include
void f(int *p);
main()
{int a[5]={1,2,3,4,5},*r=a;
f(r);printf(”%d\n”;*r);
。
void f(int *p)
{p=p+3;printf(”%d,”,*p);}
程序運行后的輸出結果是
A)1,4
B)4,4
C)3,1
D)4,1
(30)有以下程序(函數fun只對下標為偶數的元素進(jìn)行操作)
# include
void fun(int*a;int n)
{int i、j、k、t;
for (i=0;i
{k=i;‘
for(j=i;ja〔k])k=j;
t=a〔i];a〔i]=a[k];a〔k]=t;
。
。
main()
{int aa「10」={1、2、3、4、5、6、7},i;
fun(aa、7);
for(i=0,i<7; i++)printf(”%d,”,aa[i]));
printf(”\n”);
。
程序運行后的輸出結果是
A)7,2,5,4,3,6,1
B)1,6,3,4,5,2,7
C)7,6,5,4,3,2,1
D)1,7,3,5,6;2,1
(31)下列選項中,能夠滿(mǎn)足“若字符串s1等于字符串s2,則執行ST"要求的是
A)if(strcmp(s2,s1)==0)ST;
B)if(sl==s2)ST;
C)if(strcpy(s l ,s2)==1)ST;
D)if(sl-s2==0)ST;
(32)以下不能將s所指字符串正確復制到t所指存儲空間的是
A)while(*t=*s){t++;s++;}
B)for(i=0;t[i]=s[i];i++);
C)do{*t++=*s++;}while(*s);
D)for(i=0,j=0;t[i++]=s[j++];);
(33)有以下程序( strcat函數用以連接兩個(gè)字符串)
#include
#include
main()
{char a[20]=”ABCD\OEFG\0”,b[]=”IJK”;
strcat(a,b);printf(”%s\n”,a);
。
程序運行后的輸出結果是
A)ABCDE\OFG\OIJK
B)ABCDIJK
C)IJK
D)EFGIJK
(34)有以下程序,程序中庫函數islower (ch)用以判斷ch中的字母是否為小寫(xiě)字母
#include
#include
void fun(char*p)
{int i=0;
while (p[i])
{if(p[i]==’ ’&& islower(p「i-1」))p[i-1]=p[i-1]-‘a(chǎn)’+‘A’;
i++;
。
。
main()
{char s1[100]=”ab cd EFG!”;
fun(s1); printf(”%s\n”,s1);
。
程序運行后的輸出結果是
A)ab cd EFG!
B)Ab Cd EFg!
C)aB cD EFG!
D)ab cd EFg!
(35)有以下程序
#include
void fun(int x)
{if(x/2>1)fun(x/2);
printf(”%d”,x);
。
main()
{fun(7);printf(”\n”);}
程序運行后的輸出結果是
A)1 3 7
B)7 3 1
C)7 3
D)3 7
(36)有以下程序
#include
int fun()
{static int x=1;
x+=1;return x;
。
main()
{int i;s=1;
for(i=1;i<=5;i++)s+=fun();
printf(”%d\n”,s);
。
程序運行后的輸出結果是
A)11
B)21
C)6
D)120
(37)有以下程序
#inctude
#include
Main()
{int *a,*b,*c;
a=b=c=(int*)malloc(sizeof(int));
*a=1;*b=2,*c=3;
a=b;
printf(“%d,%d,%d\n”,*a,*b,*c);
。
程序運行后的輸出結果是
A)3,3,3 B)2,2,3 C)1,2,3 D)1,1,3
(38)有以下程序
#include
main()
{int s,t,A=10;double B=6;
s=sizeof(A);t=sizeof(B);
printf(“%d,%d\n”,s,t);
。
在VC6平臺上編譯運行,程序運行后的輸出結果是
A)2,4 B)4,4 C)4,8 D)10,6
(39)若有以下語(yǔ)句
Typedef struct S
{int g; char h;}T;
以下敘述中正確的是
A)可用S定義結構體變量
B)可用T定義結構體變量
C)S是struct類(lèi)型的變量
D)T是struct S類(lèi)型的變量
(40)有以下程序
#include
main()
{short c=124;
c=c_______;
printf(“%d\n”、C);
。
若要使程序的運行結果為248,應在下劃線(xiàn)處填入的是
A)>>2 B)|248 C)&0248 D)<
二、填空題(每空2分,共30分)
請將每空的正確答案寫(xiě)在答題卡【1】至【15】序號的橫線(xiàn)上,答在試卷上不得分。
(1)一個(gè)棧的初始狀態(tài)為空。首先將元素5,4,3,2,1依次入棧,然后退棧一次,再將元素A,B,C,D依次入棧,之后將所有元素全部退棧,則所有元素退棧(包括中間退棧的元素)的順序為【1】
(2)在長(cháng)度為n的線(xiàn)性表中,尋找最大項至少需要比較【2】次。
(3)一棵二叉樹(shù)有10個(gè)度為1的結點(diǎn),7個(gè)度為2的結點(diǎn),則該二叉樹(shù)共有【3】個(gè)結點(diǎn)。
(4)僅由順序、選擇(分支)和重復(循環(huán))結構構成的程序是【4】程序。
(5)數據庫設計的四個(gè)階段是:需求分析,概念設計,邏輯設計【5】。
(6)以下程序運行后的輸出結果是【6】。
#include
main()
{int a=200,b=010;
printf(”%d%d\n”,a,b);
。
(7)有以下程序
#include
main()
{int x,Y;
scanf(”%2d%ld”,&x,&y);printf(”%d\n”,x+y);
。
程序運行時(shí)輸入:1234567程序的運行結果是【7】。
(8)在C語(yǔ)言中,當表達式值為0時(shí)表示邏輯值“假”,當表達式值為【8】時(shí)表示邏輯值“真”。
(9)有以下程序
#include
main()
{int i,n[]={0,0,0,0,0};
for (i=1;i<=4;i++)
{n[i]=n[i-1]*3+1; printf(”%d ",n[i]);}
}
程序運行后的輸出結果是【9】。
(10)以下fun函數的功能是:找出具有N個(gè)元素的一維數組中的最小值,并作為函數值返回。請填空。(設N已定義)
int fun(int x[N])
{int i,k=0;
for(i=0;i
if(x[i]
return x[k];
}
(11)有以下程序
#include
int*f(int *p,int*q);
main()
{int m=1,n=2,*r=&m;
r=f(r,&n);printf(”%d\n”,*r);
。
int*f(int *p,int*q)
{return(*p>*q)?p:q;}
程序運行后的輸出結果是【11】
(12)以下fun函數的功能是在N行M列的整形二維數組中,選出一個(gè)最大值作為函數值返回,請填空。(設M,. N已定義)
int fun(int a[N][M))
{int i,j,row=0,col=0;
for(i=0;i
for(j=0;j
if(a[i][j]>a[row][col]){row=i;col=j;}
return(【12】):
}
(13)有以下程序
#include
main()
{int n[2],i,j;
for(i=0;i<2;i++)n[i]=0;
for(i=0;i<2;i++)
for(j=0;j<2;j++)n[j]=n「i」+1;
printf(”%d\n”,n[1]);
。
程序運行后的輸出結果是【13】
(14)以下程序的功能是:借助指針變量找出數組元素中最大值所在的位置并輸出該最大值。請在輸出語(yǔ)句中填寫(xiě)代表最大值的輸出項。
#include
main()
{int a〔10],*p,*s;
for(p=a;p-a<10;p++)scanf(”%d”,p);
for(p=a,s=a;p-a<10;p++)if(*p>*s)S=P;
printf("max=%d\n”,【14】);
。
(15)以下程序打開(kāi)新文件f.txt,并調用字符輸出函數將a數組中的字符寫(xiě)入其中,請填空。
#include
main()
{【15】*fp;
char a[5]={’1’,’2’,’3’,’4’,’5’},i;
fp=fopen(”f .txt”,”w”);
for(i=0;i<5;i++)fputc(a[i],fp);
fclose(fp);
。
計算機二級C語(yǔ)言筆試歷年真題及答案 2
一、 選擇題(7分,每小題0.5分)
1.C語(yǔ)言源程序的基本單位是( )。
A 過(guò)程 B 函數 C 子程序 D 標識符
2.下列程序的輸出結果是( )。
main( )
{ int a=7,b=5;
printf("%d ",b=b/a);
}
A 5 B 1 C 0 D不確定值
3.假設變量a,b均為整型,表達式(a=5,b=2,a>b?a++:b++,a+b)的值是( )。
A 7 B 8 C 9 D 2
4.設a為int型變量,執行下列賦值語(yǔ)句后,a的取值分別是( )。
a=125.534; a=(int)125.521%4; a=5<<2;
A 125,31,1 B 125,1,20 C 125,31,20 D 125.534,2,20
5.設有如下程序段,下面描述中正確的是 ( )。
int k=10; while(k=0) k=k-1;
A 循環(huán)執行一次 B循環(huán)是無(wú)限循環(huán) C循環(huán)體語(yǔ)句一次也不執行 D循環(huán)體語(yǔ)句執行一次
6.以下程序的輸出結果為( )。
int i;
void prt( )
{ for(i=5;i<8;i++) printf("%c",*);
printf(" ");
}
main( )
{ for(i=5;i<=8;i++) prt( );
}
A *** B *** *** *** *** C *** *** D * * *
7.在C語(yǔ)言程序中,以下說(shuō)法正確的是( )。
A函數的定義可以嵌套,但函數的調用不可以嵌套
B函數的定義不可以嵌套,但函數的調用可以嵌套
C函數的`定義和函數的調用都不可以嵌套
D函數的定義和函數的調用都可以嵌套
8.以下函數調用語(yǔ)句中含有( )個(gè)實(shí)參。
func((e1,e2),(e3,e4,e5));
A 2 B 3 C 5 D 語(yǔ)法錯誤
9.以下程序的輸出結果為( )。
#define ADD(x) x*x
main( )
{ int a=4,b=6,c=7,d=ADD(a+b)*c;
printf("d=%d",d);
}
A d=70 B d=80 C d=140 D d=700
10.已知職工記錄描述如下,在Turbo C中,系統為變量w分配( )字節的空間。
struct worker
{ int no;
char name[20];
char sex;
union
{ int day; int month; int year;}birth;
} w;
A 29 B 20 C 25 D 6
11.設有以下定義,值為5的枚舉常量是( )。
enum week{sun,mon=4,tue,wed,thu,fri,sat} w;
A tue B sat C fri D thu
12.下面選項中正確的賦值語(yǔ)句是(設 char a[5],*p=a;)( )。
A p="abcd"; B a="abcd"; C *p="abcd"; D *a="abcd";
13.設有以下程序段,則值為6的表達式是( )。
struct st { int n; struct st *next;};
static struct st a[3]={5,&a[1],7,&a[2],9,0 },*p;
p=&a[0];
A p++->n B ++p->n C p->n++ D (*p).n++
14.C語(yǔ)言中的文件類(lèi)型只有( )。
A 索引文件和文本文件兩種 B 文本文件一種
C 二進(jìn)制文件一種 D ASCII碼文件和二進(jìn)制文件兩種
二、 判斷對錯,對的劃“√”,錯的劃“×”(5分,每小題0.5分)
1.在Turbo C中,整型數據在內存中占2個(gè)字節。( )
2.int i=20;switch(i/10){case 2:printf("A");case 1:printf("B");}的輸出結果為A。( )
3.break語(yǔ)句用在循環(huán)體中,可結束本層循環(huán),continue語(yǔ)句用在循環(huán)體中,可結束本次循環(huán)。( )
4.函數的遞歸調用不過(guò)是一個(gè)函數直接或間接地調用它自身。( )
5.函數strlen("ASDFG ")的值是7。( )
6.通過(guò)return語(yǔ)句,函數可以帶回一個(gè)或一個(gè)以上的返回值。( )
7.結構體類(lèi)型只有一種。 ( )
8.char *p="girl";的含義是定義字符型指針變量p,p的值是字符串"girl"。( )
9.若有定義:char *p(char a[10]);則p是函數名。( )
10.用fopen("file","r+");打開(kāi)的文件"file"可以進(jìn)行修改。 ( )
三、 寫(xiě)出下列程序的運行結果(10分,每小題2分)
1.float average (float array[10])
{ int i;
float aver,sum=array[0];
for (i=1;i<10;i++)
sum=sum+array[i];
aver=sum/10;
return(aver);
}
main( )
{ float score[10]={89,67.5,78,91,56,82.5,65,70,79,88},aver;
int i;
aver=average (score);
printf (“average score is %5.2f ”,aver);
}
2.main( )
{ char a[5]={‘A’,‘B’,‘C’,‘D’,‘E’},*p=a,**pa;
printf(“%2c”,*p);
printf(“ ”);
printf(“%2c ”,**(pa=&p));
}
3.main( )
{ int a,b,s=0;
for(a=1,b=1;a<=100;a++)
{ if(b>=20) break;
if(b%3==1)
{ b+=3; continue; }
b-=5;
}
printf(“a=%d b=%d ”,a,b);
}
4.main()
{ printf(“main( ) :%d ”,fact(5));
fact(-5);
}
fact(int value)
{ int f;
if(value<0)
{ printf(“Arg error ");
return(-1);
}
else if(value==1||value==0) f=1;
else f=value*fact(value-1)+1;
printf(“This called value=%d ”,f);
return f;
}
5.main( )
{ int a=012,b=0x12,k=12;
char c=‘102’,d=‘ ’;
printf(“a=%d b=%d k=%d ”,a,b,k);
printf(“c=%c,d=%c%o ”,c,d,a);
a=‘A’; c=49;
printf(“a=%d c=%c ”,a,c);
}
四 、閱讀下列程序,在 處填入適當內容,使程序完整(8分,每個(gè)空1分)
1.有一個(gè)3*4矩陣,求其中的最大元素。
max_value( (1) )
{ int i,j,max;
max=array[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(array[i][j]>max)
max=array[i][j];
(2) ;
}
main( )
{ int a[3][4], i,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
(3) ;
printf(“max value is %d ”,max_value(a));
}
2.輸入x、y兩個(gè)整數,按先大后小的順序輸出x、y。
#include “stdio.h”
main( )
{ int x,y, *px,*py, (4) ;
scanf(“%d%d”,&x,&y);
(5) ; (6) ;
if(x
{ p=px; px=py; py=p; }
printf(“x=%d,y=%d ”,x,y);
printf(“MAX=%d,MIN=%d ”,*px,*py);
}
3.用選擇排序法對任意10個(gè)整數按照由小到大排序。
main()
{ int a[11],i,j,k,t;
printf("Please input 10 numbers: ");
for(i=1;i<11;i++) scanf("%d",&a[i]);
printf(" ");
for(i=1;i<=9;i++)
{ (7) ;
for(j=i+1; (8) ;j++)
if(a[j]>a[k]) k=j;
if(k!=i)
{ t=a[k]; a[k]=a[i]; a[i]=t;}
}
printf("The sorted numbers: ");
for(i=1;i<11;i++) printf("%d ",a[i]);
}
答案
一 、選擇題(7分,每小題0.5分)
1. B 2. C 3. B 4. B 5. C
6. A 7. B 8. A 9. A 10. C
11. A 12. A 13. B 14. D
二 、判斷對錯,對的劃“√”,錯的劃“×”(5分,每小題0.5分)
1.× 2.× 3.√ 4.√ 5.×
6.× 7.× 8.× 9.√ 10.√
三 、寫(xiě)出下列程序的運行結果(10分,每小題2分)
1. 2. 3.
4. 5.
四、 閱讀下列程序,在 處填入適當內容,使程序完整(8分,每個(gè)空1分)
1.(1)int array[3][4](int array[][4]) (2)return(max) (3)scanf(“%d”,&a[i][j])
2.(4)*p (5)px=&x(py=&y) (6)py=&y(px=&x)
3.(7) (8)
計算機二級C語(yǔ)言筆試歷年真題及答案 3
一、 選擇題(24分,每小題2分)
1.已知函數fread的調用形式為fread(buffer,size,count,fp),其中buffer代表的是( )。
A 存放讀入數據項的存儲區 B 存放讀入數據的地址或指向此地址的指針
C 一個(gè)指向所讀文件的文件指針 D 一個(gè)整形變量,代表要讀入的數據項總數
2.以下程序的輸出結果為( )。
main( )
{ int i=010,j=10;
printf("%d,%d ",i++,j--);
}
A 11,9 B 9,10 C 8,10 D 9,9
3.設a為int型變量,執行下列賦值語(yǔ)句后,a的取值分別是( )。a=125.534;a=20.0/3;a=(int)125.521%4;a=5<<2;
A 125,6,31,1 B 125,6,1,20 C 125,6.666666,31,20 D 125.534,6.666666,2,20
4.設i和k都是int類(lèi)型,則for循環(huán)語(yǔ)句( )。
for(i=0,k=-1;k=1;i++,k++) printf("****");
A 循環(huán)結束的條件不合法 B 循環(huán)體一次也不執行 C 循環(huán)體只執行一次 D 是無(wú)限循環(huán)
5.以下程序的輸出結果為( )。
main( )
{ char c;
int i;
for(i=65;i<68;i++)
{ c=i+32;
switch(c)
{ case a:case b:case c:printf("%c,",c);break; default:printf("end");}
}
}
A a,b,c,end B a,a,a,end C a,a,a, D a,b,c,
6.函數調用語(yǔ)句:fseek(fp,-10L,2);的含義是( )。
A 將文件位置指針從文件末尾處向文件頭的方向移動(dòng)10個(gè)字節
B 將文件位置指針從當前位置向文件頭的方向移動(dòng)10個(gè)字節
C 將文件位置指針從當前位置向文件末尾方向移動(dòng)10個(gè)字節
D 將文件位置指針移到距離文件頭10個(gè)字節處
7.以下程序的.輸出結果為( )。
main( )
{ char s1[40]="country",s2[20]="side";
int i=0,j=0;
while(s1[i]!=) i++;
while(s2[j]!=) s1[i++]=s2[j++];
s1[i]=0;
printf("%s ",s1);
}
A side B country C sidetry D countryside
8.下列說(shuō)法不正確的是( )。
A 主函數main中定義的變量在整個(gè)文件或程序中有效
B 不同函數中,可以使用相同名字的變量
C 形式參數是局部變量
D 在一個(gè)函數內部,可以在復合語(yǔ)句中定義變量,這些變量只在本復合語(yǔ)句中有效
9.在下列程序段中,枚舉變量 c1的值是( )。
enum color { red,yellow,blue=4,green,white}c1; c1=yellow; c1=white;
A 1 B 3 C 5 D 6
10.設有說(shuō)明 int (*ptr)();其中標識符ptr是( )。
A 是一個(gè)指向整形變量的指針 B 是一個(gè)指針,它指向一個(gè)函數值是int的函數
C 是一個(gè)函數名 D定義不合法
11.定義由n個(gè)指向整形數據的指針組成的數組p,其正確的方式為( )。
A int p; B int (*p)[n]; C int *p[n]; D int (*p)( );
12.具有相同類(lèi)型的指針類(lèi)型變量p與數組a,不能進(jìn)行的操作是( )。
A p=a; B *p=a[0]; C p=&a[0]; D p=&a;
二 、判斷對錯,對的劃“√”,錯的劃“×”(20分,每小題2分)
1.參加位運算的數據可以是任何類(lèi)型的數據。( )
2.若有定義和語(yǔ)句:int a;char c;float f;scanf("%d,%c,%f",&a,&c,&f);若通過(guò)鍵盤(pán)輸入:10,A,12.5,則a=10,c=‘A’,f=12.5。( )
3.C語(yǔ)言把文件看作是一個(gè)字符(字節)的序列。( )
4.若有宏定義:#define S(a,b) t=a;a=b;b=t由于變量t沒(méi)定義,所以此宏定義是錯誤的。( )
5.在Turbo C中,下面的定義和語(yǔ)句是合法的:file *fp;fp=fopen("a.txt","r");( )
6.若有定義:char s[ ]="china";則Turbo C系統為數組s開(kāi)辟6個(gè)字節的內存單元。( )
7.若有定義和語(yǔ)句:int a[3][3]={{3,5},{8,9},{12,35}},i,sum=0;for(i=0;i<3;i++) sum+=a[i][2-i];則sum=21。( )
8.若有定義和語(yǔ)句:struct student { int num; char name[10]; float score;} s[5]={{1,"lili",98.5},{9,"xiaohua",66}},*p=s;printf("%d",*p++);輸出結果是1。( )
9.在程序中定義了一個(gè)結構體類(lèi)型后,可以多次用它來(lái)定義具有該類(lèi)型的變量。( )
10.在Turbo C中,此定義和語(yǔ)句是合法的:enum aa{ a=5,b,c}bb;bb=(enum aa)5;( )
三 、寫(xiě)出下列程序的運行結果(36分,每小題6分)
1.main( )
{ int i=29,j=6,k=2,s;
s=i+i/j%k-9;
printf(“s=%d ”,s);
}
2.main( )
{ int x=31,y=2,s=0;
do
{ s-=x*y;
x+=2;
y-=3;} while( x%3==0);
printf(“x=%d y=%d s=%d ”,x,y,s);
}
3.main( )
{ int a[6]={10,20,30,40,50,60},i;
invert(a,0,5);
for(i=0;i<6;i++) printf(“%d,”,a[i]);
printf(“ ”);
}
invert(int s[ ],int i,int j)
{ int t;
if(i
{ invert(s,i+1j-1);
t=s[i];s[i]=s[j];s[j]=t;
}
}
4.#include
main()
{ char str[ ]=“The C program”,c;
int i;
for(i=2;(c=str[i])!=‘’;i++)
{ switch(c)
{ case ‘g’: ++i; break;
case ‘o’: continue;
default: printf(“%c”,c); continue;
}
printf(“*”);
}
printf(“ ”);
}
5.struct w
{ char low;
char high;
};
union u
{ struct w byte;
short word;
}uw;
main( )
{ int result;
uw.word=0x1234;
printf(“word value:%04x ”,uw.word);
printf(“high byte:%02x ”,uw.byte.high);
printf(“l(fā)ow byte:%02x ”,uw.byte.low);
uw.byte.low=0x74;
printf(“word value:%04x ”,uw.word);
result=uw.word+0x2a34;
printf(“the result:%04x ”,result);
}
6.main()
{ char *s2=“I love China!”,**s1=&s2;
char *s3,c,*s4=“w”;
s3=&c;
*s3=‘H’;
s2=s2+2;
printf(“%s %c %s %c ”,s2,*s3,s4,**s1);
}
四、 閱讀下列程序,在 處填入適當內容,使程序完整(20分,每個(gè)空2分)
1. 百馬百擔問(wèn)題:有100匹馬,馱100擔貨,大馬馱3擔,中馬馱2擔,兩匹小馬馱1擔,問(wèn)大、中、小馬各多少匹?
main( )
{ int hb,hm,hl,n=0;
for(hb=0;hb<=100;hb+= (1) )
for(hm=0;hm<=100-hb;hm+= (2) )
{ hl=100-hb- (3) ;
if(hb/3+hm/2+2* (3) ==100)
{ n++;
printf("hb=%d,hm=%d,hl=%d ",hb/3,hm/2,2*hl);
}
}
printf("n=%d ",n);
}
2.用“起泡法”對輸入的10個(gè)字符排序后按從小到大的次序輸出。
#define N 10
char str[N];
main()
{ int i,flag;
for(flag=1;flag==1;)
{ scanf("%s",str);
flag=0;
printf(" ");
}
sort(___(4)___);
for(i=0;i
printf("%c",str[i]);
printf(" ");
}
sort(char str[N])
{ int i,j;
char t;
for(j=1;j
for(i=0;(i
if(str[i]>str[i+1])
{ t=str[i];
____(5)____;
____(6)____;
}
}
3.以下程序是一個(gè)函數,功能是求二階矩陣(m行n列矩陣)的所有靠外側的各元素值之和。(本程序中二階矩陣用一維數組來(lái)表示。)
例如,矩陣為:
3 0 0 3
2 5 7 3
1 0 4 2
則所有靠外側的各元素值之和為3+0+0+3+2+3+1+0+4+2=18。
add(int m,int n,int arr[])
{ int i,j,sum=0;
for(i=0;i
for(j=0;j
sum=sum+ (7) ;
for(j=0;j
for(i=1; (8) ;i++)
sum=sum+arr[i*n+j];
return(sum);
}
4.用指針作函數參數,編程序求一維數組中的最大和最小的元素值。
#define N 10
main()
{ void maxmin(int arr[],int *pt1,int *pt2,int n);
int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b;
p1=&a; p2=&b;
maxmin(array,p1,p2,N);
printf("max=%d,min=%d",a,b);
}
void maxmin(int arr[],int *pt1,int *pt2,int n)
{ int i;
*pt1=*pt2=arr[0];
for(i=1;i
{ if(arr[i]>*pt1) (9) ;
if(arr[i]<*pt2) (10) ;
}
}
答案
一 、選擇題(24分,每小題2分)
1.( B ) 2.( C ) 3.( B ) 4.( D ) 5.( D ) 6.( A )
7.( D ) 8.( A ) 9.( D ) 10.( B ) 11.( C ) 12.( D )
二 、判斷對錯,對的劃“√”,錯的劃“×”(20分,每小題2分)
1.( × ) 2.( √ ) 3.( √ ) 4.( × ) 5.( × )
6.( √ ) 7.( √ ) 8.( × ) 9.( √ ) 10.( √ )
三 、寫(xiě)出下列程序的運行結果(36分,每小題6分)
1. s=20 2.x=35 y=-4 s=-29 3.60,50,40,30,20,10,
4.e C pr*am 5.word value:1234 6.love China! H w l
high byte:12
low byte:34
word value:1274
the result:3ca8
四 、閱讀下列程序,在 處填入適當內容,使程序完整(20分,每個(gè)空2分)
1.(1) 3 (2) 2 (3)hm hl
2.(4) str (5) str[i]=str[i+1] (6) str[i+1]=t
3.(7) arr[i*n+j](或者arr[i*10+j])
(8) i
4.(9) *ptr1=arr[i] (10) *ptr2=arr[i]
【計算機二級C語(yǔ)言筆試歷年真題及答案】相關(guān)文章:
計算機二級考試C語(yǔ)言歷年真題09-26
計算機二級C語(yǔ)言真題及答案09-26
3月計算機等級考試二級c筆試真題01-22