- 相關(guān)推薦
計(jì)算機(jī)二級(jí)C語言筆試歷年真題及答案
在現(xiàn)實(shí)的學(xué)習(xí)、工作中,我們最熟悉的就是試題了,借助試題可以更好地檢查參考者的學(xué)習(xí)能力和其它能力。你知道什么樣的試題才是好試題嗎?下面是小編收集整理的計(jì)算機(jī)二級(jí)C語言筆試歷年真題及答案,希望對(duì)大家有所幫助。
計(jì)算機(jī)二級(jí)C語言筆試歷年真題及答案 1
一、選擇題(每小題2分,共70分)
下列各題A)、B)、C)、D)四個(gè)選項(xiàng)中,只有一個(gè)選項(xiàng)是正確的。請(qǐng)將正確選項(xiàng)填涂在答題卡相應(yīng)位置上,答在試卷上不得分。
(1)下列敘述中正確的是
A)線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)與順序存儲(chǔ)結(jié)構(gòu)所需要的存儲(chǔ)空間是相同的
B)線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)所需要的存儲(chǔ)空間一般要多于順序存儲(chǔ)結(jié)構(gòu)
C)線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)所需要的存儲(chǔ)空間一般要少于順序存儲(chǔ)結(jié)構(gòu)
D)上述三種說法都不對(duì)
(2)下列敘述中正確的是
A)在棧中,棧中元素隨棧底指針與棧頂指針的變化而動(dòng)態(tài)變化
B)在棧中,棧頂指針不變,棧中元素隨棧底指針的變化而動(dòng)態(tài)變化
C)在棧中,棧底指針不變,棧中元素隨棧頂指針的變化而動(dòng)態(tài)變化
D)上述三種說法都不對(duì)
(3)軟件測(cè)試的目的是
A)評(píng)估軟件可靠性
B)發(fā)現(xiàn)并改正程序中的錯(cuò)誤
C)改正程序中的錯(cuò)誤
D)發(fā)現(xiàn)程序中的錯(cuò)誤
(4)下面描述中,不屬于軟件危機(jī)表現(xiàn)的是
A)軟件過程不規(guī)范
B)軟件開發(fā)生產(chǎn)率低
C)軟件質(zhì)量難以控制
D)軟件成本不斷提高
(5)軟件生命周期是指
A)軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用退役的過程
B)軟件從需求分析、設(shè)計(jì)、實(shí)現(xiàn)到測(cè)試完成的過程
C)軟件的開發(fā)過程
D)軟件的運(yùn)行維護(hù)過程
(6)面向?qū)ο蠓椒ㄖ,繼承是指
A)一組對(duì)象所具有的相似性質(zhì)
B)一個(gè)對(duì)象具有另一個(gè)對(duì)象的性質(zhì)
C)各對(duì)象之間的共同性質(zhì)
D)類之間共享屬性和操作的機(jī)制
(7)層次型、網(wǎng)狀型和關(guān)系型數(shù)據(jù)庫劃分原則是
A)記錄長(zhǎng)度
B)文件的大小
C)聯(lián)系的復(fù)雜程度
D)數(shù)據(jù)之間的聯(lián)系方式
(8)一個(gè)工作人員可以使用多臺(tái)計(jì)算機(jī),而一臺(tái)計(jì)算機(jī)可被多個(gè)人使用,則實(shí)體工作人員、與實(shí)體計(jì)算機(jī)之間的聯(lián)系是
A)一對(duì)一
B)一對(duì)多
C)多對(duì)多
D)多對(duì)一
(9)數(shù)據(jù)庫設(shè)計(jì)中反映用戶對(duì)數(shù)據(jù)要求的模式是
A)內(nèi)模式
B)概念模式
C)外模式
D)設(shè)計(jì)模式
(10)有三個(gè)關(guān)系R、S和T如下:
則由關(guān)系R和S得到關(guān)系T的操作是
A)自然連接
B)交
C)投影
D)并
(11)以下關(guān)于結(jié)構(gòu)化程序設(shè)計(jì)的敘述中正確的是
A)一個(gè)結(jié)構(gòu)化程序必須同時(shí)由順序、分支、循環(huán)三種結(jié)構(gòu)組成
B)結(jié)構(gòu)化程序使用goto語句會(huì)很便捷
C)在C語言中,程序的模塊化是利用函數(shù)實(shí)現(xiàn)的
D)由三種基本結(jié)構(gòu)構(gòu)成的程序只能解決小規(guī)模的問題
(12)以下關(guān)于簡(jiǎn)單程序設(shè)計(jì)的步驟和順序的說法中正確的是
A)確定算法后,整理并寫出文檔,最后進(jìn)行編碼和上機(jī)調(diào)試
B)首先確定數(shù)據(jù)結(jié)構(gòu),然后確定算法,再編碼,并上機(jī)調(diào)試,最后整理文檔
C)先編碼和上機(jī)調(diào)試,在編碼過程中確定算法和數(shù)據(jù)結(jié)構(gòu),最后整理文檔
D)先寫好文檔,再根據(jù)文檔進(jìn)行編碼和上機(jī)調(diào)試,最后確定算法和數(shù)據(jù)結(jié)構(gòu)
(13)以下敘述中錯(cuò)誤的是
A) C程序在運(yùn)行過程中所有計(jì)算都以二進(jìn)制方式進(jìn)行
B)C程序在運(yùn)行過程中所有計(jì)算都以十進(jìn)制方式進(jìn)行
C)所有C程序都需要編譯鏈接無誤后才能運(yùn)行
D)C程序中整型變量只能存放整數(shù),實(shí)型變量只能存放浮點(diǎn)數(shù)
(14)有以下定義:int a; long b; double x,y;則以下選項(xiàng)中正確的表達(dá)式是
A)a%(int)(x-y)
B)a=x!=y;
C)(a*y)%b
D)y=x+y=x
(15)以下選項(xiàng)中能表示合法常量的是
A)整數(shù):1,200
B)實(shí)數(shù):1.5E2.0
C )字符斜杠: ‘\’
D)字符串: "\007"
(16)表達(dá)式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);
。
程序運(yùn)行后的輸出結(jié)果是
A)0
B)1
C)2
D)3
(19)若有定義語句int a, b;double x;則下列選項(xiàng)中沒有錯(cuò)誤的是
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);
。
程序運(yùn)行后的輸出結(jié)果是
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);
}
程序執(zhí)行后的輸出結(jié)果是
A)y=0
B)y= -1
C)y=1
D)while構(gòu)成無限循環(huán)
(22)有以下程序
#include
main()
{char s[」=”rstuv";
printf(”%c\n”,*s+2);
。
程序運(yùn)行后的輸出結(jié)果是
A)tuv
B)字符t的ASCII碼值
C)t
D)出錯(cuò)
(23)有以下程序
#include
#include
main()
{char x[]=”STRING”;
x[0」=0;x[1]=’\0’;x[2」=’0’;
printf(”%d %d\n”,sizeof(x),strlen(x));
}
程序運(yùn)行后的輸出結(jié)果是
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;}
程序運(yùn)行后的輸出結(jié)果是
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)有定義語句:int *p[4];以下選項(xiàng)中與此語句等價(jià)的是
A)int p[4];
B)int **p;
C)int *(p「4」);
D)int (*p)「4」;
(27)下列定義數(shù)組的語句中,正確的是
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è)元素的整型數(shù)組,以下錯(cuò)誤的定義語句是
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);}
程序運(yùn)行后的輸出結(jié)果是
A)1,4
B)4,4
C)3,1
D)4,1
(30)有以下程序(函數(shù)fun只對(duì)下標(biāo)為偶數(shù)的元素進(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”);
。
程序運(yùn)行后的輸出結(jié)果是
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)下列選項(xiàng)中,能夠滿足“若字符串s1等于字符串s2,則執(zhí)行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所指字符串正確復(fù)制到t所指存儲(chǔ)空間的是
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函數(shù)用以連接兩個(gè)字符串)
#include
#include
main()
{char a[20]=”ABCD\OEFG\0”,b[]=”IJK”;
strcat(a,b);printf(”%s\n”,a);
。
程序運(yùn)行后的輸出結(jié)果是
A)ABCDE\OFG\OIJK
B)ABCDIJK
C)IJK
D)EFGIJK
(34)有以下程序,程序中庫函數(shù)islower (ch)用以判斷ch中的字母是否為小寫字母
#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);
。
程序運(yùn)行后的輸出結(jié)果是
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”);}
程序運(yùn)行后的輸出結(jié)果是
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);
。
程序運(yùn)行后的輸出結(jié)果是
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);
。
程序運(yùn)行后的輸出結(jié)果是
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平臺(tái)上編譯運(yùn)行,程序運(yùn)行后的輸出結(jié)果是
A)2,4 B)4,4 C)4,8 D)10,6
(39)若有以下語句
Typedef struct S
{int g; char h;}T;
以下敘述中正確的是
A)可用S定義結(jié)構(gòu)體變量
B)可用T定義結(jié)構(gòu)體變量
C)S是struct類型的變量
D)T是struct S類型的變量
(40)有以下程序
#include
main()
{short c=124;
c=c_______;
printf(“%d\n”、C);
。
若要使程序的運(yùn)行結(jié)果為248,應(yīng)在下劃線處填入的是
A)>>2 B)|248 C)&0248 D)<
二、填空題(每空2分,共30分)
請(qǐng)將每空的正確答案寫在答題卡【1】至【15】序號(hào)的橫線上,答在試卷上不得分。
(1)一個(gè)棧的初始狀態(tài)為空。首先將元素5,4,3,2,1依次入棧,然后退棧一次,再將元素A,B,C,D依次入棧,之后將所有元素全部退棧,則所有元素退棧(包括中間退棧的元素)的順序?yàn)椤?】
(2)在長(zhǎng)度為n的線性表中,尋找最大項(xiàng)至少需要比較【2】次。
(3)一棵二叉樹有10個(gè)度為1的結(jié)點(diǎn),7個(gè)度為2的結(jié)點(diǎn),則該二叉樹共有【3】個(gè)結(jié)點(diǎn)。
(4)僅由順序、選擇(分支)和重復(fù)(循環(huán))結(jié)構(gòu)構(gòu)成的程序是【4】程序。
(5)數(shù)據(jù)庫設(shè)計(jì)的四個(gè)階段是:需求分析,概念設(shè)計(jì),邏輯設(shè)計(jì)【5】。
(6)以下程序運(yùn)行后的輸出結(jié)果是【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);
}
程序運(yùn)行時(shí)輸入:1234567程序的運(yùn)行結(jié)果是【7】。
(8)在C語言中,當(dāng)表達(dá)式值為0時(shí)表示邏輯值“假”,當(dāng)表達(dá)式值為【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]);}
}
程序運(yùn)行后的輸出結(jié)果是【9】。
(10)以下fun函數(shù)的功能是:找出具有N個(gè)元素的一維數(shù)組中的最小值,并作為函數(shù)值返回。請(qǐng)?zhí)羁铡?設(shè)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;}
程序運(yùn)行后的輸出結(jié)果是【11】
(12)以下fun函數(shù)的功能是在N行M列的整形二維數(shù)組中,選出一個(gè)最大值作為函數(shù)值返回,請(qǐng)?zhí)羁铡?設(shè)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]);
。
程序運(yùn)行后的輸出結(jié)果是【13】
(14)以下程序的功能是:借助指針變量找出數(shù)組元素中最大值所在的位置并輸出該最大值。請(qǐng)?jiān)谳敵稣Z句中填寫代表最大值的輸出項(xiàng)。
#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)以下程序打開新文件f.txt,并調(diào)用字符輸出函數(shù)將a數(shù)組中的字符寫入其中,請(qǐng)?zhí)羁铡?/p>
#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);
。
計(jì)算機(jī)二級(jí)C語言筆試歷年真題及答案 2
一、 選擇題(7分,每小題0.5分)
1.C語言源程序的基本單位是( )。
A 過程 B 函數(shù) C 子程序 D 標(biāo)識(shí)符
2.下列程序的輸出結(jié)果是( )。
main( )
{ int a=7,b=5;
printf("%d ",b=b/a);
}
A 5 B 1 C 0 D不確定值
3.假設(shè)變量a,b均為整型,表達(dá)式(a=5,b=2,a>b?a++:b++,a+b)的值是( )。
A 7 B 8 C 9 D 2
4.設(shè)a為int型變量,執(zhí)行下列賦值語句后,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.設(shè)有如下程序段,下面描述中正確的是 ( )。
int k=10; while(k=0) k=k-1;
A 循環(huán)執(zhí)行一次 B循環(huán)是無限循環(huán) C循環(huán)體語句一次也不執(zhí)行 D循環(huán)體語句執(zhí)行一次
6.以下程序的輸出結(jié)果為( )。
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語言程序中,以下說法正確的是( )。
A函數(shù)的定義可以嵌套,但函數(shù)的調(diào)用不可以嵌套
B函數(shù)的定義不可以嵌套,但函數(shù)的調(diào)用可以嵌套
C函數(shù)的`定義和函數(shù)的調(diào)用都不可以嵌套
D函數(shù)的定義和函數(shù)的調(diào)用都可以嵌套
8.以下函數(shù)調(diào)用語句中含有( )個(gè)實(shí)參。
func((e1,e2),(e3,e4,e5));
A 2 B 3 C 5 D 語法錯(cuò)誤
9.以下程序的輸出結(jié)果為( )。
#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中,系統(tǒng)為變量w分配( )字節(jié)的空間。
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.設(shè)有以下定義,值為5的枚舉常量是( )。
enum week{sun,mon=4,tue,wed,thu,fri,sat} w;
A tue B sat C fri D thu
12.下面選項(xiàng)中正確的賦值語句是(設(shè) char a[5],*p=a;)( )。
A p="abcd"; B a="abcd"; C *p="abcd"; D *a="abcd";
13.設(shè)有以下程序段,則值為6的表達(dá)式是( )。
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語言中的文件類型只有( )。
A 索引文件和文本文件兩種 B 文本文件一種
C 二進(jìn)制文件一種 D ASCII碼文件和二進(jìn)制文件兩種
二、 判斷對(duì)錯(cuò),對(duì)的劃“√”,錯(cuò)的劃“×”(5分,每小題0.5分)
1.在Turbo C中,整型數(shù)據(jù)在內(nèi)存中占2個(gè)字節(jié)。( )
2.int i=20;switch(i/10){case 2:printf("A");case 1:printf("B");}的輸出結(jié)果為A。( )
3.break語句用在循環(huán)體中,可結(jié)束本層循環(huán),continue語句用在循環(huán)體中,可結(jié)束本次循環(huán)。( )
4.函數(shù)的遞歸調(diào)用不過是一個(gè)函數(shù)直接或間接地調(diào)用它自身。( )
5.函數(shù)strlen("ASDFG ")的值是7。( )
6.通過return語句,函數(shù)可以帶回一個(gè)或一個(gè)以上的返回值。( )
7.結(jié)構(gòu)體類型只有一種。 ( )
8.char *p="girl";的含義是定義字符型指針變量p,p的值是字符串"girl"。( )
9.若有定義:char *p(char a[10]);則p是函數(shù)名。( )
10.用fopen("file","r+");打開的文件"file"可以進(jìn)行修改。 ( )
三、 寫出下列程序的運(yùn)行結(jié)果(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);
}
四 、閱讀下列程序,在 處填入適當(dāng)內(nèi)容,使程序完整(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è)整數(shù),按先大后小的順序輸出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.用選擇排序法對(duì)任意10個(gè)整數(shù)按照由小到大排序。
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
二 、判斷對(duì)錯(cuò),對(duì)的劃“√”,錯(cuò)的劃“×”(5分,每小題0.5分)
1.× 2.× 3.√ 4.√ 5.×
6.× 7.× 8.× 9.√ 10.√
三 、寫出下列程序的運(yùn)行結(jié)果(10分,每小題2分)
1. 2. 3.
4. 5.
四、 閱讀下列程序,在 處填入適當(dāng)內(nèi)容,使程序完整(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)
計(jì)算機(jī)二級(jí)C語言筆試歷年真題及答案 3
一、 選擇題(24分,每小題2分)
1.已知函數(shù)fread的調(diào)用形式為fread(buffer,size,count,fp),其中buffer代表的是( )。
A 存放讀入數(shù)據(jù)項(xiàng)的存儲(chǔ)區(qū) B 存放讀入數(shù)據(jù)的地址或指向此地址的指針
C 一個(gè)指向所讀文件的文件指針 D 一個(gè)整形變量,代表要讀入的數(shù)據(jù)項(xiàng)總數(shù)
2.以下程序的輸出結(jié)果為( )。
main( )
{ int i=010,j=10;
printf("%d,%d ",i++,j--);
}
A 11,9 B 9,10 C 8,10 D 9,9
3.設(shè)a為int型變量,執(zhí)行下列賦值語句后,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.設(shè)i和k都是int類型,則for循環(huán)語句( )。
for(i=0,k=-1;k=1;i++,k++) printf("****");
A 循環(huán)結(jié)束的條件不合法 B 循環(huán)體一次也不執(zhí)行 C 循環(huán)體只執(zhí)行一次 D 是無限循環(huán)
5.以下程序的輸出結(jié)果為( )。
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.函數(shù)調(diào)用語句:fseek(fp,-10L,2);的含義是( )。
A 將文件位置指針從文件末尾處向文件頭的方向移動(dòng)10個(gè)字節(jié)
B 將文件位置指針從當(dāng)前位置向文件頭的方向移動(dòng)10個(gè)字節(jié)
C 將文件位置指針從當(dāng)前位置向文件末尾方向移動(dòng)10個(gè)字節(jié)
D 將文件位置指針移到距離文件頭10個(gè)字節(jié)處
7.以下程序的.輸出結(jié)果為( )。
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.下列說法不正確的是( )。
A 主函數(shù)main中定義的變量在整個(gè)文件或程序中有效
B 不同函數(shù)中,可以使用相同名字的變量
C 形式參數(shù)是局部變量
D 在一個(gè)函數(shù)內(nèi)部,可以在復(fù)合語句中定義變量,這些變量只在本復(fù)合語句中有效
9.在下列程序段中,枚舉變量 c1的值是( )。
enum color { red,yellow,blue=4,green,white}c1; c1=yellow; c1=white;
A 1 B 3 C 5 D 6
10.設(shè)有說明 int (*ptr)();其中標(biāo)識(shí)符ptr是( )。
A 是一個(gè)指向整形變量的指針 B 是一個(gè)指針,它指向一個(gè)函數(shù)值是int的函數(shù)
C 是一個(gè)函數(shù)名 D定義不合法
11.定義由n個(gè)指向整形數(shù)據(jù)的指針組成的數(shù)組p,其正確的方式為( )。
A int p; B int (*p)[n]; C int *p[n]; D int (*p)( );
12.具有相同類型的指針類型變量p與數(shù)組a,不能進(jìn)行的操作是( )。
A p=a; B *p=a[0]; C p=&a[0]; D p=&a;
二 、判斷對(duì)錯(cuò),對(duì)的劃“√”,錯(cuò)的劃“×”(20分,每小題2分)
1.參加位運(yùn)算的數(shù)據(jù)可以是任何類型的數(shù)據(jù)。( )
2.若有定義和語句:int a;char c;float f;scanf("%d,%c,%f",&a,&c,&f);若通過鍵盤輸入:10,A,12.5,則a=10,c=‘A’,f=12.5。( )
3.C語言把文件看作是一個(gè)字符(字節(jié))的序列。( )
4.若有宏定義:#define S(a,b) t=a;a=b;b=t由于變量t沒定義,所以此宏定義是錯(cuò)誤的。( )
5.在Turbo C中,下面的定義和語句是合法的:file *fp;fp=fopen("a.txt","r");( )
6.若有定義:char s[ ]="china";則Turbo C系統(tǒng)為數(shù)組s開辟6個(gè)字節(jié)的內(nèi)存單元。( )
7.若有定義和語句: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.若有定義和語句:struct student { int num; char name[10]; float score;} s[5]={{1,"lili",98.5},{9,"xiaohua",66}},*p=s;printf("%d",*p++);輸出結(jié)果是1。( )
9.在程序中定義了一個(gè)結(jié)構(gòu)體類型后,可以多次用它來定義具有該類型的變量。( )
10.在Turbo C中,此定義和語句是合法的:enum aa{ a=5,b,c}bb;bb=(enum aa)5;( )
三 、寫出下列程序的運(yùn)行結(jié)果(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);
}
四、 閱讀下列程序,在 處填入適當(dāng)內(nèi)容,使程序完整(20分,每個(gè)空2分)
1. 百馬百擔(dān)問題:有100匹馬,馱100擔(dān)貨,大馬馱3擔(dān),中馬馱2擔(dān),兩匹小馬馱1擔(dā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.用“起泡法”對(duì)輸入的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è)函數(shù),功能是求二階矩陣(m行n列矩陣)的所有靠外側(cè)的各元素值之和。(本程序中二階矩陣用一維數(shù)組來表示。)
例如,矩陣為:
3 0 0 3
2 5 7 3
1 0 4 2
則所有靠外側(cè)的各元素值之和為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.用指針作函數(shù)參數(shù),編程序求一維數(shù)組中的最大和最小的元素值。
#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 )
二 、判斷對(duì)錯(cuò),對(duì)的劃“√”,錯(cuò)的劃“×”(20分,每小題2分)
1.( × ) 2.( √ ) 3.( √ ) 4.( × ) 5.( × )
6.( √ ) 7.( √ ) 8.( × ) 9.( √ ) 10.( √ )
三 、寫出下列程序的運(yùn)行結(jié)果(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
四 、閱讀下列程序,在 處填入適當(dāng)內(nèi)容,使程序完整(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]
【計(jì)算機(jī)二級(jí)C語言筆試歷年真題及答案】相關(guān)文章:
計(jì)算機(jī)二級(jí)考試C語言歷年真題及答案解析03-10
計(jì)算機(jī)二級(jí)考試C語言歷年真題09-26
計(jì)算機(jī)二級(jí)C語言真題及答案09-26
四川省計(jì)算機(jī)二級(jí)C語言筆試真題及答案03-29
2017年計(jì)算機(jī)二級(jí)c語言題庫歷年真題03-26
2016年計(jì)算機(jī)二級(jí)c語言真題及答案03-29
2016年計(jì)算機(jī)二級(jí)C語言考試真題及答案03-05