- 相關推薦
2024年計算機二級考試C語言模擬真題
無論是在學校還是在社會中,我們都離不開試題,試題是參考者回顧所學知識和技能的重要參考資料。那么問題來了,一份好的試題是什么樣的呢?以下是小編為大家收集的2024年計算機二級考試C語言模擬真題,僅供參考,歡迎大家閱讀。
計算機二級考試C語言模擬真題 1
一、程序填空題
請補充fun()函數(shù),該函數(shù)的功能是:把字符的ASCII 碼為奇數(shù)的字符從字符串str中刪除,結果仍然保存在字符串str中,字符串str從鍵盤輸入,其長度作為參數(shù)傳人fur ()函數(shù)。
例如,輸入“abcdef”,則輸出“bdf”。
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在main()函數(shù)的橫線上填入所編寫的若干表達式或語句。
試題程序:
#include
#define N 100
void【1】
{
int 1,J;
【2】 ;
for(i=0;i if(s[i]%2==0)
s[j++]=s[i];
【3】 ;
}
void main()
{
int i=0,len=0;
char str[N];
printf("please input a string:\n");
gets(str);
while(str[i]!=’\0’)
{
len++;
i++;
}
fun(str,len);
printf("The result strin9:\n");
puts(str);
}
二、程序改錯題
下列給定程序中,函數(shù)fun()的功能是:計算函數(shù)F(x,y,z)=(x+v)/(x-y)+(z+y)/(z-y)的值。其中x和Y 的值不相等,2和Y的值不相等。例如,當X的'值為1,y的值為2,z的值為3,函數(shù)值為2.00。
注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結構。
試題程序:
#include
#include
//****found****
#define F(m,n)(m/n)
float fun(float a,float b,float c)
{
float s;
s=F((a+b),(a-b))+F((c+b),(c-b));
//****found****
Return(s);
}
void main()
{
float x,y,z,sum;
printf("input x y z:");
scanf("%f%f%f",&x,&y,&z);
printf("x=%f,y=%f,z=%f\n”,x,y,z);
if(x==Y||y==z)
{
printf("Data error!\n");
exit(0);
}
sum=fun(x,y,z)
printf("the result is:%5.2f\n",sum);
}
三、程序設計題
編寫一個函數(shù),輸入n個字符串,串與串之間以Enter 鍵分隔,找出最短字符串中第一個字符串,傳回該串地址(用一個新串“*”作為結束輸入的標志)。
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填人所編寫的若干語句。
試題程序:
#include
#include
#include
char*fun(*s)[100],int num)
{
}
void main()
{
char strFl0][100],*min;
int n,i=0;
FILE*out:printf("input strings with’*’
as end:");
gets(str[i]);
puts(str[i]);
while(!strcmp(str[i],"*")==0)
{
i++:
gets(str[i]):
puts(str[i]);
}
n=1;
min=fun(str,n);
printf("\nmin=%s\n",min);
out=fopen("outfile.dat","w");
strcpy(str[O],"fust,");
strcpy(str[1],"a");
strcpy(str[2],"test");
strcpy(str[3],"some");
strcpy(str[4],"tool?!?");
fprintf(out,"%s",fun(str,5));
fclose(out);
}
【試題答案與解析 】
一、程序填空題
【1】fun(char s[],int n)【2】j=0【3】s[i]=’\0 ’
【解析】先判斷ASCIl碼的奇偶。
第一空:根據(jù)主函數(shù)“fun(str,len);”調(diào)用語句,其中1en 為字符串str的長度,用來控制循環(huán)。根據(jù)主函數(shù)中對應的調(diào)用語句,補全fun()函數(shù)定義,第一空填“fun(char s[],int n)”。
第二空:“s[j++]=s[i];”語句中j的變量在使用前要對其取值進行初始化,因為數(shù)組下標是由0開始,初始化值為0,所以第二空填“j=0”。
第三空:新生成的字符串要加尾符標志,所以第三空填“s[j]=’\0’”。
二、程序改錯題
(1)錯誤:#defineF(m,n)(m/n)
正確:#define F(m,n)(m)/(n)
(2)錯誤:Return(s);
正確:return(s)
【解析】程序中函數(shù)的功能是計算題目中給出的公式值,第一個標識:fun()函數(shù)兩次調(diào)用宏F來計算“s=F((a+b),(a- b))+F((c+b),(c-b));”。檢查宏的定義是否正確,可以用實參代入宏進行展開:并非(a十b)/(a-b),而是(a+b/a-b),因為“/”的優(yōu)先級高于“+”或“-”,所以要使用括號限定計算優(yōu)先順序。所以將“#define F(m,n)(m/n)”改為“#define F(m,n) (m)/(n)”。
第二個標識下返回語句的關鍵字有誤。因為C語言中區(qū)分大小寫,所以應將“Relurn(s);”改成“return(s);”。
三、程序設計題
int i;
char*min;
rain=s[o];//min初始化
for(i=0;i if(strlen(rain)>strlen(s[i]))//rain指向的字符串與其他的字符串長度進行比較
min=s[i];
return min;//返回最小值的字符串
【解析】首先指定第一個字符串為長度最小的字符串,然后在循環(huán)過程中將其與其他的所有串的長度進行比較,求出最小的串。設置一個指針變量min,使它的初值為第一個字符串,再使其他的所有串的長度與min的長度進行比較,若其他字符串的長度小于min,則將其他字符串的首地址賦值給min。最后使用返回語句,返回最短長度min的字符串的地址。
計算機二級考試C語言模擬真題 2
二、填空題(每空2分,共30分)
。1)某二叉樹有5個度為2的結點以及3個度為1的結點,則該二叉樹中共有【1】 個結點。
。2)程序流程圖中的菱形框表示的是 【2】 。
(3)軟件開發(fā)過程主要分為需求分析、設計、編碼與測試四個階段,其中 【3】 階段產(chǎn)生“軟件需求規(guī)格說明書。
。4)在數(shù)據(jù)庫技術中,實體集之間的'聯(lián)系可以是一對一或一對多或多對多的,那么“學生”和“可選課程”的聯(lián)系為 【4】 。
(5)人員基本信息一般包括:身份證號,姓名,性別,年齡等。其中可以作為主關鍵字的是 【5】 。
。6)若有定義語句:int a=5;,則表達式:a++的值是 【6】 。
。7)若有語句double x=17;int y;,當執(zhí)行y=(int)(x/5)%2;之后y的值為 【7】 。
。8)以下程序運行后的輸出結果是 【8】 。
#include
main()
{ int x=20;
printf(“%d”,0
printf(“%d ”,0
(9)以下程序運行后的輸出結果是 【9】 。
#include
main()
{ int a=1,b=7;
do {
b=b/2;a+=b;
} while (b>1);
printf(“%d ”,a);}
。10)有以下程序
#include
main()
{ int f,f1,f2,i;
f1=0;f2=1;
printf(“%d %d”,f1,f2);
for(i=3;i<=5;i++)
{ f=f1+f2; printf(“%d”,f);
f1=f2; f2=f;
}
printf(“ ”);
}
程序運行后的輸出結果是 【10】 。
。11)有以下程序
#include
int a=5;
void fun(int b)
{ int a=10;
a+=b;printf(“%d”,a);
}
main()
{ int c=20;
fun(c);a+=c;printf(“%d ”,a);
}
程序運行后的輸出結果是 【11】 。
(12)設有定義:
struct person
{ int ID;char name[12];}p;
請將scanf(“%d”, 【12】 );語句補充完整,使其能夠為結構體變量p的成員ID正確讀入數(shù)據(jù)。
。13)有以下程序
#include
main()
{ char a[20]=”How are you?”,b[20];
scanf(“%s”,b);printf(“%s %s ”,a,b);
}
程序運行時從鍵盤輸入:How are you?<回車>
則輸出結果為 【13】 。
(14)有以下程序
#include
typedef struct
{ int num;double s}REC;
void fun1( REC x ){x.num=23;x.s=88.5;}
main()
{ REC a={16,90.0 };
fun1(a);
printf(“%d ”,a.num);
}
程序運行后的輸出結果是 【14】 。
。15)有以下程序
#include
fun(int x)
{ if(x/2>0) run(x/2);
printf(“%d ”,x);
}
main()
{ fun(6);printf(“ ”); }
程序運行后的輸出結果是 【15】 。
計算機二級考試C語言模擬真題 3
一、選擇題((1)—(10)、(21)—(40)每題2分,(11)—(20)每題1分,共70分)
(1)下列數(shù)據(jù)結構中,屬于非線性結構的是
A.循環(huán)隊列
B.帶鏈隊列
C.二叉樹
D.帶鏈棧
。2)下列數(shù)據(jù)結果中,能夠按照“先進后出”原則存取數(shù)據(jù)的是
A.循環(huán)隊列
B.棧
C.隊列
D.二叉樹
。3)對于循環(huán)隊列,下列敘述中正確的是
A.隊頭指針是固定不變的
B.隊頭指針一定大于隊尾指針
C.隊頭指針一定小于隊尾指針
D.隊頭指針可以大于隊尾指針,也可以小于隊尾指針
(4)算法的空間復雜度是指
A.算法在執(zhí)行過程中所需要的計算機存儲空間
B.算法所處理的數(shù)據(jù)量
C.算法程序中的語句或指令條數(shù)
D.算法在執(zhí)行過程中所需要的臨時工作單元數(shù)
。5)軟件設計中劃分模塊的一個準則是
A.低內(nèi)聚低耦合
B.高內(nèi)聚低耦合
C.低內(nèi)聚高耦合
D. 高內(nèi)聚高耦合
。6)下列選項中不屬于結構化程序設計原則的是
A.可封裝。
B. 自頂向下
C.模塊化
D. 逐步求精
。7)軟件詳細設計產(chǎn)生的圖如下:
該圖是
A.N-S圖
B.PAD圖
C.程序流程圖
D. E-R圖
。8)數(shù)據(jù)庫管理系統(tǒng)是
A.操作系統(tǒng)的一部分
B.在操作系統(tǒng)支持下的系統(tǒng)軟件
C.一種編譯系統(tǒng)
D. 一種操作系統(tǒng)
。9)在E-R圖中,用來表示實體聯(lián)系的圖形是
A.橢圓圖
B.矩形
C.菱形
D. 三角形
。10)有三個關系R,S和T如下:
其中關系T由關系R和S通過某種操作得到,該操作為
A.選擇
B.投影
C.交
D.并
。11)以下敘述中正確的是
A.程序設計的任務就是編寫程序代碼并上機調(diào)試
B.程序設計的任務就是確定所用數(shù)據(jù)結構
C.程序設計的任務就是確定所用算法
D.以上三種說法都不完整
。12)以下選項中,能用作用戶標識符的'是
A.void
B.8_8
C._0_
D.unsigned
(13)閱讀以下程序
#include
main()
{ int case; float printF;
printf(“請輸入2個數(shù):”);
scanf(“%d %f”,&case,&pjrintF);
printf(“%d %f ”,case,printF);
}
該程序編譯時產(chǎn)生錯誤,其出錯原因是
A.定義語句出錯,case是關鍵字,不能用作用戶自定義標識符
B.定義語句出錯,printF不能用作用戶自定義標識符
C.定義語句無錯,scanf不能作為輸入函數(shù)使用
D.定義語句無錯,printf不能輸出case的值
。14)表達式:(int)((double)9/2)-(9)%2的值是
A.0
B.3
C.4
D.5
(15)若有定義語句:int x=10;,則表達式x-=x+x的值為
A.-20
B.-10
C.0
D.10
。16)有以下程序
#include
main()
{ int a=1,b=0;
printf(“%d,”,b=a+b);
printf(“%d ”,a=2*b);
}
程序運行后的輸出結果是
A.0,0
B.1,0
C.3,2
D.1,2
17)設有定義:int a=1,b=2,c=3;,以下語句中執(zhí)行效果與其它三個不同的是
A.if(a>B. c=a,a=b,b=c;
B.if(a>B. {c=a,a=b,b=c;}
C.if(a>B. c=a;a=b;b=c;
D.if(a>B. {c=a;a=b;b=c;}
。18)有以下程序
#include
main()
{ int c=0,k;
for (k=1;k<3;k++)
switch (k)
{ default: c+=k
case 2: c++;break;
case 4: c+=2;break;
}
printf(“%d ”,C.;
}
程序運行后的輸出結果是
A.3
B.5
C.7
D.9
。19)以下程序段中,與語句:k=a>b?(b>c?1:0):0;功能相同的是
A.if((a>b)&&(b>C.) k=1;
else k=0;
B.if((a>b)||(b>C. k=1;
else k=0;
C.if(a<=B. k=0;
else if(b<=C.k=1;
D.if(a>B. k=1;
else if(b>C.k=1;
else k=0;
20)有以下程序
#include
main()
{ char s[]={“012xy”};int i,n=0;
for(i=0;s[i]!=0;i++)
if(s[i]>=’a’&&s[i]<=’z’) n++;
printf(“%d ”,n);
}
程序運行后的輸出結果是
A.0
B.2
C.3
D.5
。21)有以下程序
#include
main()
{ int n=2,k=0;
while(k++&&n++>2);
printf(“%d %d ”,k,n);
}
程序運行后的輸出結果是
A.0 2
B.1 3
C.5 7
D.1 2
(22)有以下定義語句,編譯時會出現(xiàn)編譯錯誤的是
A.char a=’a’;
B.char a=’ ’;
C.char a=’aa’;
D.char a=’x2d’;
。23)有以下程序
#include
main()
{ char c1,c2;
c1=’A’+’8’-‘4’;
c2=’A’+’8’-‘5’;
printf(“%c,%d ”,c1,c2);
}
已知字母A的ASCII碼為65,程序運行后的輸出結果是
A.E,68
B.D,69
C.E,D
D.輸出無定值
。24)有以下程序
#include
void fun(int p)
{ int d=2;
p=d++; printf(“%d”,p);}
main()
{ int a=1;
fun(a); printf(“%d ”,a);}
程序運行后的輸出結果是
A.32
B.12
C.21
D.22
(25)以下函數(shù)findmax擬實現(xiàn)在數(shù)組中查找最大值并作為函數(shù)值返回,但程序中有錯導致不能實現(xiàn)預定功能
#define MIN -2147483647
int findmax (int x[],int n)
{ int i,max;
for(i=0;i
{ max=MIN;
if(max
return max;
}
造成錯誤的原因是
A.定義語句int i,max;中max未賦初值
B.賦值語句max=MIN;中,不應給max賦MIN值
C.語句if(max
D.賦值語句max=MIN;放錯了位置
(26)有以下程序
#include
main()
{ int m=1,n=2,*p=&m,*q=&n,*r;
r=p;p=q;q=r;
printf(“%d,%d,%d,%d ”,m,n,*p,*q);
}
程序運行后的輸出結果是
A.1,2,1,2
B.1,2,2,1
C.2,1,2,1
D.2,1,1,2
。27)若有定義語句:int a[4][10],*p,*q[4];且0≤i<4,則錯誤的賦值是
A.p=a
B.q[i]=a[i]
C.p=a[i]
D.p=&a[2][1]
。28)有以下程序
#include
#include
main()
{ char str[ ][20]={“One*World”, “One*Dream!”},*p=str[1];
printf(“%d,”,strlen(p));printf(“%s ”,p);
}
程序運行后的輸出結果是
A.9,One*World
B.9,One*Dream
C.10,One*Dream
D.10,One*World
(29)有以下程序
#include
main()
{ int a[ ]={2,3,5,4},i;
for(i=0;i<4;i++)
switch(i%2)
{ case 0:switch(a[i]%2)
{case 0:a[i]++;break;
case 1:a[i]--;
}break;
case 1:a[i[=0;
}
for(i=0;i<4;i++) printf(“%d”,a[i]); printf(“ ”);
}
A.3 3 4 4
B.2 0 5 0
C.3 0 4 0
D.0 3 0 4
。30)有以下程序
#include
#include
main()
{ char a[10]=”abcd”;
printf(“%d,%d ”,strlen(a),sizeof(a));
}
程序運行后的輸出結果是
A.7,4
B.4,10
C.8,8
D.10,10
。31)下面是有關C語言字符數(shù)組的描述,其中錯誤的是
A.不可以用賦值語句給字符數(shù)組名賦字符串
B.可以用輸入語句把字符串整體輸入給字符數(shù)組
C.字符數(shù)組中的內(nèi)容不一定是字符串
D.字符數(shù)組只能存放字符串
。32)下列函數(shù)的功能是
fun(char * a,char * b)
{ while((*b=*a)!=’’) {a++,b++;} }
A.將a所指字符串賦給b所指空間
B.使指針b指向a所指字符串
C.將a所指字符串和b所指字符串進行比較
D.檢查a和b所指字符串中是否有’’
。33)設有以下函數(shù)
void fun(int n,char * s) {……}
則下面對函數(shù)指針的定義和賦值均是正確的是
A.void (*pf)(); pf=fun;
B.viod *pf(); pf=fun;
C.void *pf(); *pf=fun;
D.void (*pf)(int,char);pf=&fun;
。34)有以下程序
#include
int f(int n);
main()
{ int a=3,s;
s=f(a);s=s+f(a);printf(“%d ”,s);
}
int f(int n)
{ static int a=1;
n+=a++;
return n;
}
程序運行以后的輸出結果是
A.7
B.8
C.9
D.10
。35)有以下程序
#include
#define f(x) x*x*x
main()
{ int a=3,s,t;
s=f(a+1);t=f((a+1));
printf(“%d,%d ’,s,t);
}
程序運行后的輸出結果是
A.10,64
B.10,10
C.64,10
D.64,64
。36)下面結構體的定義語句中,錯誤的是
A.struct ord {int x;int y;int z;}; struct ord a;
B.struct ord {int x;int y;int z;} struct ord a;
C.struct ord {int x;int y;int z;} a;
D.struct {int x;int y;int z;} a;
。37)設有定義:char *c;,以下選項中能夠使字符型指針c正確指向一個字符串的是
A.char str[ ]=”string”;c=str;
B.scanf(“%s”,C.;
C.c=get);
D.*c=”string”;
。38)有以下程序
#include
#include
struct A
{ int a; char b[10]; double c;};
struct A f(struct A t);
main()
{ struct A a={1001,”ZhangDa”,1098.0};
a=f(a);jprintf(“%d,%s,%6.1f ”,a.a,a.b,a.C.;
}
struct A f(struct A t)
( t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;return t; )
程序運行后的輸出結果是
A.1001,ZhangDa,1098.0
B.1001,ZhangDa,1202.0
C.1001,ChangRong,1098.0
D.1001,ChangRong,1202.0
。39)若有以下程序段
int r=8;
printf(“%d ”,r>>1);
輸出結果是
A.16
B.8
C.4
D.2
。40)下列關于C語言文件的敘述中正確的是
A.文件由一系列數(shù)據(jù)依次排列組成,只能構成二進制文件
B.文件由結構序列組成,可以構成二進制文件或文本文件
C.文件由數(shù)據(jù)序列組成,可以構成二進制文件或文本文件
D.文件由字符序列組成,其類型只能是文本文件
【計算機二級考試C語言模擬真題】相關文章:
計算機等級考試二級C語言真題12-02
計算機二級C語言筆試真題精選04-02
計算機二級C語言真題填空題03-04
計算機二級C語言新增無紙化真題12-06
計算機二級C語言歷年真題及答案05-29
下半年計算機二級C語言考試真題06-29
計算機二級考試C語言模擬練習題03-19
全國計算機二級考試C++真題09-20