




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2022年甘肅省天水市全國計算機等級考試C語言程序設計重點匯總測試卷(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.有以下程序:
程序運行后的輸出結果是()。
A.0B.一1C.1D.7
2.視圖設計一般有3種設計次序,下列不屬于視圖設計次序的是()。
A.自頂而下B.由內向外C.由外向內D.自底向上
3.閱讀以下程序及對程序功能的描述,其中正確的是#include<stdio.h>main(){FILE*in,*out;charch,infile[10],outfile[10];printf(“Entertheinfilename:\n”);scanf(“%s”,infile);printf(“Entertheoutfilename:\n”);scanf(“%s”,outfile);if((in=foen(infile,“r”))==NULL)printf(“cannotopeninfile\n”);exit(0);if((out=fopen(outfile,“w”))==NULL)printf(“cannotopenoutfile\n”);exit(0);while(!feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);A.程序完成將磁盤文件的信息在屏幕上顯示的功能
B.程序完成將兩個磁盤文件合二為一的功能
C.程序完成將一個磁盤文件復制到另一個磁盤文件中
D.程序完成將兩個磁盤文件合并并在屏幕上輸出
4.p指向線性鏈表中某一結點,則在線性鏈表的表尾插入結點s的語句序列是()。
A.while(p->next!=NULL)p=p->next;p->next=s;s->next=NULL;
B.while(p!=NULL)p=p->next;p->next=s;s->next=NULL;
C.while(p->next!=NULL)p=p->next;s->next=p;p->next=NULL;
D.while(p!=NULL)p=p->next->next;p->next=s;s->next=p->next;
5.下面敘述中錯誤的是()。
A.軟件測試的目的是發現錯誤并改正錯誤
B.對被調試的程序進行“錯誤定位”是程序調試的必要步驟
C.程序調試通常也稱為Debug
D.軟件測試應嚴格執行測試計劃,排除測試的隨意性
6.以下程序段中的變量已正確定義:for(i=0;i<4;i++,i++)for(k=1;k<3;k++);printf(“*”);該程序段的輸出結果是()。
A.*B.****C.**D.********
7.對n個元素的數組進行(),其平均時間復雜度和最壞情況下都為O(nlogn)。
A.希爾排序B.快速排序C.堆排序D.選擇排序
8.有以下程序intf(intA){returna%2;}main(){ints[8]={1,3,5,2,4,6),i,d=0;for(i=0;f(s[i];i++)d+=s[i];printf("%d\n",D);}程序運行后的輸出結果是
A.9B.11C.19D.21
9.在inta=3,int*p=&a;中,*p的值是()
A.變量a的地址值B.無意義C.變量p的地址值D.3
10.算法的時間復雜度是指()A.執行算法程序所需要的時間B.算法程序的長度C.算法程序中的指令條數D.算法執行過程中所需要的基本運算次數
11.在循環雙鏈表的p所指的結點之前插入s所指結點的操作是()。A.p->prior->prior
B.p->prior->prior
C.s->prior->next=s
D.s->prior->prior=s
12.有以下函數:intfun(char*x,char*y){intn=0;}while((*x==*y)&&*x!=‘\0’){x++;y++;n++;}returnn;}函數的功能是()。
A.將y所指字符串賦給x所指存儲空間
B.查找x和y所指字符串中是否有‘\0’
C.統計x和y所指字符串中最前面連續相同的字符個數
D.統計x和y所指字符串中相同的字符個數
13.設x=011050,則x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
14.fun函數的功能是:通過鍵盤輸入給x所指的整型數組所有元素賦值。在下劃線處應填寫的是()。#include<stdio.h>#defineN5voidfun(intx[N]){intm;for(m=N-t;m>=O;m-)scanf("%d",____);}A.%&X[++m]B.&x[m+1]C.x+(m++)D.x+m
15.C語言源程序的擴展名是()。
A..CB..exeC..objD..cp
16.在學生管理的關系數據庫中,存取一個學生信息的數據單位是()。
A.文件B.數據庫C.字段D.記錄
17.一個二維數組的定義語句為“inta[3][4]={{3,4},{2,8,6}};”,則元素a[1][2]的值為()。
A.2B.4C.6D.8
18.有以下程序:#include<stdio.h>#include<string.h>main(){chara[]=“THIS\0”,*b=“OK\0\0”;printf(“%d,%d,%d,%d”,strlen(a),sizeof(a),strlen(b),sizeof(b));}程序運行后的輸出結果是()。
A.4,6,2,4B.4,4,4,1C.6,5,2,1D.6,4,2,4
19.數據的不可分割的基本單位是()。
A.元素B.結點C.數據類型D.數據項
20.程序執行后的輸出結果是()。A.321.cbaB.123.abcC.abc,123D.1bc,a23
二、2.填空題(20題)21.下列程序的功能是將字符串s中所有的字符c刪除。請填空。
#include<stdio.h>
main()
{chars[80];
inti,j;
gets(S);
for(i=j0;s[i]!'\0';i++)
if(s[i]!='c')______;
s[j]='\0;
puts(S);
}
22.以下程序運行后的輸出結果是【】。
structNODE
{
intnum;
stmctNODE*next;
};
main()
{structNODEs[3]={{1,'\0'),{2,'\0'),{3,'\0'}),*p,*q,*r;
intsum=0;
s[0].next=s+1;
s[1].next=s+2;
s[2].next=s;
p=s
q=p->next;
r=q->next;
sum+=q->next->num;
sum+=r->next->next->num;
printf("%d\n",sum);
}
23.在結構化分析使用的數據流圖中,使()解釋其中的圖形元素。
24.在ER圖中,矩形表示【】。
25.數據的邏輯結構在計算機存儲空間中的存放形式稱為數據的【】。
26.在E-R圖中,矩形表示【】。
27.以下程序的輸出結果是【】。
fun(intx,inty,intz)
{z=x*x+y*y;}
main()
{inta=31;
fun(6,3,a)
printf("%d,a)
}
28.函數delete(s,i,n)是作用是從字符串s中刪除從第i個字符開始的n個字符,請填空。
voiddelete(chars[],inti,intn)
{intj,k,length=0;
while(s[length])
【】;
-i;
j=i
}
if(【】)
{k=i+n;
if(i+n<=length)
while(k<length)
s[j++]=s[k++];
s[j]='\0';
}
29.以下程序的輸出結果是______。
voidfun()
{staticinta=0;
a+=2;printf("%d",a);
}
main()
{intcc;
for(cc=1;cc<4;cc++)fun();
printf("\n");
}
30.在C語言中,while和do…while循環的主要區別是______的循環至少被執行一次。
31.在關系運算中,【】運算是在指定的關系中選取所有滿足給定條件的元組,構成一個新的關系,而這個新的關系是原關系的一個子集。
32.一個項目具有一個項目主管,一個項目主管可管理多個項目,則實體“項目主管”與實體“項目”的聯系屬于______的聯系。
33.在面向對象的方法中,______描述的是具有相似屬性與操作的一組對象。
34.輸入字母a時,下列程序的運行結果為【】。
#include<stdio.h>
main()
{charch;
ch=getchar();
(ch>='a'&&ch<='z')?putchar(ch+'A'-'a'):putchar(ch);
}
35.設一棵完全二叉樹共有500個結點,則在該二叉樹中有【】個葉子結點。
36.下列程序的輸出結果是______。
#include<stdio.h>
sb(ints[],intb)
{staticintn=3;
b=s[n];
n--;
return(b);
}
main()
{ints[]={1,5,6,8};
inti,x=0;
for(i=0;i<4;i++)
{x=sb(s,x);
printf("%d",x);
}
printf("\n");
}
37.以下程序是從終端讀入數據到數組中,統計其中正數的個數,并計算它們的和。請填
main()
{
inti,a[20],sum,count;
sum=count=【】;
for(i=0;i<20;i++)scanf("%d("%d",【】);
for(i=0;i<20;i++)
{
if(a[i]>0)
{count++;
sum+=【】;
}
}
printf("sum=%d,count=%d\n",sum,count);
}
38.以下fun函數的功能是:累加數組元素中的值。n為數組中元素的個數。累加的和放入x所指的存儲單元中。
fun(intb[],intn,int*x)
{intk,r=0;
for(k=0;k<n;k++)r=【】;
【】=r;
}
39.在______個容量為32的循環隊列中,若頭指針front=3,尾指針rear=2,則該循環隊列中共有______個元素。
40.以下程序運行后的輸出結果是______。
main
{
inna=b=c=5:
if(c=a+b)
printf("yes\n);
else
printf("no\n);
}
三、1.選擇題(20題)41.若變量a、i已正確定義,且i已正確賦值,合法的語句是()。A.A.a==1B.++iC.a=a++=5D.a=int(i)
42.下列的程序用來輸出兩個字符串前7個字符中對應相等的字符及其位置號,程序空白處應該填寫的是()。#include<stdio.h>main(){chars1[]="chinese",s2[]="japnese";inti;for(i=0;s1[i]!='\0'&&s2[i]!='\0';i++)if(s1[i]==s2[i]&&i<7)__________________;}
A.putchar(s2[i]);putchar(i)
B.puts(s1[i],i)
C.printf("%c%d\n",s2[i],i)
D.printf("%c",s1[i]);printf("%d\n",i)
43.設q1和q2是指向一個float型一維數組的指針變量,k為float型變量,則不能正確執行的語句是()。
A.k=*q1+*q2;B.q1=k;C.q1=q2;D.k=*q1*(*q2);
44.下列不屬于軟件工程的3個要素的是______。
A.工具B.過程C.方法D.環境
45.有以下程序:main(){intm=3,n=4,x;x=-m++;x=x+8/++n;printf("%d\n",x);}程序運行后的輸出結果是______。
A.3B.5C.-1D.-216
46.設有如下定義:structsk{intm;floatx;}data,*q;若要使q指向data中的m域,正確的賦值語句是()。
A.q=&data.m;
B.*q=data.m;
C.q=(structsk*)&data.m;
D.q=(structsk*)data.m;
47.源程序中應包含一些內部文檔,以幫助閱讀和理解程序,源程序的內部文檔通常包括選擇合適的標識符、注釋和
A.程序的視覺組織B.盡量不用或少用GOTO語句C.檢查輸入數據的有效性D.設計良好的輸出報表
48.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結點訪問順序是()。
A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca
49.執行下面程序時,若輸入1、-5、6,則輸出結果為()。#include<stdio.h>#include<math.h>#definedisc(a,b,c)b*b-4*a*cmain(){floatx1,x2;inta,b,c;scanf("%d,%d,%d",&a,&b,&c);x1=(-b+sqrt(disc(a,b,c)))/(2*a);x2=(-b-sqrt(disc(a,b,c)))/(2*a);printf("%5.1f.%5.1f",x1,x2);}
A.3,2B.3.0,2.0C.-3,-2D.程序出錯
50.下列所述中,是軟件調試技術的是()。
A.錯誤推斷B.集成測試C.回溯法D.邊界值分析
51.以下只有在使用時才為該類型變量分配內存的存儲類說明是______。
A.auto和static
B.auto和registet
C.register和static
D.extern和register
52.下列字符數組初始化語句中,不正確的是()。
A.charc[]='goodmorning';
B.char,c[20]="goodmoming";
C.charc[]={'a','b','c','d'};
D.charc[]={"goodmoming"};
53.設有下列二叉樹:
對此二叉樹中序遍歷的結果為______。
A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA
54.以下程序的輸出結果是main(){charx=040;printf("%o\n",x<<1);}
A.100B.80C.64D.32
55.閱讀下列程序段,則程序的輸出結果為
#include"stdio.h"
#defineM(X,Y)(X)*(Y)
#defineN(X,Y)(X)/(Y)
main()
{inta=5,b=6,c=8,k;
k=N(M(a,b),c);
printf("%d\n",k);
A.3B.5C.6D.8
56.C語言中,函數值類型的定義可以默認,此時函數值的隱含類型是()。
A.voidB.intC.floatD.double
57.以下不能對二維數組a進行正確初始化的語句是
A.inta[2][3]={0};
B.inta[][3]={{1,2},{0}};
C.inta[2)[3]={{1,2},{3,4},{5,6}};
D.inta[][3]={1,2,3,4,5,6};
58.有下列程序段:typedefstructNODE{intnum;structNODE*next;}OLD;下列敘述中正確的是()。
A.以上的說明形式非法B.NODE是一個結構體類型C.OLD是一個結構體類型D.OLD是一個結構體變量
59.下列關于隊列的敘述中正確的是______。A.在隊列中只能插入數據B.在隊列中只能刪除數據C.隊列是先進先出的線性表D.隊列是先進后出的線性表
60.有以下程序floatfun(intx,inty){return(x+y);}main(){inta=2,b=5,c=8;printf(“%3.Of\n”,fun((int)fun(a+c,b),a-c));}程序運行后的輸出結果是
A.編譯出錯B.9C.21D.9
四、選擇題(20題)61.有以下程序:
#include<stdio.h>
voidexch(intt[])
{t[0]=t[s];}
main()
{intx[10]={1,2,3,4,5,6,7,8,9,10},i=0;
while(i<=4){exch(&x[i]);i++;}
for(i=0;i<5;i++)printf("%dl"x[i]);
printf("\n");
}
程序運行后輸出的結果是()。
A.246810
B.13579
C.12345
D.678910
62.
63.在軟件設計中不使用的工具是()。
A.系統結構圖
B.程序流程圖
C.PAD圖
D.數據流圖(DFD圖)
64.
65.
66.
67.
68.
69.層次型、網狀型和關系型數據庫劃分原則是()。
A.記錄長度B.文件的大小C.聯系的復雜程度D.數據之間的聯系方式
70.
71.
72.
73.
74.
75.以下不能將a所指字符串正確復制到所指存儲空間的是()。
76.下列敘述中正確的是()。
A.程序執行的效率與數據的存儲結構密切相關
B.程序執行的效率只取決于程序的控制結構
C.程序執行的效率只取決于所處理的數據量
D.以上三種說法都不對
77.有以下程序
78.數字字符0的ASCIl值為48,若有以下程序:
程序運行后的輸出結果是()。
A.3,2B.50,2C.2,2D.2,50
79.
80.以下程序段中的變量已正確定義:
程序段的輸出結果是()。
A.********B.****C.**D.*
五、程序改錯題(1題)81.下列給定的程序中,函數proc的功能是:用選擇法對數組中的m個元素按從小到大的順序進行排序。
例如,排序前的數據為:1132-5214
則排序后的數據為:-52111432
請修改程序中的錯誤,使它能得到正確結果。
注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。
試題程序:
#include<stdio.h>
#defineM20
voidproc(inta[],intn)
{
inti,j,t,P;
//****found****
for(j=0;j<n-1;j++);
{
p=j;
for(i=j;i<n;i++)
if(a[[i]<a[p])
p=i;
t=a[p];
a[p]=aEj3;
//****found****
a[p]=t;
}
}
voidmain
{
intarr[M]={11,32,-5,2,14},i,m=5;
printf("排序前的數據:");
for(i=0;i<m;i++)
printf("%d",arr[i]);
printf("\n");
proc(arr,m);
printf("排序后的順序:");
for(i=0;i<m;i++)
printf("%d",arr[i]);
printf("\n");
}
六、程序設計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數其功能是移動一維數組中的內容,若數組中有n個整數,要求把下標為0~p(含p,p小于等于n-1)的數組元素平移到數組的最后。例如,一維數組中的原始內容為1、2、3、4、5、6、7、8、9、10;P的值為3。移動后,一維數組中的內容應為5、6、7、8、9、10、1、2、3、4。注意:部分源程序給出如下。請勿改動主函數main()和其他函數中的內容,僅在函數fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#defineN80voidfun(int*w,intp,intn){}main(){ inta[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; inti,p,n=15; printf(“Theoriginaldata:\n”); for(i=0;i<=""p=""> printf(“%3d”,a[i]); printf(“\n\nEnterp:”); scanf(“%d”,&p); fun(a,p,n); printf(“\nThedataaftermoving:\n”); for(i=0;i<=""p=""> printf(“%3d”,a[i]); printf(“\n\n”);}
參考答案
1.Ba一一的含義是先用后減l,所以當a的值為0時,跳出循環,但是仍要執行a一一,g的值變為一1。
2.C視圖設計的設計次序分3種:自頂向下、自底向上和由內向外。它們為視圖設計提供了具體的操作方法,設計者可根據實際情況靈活掌握。
3.C
4.A
5.A軟件測試的目的是為了發現錯誤而執行程序的過程,并不涉及改正錯誤,所以選項A錯誤。程序調試的基本步驟有:錯誤定位、修改設計和代碼,以排除錯誤、進行回歸測試,防止引進新的錯誤。程序調試通常稱為Debug,即排錯。軟件測試的基本準則有:所有測試都應追溯到需求、嚴格執行測試計劃,排除測試的隨意性、充分注意測試中的群集現象、程序員應避免檢查自己的程序、窮舉測試不可能、妥善保存測試計劃等文件。故答案為A選項。
6.AC語言中,分號為一條語句的結束。因此“for(i=0;i<4;i++,i++)for(k=1;k<3;k++);”是完整的語句,“printf(“*”);”是獨立語句,不屬于for循環。最后執行printf語句輸出“*”。故本題答案為A選項。
7.C
8.A解析:本題考核的知識點是一維數組的定義,初始化和數組中元素的引用。函數f()的作用是形參a為偶數的時候返回0,主函數中首先定義了一個長度為8的一維數組,然后給它賦初值使得s[0]=1、a[1]=3、s[2]=5、s[3]=2、s[4]=4、s[5]=6.其他沒有賦值的數組元素將自動賦值為0。for循環中,當s[1]不為偶數的時,將s[i]相加,即當i=3時,s[i]=2為偶數,退出循環,此時d的值為d=s101+s[1]+s[2]=1+3+5=9,因此最后輸出的d的值為9。所以,4個選項中選項A符合題意。
9.D
10.D解析:算法的時間復雜度實際上就是執行算法程序所需要的計算工作量。為了客觀地反映算法性能,在度量算法的時間復雜度時,應該與編寫算法程序所使用的程序設計語言、執行算法程序時所使用的計算工具以及程序員的水平無關。
選項A錯誤,因為同一算法程序在運行速度不同的計算機上運行時,其計算時間是不同的。選項B錯誤。因為算法所編寫的程序長度往往與程序設計語言以及程序員的水平有關,同一個算法,用不同的程序設計語言或者不同的程序員所編寫出的程序其長度可能會大不相同。
選項C錯誤,因為根據一個算法所編制出的程序程序中,其指令條數往往與程序設計語言以及程序員的水平有關,不能用算法程序中的指令條數來度量算法的時間復雜度。
所以,本題的正確答案為D。
11.D
12.C本題中由循環條件可知,遇到‘\\0’或x與y所指的字符不相等時循環結束。所以函數的功能是統計x和y所指字符串中最前面連續相同的字符個數。故本題答案為C選項。
13.A本題考查按位與運算,按位與就是相同為1,不同為0,把x=011050化成二進制為0001001000101000,把01252化成二進制為0000001010101010,兩者相與得0000001000101000。
14.DD【知識點】宏定義與數組地址的考察【解析】數組名本身就是地址,所以不需要在用&符號。C選項不能對所有元素賦值而是反復再給一個數值賦值且是死循環。
15.AC語言源程序的擴展名是.C,目標文件的擴展名是.obj,可執行文件的擴展名是.exe。故本題答案為A選項。
16.D解析:在關系數據表中,行稱為元組,對應存儲文件中的記錄,列稱為屬性,對應存儲文件中的字段,所以本題答案為D。
17.C
18.Astrlen函數求得參數中字符串的長度(不包括字符串結束標識“\\0”)sizeof函數求得特定類型參數所占存儲空間的長度。題干中a是數組名,由于定義時省略維數大小,因此數組大小是初始化的字符個數,即a的數組大小為6。綜上,strlen(a)只計算字符“T”“H”“I”“S”,結果為4;sizeof(a)求得數組a的大小,結果為6;指針b指向一個字符串“OK\\0\\0”,所以strlen(b)只計算字符“O”“K”,結果為2;sizeof(b)求得指針占用存儲空間的大小,結果為4。故本題答案為A選項。
19.D
20.D[解析]字符串是一個特殊的數組,所以按照數組的規則,s1應該指向的是數組的首地址,即"abc的第一個字符的地址。s2指向的是"123"的第一個字符的地址。調用swap函數之后交換的是兩個字符串的第一個字符ai和1的內容,所以打印輸出為D)。
21.s[j++]=s[i]s[j++]=s[i]解析:循環開始后如果數組s中儲存值與字符c相同,則i++直接跳過當前值;如果不相同,則將當前值賦予數組指定位置,并通過.j++將下標加1,指向下一元素要存儲的位置。
22.55解析:主函數首先聲明了一個結點數組s[3],并分別初始化其成員num為1、2、3,而成員next全部被初始化為'\\0'也就是0。下面又用三條語句s[0].next=s+1;s[1].next=s+2;s[2].next=s;分別將三個結點指向其后面一個結點,而最后一個結點指向第1個結點,構造出一條單向循環鏈表。接下來用結點指針p=s即讓其指向s[0],然后讓q=p->next,即指向了s[1],r=q->next即讓r指向s[2],然后讓一個累計變量sum累加q->next->num和r->next->next->nm,因為q指向s[1]所以它的next指針指向的是s[2],故第1次累加的是s[2].num=3,而r指向的是s[2]所以它的next是s[0],s[0]的next指向s[1],故第2次累加的是s[1].num=2。所以程序最終輸出結果為5。
23.數據字典數據字典解析:數據字典的作用是對數據流圖中出現的披命名的圖形元素進行確切解釋。通常數據字典包含的信心有名稱、別名、何處使用/如何使用、內容描述、補充信息等。
24.實體實體解析:在E-R圖中用矩形表示實體;橢圓形表示屬性;菱形表示聯系。
25.模式或邏輯模式或概念模式模式也稱邏輯模式或概念模式,是數據庫中全體數據的邏輯結構和特征的描述,是所有用戶的公共數據視圖,例如數據記錄由哪些數據項構成,數據項的名字、類型、取值范圍等。
26.實體實體解析:E-R模型中,有3個基本的抽象概念:實體、聯系和屬性。在E-R圖中,用矩形框表示實體,菱形框表示聯系,橢圓形框表示屬性。
27.3131解析:在函數調用時,形參值和改變,不會改變實參的值。
28.length++i<lengthlength++\r\ni<length解析:第一個循環極有可能是計算串的長度,在i<=length時字符才被刪除,被刪除的是從第i個到第i+n或最后一個間的所有字符。刪除前,應判斷i<=length。由于已經進行了-i運算,故實際應填入i<length。
29.246
30.do…whiledo…while解析:考查while和do…while循環的主要區別。while循環的控制出現在循環體之前,只有當while后面的表達式的值為非零時,才可能執行循環體;在do…while構成的循環體中,總是先執行一次循環體,然后再求表達式的值,因此無論表達式的值是否為零,循環體至少要被執行一次。
31.選擇選擇解析:關系運算中,選擇運算是在指定的關系中選取所有滿足給定條件的元組,構成一個新的關系,而這個新的關系是原關系的一個子集。
32.1對多(或1:N)1對多(或1:N)
33.類類解析:在面向對象的方法中,把具有相同屬性和方法的對象稱為類,類是對象的抽象,對象是類的實例。
34.A
35.250250解析:所謂完全二叉樹是指除最后一層外,每—層上的結點數均達到最大值;在最后—層上只缺少右邊的若干結點。具有n個結點的完全二叉樹,其父結點數為int(n/2),而葉子結點數等于總結點數減去父結點數。本題n=500,故父結點數等于int(500/2)=250,葉子結點數等于500-25=250。
36.86518651解析:主程序中,第一次循環時,i=0,調用sb(s,x)子函數,此時n=3,x=s[n]=s[3]=8,然后將n減1變為2;第二次循環時,i=1,調用sb(s,x)子函數,因為將n定義為了靜態變量,所以此時n=2,返回x=s[n]=s[2]=6;第三次循環時,i=2,調用sb(s,x)子函數,此時n=1,返回x=s[n]=s[1]=5;第四次循環時,i=3,調用sb(s,x)子函數,此時n=0,返回x=s[n]=s[0]=1。此程序實際上是將數組s逆序輸出。
37.0&a[i]a[i]0\r\n&a[i]\r\na[i]解析:本題要求從終端讀入數據到數組中,統計其中正數的個數,并計算它們的和。程序中首先要對存放正數個數的變量count及存放和值的變量sum初始化為0,所以第一空應填0。接著要求從終端讀入數據到數組中,可以通過scanf函數實現,因此第二空應填&a[i]。最后通過sum+=a[i];語句累加正數a[i]的值到sum中,因此第三空應填a[i]。
38.r+b[k]或*(b+k)+r*xr+b[k]或*(b+k)+r\r\n*x解析:r是累加的和,k是數組b的下標,因此有r=r+b[k];由于x是傳地址調用,*x是其指向存儲單元的內容,要把累加的和放入x所指的單元,因此有*x=r。
39.3131解析:設隊列容量為m,如果:rear>front,則隊列中元素個數為rear-front;如果rear<front,則隊列中元素個數為m+(rear-front)。本題rear<front,則m=32+(2-3)=31。
40.yesyes解析:if...else構造了一種二路分支選擇,是一種最基本的選擇結構。本題中,if后面括號里的表達式為c=a+b為真(即c=1+3=4為真);所以,執行s1,即執行prinff('yes\\'),最后輸出yes。
41.B本題主要考查C語言合法語句的定義。
在選項A中,a==1不是一個合法的語句,因為它沒有語句結束標識符“;”,不能說是一條語句,如果作為一個表達式,它是正確的。
在選項B中,由于變量i已被正確定義并有初值,“++i;”是正確的語句。
在選項C中,由于正確的賦值語句中,賦值符號的左邊不能為常量或表達式,而右邊不能為變量或表達式,很明顯,“a=a++=5;”違背了賦值語句的原則。
在選項D中,“a=int(i);”語句是不正確的,在C語言中沒有這種表示形式,如果是想將變量i強制轉換為整型的操作,應該為“a=(int)i;”。
42.C解析:putchar(s)的功能是把字符s輸出到標準輸出設備;puts(s1)是把s1指向的字符串輸出到標準輸出設備。
43.B解析:選項A)是將指針q1和q2所指向的變量值相加,然后賦給k;選項B)中,float型數據和指針型數據之間不能進行賦值運算:選項C)中,是兩個指針變量之間的賦值:選項D)中,是兩個指針型變量所指向的兩個float型數據相乘。
44.D解析:本題考查了軟件工程的基本概念。軟件工程包括3個要素,即方法、工具和過程。方法是完成軟件工程項目的技術手段;工具支持軟件的開發、管理和文檔生成;過程支持軟件開發的各個環節的控制和管理。
45.D解析:本題主要考查++執行的次序。執行過x=-m++;后,x=-3,m=4;執行x=x+8/++n;時8/++n=1;因此最后x=-216。
46.C利用強制類型轉換(structsk*)把整數型地址&data.m轉換成結構體變量指針賦給結構體指針變量q。
47.A解析:源程序文檔化主要包括三個方面的內容:標識符的命名、程序中添加注釋以及程序的視覺組織。
48.D解析:中序遍歷的遞歸算法定義:①遍歷左子樹;②訪問根結點;③遍歷右子樹。前序遍歷的遞歸算法定義:①訪問根結點;②遍歷左子樹;③遍歷右子樹。后序遍歷的遞歸算法定義:①遍歷左子樹;②遍歷右子樹;③訪問根結點。根據前序遍歷的結果可知,a是根結點。由中序遍歷的結果dgbaechf可知,d、g、b是左子樹的結點,e、c、h、f是右子樹的結點。再由前序遍歷的結果bdg可知,b是a左邊子樹的根,由cefh可知,c是a右邊子樹的根。再由中序遍歷的結果dgb可知,d、g是b左邊子樹的結點,b右邊子樹無結點。再由前序遍歷結果dg可知,d為b左子樹的根,g是以d為根的子樹的右結點。至此,a的左子樹已完全弄清楚了。同樣的道理,可以弄清楚以c為根的子樹的結點位置。所以可知后序遍歷的結果是D。
49.B解析:本題是使用帶參數的宏來求解一元二次方程的兩個根。表達式x1=(-b+sqrt(disc(a,b,c)))/(2*a)宏展開后為:x1=(-b+sqrt(b*b-4*a*c))/(2*a)=(5+sqrt(25-24))/2=6/2=3。表達式x2=(-b-sqrt(disc(a,b,c)))/(2*a)宏展開后為:x2=(-b-sqrt(b*b-4*a*c))/(2*a)=(5-sqrt(25-24))/2=4/2=2。所以程序輸出結果為3.0,2.0,應該選擇B。
50.C解析:軟件調試技術包括強行排錯法、回溯法和原因排除法。邊界值分析、錯誤推斷都是黑盒測試的方法。
51.B
52.A解析:本題考查兩個概念:①用單引號括起來的一個字符常量只能存放一個字符;②C語言中沒有字符串變量,只能用字符數組來存儲字符串。
選項A)中一個單引號內放了若干個字符是錯誤的;選項B)和選項D)中將一個字符串賦值給一個字符數組是允許的。
53.B解析:所謂中序遍歷是指在訪問根結點、遍歷左子樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結點,最后遍歷右子樹;并且在遍歷左、右子樹時,仍然先遍歷左子樹,然后訪問根結點,最后遍歷右子樹。
54.A解析:本題考核的知識點是位運算符的應用.首先將八進制040轉換成二進制數000100000,在將此;進制數左移一位為001000000,輸出時轉換成八進制數100。所以,4個選項中A為所選。
55.A解析:帶參數的宏定義命令行形式如下:#define宏名(形參表)替換文本。首先進行M的宏替換,之后再進行N的宏替換,替換后的表達式為(a)*(b)/(c)。
56.B解析:C語言規定:在定義函數時,若其返回值類型為int,則可以默認。所以4個選項中B正確。
57.C解析:關于二維數組的初始化,我們需要掌握如下方法:①所賦初值個數與數組元素的個數相同;②所賦初值行數少于數組行數時,系統將自動給后面各行的元素補初值0;③在給二維數組賦初值時可以不用行花括號對。選項C)應該是inta[3][2]={{1,2},{3,4},{5,6,}};
58.C解析:C語言允許用typedef說明一種新類型名,其一般形式為:typedef類型名標識符。typedef語句的作用僅僅是使“標識符”來代表已存在的“類型名”,并未產生新的數據類型。原有類型名依然有效。此題中,用使typedef定義了新的類型OLD結構,所以OLD為結構體類型。
59.C隊列是指允許在一端進行插入、而在另一端進行刪除的線性表,選項A和選項B錯誤。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。在隊列中,最先插入的元素將最先能夠被刪除,反之,最后插入的元素將最后才能被刪除。所以,隊列又稱為“先進先出”或“后進后出”的線性表,它體現了“先來先服務”的原則,選項C正確,選項D錯誤。
60.B解析:fun()函數是將傳進來的兩個整型參數相加,把和作為函數值返回,注意返回值為float型。在主函數調用了兩次fun()函數,第一次調用時把表達式“a+c”和變量“b”的值求和,得到15轉換為15.0作為函數的返回值。第二次調用把第一次調用的返回
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東青島西海岸新區教育和體育系統專項招聘公費師范生考試真題2024
- 濱州無棣縣教體系統招聘考試真題2024
- 2024年安徽國控集團所屬企業社招校招考試真題
- Isohematinic-acid-生命科學試劑-MCE
- 汽車制造供應鏈風險管理:2025年風險應對與優化方案分析報告001
- 2025至2030現代LED吊燈行業產業運行態勢及投資規劃深度研究報告
- 2025至2030灰塵和泥漿管理產品行業產業運行態勢及投資規劃深度研究報告
- 2025至2030手動移動墻行業產業運行態勢及投資規劃深度研究報告
- 2025至2030異形幕墻市場發展趨勢分析與未來投資戰略咨詢研究報告
- 2025至2030巨型游艇行業產業運行態勢及投資規劃深度研究報告
- 【MOOC答案】《大學物理I力學、相對論、電磁學》(北京交通大學)章節作業慕課答案
- 落地投資協議書范本
- 托管倉庫合同協議
- 企業負責人(A證)考試題(含答案)
- 創新中職學校德育工作的實踐與反思
- 河南洛陽文旅集團財務崗位招聘考試真題2024
- 深入研究福建事業單位考試中的經典案例試題及答案
- 《中華傳統文化進中小學課程教材指南》
- 七年級歷史下學期核心知識點、難點、重點知識總結
- 《基于web的寵物商城管理系統設計與實現》8800字(論文)
- 磷酸錳鐵鋰正極材料的研究現狀
評論
0/150
提交評論