




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2021-2022年廣東省東莞市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.在圖采用鄰接表存儲時,求最小生成樹的Prim算法的時間復雜度為()。
A.O(n)B.O(n+e)C.O(n2)D.O(n3)
2.若有以下定義:chara;intb;floatc;doubled;則表達式a*b+b-c值的類型為()。A.floatB.intC.charD.double
3.有三個關系R、s和T如下:
由關系R和s通過運算得到關系T,則所使用的運算為()。
A.并B.自然連接C.笛卡爾積D.交
4.以下不正確的敘述是A.A.在C程序中,逗號運算符的優先級最低
B.在C程序中,APH和aph是兩個不同的變量
C.若a和b類型相同,在計算了賦值表達式a=b后b中的值將放入a中,而b中的值不變
D.當從鍵盤輸入數據時,對于整型變量只能輸入整型數值,對于實型變量只能輸入實型數值
5.下列敘述中錯誤的是()。
A.一個C語言程序只能實現一種算法
B.c程序可以由多個程序文件組成
C.C程序可以由一個或多個函數組成
D.一個c函數可以單獨作為一個C程序文件存在
6.下列選項中,能夠滿足“若字符串sl等于字符串s2,則執行ST”要求的是()。
A.if(stremp(s2,s1)==0)ST;
B.if(s1==s2)ST;
C.if(strcpy(sl,s2)==l)ST;
D.if(sl,s2==O)ST;
7.以下程序輸出正確的是______。amovep(int*p,int(*a)[3],intn){inti,j;for(i=0;i<n;i++)for(j=0;j<n;j++){*p=a[i][j];p++;}}main(){int*p,a[3][3]={{1,3,5},{2,4,6}};p=(int*)malloc(100);arnovep(p,a,3);printf("%d%d\n",p[2],p[5];free(p);}
A.56B.25C.34D.程序錯誤
8.面向對象方法中,繼承是指()。
A.一組對象所具有的相似性質B.一個對象具有另一個對象的性質C.各對象之間的共同性質D.類之間共享屬性和操作的機制
9.有以下程序:#include<stdio.h>intadd_more(inta,intb){returna+b-2;}main(){inti;for(i=0;i<4;i++)printf(“%d”,add_more(i,2));}程序運行后的輸出結果是()。
A.1234B.0123C.5678D.4321
10.若已定義:“inta[9],*p=a;”,并在以后的語句中未改變p的值,不能表示a[1]地址的表達式是______。
A.p+1B.a+1C.a++D.++p
11.以下哪種操作最適合先進行排序處理()
A.找最大、最小值B.計算算術平均值C.找中間值D.找出現次數最多的值
12.
13.以下與數學表達式“0<x<5且x≠2”不等價的C語言邏輯表達式是()。
A.(0<x<5)&&(x!=2)
B.0<x&&x<5&&x!=2
C.x>0&&x<5&&x!=2
D.(x>0&&x<2)||(x>2&&x<5)
14.結構化程序所要求的基本結構不包括A.順序結構B.GOTO跳轉C.選擇(分支)結構D.重復(循環)結構
15.
16.設有定義:inta,*pa=&a;以下scanf語句中能正確為變量a讀入數據的是()
A.scanf(“%d”,pa);
B.scanf(“%d”,a);
C.scanf(“%d”,&pa);
D.scanf(“%d”,*pa);
17.順序查找不論在順序線性表中還是在鏈式線性表中的時間復雜度為()。
A.O(n)B.O(n^2)C.O(n^1/2)D.O(1og2n)
18.設q1和q2是指向一個float型一維數組的指針變量,k為float型變量,則不能正確執行的語句是()。
A.k=*q1+*q2;B.q1=k;C.q1=q2;D.k=*q1*(*q2);
19.下面不合法的常量數據是()。
A..023E-5B.0x3f7b8a90C.‘\0x6d’D.‘\0123321’
20.
二、2.填空題(20題)21.下面程序的輸出結果是【】。
main()
{inti=3,j=2;
char*a="DCBA";
printf("%c%c\n",a[i],a[j])
}
22.請讀程序片段:
inta=17;
printf("%d,%o\n",a,a);
以上程序片段的輸出結果是【】。
23.若有語句
inti=-19,j=i%4;
printf("%d\n",j),
則輸出的結果是______。
24.數據流圖的類型有【】和事務型。
25.用以下語句調用庫函數malloc,使字符指針st指向具有11個字節的動態存儲空間,請填空。st=(char*)【】;
26.以下程序的輸出結果是()。
#include<stdio.h>
main()
{intx=27;
while(x>20&&x<30)
{x++;
if(x/3){x++;break;}
else
continue;
}
printf("%d\n",x);
}
27.執行以下程序后的輸出結果是【】。
main()
{inta=10;
a=(3*5,a+4);printf("a=%d\n",a);
}
28.為了便于對照檢查,測試用例應由輸入數據和預期的【】兩部分組成。
29.下列程序的輸出結果是______。
main()
{inta+,b=2,C=3,t=0;
ifa<B){t=a;a=b;b=t;}
ifa<C){t=a;a=c;c=t;}
printf("%d,%d,%dln",a,b,C);
}
30.下列程序的輸出結果是【】。
main()
{
inta=1,b=2;
a=a+b;b=a-b;a=a-b;
prrintf("%d,%d\n",a,b);
}
31.【】(黑箱或白箱)測試方法完全不考慮程序的內部結構和內部特征。
32.在結構化設計方法中,數據流圖表達了問題中的數據流與加工間的關系,并且每一個______實際上對應一個處理模塊。
33.與表達式a+=b等價的另一書寫形式是______。
34.下列程序的運行結果是______。
#include<stdio.h>
main()
{inta,b,c;
a=3;b=4;c=5;
if(a>b)
if(a>c)
printf("%d",a);
elseprintf("%d",b);
printf("%d\n",c);
}
35.下面程序的輸出是【】。
main()
{intarr[10],i,k=0;
for(i=0;i,10;i++)arr[i]=i;
for(i=1;i<4;i++)k+=arr[i]+i;
printf("%d\n",k);
}
36.在一個容量為25的循環隊列中,若頭指針front=16,尾指針rear=9,則該循環隊列中共有【】個元素。
37.下面程序有兩個printf語句,如果第一個printf語句輸出的是194,則第二個printf語句的輸出結果是【】。
main()
{inta[10]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;
printf("%x\n",p);
printf("%\n",p+9);
}
38.以下程序運行后的輸出結果是【】。
intf(inta[],intn)
{
if(n>=1)
returnf(a,n-1)+a[n-1];
else
return0;
}
main()
{
intaa[5]={1,2,3,4,5},s;
s=f(aa,5);
printf("%d\n",s);
}
39.函數mycmp(char*s,char*t)的功能提比較字符串s和t的大小,當s等于t時返回0,當s>t返回正值,當s<t時返回負值。請填空。
mycmp(char*s,char*t)
{while(*s==*t)
{if(*s=='\0')return0;
++s;++t;
}
return(【】)
}
40.以下程序運行的結果是【】。
#include<conio.h>
#include<stdio.h>
#defineM100
voidfun(intm,int*a,int*n)
{inti,j=0;
for(i=1;i<=m;i++)
if(i%7==0‖i%11==0)
a[j++]=i;
*n=j;}
main()
{intaa[M],n,k;
clrscr();
fun(10,aa,&n);
for(k=0;k<n;k++)
if((k+1)%20==0)printf("\n");
elseprintf("%4d",aa[k]);
printf("\n");}
三、1.選擇題(20題)41.以下程序段中的變量已正確定義:for(i=0;i<4;i++,i++)for(k=1;k<3;k++);printf("*");程序段的輸出結果是______。
A.******B.****C.**D.*
42.有如下程序:main{intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++.b++;}printf("a=%d,b=%d\n",a,b);}該程序的輸出結果是()。
A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2
43.若函數調用時的實參為變量時,以下關于函數形參和實參的敘述中正確的是()。
A.函數的實參和其對應的形參共占同一存儲單元
B.形參只是形式上的存在,不占用具體存儲單元
C.同名的實參和形參占同一存儲單元
D.函數的形參和實參分別占用不同的存儲單元
44.已知二叉樹后序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是
A.acbedB.decabC.deabcD.cedba
45.有以下程序main(){intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i++<7)if(p[i]%2)j+=p[i];prizltf("%d\n",j);}程序運行后的輸出結果是
A.42B.45C.56D.60
46.有以下程序intf(intn){if(n==1)return1;elsereturnf(n-1)+1;}main(){inti,j=0;for(i=1;i<5;i++)j+=f(i);printf("%d\n",j);}程序運行后的輸出結果是()
A.15B.10C.6D.3
47.電子郵件是()
A.網絡信息檢索服務
B.通過Web網頁發布的公告信息
C.通過網絡實時交互的信息傳遞方式
D.一種利用網絡交換信息的非交互式服務
48.下列的程序用來輸出兩個字符串前7個字符中對應相等的字符及其位置號,程序空白處應該填寫的是()。#include<stdio.h>main(){Charsl[]="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)
49.若有以下定義:structlink{intdata;structlink*next;}a,b,c,*p,*q;且變量a和b之間已有如下圖所示的鏈表結構:
指針p指向變量a,q指向變量c。則能夠把c插入到a和b之間并形成新的鏈表的語句組是
A.a.next=c;c.next=b;
B.p.next=q;q.next=p.next;
C.p->next=&c;q->next=p->next;
D.(*p).next=q;(*q).next=&b;
50.下列敘述中正確的是()。
A.在模塊化程序設計中,一個模塊應盡量多的包括與其他模塊聯系的信息
B.在自頂向下、逐步細化的設計過程中,首先應設計解決問題的每一個細節
C.在模塊化程序設計中,一個模塊內部的控制結構也要符合結構化原則
D.在程序設計過程中,不能同時采用結構化程序設計方法與模塊化程序設計方法
51.下列選項中C語言中不合法的字符串常量的是
A.\121B.'y'C.\n\nD.ABCD\x6d
52.SQL語言又稱為______。
A.結構化定義語言B.結構化控制語言C.結構化查詢語言D.結構化操縱語言
53.若進棧序列為1,2,3,4,進棧過程中可以出棧,則下列不可能的—個出棧序列是______。
A.1,4,3,2B.2,3,4,1C.3,1,4,2D.3,4,2,1
54.若x和y代表整型數,以下表達式中不能正確表示數學關系|x-y|<10的是
A.abs(x-y)<10
B.x-y>-10&&x-y<10
C.!(x-y)<-10‖!(y-x)>10
D.(x-y)*(x-y)<100
55.下列數據結構中,能用二分法進行查找的是()。
A.順序存儲的有序線性表B.結性鏈表C.二叉鏈表D.有序線性鏈表
56.以下程序的輸出的結果是intx=3;main(){inti;for(i=1;i<x;i++)incre();}incre(){staicintx=1;x*=x+1;printf("%d",x);}
A.33B.22C.26D.25
57.設有下列二叉樹:
對此二叉樹中序遍歷的結果為______。
A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA
58.有以下程序#include<stringh>main(intargc,char*argv[]){inti,len=0;fot(i=1;i<argc;i+=2)len+=strlen(argv[i]);printf("%d\n",len);}經編譯連接后生成的可執行文件是ex.exe,若運行時輸入以下帶參數的命令行exabcdefgh3k44執行后輸出結果是
A.14B.12C.8D.6
59.下列各數據類型不屬于構造類型的是()。
A.枚舉型B.共用型C.結構型D.數組型
60.有如下程序段:inta=14,b=15,x,charc='A';x=(a&&B)&&(c<'B');執行該程序段后,x的值為()
A.1B.0C.FALSED.TRUE
四、選擇題(20題)61.有以下程序
main()
{
intx=3,y=2,z=1;
printf("%d\n",x/y&~z);
}
程序運行后的輸出結果是
A.3B.2
C.1D.0
62.
63.
64.
65.“商品”與“顧客”兩個實體集之間的聯系一般是()。
A.一對一B.多對一C.一對多D.多對多
66.若變量已確定義,則以下語句的輸出結果是()。
67.
68.C語言中,合法的字符型常數是_________。
A.‘A’B.“A”C.65D.A
69.有以下程序段:
當執行上述程序段,從鍵盤上輸入555667777abc后,y的值為()。
A.566.0B.55566.0C.7777.0D.566777.0
70.(74)用鏈表表示線性表的優點是()
A.便于插入和刪除操作
B.數據元素的物理順序與邏輯順序相同
C.花費的存儲空間較順序存儲少
D.便于隨機存取
71.當執行以下程序段時,()。x=-l:do{x=x*X;)while(!x);A.循環體將執行一次B.循環體將執行兩次C.循環體將執行無限次D.系統將提示有語法錯誤
72.
73.以下程序中函數sCmp的功能是返回形參指針sl和s2所指字符串中較小字符串的首地址。
若運行時依次輸入:abCd、abba和abC三個字符串,則輸出結果是()。
A.abCdB.abbaC.abCD.abCa
74.以下只有在使用時才為該類型變量分配內存的存儲類型說明是()。
A.auto和static
B.auto和register
C.register和static
D.extern和register
75.下列數據結構中,屬于非線性結構的是A.循環隊列B.帶鏈隊列C.二叉樹D.帶鏈棧
76.
有下列程序:
main
{inti,s=0,t[]={1,2,3,4,5,6,7,8,9);
for(i=0;i<9;i+=2)s+=*(t+i);
printf("%d\n",s);
}
程序執行后的輸出結果是()。
A.45B.20C.25D.36
77.有以下程序:
}、、、程序運行后的輸出結果是()。
A.一263B.2C.0D.一26
78.
79.結構化程序設計主要強調的是()。
A.程序的規模B.程序的效率C.程序設計語言的先進性D.程序的易讀性
80.
五、程序改錯題(1題)81.下列給定程序中,函數proc()的功能是:根據形參m(2≤m≤9)的值,在m行m列的二維數組中存放如下所示的數據,由main()函數輸出。
請修改程序中的錯誤,使它能得出正確的結果。
注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。
試題程序:
六、程序設計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫一個函數fun(),該函數的功能是將大于整數m且緊靠m的k個素數存入所指的數組中。例如,若輸入17、5,則應輸出19、23、29、31、37。注意:部分源程序在文件prog1.c中。請勿改動主函數main()和其他函數中的任何內容,僅在函數fun()的花括號中填入你編寫的若干語句。試題程序:
參考答案
1.B
2.D在表達式a*b+d-c中,double的類型最高,C語言中,由低類型自動向高類型轉換,所以最后的結果一定是double型。
3.D關系R與s經交運算后所得到的關系是由那些既在R內又在S內的共有元組組成的,記為RnS。
4.D解析:在C語言所有的運算符中,逗號運算符的優先級最低。C語言中區分大小寫,所以APH和aph是兩個不同的變量。賦值表達式a=b表示將b的值付給a,而b本身的值保持不變;通過鍵盤可以向計算機輸入允許的任何類型的數據。選項D)中當從鍵盤輸入數據時,對于整型變量可以輸入整型數值和字符,對于實型變量可以輸入實型數值和整型數值等。
5.A答案A
解析:一個C程序可以有一個或多個程序文件,也可以有一個或多個函數,所以一個C語言程序可以實現多種算法。
6.Astrcmp(char*,char*),函數strcmp用于比較兩個字符串的長度,長者為大,若字符個數也一樣,則從左至右依次比較相同位上的字符,字符大小按ASCIl表值計算,直到最后一個字符,若還相同,則兩個字符串相等,返回值0。選項A中if(strcmp(s2,sl)==0)ST,若s2等于sl,則返回值0,0等于0,所以邏輯表達式strcmp(s2,sl)==0為真,執行ST。
7.A解析:本題main函數中定義了指針p和二維數組a,通過函數amovep將數組的值存入指針p所指向的存儲單元中,a的各元素分別為:a[0][0]=1,a[0][1]=3,a[0][2]=5,a[1][0]=2,a[1][1]=4,a[1][2]=6,a[2][0]=0,a[2][1]=0,a[2][2]=0。通過mailoc()函數給指針分配內存空間,free()函數用于釋放指針變量所用內存空間。在主函數中通過amovep(p,a,3)調用函數amovep,使得實參p與形參p,實參數組a與形參中指向數組的指針變量共用同一存儲空間。最后輸出p[2],p[5]為56。
8.D繼承是面向對象的方法的一個主要特征,是使用已有的類的定義作為基礎建立新類的定義技術。廣義的說,繼承是指能夠直接獲得已有的性質和特征,而不必重復定義它們,所以說繼承是指類之間共享屬性和操作的機制。
9.Badd_more函數接收兩個參數a、b,返回“a+b-2”。main函數中,for循環調用add_more函數。當i=2時,傳入實參i和2,所以每次調用函數add_more時,b的值都是2。函數add_more返回值等價于實參i。所以每次for循環輸出的值就是i的值。故本題答案為B選項。
10.C
11.C
12.B
13.A在C語言里不能直接表達“0<x<5”,需要分步驟來實現,即使用“x>0&&x<5”來描述。在C語言里,“0<x<5”屬于一個邏輯運算表達式,可以理解為“(0<x)<5”,因此選項A錯誤。故本題答案為A選項。
14.BB【解析】1966年Boehm和JaCopini證明了程序設計語言僅僅使用順序、選擇和重復三種基本控制結構就足以表達出各種其他形式結構的程序設計方法。
15.B
16.A
17.A
18.B解析:選項A)是將指針q1和q2所指向的變量值相加,然后賦給k;選項B)中,float型數據和指針型數據之間不能進行賦值運算:選項C)中,是兩個指針變量之間的賦值:選項D)中,是兩個指針型變量所指向的兩個float型數據相乘。
19.D選項A是實型常量的指數形式,表示0.023×10-5;選項B是十六進制表示的整型常量;選項C是十六進制表示的轉義字符常量;選項D是字符串常量,應該使用雙引號標注。故本題答案為D選項。
20.B
21.AB
22.1721
23.-3-3解析:本題考核的知識點是運算符“%’的應用。該運算符是求兩個數相除的余數,其結果與被除數的符號一致,本題中“-19%4”的值為“-3”,所以說空格處應該填-3。
24.變換型典型的數據流類型有兩種:變換型和事務型。變換型是指信息沿輸入通路進入系統,同時由外部形式變換成內部形式,進入系統的信息通過變換中心,經加工處理以后再沿輸出通路變換成外部形式離開軟件系統;在很多軟件應用中,存在某種作業數據流,它可以引發一個或多個處理,這些處理能夠完成該作業要求的功能,這種數據流就叫做事務。
25.malloc(11)malloc函數的格式是void*(或char*)malloc(size),size表示應分配的存儲區,此題要分配11字節的單元,把11代入即可。
26.2929解析:本題考查while循環和++運算,x=27符合循環條件,執行循環體中x++后,x=28,if條件也成立,執行x++后退出,x的值增1,結果x=29。
27.a=14a=14解析:逗號表達式的值是以逗號分隔的最后一個表達式的值。所以題目中的語句a=(3*5,a+4);就等價于a=a+4;。故本題輸出結果是a=14。
28.輸出結果輸出結果解析:注意:測試的基本方法和步驟。
29.3123,1,2解析:分析程序,第一個if句,a=1,b=2,控制條件a<b成立,則交換a、b的值,此時a=2,b=1。第二個if語句,a=2,c=3,控制條件a<c成立,則交換a、c的值,此時a=3,c=2。
30.212,1解析:本題中,執行a=a+b時,a=1,b=2,a=1+2=3,b=a-b時,a=3,b=2,b=3-2=1;a=a-b時,a=3,b=1,a=3-1=2;因此,本題的輸出是2,1
31.黑箱黑箱解析:本題考查了軟件測試中的黑箱測試。黑箱測試是根據程序規格說明所規定的功能來設計測試用例,它不考慮程序的內部結構和處理過程。常用的黑箱測試技術分為等價類劃分、邊界分析、錯誤猜測以及因果圖等。
32.加工加工解析:數據流圖是從數據傳遞和加工的角度,來刻畫數據流從輸入到輸出的移動變換過程。其中的每一個加工對應一個處理模塊。
33.a=a+ba=a+b解析:a+=b與a=a+b等價,作用是把變量a的值加b后再賦給變量a。
34.55解析:分析程序,當a=3;b=4;c=5時,判斷語句a>b不成立,所以不執行后面的語句,直接執行“printf('%d\\n',c);”語句,輸出c的值,輸出結果為5。
35.1212解析:本題首先通過第一個for語句把0~9(包含0和9)間的整數依次賦值給數組arr,第二個for語句用于實現將滿足條件的數組元素與對應的下標值求和并累加,并用變量k保存。
36.1818解析:設循環隊列的容量為n。若rear>front,則循環隊列中的元素個數為rear-front;若rear<front,則循環隊列中的元素個數為n+(rear-front)。題中,front=16,rear=9,即rear<front,所以,循環隊列中的元素個數為m+(rear-front)=25+(9-16)=18。
37.1a61a6解析:對于指針變量的運算,就是對地址的運算。本題中由于指針指向的是整型變量,所以,使指針變量移動9個位置也就是移動18個字節。注意,本題是以十六進制輸出的。
38.1515解析:在函數f()中只有一條if語句,如果n不小于1,則返回f(a,n-1)+a[n-1];否則返回0。所以f(aa,5)返回f(aa,4)+aa[4],而f(aa,4)返回f(aa,3)+aa[3],……直到f(aa,0)返回0。故f(aa,5)實際返回值是0+aa[1]+aa[2]+aa[3]+aa[4]+aa[5],所以本題最終輸出15。
39.*s-*t或-*t+*s*s-*t或-*t+*s解析:函數的兩個形參是兩個字符指針變量,字符串的首地址是指針變量的值,*s和*t表示字符串數組s和t的第一個字符,在while循環中,是通過s和t值的不斷變化來改變指針所指向的字符,要改變s和t所指不同字符的ASCII碼的差值,必須使用“*s-*t”得出。
40.77解析:解答本題的關鍵是要讀懂程序,要找出能被7或11整除的所有整數,注意數學中的“或”和C語言中的“或”的區別,但在此處,if條件語句中用了“‖”運算符,若要找能同時被7和11整除的所有整數則在if的條件中應使用“&&”運算符。
當然,如果m的值輸入50,即表達式fun(10,aa,&n);為fun(50,aa,&n);時輸入結果為:711142122283335424449。
41.D解析:本題考杏for循環語句中嵌套for循環語句的情況。由于第一個for語句沒有具體的執行語句,故當i=0時,k=1時,執行一次語句printf(“*”);,程序便會跳出整個循環,故運行結果為一個星號。
42.AC語言規定case后面跟的必須是整型常量表達式。進入case后,如果沒有遇到break語句就會一直往下執行,后面其他case或default分支的語句也會被執行到,直到遇到break,或者執行到整個switch語句塊的末尾。題目中給出了三個case語句:case0、case1、case2。當x為1時,從case1語句開始執行,因為沒有break語句,將一直執行到函數末尾結束,即執行case1、case2兩條語句。執行完case1時,a=1,b=0;執行完case2時,a=2,b=1。
43.D解析:在定義函數時函數名后面括弧中的變量名稱為“形式參數”(簡稱形參),在主調函數中調用一個函數時,函數名后面括弧中的參數(可以是一個表達式)稱為“實際參數”(簡稱實參)。C語言規定,實參變量對形參變量的數據傳遞是“值傳遞”,即單向傳遞,只由實參傳給形參,而不能由形參傳回來給實參。在內存中,實參單元與形參單元是不同的單元。故本題應該選擇D。
44.D解析:中序遍歷的遞歸算法如下:①遍歷左子樹;②訪問根結點;③遍歷右子樹。前序遍歷的遞歸算法如下:①訪問根結點;②遍歷左子樹;③遍歷右子樹。后序遍歷的遞歸算法如下:①遍歷左子樹;②遍歷右子樹;③訪問根結點。由后序遍歷結果dabec可知c是根結點,且無右子樹。再由左子樹的后序遍歷結果dabe可知,e是左子樹的根結點,且由左子樹的中序遍歷結果deba可知,d是左子樹的左子樹結點,b和a是左子樹的右子樹結點。再次由后序遍歷結果ab可知,a是左子樹結點。b是根結點。至此,各結點在樹中的位置已完全確定。
45.B解析:本題考查的是while語句和if語句的綜合應用。程序中while的循環條件是1++<7,由于程序開始時將i初始化為0,而且循環體中沒有改變變量i的語句,只有循環條件中i的自增,所以當i從0自增到6時循環的循環體一共被執行了7次,但是在循環體中,i的值為從1到7。在循環體中只有一條if語句,其條件表達式為p[i]%2,當p[i]為奇數時,p[i]除以2余1,條件表達式的值為“真”,所以整個循環語句所做的事就是:累計p[1]到p[7]之間的奇數到變量j中。所以最后j的值應該為13+15+17=45.選項B符合題意。
46.B
47.D解析:電子郵件是利用Internet網傳送信件,不是檢索服務,由于信件只發給收信人,所以不是公告信息,并不是一發信就必須要收信人立即接收,而是信件存放在郵箱中,收信人在需要的時候再取出。
48.C解析:putchar(s)的功能是把字符s輸出到標準輸出設備;puts(s1)是把s1指向的字符串輸出到標準輸出設備。
49.D解析:在本題中指針p指向變量a,q指向變量c。要把c插入到變量a和變量b之間,就應該首先讓變量a的指針域指向變量c,即(*p).next=q,然后讓變量c的指針域指向變量b,即(*q).next=&b。
50.C解析:在模塊化設計中,要求將一個大程序按人們能理解的大小規模進行分解,使每個模塊都能易于理解,各模塊的功能盡量單一,各模塊之間的聯系盡量的少。因此,選項A中的說法是錯誤的。自頂向下、逐步細化的設計過程,主要包括兩個方面:一是將一個復雜問題的解法分解和細化成由若干模塊組成的層次結構;二是將一個模塊的功能逐步分解細化為一系列的處理步驟,直到某種程序設計語言的語句或某種機器指令。即在自頂向下、逐步細化的設計過程中,是按照先全局后局部,先整體后細節、先抽象后具體的方法設計程序。因此.選項B中的說法也是錯誤的。\u3000在模塊化程序設計中.每一個模塊完成一個功能,相對獨立,要求一個模塊內部的控制結構也要符合結構化原則。因此,選項C中的說法是正確的。由于在模塊化程序設計中,一個模塊內部的控制結構也要符合結構化原則,因此,在程序設計過程中,結構化程序設計方法與模塊化程序設計方法是要同時采用的。因此,選項D中的說法是錯誤的。
51.B解析:字符串常量是由雙引號括起來的一串字符,其中的雙引號不可缺少。由此可知,選項A)、C)、D)都是合法的字符串常量,而選B)是一個字符常量。
52.CC。【解析】SQL語言的全稱為StructuredQueryLanguage,它是一種介于關系代數與關系演算之間的結構化查詢語言,是一種面向數據庫的通用數據處理語言規范。它包含數據查詢語言、數據操縱語言、數據定義語言和數據控制語言4個部分。
53.C解析:棧是—種后進先出表,選項C中,先出棧的是3,說明此時棧內必然有1,2,由于1先于2進棧,所以1不可能在2之前出棧,故選項C這種出棧序列是不可能的。
54.C解析:選項A用了一個絕對值函數abs();選項B中用了一個“&&”邏輯與;選項C中,“||”左邊的式子如為真,將不再判斷其后的表達式的值;選項D為本題中數學關系式的一個等價命題。
55.A\nA。【解析】二分法查找只適用于順序存儲的有序線性表,對于順序存儲的非有序線性表和線性鏈表,都只能采用順序查找。
\n
56.C解析:本題首先定義一個全局變量x并賦初值為3,主函數中使用這個全局變量控制循環次數,循環執行了2次,調用兩次tncre()函數。第一次調用incre(),定義一個靜態變量x并賦初值1,然后執行“x*=x+1”,使x的值變為2;第二次調用incre()函數時,靜態變量將保留上一次退出時的值即2,執行語句“x*=x+1”后,x的值變成6,輸出x的值為6。所以,4個選項中C為所選。
57.B解析:所謂中序遍歷是指在訪問根結點、遍歷左子樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結點,最后遍歷右子樹;并且在遍歷左、右子樹時,仍然先遍歷左子樹,然后訪問根結點,最后遍歷右子樹。
58.D解析:主函數的第一個參數argc為整型參數,記下從命令行輸入的參數的個數;第二個參數argv是一個字符型的指針數組,它的每一個元素指向命令行輸入的參數字符數。在本例中argc的值為5,argv[0]指向字符串“ex”,argv[1]指向參數字符串“abed”,argv[2]指向字符串“efg”,argv[3]指向參數字符串“h3”,argv[4]指向參數字符串“k44”。在main()函數中,for循環執行了2次,當i=1時,len=0+strlen(argv[1]),而其中argv[1]=“abcd”,故此時len的值為4;當i=3時,len=4+strlen(argv[3]),而其中argv[3]=“h3”,故此時len的值為6;當i=5時,退出循環,故最后輸出的len的值為6。
59.A本題考查高級語言的數據類型。其中屬于構造類型的主要有結構體類型、聯合體類型,即共用體類型和數組類型。
60.A解析:a=14,b=15,第一個&&兩側均為非零值。c='A',表達式c<'B'的值為真即1,第二個&&兩側也均為非零值。表達式(a&&b)&&(c<'B')的值為1,賦值給變量x。
61.D&是“按位與”運算符,參加運算的兩個運算量的相應位都為1,則該位的結果值為1,否則為0。~是“取反”運算符,用來對一個二進制數按位取反,即將0變1,1變0。本題x/y&~z,x/y的值為1,~z的值為0,所以進行&運算后,整個表達式的值為0。
62.C
63.C
64.D
65.D商品與顧客兩個實體集之間的買與被買聯系是多對多的,因為一種商品可以被多個顧客購買,而一個顧客也可以買多個商品。
66.As=32^32值為0。
67.B
68.A
69.A它是格式輸人函數,即按用戶指定的格式從鍵盤上把數據輸入到指定的變量之中。其中的格式命令可以說明最大域寬。在百分號(%)與格式碼之間的整數用于限制從對應域讀入的最大字符數。所以j的值為55,Y的值為566.0,字符數組llame為7777abc。
70.A注:因為不需要移動元素
71.Ado-wlfile的功能是先執行一次循環體,再判斷條件是否成立,當x=-1時,執行do語句,x=x*x=1,接著執行while后的表達式,其值為0,退出循環,因此循環體只執行了一次。
72.A
73.Bmain函數將輸入的三個字符串存在二維數組str中,并通過兩次streW函數調用,將最小的一個字符串復制到string中。abcd、abba、abc中最小的字符串為abba。
74.B在用靜態static與外部extern定義變量時,系統立刻給其分配內存,而定義自動類auto與強制放入寄存器register類型變量時,只有當使用時才分配內存。
75.C根據數據結構中各數據元素之間的前后件關系的復雜程度,一般將數據結構分為兩大類:線性結構和非線性結構。循環隊列、帶鏈隊列和帶鏈棧都是線性結構,而二叉樹是非線性結構。
76.C
\n在for循環語句中自變量i從0開始,每次自加2,執行s+=*(t+i)語句,因為C語言規定數組名做表達式相當于數組的首地址,也就是第一個元素的地址。因此,*(t+i)代表數組的第i+1個元素。所以程序運行的結果是1+3+5+7+9=25,即變量S的值等于25。
\n
77.Disspaee(c)檢查參數c是否為空格字符。若參數e為空格字符,則返回TRUE,否則返回NULL(0)。Is—di#t(c)函數檢查參數c是否為阿拉伯數字0到9。返回值若為阿拉伯數字,則返回TRUE,否則返回NULL(O)。fLm()函數的第一個for循環判斷字符串是否為負號。第二個for循環獲取符號后面的數字字符,并將它們轉化為整數。遇到了非數字的字符跳出,最后返回數組的結果。因此,可知首先獲取負號,緊接著獲取數值26,遇到了字符a,跳出返回一26,因此打印的結果是一26。故答案為D選項。
78.D
79.D解析:程序不僅是編寫完就結束了,為了測試和維護程序,往往還有其他人閱讀和跟蹤程序,因此程序設計的風格應該強調簡單和清晰,即程序的易讀性,“清晰第一,效率第二”。
80.D
81.(1)錯誤:proc(int**a,intm)
正確:voidproc(int(*a)[N],intm)
(2)錯誤:aEj][k]=k*J;
正確:a[j][k]=(k+1)*(j+1);
【解析】從主函數的調用可知,函數proc()沒有返回值,因此應該定義為void類型。形參a應該是一個整型的指針數組。因此,“proe(int**a,intm)”應改為“voidproc(int(*a)[N],intm)”。數組下標從0開始,由事例數組可知,其元素從l開始遞增,因此“a[j][k]=k*J;”應改為“a[j][k]=(k+1)*(j+1);”。
82.1voidfun(intm,intk,intxx[])2{3inti,j,n;4for(i=m+1,n=0;n<k;i++)p*<style="color:rgb(0,0,0);font-family:"TimesNewRoman";font-size:medium;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;text-decoration-style:initial;text-decoration-color:initial;">找大于m的素數,循環k次,即找出緊靠m的k個素數*/5{for(j=2;j<i;j++)p*#]斷一<>個M否為素數,如果不是,跳出此循環,判斷下一個數*/6if(i%j==0)break;7if(j>=i)/*如果是素數,存入數組XX中*/8xx[n++]=i;9}10}本題主要考查素數的判定方法。如果一個數不能被除了1和其自身以外的數整除,則這個數為素數。本程序使用循環語句控制需要判斷的數,在循環體中判斷該數是否為素數,若是則存入數組XX中。當數組XX的素數個數為k個時,退出循環。</i;j++)p*#]斷一<></k;i++)p*<>2021-2022年廣東省東莞市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.在圖采用鄰接表存儲時,求最小生成樹的Prim算法的時間復雜度為()。
A.O(n)B.O(n+e)C.O(n2)D.O(n3)
2.若有以下定義:chara;intb;floatc;doubled;則表達式a*b+b-c值的類型為()。A.floatB.intC.charD.double
3.有三個關系R、s和T如下:
由關系R和s通過運算得到關系T,則所使用的運算為()。
A.并B.自然連接C.笛卡爾積D.交
4.以下不正確的敘述是A.A.在C程序中,逗號運算符的優先級最低
B.在C程序中,APH和aph是兩個不同的變量
C.若a和b類型相同,在計算了賦值表達式a=b后b中的值將放入a中,而b中的值不變
D.當從鍵盤輸入數據時,對于整型變量只能輸入整型數值,對于實型變量只能輸入實型數值
5.下列敘述中錯誤的是()。
A.一個C語言程序只能實現一種算法
B.c程序可以由多個程序文件組成
C.C程序可以由一個或多個函數組成
D.一個c函數可以單獨作為一個C程序文件存在
6.下列選項中,能夠滿足“若字符串sl等于字符串s2,則執行ST”要求的是()。
A.if(stremp(s2,s1)==0)ST;
B.if(s1==s2)ST;
C.if(strcpy(sl,s2)==l)ST;
D.if(sl,s2==O)ST;
7.以下程序輸出正確的是______。amovep(int*p,int(*a)[3],intn){inti,j;for(i=0;i<n;i++)for(j=0;j<n;j++){*p=a[i][j];p++;}}main(){int*p,a[3][3]={{1,3,5},{2,4,6}};p=(int*)malloc(100);arnovep(p,a,3);printf("%d%d\n",p[2],p[5];free(p);}
A.56B.25C.34D.程序錯誤
8.面向對象方法中,繼承是指()。
A.一組對象所具有的相似性質B.一個對象具有另一個對象的性質C.各對象之間的共同性質D.類之間共享屬性和操作的機制
9.有以下程序:#include<stdio.h>intadd_more(inta,intb){returna+b-2;}main(){inti;for(i=0;i<4;i++)printf(“%d”,add_more(i,2));}程序運行后的輸出結果是()。
A.1234B.0123C.5678D.4321
10.若已定義:“inta[9],*p=a;”,并在以后的語句中未改變p的值,不能表示a[1]地址的表達式是______。
A.p+1B.a+1C.a++D.++p
11.以下哪種操作最適合先進行排序處理()
A.找最大、最小值B.計算算術平均值C.找中間值D.找出現次數最多的值
12.
13.以下與數學表達式“0<x<5且x≠2”不等價的C語言邏輯表達式是()。
A.(0<x<5)&&(x!=2)
B.0<x&&x<5&&x!=2
C.x>0&&x<5&&x!=2
D.(x>0&&x<2)||(x>2&&x<5)
14.結構化程序所要求的基本結構不包括A.順序結構B.GOTO跳轉C.選擇(分支)結構D.重復(循環)結構
15.
16.設有定義:inta,*pa=&a;以下scanf語句中能正確為變量a讀入數據的是()
A.scanf(“%d”,pa);
B.scanf(“%d”,a);
C.scanf(“%d”,&pa);
D.scanf(“%d”,*pa);
17.順序查找不論在順序線性表中還是在鏈式線性表中的時間復雜度為()。
A.O(n)B.O(n^2)C.O(n^1/2)D.O(1og2n)
18.設q1和q2是指向一個float型一維數組的指針變量,k為float型變量,則不能正確執行的語句是()。
A.k=*q1+*q2;B.q1=k;C.q1=q2;D.k=*q1*(*q2);
19.下面不合法的常量數據是()。
A..023E-5B.0x3f7b8a90C.‘\0x6d’D.‘\0123321’
20.
二、2.填空題(20題)21.下面程序的輸出結果是【】。
main()
{inti=3,j=2;
char*a="DCBA";
printf("%c%c\n",a[i],a[j])
}
22.請讀程序片段:
inta=17;
printf("%d,%o\n",a,a);
以上程序片段的輸出結果是【】。
23.若有語句
inti=-19,j=i%4;
printf("%d\n",j),
則輸出的結果是______。
24.數據流圖的類型有【】和事務型。
25.用以下語句調用庫函數malloc,使字符指針st指向具有11個字節的動態存儲空間,請填空。st=(char*)【】;
26.以下程序的輸出結果是()。
#include<stdio.h>
main()
{intx=27;
while(x>20&&x<30)
{x++;
if(x/3){x++;break;}
else
continue;
}
printf("%d\n",x);
}
27.執行以下程序后的輸出結果是【】。
main()
{inta=10;
a=(3*5,a+4);printf("a=%d\n",a);
}
28.為了便于對照檢查,測試用例應由輸入數據和預期的【】兩部分組成。
29.下列程序的輸出結果是______。
main()
{inta+,b=2,C=3,t=0;
ifa<B){t=a;a=b;b=t;}
ifa<C){t=a;a=c;c=t;}
printf("%d,%d,%dln",a,b,C);
}
30.下列程序的輸出結果是【】。
main()
{
inta=1,b=2;
a=a+b;b=a-b;a=a-b;
prrintf("%d,%d\n",a,b);
}
31.【】(黑箱或白箱)測試方法完全不考慮程序的內部結構和內部特征。
32.在結構化設計方法中,數據流圖表達了問題中的數據流與加工間的關系,并且每一個______實際上對應一個處理模塊。
33.與表達式a+=b等價的另一書寫形式是______。
34.下列程序的運行結果是______。
#include<stdio.h>
main()
{inta,b,c;
a=3;b=4;c=5;
if(a>b)
if(a>c)
printf("%d",a);
elseprintf("%d",b);
printf("%d\n",c);
}
35.下面程序的輸出是【】。
main()
{intarr[10],i,k=0;
for(i=0;i,10;i++)arr[i]=i;
for(i=1;i<4;i++)k+=arr[i]+i;
printf("%d\n",k);
}
36.在一個容量為25的循環隊列中,若頭指針front=16,尾指針rear=9,則該循環隊列中共有【】個元素。
37.下面程序有兩個printf語句,如果第一個printf語句輸出的是194,則第二個printf語句的輸出結果是【】。
main()
{inta[10]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;
printf("%x\n",p);
printf("%\n",p+9);
}
38.以下程序運行后的輸出結果是【】。
intf(inta[],intn)
{
if(n>=1)
returnf(a,n-1)+a[n-1];
else
return0;
}
main()
{
intaa[5]={1,2,3,4,5},s;
s=f(aa,5);
printf("%d\n",s);
}
39.函數mycmp(char*s,char*t)的功能提比較字符串s和t的大小,當s等于t時返回0,當s>t返回正值,當s<t時返回負值。請填空。
mycmp(char*s,char*t)
{while(*s==*t)
{if(*s=='\0')return0;
++s;++t;
}
return(【】)
}
40.以下程序運行的結果是【】。
#include<conio.h>
#include<stdio.h>
#defineM100
voidfun(intm,int*a,int*n)
{inti,j=0;
for(i=1;i<=m;i++)
if(i%7==0‖i%11==0)
a[j++]=i;
*n=j;}
main()
{intaa[M],n,k;
clrscr();
fun(10,aa,&n);
for(k=0;k<n;k++)
if((k+1)%20==0)printf("\n");
elseprintf("%4d",aa[k]);
printf("\n");}
三、1.選擇題(20題)41.以下程序段中的變量已正確定義:for(i=0;i<4;i++,i++)for(k=1;k<3;k++);printf("*");程序段的輸出結果是______。
A.******B.****C.**D.*
42.有如下程序:main{intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++.b++;}printf("a=%d,b=%d\n",a,b);}該程序的輸出結果是()。
A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2
43.若函數調用時的實參為變量時,以下關于函數形參和實參的敘述中正確的是()。
A.函數的實參和其對應的形參共占同一存儲單元
B.形參只是形式上的存在,不占用具體存儲單元
C.同名的實參和形參占同一存儲單元
D.函數的形參和實參分別占用不同的存儲單元
44.已知二叉樹后序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是
A.acbedB.decabC.deabcD.cedba
45.有以下程序main(){intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i++<7)if(p[i]%2)j+=p[i];prizltf("%d\n",j);}程序運行后的輸出結果是
A.42B.45C.56D.60
46.有以下程序intf(intn){if(n==1)return1;elsereturnf(n-1)+1;}main(){inti,j=0;for(i=1;i<5;i++)j+=f(i);printf("%d\n",j);}程序運行后的輸出結果是()
A.15B.10C.6D.3
47.電子郵件是()
A.網絡信息檢索服務
B.通過Web網頁發布的公告信息
C.通過網絡實時交互的信息傳遞方式
D.一種利用網絡交換信息的非交互式服務
48.下列的程序用來輸出兩個字符串前7個字符中對應相等的字符及其位置號,程序空白處應該填寫的是()。#include<stdio.h>main(){Charsl[]="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)
49.若有以下定義:structlink{intdata;structlink*next;}a,b,c,*p,*q;且變量a和b之間已有如下圖所示的鏈表結構:
指針p指向變量a,q指向變量c。則能夠把c插入到a和b之間并形成新的鏈表的語句組是
A.a.next=c;c.next=b;
B.p.next=q;q.next=p.next;
C.p->next=&c;q->next=p->next;
D.(*p).next=q;(*q).next=&b;
50.下列敘述中正確的是()。
A.在模塊化程序設計中,一個模塊應盡量多的包括與其他模塊聯系的信息
B.在自頂向下、逐步細化的設計過程中,首先應設計解決問題的每一個細節
C.在模塊化程序設計中,一個模塊內部的控制結構也要符合結構化原則
D.在程序設計過程中,不能同時采用結構化程序設計方法與模塊化程序設計方法
51.下列選項中C語言中不合法的字符串常量的是
A.\121B.'y'C.\n\nD.ABCD\x6d
52.SQL語言又稱為______。
A.結構化定義語言B.結構化控制語言C.結構化查詢語言D.結構化操縱語言
53.若進棧序列為1,2,3,4,進棧過程中可以出棧,則下列不可能的—個出棧序列是______。
A.1,4,3,2B.2,3,4,1C.3,1,4,2D.3,4,2,1
54.若x和y代表整型數,以下表達式中不能正確表示數學關系|x-y|<10的是
A.abs(x-y)<10
B.x-y>-10&&x-y<10
C.!(x-y)<-10‖!(y-x)>10
D.(x-y)*(x-y)<100
55.下列數據結構中,能用二分法進行查找的是()。
A.順序存儲的有序線性表B.結性鏈表C.二叉鏈表D.有序線性鏈表
56.以下程序的輸出的結果是intx=3;main(){inti;for(i=1;i<x;i++)incre();}incre(){staicintx=1;x*=x+1;printf("%d",x);}
A.33B.22C.26D.25
57.設有下列二叉樹:
對此二叉樹中序遍歷的結果為______。
A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA
58.有以下程序#include<stringh>main(intargc,char*argv[]){inti,len=0;fot(i=1;i<argc;i+=2)len+=strlen(argv[i]);printf("%d\n",len);}經編譯連接后生成的可執行文件是ex.exe,若運行時輸入以下帶參數的命令行exabcdefgh3k44執行后輸出結果是
A.14B.12C.8D.6
59.下列各數據類型不屬于構造類型的是()。
A.枚舉型B.共用型C.結構型D.數組型
60.有如下程序段:inta=14,b=15,x,charc='A';x=(a&&B)&&(c<'B');執行該程序段后,x的值為()
A.1B.0C.FALSED.TRUE
四、選擇題(20題)61.有以下程序
main()
{
intx=3,y=2,z=1;
printf("%d\n",x/y&~z);
}
程序運行后的輸出結果是
A.3B.2
C.1D.0
62.
63.
64.
65.“商品”與“顧客”兩個實體集之間的聯系一般是()。
A.一對一B.多對一C.一對多D.多對多
66.若變量已確定義,則以下語句的輸出結果是()。
67.
68.C語言中,合法的字符型常數是_________。
A.‘A’B.“A”C.65D.A
69.有以下程序段:
當執行上述程序段,從鍵盤上輸入555667777abc后,y的值為()。
A.566.0B.55566.0C.7777.0D.566777.0
70.(74)用鏈表表示線性表的優點是()
A.便于插入和刪除操作
B.數據元素的物理順序與邏輯順序相同
C.花費的存儲空間較順序存儲少
D.便于隨機存取
71.當執行以下程序段時,()。x=-l:do{x=x*X;)while(!x);A.循環體將執行一次B.循環體將執行兩次C.循環體將執行無限次D.系統將提示有語法錯誤
72.
73.以下程序中函數sCmp的功能是返回形參指針sl和s2所指字符串中較小字符串的首地址。
若運行時依次輸入:abCd、abba和abC三個字符串,則輸出結果是()。
A.abCdB.abbaC.abCD.abCa
74.以下只有在使用時才為該類型變量分配內存的存儲類型說明是()。
A.auto和static
B.auto和register
C.register和static
D.extern和register
75.下列數據結構中,屬于非線性結構的是A.循環隊列B.帶鏈隊列C.二叉樹D.帶鏈棧
76.
有下列程序:
main
{inti,s=0,t[]={1,2,3,4,5,6,7,8,9);
for(i=0;i<9;i+=2)s+=*(t+i);
printf("%d\n",s);
}
程序執行后的輸出結果是()。
A.45B.20C.25D.36
77.有以下程序:
}、、、程序運行后的輸出結果是()。
A.一263B.2C.0D.一26
78.
79.結構化程序設計主要強調的是()。
A.程序的規模B.程序的效率C.程序設計語言的先進性D.程序的易讀性
80.
五、程序改錯題(1題)81.下列給定程序中,函數proc()的功能是:根據形參m(2≤m≤9)的值,在m行m列的二維數組中存放如下所示的數據,由main()函數輸出。
請修改程序中的錯誤,使它能得出正確的結果。
注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。
試題程序:
六、程序設計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫一個函數fun(),該函數的功能是將大于整數m且緊靠m的k個素數存入所指的數組中。例如,若輸入17、5,則應輸出19、23、29、31、37。注意:部分源程序在文件prog1.c中。請勿改動主函數main()和其他函數中的任何內容,僅在函數fun()的花括號中填入你編寫的若干語句。試題程序:
參考答案
1.B
2.D在表達式a*b+d-c中,double的類型最高,C語言中,由低類型自動向高類型轉換,所以最后的結果一定是double型。
3.D關系R與s經交運算后所得到的關系是由那些既在R內又在S內的共有元組組成的,記為RnS。
4.D解析:在C語言所有的運算符中,逗號運算符的優先級最低。C語言中區分大小寫,所以APH和aph是兩個不同的變量。賦值表達式a=b表示將b的值付給a,而b本身的值保持不變;通過鍵盤可以向計算機輸入允許的任何類型的數據。選項D)中當從鍵盤輸入數據時,對于整型變量可以輸入整型數值和字符,對于實型變量可以輸入實型數值和整型數值等。
5.A答案A
解析:一個C程序可以有一個或多個程序文件,也可以有一個或多個函數,所以一個C語言程序可以實現多種算法。
6.Astrcmp(char*,char*),函數strcmp用于比較兩個字符串的長度,長者為大,若字符個數也一樣,則從左至右依次比較相同位上的字符,字符大小按ASCIl表值計算,直到最后一個字符,若還相同,則兩個字符串相等,返回值0。選項A中if(strcmp(s2,sl)==0)ST,若s2等于sl,則返回值0,0等于0,所以邏輯表達式strcmp(s2,sl)==0為真,執行ST。
7.A解析:本題main函數中定義了指針p和二維數組a,通過函數amovep將數組的值存入指針p所指向的存儲單元中,a的各元素分別為:a[0][0]=1,a[0][1]=3,a[0][2]=5,a[1][0]=2,a[1][1]=4,a[1][2]=6,a[2][0]=0,a[2][1]=0,a[2][2]=0。通過mailoc()函數給指針分配內存空間,free()函數用于釋放指針變量所用內存空間。在主函數中通過amovep(p,a,3)調用函數amovep,使得實參p與形參p,實參數組a與形參中指向數組的指針變量共用同一存儲空間。最后輸出p[2],p[5]為56。
8.D繼承是面向對象的方法的一個主要特征,是使用已有的類的定義作為基礎建立新類的定義技術。廣義的說,繼承是指能夠直接獲得已有的性質和特征,而不必重復定義它們,所以說繼承是指類之間共享屬性和操作的機制。
9.Badd_more函數接收兩個參數a、b,返回“a+b-2”。main函數中,for循環調用add_more函數。當i=2時,傳入實參i和2,所以每次調用函數add_more時,b的值都是2。函數add_more返回值等價于實參i。所以每次for循環輸出的值就是i的值。故本題答案為B選項。
10.C
11.C
12.B
13.A在C語言里不能直接表達“0<x<5”,需要分步驟來實現,即使用“x>0&&x<5”來描述。在C語言里,“0<x<5”屬于一個邏輯運算表達式,可以理解為“(0<x)<5”,因此選項A錯誤。故本題答案為A選項。
14.BB【解析】1966年Boehm和JaCopini證明了程序設計語言僅僅使用順序、選擇和重復三種基本控制結構就足以表達出各種其他形式結構的程序設計方法。
15.B
16.A
17.A
18.B解析:選項A)是將指針q1和q2所指向的變量值相加,然后賦給k;選項B)中,float型數據和指針型數據之間不能進行賦值運算:選項C)中,是兩個指針變量之間的賦值:選項D)中,是兩個指針型變量所指向的兩個float型數據相乘。
19.D選項A是實型常量的指數形式,表示0.023×10-5;選項B是十六進制表示的整型常量;選項C是十六進制表示的轉義字符常量;選項D是字符串常量,應該使用雙引號標注。故本題答案為D選項。
20.B
21.AB
22.1721
23.-3-3解析:本題考核的知識點是運算符“%’的應用。該運算符是求兩個數相除的余數,其結果與被除數的符號一致,本題中“-19%4”的值為“-3”,所以說空格處應該填-3。
24.變換型典型的數據流類型有兩種:變換型和事務型。變換型是指信息沿輸入通路進入系統,同時由外部形式變換成內部形式,進入系統的信息通過變換中心,經加工處理以后再沿輸出通路變換成外部形式離開軟件系統;在很多軟件應用中,存在某種作業數據流,它可以引發一個或多個處理,這些處理能夠完成該作業要求的功能,這種數據流就叫做事務。
25.malloc(11)malloc函數的格式是void*(或char*)malloc(size),size表示應分配的存儲區,此題要分配11字節的單元,把11代入即可。
26.2929解析:本題考查while循環和++運算,x=27符合循環條件,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- xx醫院疫情防控辦公室2025年健康教育計劃
- 不同磷素對大豆產量及磷素利用的影響
- 成人住院患者2期壓力性損傷傷口處理的循證實踐
- 小學語文多元評價體系心得體會
- 2025-2030青花瓷行業市場深度調研及發展前景與投資研究報告
- 2025-2030金屬包裝材料行業市場深度調研及發展前景與投資研究報告
- 2025-2030西餐產業市場深度調研及發展趨勢與投資戰略研究報告
- 2025-2030磁控健身車行業市場發展分析及發展趨勢與投資管理策略研究報告
- 2025-2030環保涂料行業市場發展分析及前景趨勢與投資研究報告
- 2025-2030烘焙食品行業市場發展分析及發展趨勢與投資研究報告
- 領悟社會支持量表(PSSS)
- 可燃氣體報警儀檢驗記錄
- 自動控制原理全套ppt課件(完整版)
- 手衛生相關知識考核試題與答案
- 《同分母分數加減法》教學課件人教新課標
- 產業經濟學第三版(蘇東水)課后習題及答案完整版
- 初中綜合實踐課程標準
- 首件檢驗記錄表(標準樣版)
- 中建六局建設發展公司責任目標管理考核辦法
- 太陽能光伏發電系統PVsyst運用
- 壓實瀝青混合料密度(表干法)自動計算
評論
0/150
提交評論