




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2021年安徽省亳州市全國計算機等級考試C語言程序設計預測試題(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.數據庫DB、數據庫系統DBS、數據庫管理系統DBMS之間的關系是()。
A.DB包括DBS和DBMSB.DBMS包括DB和DBSC.DBS包括DB和DBMSD.沒有任何關系
2.以下程序的輸出結果是()。main{charw[][10]={"ABCD","EFGH","IJKL","MNOP"),K;for(k=1;k<3;k++)printf("%s\n",w[k]);A.ABCDFGHKLB.ABCDEFGUC.EFGJKOD.EFGHUKL
3.已知廣義表:A=(a,b),B=(A,A),C=(a,(b,A),B),tail(head(tail(C)))的運算結果是()。
A.(a)B.AC.aD.(A)
4.下面不屬于需求分析階段任務的是()。
A.確定軟件系統的功能需求B.確定軟件系統的性能需求C.制定軟件集成測試計劃D.需求規格說明書評審
5.數據在計算機存儲器內表示時,物理地址與邏輯地址相同并且是連續的,稱為()。
A.存儲結構B.邏輯結構C.順序存儲結構D.鏈式存儲結構
6.數據庫設計包括兩個方面的設計內容,它們是()。
A.概念設計和邏輯設計B.模式設計和內模式設計C.內模式設計和物理設計D.結構特性設計和行為特性設計
7.若有定義“doublea=22;inti=0,k=18;”,則不符合C語言規定的賦值語句是()。
A.i=(a+k)<=(i+k);B.i=a%11;C.a=a++,i++;D.i=!a;
8.設有以下函數:voidfun(intn,char*s){…}則下面對函數指針的定義和賦值均正確的是()。
A.void(*pf)();pf=fun;
B.void*pf();pf=fun
C.void*pf();*pf=fun;
D.void(*pf)(int,char);pf=&fun;
9.程序執行后的輸出結果是()。A.321.cbaB.123.abcC.abc,123D.1bc,a23
10.有以下程序
#defineN15
fun(inta[],intn,intm)
{inti,j;
for(i=m;i>=n;i--)
a[i+1]=a[i];
}
main()
{inti,a[N]={1,2,3,4,5,6,7,8,9,10};
fun(a,3,7);
for(i=3;i<8;i++)
printf("%d",a[i]);
}
程序的運行結果是A.A.45678
B.44567
C.45567
D.45677
11.
12.
13.在下列排序算法中,在待排序的數據表已經為有序時,花費時間反而最多的是()
A.希爾排序B.堆排序C.冒泡排序D.快速排序
14.C語言中char類型數據占字節數為()。
A.3B.4C.1D.2
15.按照標識符的要求,()符號不能組成標識符。A.連接符B.下劃線C.大小寫字母D.數字字符
16.
17.下列關于AOE網的敘述中,不正確的是()。
A.關鍵活動不按期完成就會影響整個工程的完成時間
B.任何一個關鍵活動提前完成,那么整個工程將會提前完成
C.所有的關鍵活動提前完成,那么整個工程將會提前完成
D.某些關鍵活動提前完成,那么整個工程將會提前完成
18.以下程序段中,輸出信息不能正確反映變量大小關系的是()。
A.if(x>y)printf(“x>y”);if(x<y)printf(“x<y”);elseprintf(“x=y”);
B.if(x>=y)if(x>y)printf(“x>y”);elseprintf(“x=y”);elseprintf(“x<y”);
C.if(x>y)printf(“x>y”);if(y>x)printf(“x<y”);if(x==y)printf(“x=y”);
D.if(x>y)printf(“x>y”);elseif(y<x)printf(“x<y”);elseprintf(“x=y”);
19.在一個C語言源程序文件中所定義的全局變量,其作用域為()。
A.所在文件的全部范圍B.所在程序的全部范圍C.所在函數的全部范圍D.由具體定義位置和extern說明來決定范圍
20.以下敘述中正確的是______。
A.C語言比其他語言高級
B.C語言可以刁;用編譯就能被計算機識別執行
C.C語言以接近英語國家的自然語言和數學語言作為語言的表達形式
D.C語言出現的最晚,具有其他語言的一切優點
二、2.填空題(20題)21.在數據庫的概念結構設計中,常用的描述工具是【】。
22.“printf("%d\n",strlen("\t\"023\xABC\n");”語句的輸出結果是______。
23.若從鍵盤輸入58,則以下程序輸出的結果是【】。
mam()
{inta;
scanf("%d",&a);
if(a>50)printf("%d",a);
if(a>40)printf("%d",a);
if(a>30)printf("%d",a);
}
24.以下程序運行后的輸出結果是______。
main()
{
intx=15;
while(x>10&&x<50)
{
x++;
if(x/3){x++;break;}
elsecontinue;
}
printf("%d\n",x);
}
25.某二叉樹中度為2的結點有n個,則該二叉樹中有【】個葉子結點。
26.以下程序中,函數fun的功能是計算x2-2x+6,主函數中將調用fun函數計算:
y1=(x+8)2-2(x+8)+6
y2=sin2(x)-2sin(x)+6
請填空。
#include"math.h"
doublefun(doublex){return(x*x-2*x+6);}
main()
{doublex,y1,y2;
printf("Enterx:");scanf("%lf",&x);
y1=fun(【】);
y2=fun(【】);
printf("y1=%lf,y2=%lf\n",y1,y2);
}
27.根據以下if語句寫出與其功能相同的switch語句(x的值在0~100之間)。
if語句:
if(x<60)m=1;
elseif(x<70)m=2;
elseif(x<80)m=3;
elseif(x<90)m=4;
elseif(x<100)m=5;
switch語句:
switch(【】)
{
【】m=1;break;
case6:m=2;break;
case7:m=3;break;
case8:m=4;break;
【】m=5;
}
28.設有如下程序段:
inti=0,sum=1;
do
{sum+=i++;}
while(i<6);
printf("%d\n",sum);
上述程序段的輸出結果是【】。
29.以下程序的輸出結果是【】。
#include<stdio.h>
main()
{inti;
for(i='a';i<'f';i++,i++)printf("%c",i-'a'+'A');
printf("\n");
}
30.若a=10,b=20,則表達式!(a<b)的值是【】。
31.以下程序的功能是:刪去一維數組中所有相同的數,使之只剩一個。數組中的數已按由小到大的順序排列,函數返回刪除后數組中數據的個數。
例如,若一維數組中的數據是:
2223445666677899101010
刪除后,數組中的內容應該是:
2345678910。
請填空。
#include<stdio.h>
#defineN80
intfun(inta[],intn)
{inti,j=1;
for(i=1;i<n;i++)
if(a[j-1][
32.以下涵數rotate的功能是:將a所指N行N列的二維數組中的最后一行放到b所指二維數組的第0列中,把a所指二維數組中的第0行放到b所指二維數組的最后一列中,b所指二維數組中其他數據不變。
#defineN4
voidrotade(inta[][N],intb[][N])
{inti,j;
for(i=0;i<N;i++)
{b[i][N-1]=【】;【】=a[N-1][i];}}
33.以下程序運行后的輸出結果是______。
main()
{chara[]="Language",b[]="Programe";
char*p1,*p2;
intk;
p1=a;p2=b;
for(k=0;k<=7;k++)
if(*(p1+k)==*(p2+k))printf("%c,*(p1+k));
}
34.一棵二叉樹第六層(根節點為第一層)的節點數最多為______。
35.最簡單的交換排序方法是______。
36.通常,將軟件產品從提出、實現、使用維護到停止使用退役的過程稱為【】。
37.有以下程序:
#include<stdio.h>
main()
{charch1,ch2;intn1,n2;
ch1=getchar();ch2=getehar();
n1=ch1-'0';n2=n1*10+(ch2-'0');
printf("%d\n",n2);
}
程序運行時輸入:12<回車>,執行后的輸出結果是【】。
38.一個項目具有一個項目主管,一個項目主管可管理多個項目,則實體"項目主管"與實體"項目"的聯系屬于【】的聯系。
39.若有以下程序:
main()
{inta=4,b=3,c=5,t=0;
if(a<b)t=a;a=b;b=t;
if(a<c)t=a;a=c;c=t;
printf("%d%d%d\n",a,b,c);
}
執行后的輸出結果是【】。
40.下述函數用于統計一行字符中的單詞個數,單詞之間用空格分隔。
wordnum(str)
charstr[];
{inti,num=0,word=0;
for(i=0;str[i]!=【】;i++)
if(【】==)word=0;
elseif(word==0)
{
word=1;
【】;
}
return(num);
}
三、1.選擇題(20題)41.若有下列定義(設int類型變量占2個字節):floatx=123.4567;則下列語句:printf("x=%5.2f",x);輸出的結果是()。
A.x=123.46B.123.4567C.x=123.4567D.123.46
42.有以下程序
main()
{inta[4][4]={{l,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,j,k,t;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
for(k=j+1;k<4;k++)
if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/
for(i=0;i<4;i++)printf("%d,",a[i][i]);
}
程序運行后的輸出結果是
A.1,6,5,7,B.8,7,3,1,C.4,7,5,2,D.1,6,2,1,
43.設有定義語句:intx[6]={2,4,6,8,5,7},*p=x,i;要求依次輸出x數組6個元素中的值,不能完成此操作的語句是()。
A.for(i=0;i<6;i++)printf("%2d",*(p++));
B.for(i=0;i<6;i++)printf("%2d",*(p+i));
C.for(i=0;i<6;i++)printf("%2d",*p++);
D.for(i=0;i<6;i++)printf("%2d",(*p)++);
44.以下程序的輸出結果是______。main(){inta=-1,b=1,k;if((++a<0)&&!(b--<=0))printf("%d%d\n",a,b);elseprintf("%d%d\n",b,a);}
A.-11B.01C.10D.00
45.若有說明:inta[][3]={0,0};則不正確的敘述是()。
A.數組a的每個元素的初值都是0
B.數組a的第一維大小為1
C.數組a的行數為1
D.只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0
46.若有以下說明和定義typedeint*INTEGER;INTEGERp,*q;以下敘述正確的是
A.p是int型變量
B.p是基類型為int的指針變量
C.q是基類型為int的指針變量
D.程序中可用INTEGER代替int類型名
47.以下敘述中正確的是______。
A.C語言比其他語言高級
B.C語言可以不用編譯就能被計算機識別執行
C.C語言以接近英語國家的自然語言和數學語言作為語言的表達形式
D.C語言出現的最晚,具有其他語言的一切優點
48.下列能正確定義一維數組的選項是()。
A.inta[5]={0,1,2,3,4,5}
B.chara[]={0,1,2,3,4,5};
C.chara={'A','B','C'};
D.inta[5]="0123";
49.假定當前盤符下有兩個如下文本文件:文件名a1.txta2.txt內容123#321#則下面程序段執行后的結果為#include"stdio.h"voidfc(FILE*p){charc;while((c=fgetc(p))!='#')putchar(c);}main(){FILE*fp;fp=fopen("a1.txt","r");fc(fp);fclose(fp);
A.123321B.123C.321D.以上答案都不正確
50.有如下程序#include<stdio.h>main(){FILE*fpl;fpl=fopen("f1.txt","w");fprintf(fp1,"abc");fclose(fp1);}若文本文件f1.txt中原有內容為:good,則運行以上程序后文件f1.txt中的內容為
A.goodabcB.abcdC.abcD.abcgood
51.有以下程序#include<stdio.h>main(){FILE*fp;intk,n,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w");fprintf(fp,"%d%d%d\n",a[0],a[1],a[2]);fprintf(fp,"%d%d%d\n",a[3],a[4],a[5]);fclose(fp);fp=fopen("d2.dat","r");fscanf(fp,"%d%d",&k,&n
A.12B.14C.1234D.123456
52.軟件開發的結構化生命周期方法將軟件生命周期劃分成()
A.定義、開發、運行維護
B.設計階段、編程階段、測試階段
C.總體設計、詳細設計、編程調試
D.需求分析、功能定義、系統設計
53.下列程序的輸出結果是()。
#include<stdio.h>
#defineF(x)2.84+x
#definew(y)printf("%d",(int(y))
#defineP(y)w(y)pmchar('\n'》
main()
{intx=2;
P(F(5)*x);
}
A.12B.13C.14D.16
54.設有以下語句()structst{intn;structst*next;};staticstructsta[3]={5,&a[1],7,&a[2],9,'\0'},*p;p=&a[0]則表達式()的值是6。
A.p++->nB.p->n++C.(*P).n++D.++p->n
55.有下列程序:#include<stdio.h>main(){charc1,c2,c3,c4,c5,c6;scanf("%c%c%c%c",&c1,&c2,&c3,&c4);c5=getchar();c6=getchar();putchar(c1);putchar(c2);printf("%c%c\n",c5,c6);}程序運行后,若從鍵盤輸入(從第1列開始)123<CR>45678<CR>則輸出結果是()。
A.1267B.1256C.1278D.1245
56.以下敘述中錯誤的是
A.C語言中對二進制文件的防問速度比文本文件快
B.C語言中,隨機文件以二進制代碼形式存儲數據
C.語句FILEfp;定義了一個名為fp的文件指針
D.C語言中的文本文件以ASCII碼形式存儲數據
57.有以下等程序#include<string.h>voidf(char*s,char*t){chark;k=*s;*s=*t;*t=k;s++;t--;if(*s)f(s,t);}main(){charstt[10]="abcdefg",*p;p=str+strlen(str)/2+1;f(p,p-2);printf("%s\n",str);}
A.abcdefgB.gfedcbaC.gbcdefaD.abedcfg
58.有如下程序:#include<stdio.h>main(){inta=2,b=-1,c=2;if(a<b)if(b<0)c=0;elsec++;printf("%d\n",c);}該程序的輸出結果是
A.0B.1C.2D.3
59.若執行下面的程序時,從鍵盤上輸入5和2,則輸出結果是main(){inta,b,k;scanf("%d,%d",&a,&b);k=a;if(a<b)k=a%b;elsek=b%a;printf("%d\n",k);}
A.5B.3C.2D.0
60.設x=2.5、a=7、y=4.7,算術表達式x+a%3*(int)(x+y)%2/4的值為______。
A.2.5B.7C.4.7D.2.75
四、選擇題(20題)61.有以下程序
62.程序調試的目的是
A.發現程序中的錯誤B.改正程序中的錯誤C.驗證程序的正確性D.改善軟件的性能
63.在軟件設計中不使用的工具是()。
A.系統結構圖B.PAD圖C.數據流圖(DFD圖)D.程序流程圖
64.軟件設計中衡量模塊獨立性的度量標準是()。
A.抽象和信息隱蔽B.局部化和封裝化C.內聚性和耦合性D.激活機制和控制方法
65.
66.以下程序段
67.
68.設x為int型變量,則執行以下語句后,x的值為()。x=10;x=x-=x-x;
A.10B.20C.40D.30
69.以下敘述中正確的是()。
A)C程序中的#include和#define行均是C語句,只是語法不同
B)除賦值運算符外,逗號運算符的優先級最低
C)C程序中,j++;是賦值語句
D)C程序中,+、-、*、/、%號是算數運算符,可用于整型和實型數的運算
70.以下程序的輸出結果是()。main{inta[3][3]=“l,2),{3,4),{5,6)},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf(”%d\n”,s);}A.18B.19C.20D.21
71.
72.有以下程序:
程序運行后的輸出結果是()。
A.12
B.15
C.16
D.20
73.以下關于typedef的敘述錯誤的是()。A.用tyFedef可以增加新類型
B.typedef只是將已存在的類型用一個新的名字來代表
C.用typedef可以為各種類型說明一個新名,但不能用來為變量說明一個新名
D.用typedef為類型說明一個新名,通常可以增加程序的可讀性
74.下列數據結構中,屬于非線性結構的是()。
A.帶鏈隊列B.循環隊列C.帶鏈棧D.二叉樹
75.若要說明一個類型名STP,使得定義語句STPs;等價于Char*s;,以下選項中正確的是()。
A.typedefChar*s;
B.typedefChar*STP;
C.typedefSTP*Char;
D.typedef*CharSTP;
76.(22)下列關于棧的敘述中正確的是()
A.在棧中只能插入數據
B.在棧中只能刪除數據
C.棧是先進先出的線性表
D.棧是先進后出的線性表
77.若有語句:Char*line[5];,以下敘述中正確的是()。
A.定義line是一個數組,每個數組元素是一個基類型為Char的指針變量
B.定義line是一個指針變量,該變量可以指向一個長度為5的字符型數組
C.定義line是一個指針數組,語句中的*號稱為間址運算符
D.定義line是一個指向字符型函數的指針
78.
79.
80.設x=011050,則x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
五、程序改錯題(1題)81.下列給定程序中,函數proc()的功能是:根據整型形參n的值,計算如下公式的值。t=1-1/(2*2)-1/(3*3)-…-l/(n*n)例如,當n=7時,t=0.488203。請修改函數proc()中的錯誤,使它能得出正確的結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:
六、程序設計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫一個函數fun(),用來求出數組中值最大的元素在數組中的下標并將其存放在k所指向的存儲單元中。例如,輸入如下整數:876675896101301401980431451777則輸出結果為6,980。注意:部分源程序在文件prog1.c中。請勿改動主函數main()和其他函數中的任何內容,僅在函數fun()的花括號中填入你編寫的若干語句。試題程序:
參考答案
1.CC。【解析】數據庫系統(DBS)由數據庫(DBS)、數據庫管理系統(DBMS)、數據庫管理員、硬件平臺和軟件平臺五個部分組成,可見DB和DBMS都是DBS的組成部分。
2.D當k=1時,循環成立,輸出w[l]的數組即EFGH,接著執行k++后k為2;當k=2時,循環成立,輸出w[2]的數組即IJKL,接著執行k++后,k為3;當k=3時,循環不成立,退出。
3.D
4.C【答案】:C
【知識點】:需求分析階段的任務
【解析】:需求分析階段的任務是深入描述軟件的功能和性能,確定軟件設計的約束和軟件同其他系統元素的接口細節,定義軟件的其他有效性需求,借助于當前系統的邏輯模型導出目標系統邏輯模型,解決目標系統“做什么”的問題。可分為需求提出、需求描述及需求評審三個階段。從此可以看出需求分析的任務不包括制定軟件集成測試計劃,故選C。
5.C
6.A解析:模式設計和內模式設計是概念設計的兩種方法。物理設計是根據特定的計算機系統,對數據的存儲結構和存取方法進行設計,從而實現從邏輯結構到物理結構的轉換。從系統開發的角度來看,結構特性設計和行為特性-設計是數據庫應用系統所具有的兩個特性。結構特性的設計,設計各級數據庫模式(靜態特性):行為特性的設計,改變實體及其特性,決定數據庫系統的功能(動態特性)。
7.B運算符“%”為二元運算符,具有左結合性,參與運算的量均為整型。B選項中的變量a是double型,不符合規定。故本題答案為B選項。
8.A函數指針的定義格式為函數類型(*指針變量名)(形參列表);函數名和數組名一樣代表了函數代碼的首地址,因此在賦值時,直接將函數指針指向函數名就行了。所以選項A正確。
9.D[解析]字符串是一個特殊的數組,所以按照數組的規則,s1應該指向的是數組的首地址,即"abc的第一個字符的地址。s2指向的是"123"的第一個字符的地址。調用swap函數之后交換的是兩個字符串的第一個字符ai和1的內容,所以打印輸出為D)。
10.B題目中的程序包括主程序main和fun函數。主程序中定義了一個數組a,并賦給了初值。通過調用fun函數,對數組a中的值進行更改操作,最后要求的結果是輸出數組a中a[3]~a[7]的值。解決本題的關鍵在于清楚地理解fun函數的功能。fun函數有3個形參,包括1個整型數組a[],2個整型變量n和m。fun函數的功能是將數組a[i+1]的值等于a[i]的值,i的初始值大小為m,依次減1,直到數值等于n。主函數調用fun函數時,輸入的實參為(a,3,7),即fun函數要將數組a[i+1]的值等于a[i]的值,i的取值范圍從7到3,如a[8]=a[7]。fun函數執行完畢,數組a中的值變為1,2,3,4,4,5,6,7,9,10。輸出a[3]~a[7]的值為4,4,5,6,7。
11.D
12.D
13.D
14.CChar類型數據占1個字節。
15.A
16.D
17.B
18.A選項A中,若條件“x>y”為真,輸出“x>y”;若條件“x<y”為真,輸出“x<y”;若條件“x>=y”為真,輸出“x=y”。選項A錯誤,其他選項都正確。故本題答案為A選項。
19.D
\n全局變量是在函數外部任意位置上定義的變量,它的作用域是從變量定義的位置開始,到整個源文件結束止。當全局變量定義在后,引用它的函數在前時,應該在引用它的函數中用extern對此全局變量進行說明,以便通知編譯程序該變量是一個已在外部定義了的全局變量,這時全局變量的作用域從extern說明處起,延伸到該函數末尾。
\n
20.C解析:計算機語言分為低級語言、匯編語言和高級語言,C語言屬于高級語言,但并不是說C語言比其他語言高級,所以選項A錯誤;除了低級語言外,其他各種語言都必須譯成能被計算機識別的二進制數才能執行,選項B錯誤;C語言出現從1972年到1973年間,并不是出現最晚的語言,所以選項D也是錯誤的。
21.E-R圖E-R圖解析:E-R圖是設計概念模型的有力工具。
22.66解析:strlen()函數的作用是計算字符串的長度并作為函數的返回值,這里的長度不包括串尾的結束標志\'\\0\'。
\'\\t\'f是轉義字符,代表橫向跳若干格:'\\'是轉義字符,代表雙引號;\'\\023\'只代表一個字符,而不管轉義字符后面有幾個字符;’僅AB,是以兩位十六進制數AB表示的ASCII碼字符,只代表一個字符;\'\\n\'是轉義字符,代表回車換行。
5個字符常量各代表一個字符,再加上字母C,所以返回的長度是6。
23.585858585858解析:在程序小,執行scanf()語句后,a被賦值為58。接著執行第一個if語句,因為,a=58>50,執行第一個if語句后面的輸出語句,輸出58;接著執行第二個if語句,因為,a=58>40,執行第二個if語句后面的輸出語句,輸出58;接著執行第三個if語句,因為,a=58>30,執行第三個if語句后面的輸出語句,輸出58,所以最后的輸出為585858。
24.1717解析:break語句只能在循環體和switch語句體內使用,當break出現在循環體中的switch語句體內時,其作用只是跳出該switch語句體。當break出現在循環體中,但不在switch語句體內時,則在執行break后,跳出本層循環體。而continue語句的作用時結束本次循環,即跳過本次循環中余下尚未執行的語句,接著再一次進行循環的條件判定。本題中首先定義了一個變量x并賦初值15,然后判斷循環條件“x>5&&x<50”,即“x>5&&x<50”,為真,執行循環體.語句“x++;”執行后,x的值變為16,“X/3”的值為5為真,執行其后的語句“x++;”,x的值變為17,執行語句“break”,退出循環,輸出。x的值為17。
25.n+1n+1解析:在任意一棵二叉樹中,度為0的結點(即葉子結點)總是比度為0的結點多一個。
26.x+8sin(x)x+8,sin(x)解析:考查考生對函數調用相關知識的了解。用x+8代替函數fun(doublex)中形式參數x;用sin(x)代替函數fun(doublex)中形式參數x。
27.x/10case0:case1:case2:case3:case4:case5:case9:x/10\r\ncase0:case1:case2:case3:case4:case5:\r\ncase9:
28.16
29.ACEACE解析:在本題中,for循環體每執行完一次,變量i的值自加兩次。i的初值為“a”,執行一次循環后變為“c”,之后再變成“e”,當其變為“g”時,循環條件若不滿足,循環終止,故本題共輸出3個字符。表達式“i-'a'+'A'”即表示輸出i對應的大寫字母,結果為ACE。
30.00解析:已知a=10,b=20,所以邏輯表達式a<b的值為true,即為1,在這個表達式前面有一個邏輯運算符!,表示反操作,所以整個語句的值應當為false,即為0。
31.本題程序的流程是:讓i;j都從1開始,其中j用于控制刪除后剩下的數中的下標,i用于搜索原數組中的元素。j始終是新數組已有元素中最后一個元素的下一個元素的下標,所以if()中的條件是a[j-1]!=a[i],其中a[j-1]就是新數組中的最后一個元素,若條件成立則表示出現了不同的值,所以s[i]要留到新數組中。注本題中i、j的初值都要從1開始,該算法只能用于數組已排序的題目中。\r\n\r\n
32.a[0][i]b[i][o]a[0][i]\r\nb[i][o]解析:b[i][N-1]=a[0][i]實現把a所指二維數組中的第0行放到b所指二維數組的最后一列中,b[i][0]=a[N-1][i]實現將a所指N行N列的二維數組中的最后一行放到b所指二維數組的第0列中。
33.gae
34.在二叉樹的第k層上,最多有2k-1(k>1)個結點。
35.冒泡排序冒泡排序解析:交換排序是指借助數據元素之間的互相交換進行排序的一種方法。冒泡排序是一種最簡單的交換排序方法,它是通過相鄰元素之間的相互交換逐步將線性表變成有序。
36.軟件生命周期軟件生命周期解析:軟件產品從考慮其概念開始,到該軟件產品不能使用為止的整個時期都屬于軟件生命周期。一般包括可行性研究與需求分析、設計、實現、測試、交付使用以及維護等活動。
37.1212解析:程序中的ch1與ch2為字符型變量,輸入12后,ch1得到字符'1',ch2得到字符'2'。n1=ch1-'0'將字符1,轉換為數值1,同理,n2為1*10+2=12。程序執行后輸出十進制整數12。
38.一對多(或1∶N)一對多(或1∶N)解析:兩個實體集間的聯系實際上是實體集間的函數關系,這種函數關系可以有3種,即一對一(1∶1)的聯系、一對多(1∶N)或多對一(N∶1)的聯系和多對多(N∶N)的聯系。
39.503503解析:本題考查的是C語言中if語句的語句體。第一個if語句的語句體為t=a,第二個if語句的語句體為t=a。執行第一個if語句時,條件a<b不成立,所以不執行t=a,直接執行語句a=b和b=t得a=3、b=0,然后判斷第二個if語句的條件a<c是否成立,即判斷3<5是否成立,顯然條件成立,執行語句t=a得t=3,接著執行a=c;c=t得a=5、c=3,所以a=5、c=3、b=0。
40.\0'或0或NULLstr[i]num++或num=num+1或num+=1\\0'或0或NULL\r\nstr[i]\r\nnum++或num=num+1或num+=1解析:觀察題目要求,可以知道以下幾點:
①for循環的結束條件應當是:str[i]已是字符串的最后一個字符;
②str[i]代表字符串sb中的第i+1個字符:
③整型變量num的值是要記錄的單詞的個數。
C語言中規定字符串的最后一個字符是一個隱含的字符串結束符“\\0”,所以在題中第一個空中應填寫“\\0”;題中第二個空應填寫“str[i]”,以判斷當前位置的字符是否為空格;題中第二個空中應當填寫“num++”,通過變量num的加1累加得到字符串中的單詞個數。
41.A解析:本題考查printf函數的格式。“%5.2f”格式符中的“f”表示以帶小數點的形式輸出單精度或者雙精度數:“5”表示指定數據輸出寬度為5;“.2”表示指定輸出數據小數位占2位數,并對截去的第一位小數做四舍五入處理。
42.A解析:本題利用多重for循環的嵌套來實現對二維數組元素的按列排序。利用最外層循環來實現對列的控制。內部循環利用選擇法對數組元素按照從小到大的順序進行排列,最后輸出對角線上的元素值。
43.D解析:*p=x的作用是將x的首地址賦給指針變量p。選項A)正確,*(P++)中括號內的++是在P的后面,所以它先取*P的值x[0],再執行p++;選項B)正確,p+i表示x[i]的地址,*(p+i)表示x[i]的值;選項C)中的*和++處于同一優先級別,而結合方向為自右而左,因此*p++相當于*(p++),與選項A)相同;選項D)中的(*p)++是使*p的值+1,即x[0]的值加1,它不能實現指針的移動,每次循環只是x[0]的值在改變,而P的值并沒有改變,所以不能實現6個元素的輸出。
44.C解析:C語言中如果邏輯與運算符左邊的表達式為假,右邊的表達式就不再運算了,(++a<0)=(0<0)=0,所以邏輯與右邊的表達式就不參與運算,沒有改變b的值。因此輸出b=1,a=0。
45.D解析:本題考查給二維數組元素賦值。給二維數組元素賦值時應注意下列兩點:①在對二維數組元素賦初值時,可以只對部分元素賦初值,未賦初值的元素自動取0。②二維數組第一維的大小由下列規則確定;當初值的個數能被第二維的常量表達式的值除盡時,所得商數就是第一維的大小;當初值的個數不能被第二維的常量表達式的值除盡時,第一維的大小等于所得商數加1。
46.B解析:INTEGER是類型名,由它來間接定義p和*q的類型,因此,p是基類型為int的指針變量,故選項A不正確,選項B正確,q是二級指針變量,它指向基類型是int的指針變量,故選項C,D不正確。所以4個選項中B正確。
47.C解析:計算機語言分為低級語言、匯編語言和高級語言,C語言屬于高級語言,但并不是說C語言比其他語言高級,所以選項A錯誤;除了低級語言外,其他各種語言都必須編譯成能被計算機識別的二進制數才能執行,選項B錯誤;C語言出現在1972年到1973年間,并不是出現最晚的語言,所以選項D也是錯誤的。
48.B解析:在定義數組時,如果賦給的初始值個數大于數值的長度,這樣就會越界,因此選項A)錯誤;選項C)中定義的是一個字符變量C;選項D)中整型數組,中只能存儲整型數據,而不能存儲字符串常量“0123”。
49.A解析:本題的功能是順序的讀兩個文本文件,依次輸出。當打開文件時出現錯誤,fopen函數將返回NULL。
50.C解析:主函數中定義了一個文件指針fp1,然后通過fopen()函數,以寫的方式打開文件“fl.txt”,并讓指針fp1指向它,接著調用fpfintf()函數將“abc”寫到文件fp1所指的文件里,由于開始fp1指向文件的“fl.txt”的開始位置,因此“abc”將把文件“fl.txt”里原來的內容“good”覆蓋掉,故文件“fl.txt”里最后的內容為“abc”。
51.D解析:將有6個元素的整型數組分兩行輸出到一個文件中,因為輸出的都是數字并且每行都沒有分隔符,所以當再對其進行讀取操作時,每一行都會被認為是一個完整的數,而換行符則作為它們的分隔符。
52.A解析:通常,將軟件產品從提出、實現、使用維護到停止使用退役的過程稱為軟件生命周期。它可以分為軟件定義、軟件開發及軟件運行維護3個階段。
53.A解析:本題考查帶參數的宏的定義及相關運算。P(F(5)*x)=P(2.84+5*2)=P(12.84),調用w(12.84),輸出(int)(12.84)=12。
54.D
55.D解析:當用scanf函數從鍵盤輸入數據時,每行數據的末尾按下回車鍵(Enter鍵)之前,可以任意修改。但按下回車鍵putchar(c1)(Enter鍵)之后,scanf函數即接受了這一行數據,不能再回去修改。所以本題中,當輸入123<CR>時,變量c1、c2、c3的值分別為1、2、3,當輸入45678<CR>時,變量c5、c6的值4和5。所以用輸出函數putchar(c1)輸出1,putchar(c2)輸出2,printf('%c%c\\n',c5,c6)輸出45。所以選項D)為正確答案。
56.C解析:本題考查了C語言中文件的一些基本概念。定義文件類型指針變量的一般形式為:
FILE*指針變量名;
因此選項C是錯誤的,應該選擇C。
57.B解析:本題考查的是遞歸函數。在一個函數中直接或間接地調用了自身,則稱此函數為遞歸函數。本題定義的函數f()就是一個遞歸函數。它先交換兩個字符指針所指的內容,然后將第1個指針往后移動一位,第2個指針往前移動一位,如果第1個指針所指內容不是字符串結束標志,則遞歸調用自身。主函數中首先定義了一個字符數組sTR[10]='abcdefg',然后定義了一個字符指針p=str+strlen(str)/2+1,即讓p指向str+4(或&str[4])的位置.然后調用f(p,p-2);,這使得p所指的str[4]及其以后的2個位置str[5]、str[6]中的內容同p-2所指的3tr[2]及其以前的2個位置str[1]、str[0]中的內容互相交換。即讓整個字符串逆序。所以本題應該選擇B。
58.C解析:if語句嵌套使用時,else總是與它上面最近的if配對。因此,本題中先判斷(a<b),因為表達式的值為0,故不執行下面的if語句,直接跳到printf行,c值沒有改變。
59.C解析:本題考查簡單的if...else語句。先執行條件if(a<b),顯然不成立,則執行else語句。
60.A解析:取模運算只能在整型數據之間進行,a為整型變量。因為%、*、/這三個運算符的優先級別相同,而類型轉換符優先于*和/運算符。a的值為7,7%3=1,所以(int)(2.5+4.7)=7,1*7=7,7%2=1,1/4=0,所以表達式x+a%3*(int)(x+y)%2/4=x+0=2.5。
61.A函數fun的功能是將第二個字符串鏈接到第一個字符串的末尾,第二個字符串不變。所以選擇A)。
62.B調試也稱排錯或糾錯。它與成功的測試形影相隨,測試成功的標志是發現錯誤。根據錯誤跡象,診斷錯誤的原因和位置,進而改正程序中的錯誤,這就是調試的任務。
調試分為靜態調試和動態調試,靜態調試就是指對源程序進行分析,然后確定可能出錯的地方并進行排錯。動態調試是指對程序的運行進行跟蹤并觀察其出錯點,然后進行排錯。
靜態調試通常可以采用如下兩種方法。
(1)輸出寄存器的內容
在測試中出現問題,設法保留現場信息。把所有的寄存器和主存中有關部分的內容打印出來(通常以八進制或十六進制的形式打印),進行分析研究。用這種方法調試,輸出的是程序的靜止狀態(程序在某一時刻的狀態),效率非常低,不得已才采用。
(2)為取得關鍵變量的動態值,在程序中插入打印語句。這是取得動態信息的簡單方法,并可檢驗在某事件后某個變量是否按預期要求發生了變化。此方法
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025遼寧石化職業技術學院輔導員考試試題及答案
- 2025貴州黔南經濟學院輔導員考試試題及答案
- T/ZHCA 005-2019化妝品影響皮膚彈性測試方法
- 過敏性疾病的一級預防
- 親子活動設計方案
- 2025年廣東省深圳市坪山區中考歷史二模試卷
- T/ZBH 026-2023晶硅光伏組件用材料第3部分:雙玻光伏組件用壓延玻璃彎曲強度、抗沖擊性及表面應力技術規范
- 健康體檢課件
- 新疆昆侖藍鉆鋰業有限責任公司招聘筆試題庫2025
- 幼兒園安全衛生工作總結
- 《中小學生端午節安全教育主題班會》課件
- 高級網絡技術試題及答案
- 2025年春季《中華民族共同體概論》第二次平時作業-國開(XJ)-參考資料
- 第3章 一元一次不等式(組)單元測試(原卷)2024-2025學年湘教版七年級數學下冊
- 股權終止合作協議書
- 河南省鄭州市2025年中考二模語文試題(含答案)
- 寧波市慈溪市2025年小升初數學自主招生備考卷含解析
- 2025園林景觀設計合同范本
- 《海南三亞西島景區營銷現狀問卷調查及營銷問題和優化對策》12000字
- 江蘇省蘇、錫、常、鎮2025屆高考仿真模擬生物試卷含解析
- 2024年河南鄭州航空港投資集團招聘真題
評論
0/150
提交評論