




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2022-2023年山西省臨汾市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.允許對隊列進(jìn)行的操作有()。
A.對隊列中的元素排序B.取出最近進(jìn)隊的元素C.在隊頭元素之前插入元素D.刪除隊頭元素
2.有以下程序:#include<stdio.h>voidmain(){char*s=“\ta\018bc”;for(;*s!=‘\0’;s++)printf(“*”);printf(“\n”);}程序運(yùn)行后的輸出結(jié)果是()。
A.******B.*********C.*****D.*******
3.有以下程序:
main
{chara='a',b;
printf("%c,",++a);
printf("%c\n",b=a++):
)
程序運(yùn)行后的輸出結(jié)果是()。A.A.b,bB.b,cC.a,bD.a,c
4.設(shè)有定義“intx,y,z;”,且各變量已經(jīng)賦正整數(shù)值,則以下能正確表示代數(shù)式“”的C語言表達(dá)式是()。
A.1.0/x/y/zB.1/x*y*zC.1/(x*y*z)D.1/x/y/(double)z
5.下列能正確進(jìn)行字符串賦值的是()。
A.chars[5]={"ABCDE"};
B.chars[5]={A,B,C,D,E};
C.char*S;S="ABCDE";
D.char*s;printf("%《",s);
6.將一棵有100個結(jié)點(diǎn)的完全二叉樹從上到下,從左到右依次對結(jié)點(diǎn)進(jìn)行編號,根結(jié)點(diǎn)的編號為1,則編號為49的結(jié)點(diǎn)的左孩子的編號為______。
A.98B.99C.50D.48
7.下面不屬于需求分析階段任務(wù)的是()。
A.確定軟件系統(tǒng)的功能需求B.確定軟件系統(tǒng)的性能需求C.制定軟件集成測試計劃D.需求規(guī)格說明書評審
8.插入和刪除只能在一端進(jìn)行線性表,稱為()。
A.隊列B.循環(huán)隊列C.棧D.循環(huán)棧
9.遞歸式的先序遍歷一個n節(jié)點(diǎn),深度為d的二叉樹,則需要??臻g的大小為()
A.O(logn)B.O(nlogn)C.O(n)D.O(d)
10.算法的空間復(fù)雜度是指()。
A.算法程序的長度B.算法程序中的指令條數(shù)C.算法程序所占的存儲空間D.算法執(zhí)行過程中所需要的存儲空間
11.下列程序的運(yùn)行結(jié)果是()。#include<stdio.h>voidfun(int*S,int*p){staticintt=3:*p=s[t];t--;}voidmain{inta[]={2,3,4,5),k;intx;for(k=0,k<4,k++){fun(a,&x);printf("%d,",x);}}A.5,4,3,2B.2,3,4,5C.2,2,2,2D.5,5,5,5
12.根據(jù)二叉樹的定義可知道二叉樹共有種不同形態(tài)的二叉樹()。
A.3B.4C.5D.7
13.有以下程序:#include<stdio.h>main(){inta=2,b=3,c=4;a*=16+(b++)-(++c);printf(“%d\n”,a);}程序運(yùn)行后的輸出結(jié)果是()。
A.15B.30C.28D.14
14.一個優(yōu)化的程序可以生成n個元素集合的所有子集,那么該程序的時間復(fù)雜度是()
A.O(n!)B.O(nlogn)C.O(n^2)D.O(2^n)
15.C語言提供的合法關(guān)鍵字是()
A.switchB.cherC.caseD.default
16.
17.
18.設(shè)變量已正確定義,則以下能正確計算n!的程序段是______。
A.f=0;for(i=1;i<=n;i++)f*=i;
B.f=1;for(i=1;i<n;i++)f*=i;
C.f=1;for(i=n;i>1;i++)f*=i;
D.f=1;for(i=n;i>=2;i--)f*=i;
19.設(shè)x為int型變量,則執(zhí)行以下語句后,x的值為()。x=10;x=x-=x-x;
A.10B.20C.40D.30
20.已知字母A的ASCII碼為十進(jìn)制的65,下面程序main(){charch1,ch2;ch1='A'+'5'-'3';ch2='A'+'6'-'3';printf("%d,%c\n",ch1,ch2);}的輸出是_________。
A.67,DB.B,CC.C,DD.不確定的值
二、2.填空題(20題)21.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
voidswap(int*a,int*b)
{int*t;
t=a;a=b;b=t;
}
main()
{inti=3,j=5,*p=&i,*q=&j;
swap(p,q);printf("%d%d\n",*p,*q);
}
22.若有以下程序段:
intc1=1,c2=2,c3;
c3=1.0/c2*c1;
則執(zhí)行后,c3中的值是【】。
23.下面程序的輸出是【】。
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)
arr[i]=i;
fov(i=1;i<4;i++)
k+=arr[i]+i;
printf("%d\n",k);}
24.表示條件:10<x<100或x<0的C語言表達(dá)式【】。
25.下列程序段的輸出結(jié)果是【】。
intn='c';
switch(n++)
{default:printf("error");break;
case'a':
case'A':
case'b':
case'B':printf("good");break;
case'c':case'C':printf("pass");
case'd':case'D':printf("warn");
}
26.以下程序的輸出結(jié)果是#include<stdio.h>structstiintx;int*y;}*p;intdt[4]={10,20,30,40};structstaa[4]={50,&dt[0],60,&dt[0],60,&it[0],60,&dt[0],};main(){p=aa;printf("%d\n",++(p->x));}
27.在數(shù)據(jù)的存儲結(jié)構(gòu)中,不僅需要存儲各數(shù)據(jù)元素的信息,還要存放各元素之間______的信息。
28.一個類可以從直接或間接的祖先中繼承所有屬性和方法。采用這個方法提高了軟件的【】。
29.有以下程序:
main()
{intn=0,m=1,x=2;
if(!n)x-=1;
if(m)x-=2;
if(x)x-=3;
printf("%d\n",x);
}
執(zhí)行后輸出的結(jié)果是【】。
30.在數(shù)據(jù)庫系統(tǒng)中,實(shí)現(xiàn)各種數(shù)據(jù)管理功能的核心軟件稱為【】。
31.下面程序的運(yùn)行結(jié)果是【】。
intf(inta[],intn)
{if(n>1)returna[0]+f(&a[1],n-1);
elsereturna[0];
]
main()
{intaa[3]={1,2,3),s;
s=f(&aa[0],3);printf("%d\n",s);
}
32.函數(shù)pi的功能是根據(jù)以下近似公式求π值:
(π*π)/6=1+1/(2*2)+1/(3*3)+…+1(n*n)
現(xiàn)在請你在下面的函數(shù)中填空,完成求π的功能。
#include"math.h"
{doubles=0.0;longi;
for(i=1;i<=n;i++)s=s+【】;
return(sqrt(6*3));
}
33.在軟件生命周期中,【】階段是花費(fèi)最多、持續(xù)時間最長的階段。
34.按數(shù)據(jù)流的類型,結(jié)構(gòu)化設(shè)計方法有兩種設(shè)計策略,它們是變換分析設(shè)計和______。
35.表示""整數(shù)x的絕對值大于5""時值為""真""的C語言表達(dá)式是【】。
36.下列程序的輸出結(jié)果是______。
#include<stdio.h>
main()
{intx=1,y=1,a=1,b=1;
switch(x)
{case1:
switch(y)
{case0:a++;break;
case1:b++;break;
}
case2:
a++;b++;break;
}
printf("a=%d,b=%d\n",a,B);
}
37.若有下列定義:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;,則值為3的表達(dá)式為:______。
38.軟件測試中路徑覆蓋測試是整個測試的基礎(chǔ),它是對軟件【】進(jìn)行測試。
39.以下程序的運(yùn)行結(jié)果是【】。
#include<stdio.h>
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:a++;break;
case1:b++;break;
}
case2:a++;b++;break;
case3:a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
40.函數(shù)mycmp(char*s,char*t)的功能是比較字符串s和t的大小,當(dāng)s等于t時返回0,當(dāng)s>t時返回正值,當(dāng)s<t時返回負(fù)值。請?zhí)羁铡?/p>
mycmp(char*s,char*t)
{while(*s==*t)
{if(*s=='\0')return0;
++s;++t;
}
return(【】);
}
三、1.選擇題(20題)41.下列描述中不正確的是()。
A.字符型數(shù)組中可以存放字符串
B.可以對字符型數(shù)組進(jìn)行整體輸入、輸出
C.可以對整型數(shù)組進(jìn)行整體輸入、輸出
D.不能在賦值語句中通過賦值運(yùn)算符“=”對字符型數(shù)組進(jìn)行整體賦值
42.程序中若有如下說明和定義語句
charfun(char*);
main()
{
char*s="one",a[5]={0},(*f1)()=fun,ch;
……
}
以下選項(xiàng)中對函數(shù)fun的正確調(diào)用語句是
A.(*f1)(A);B.*f1(*s);C.fun(&A);D.ch=*f1(s);
43.將E-R圖轉(zhuǎn)換到關(guān)系模式時,實(shí)體與聯(lián)系都可以表示成________。
A.屬性B.關(guān)系C.鍵D.域
44.以下不是面向?qū)ο笏枷胫械闹饕卣鞯氖?/p>
A.多態(tài)B.繼承C.封裝D.垃圾回收
45.判斷字符型變量chr為小寫字母的表達(dá)式是______。
A.'a'<=chr<='z'
B.(chr>='a')||(chr<='z')
C.(chr>=A)&&(chr<=z)
D.(chr>='a')&&(chr<='z')
46.若指針p已正確定義,要使p指向兩個連續(xù)的整型動態(tài)存儲單元,不正確的語句是______。
A.p=2*(int*)malloc(sizeof(int));
B.p=(int*)mallet(2*sizeof(int));
C.p=(int*)malloc(2*2);
D.p=(int*)calloc(2,sizeof(int));
47.已知inta=1,b=3則a^b的值為
A.3B.1C.2D.4
48.以下程序的輸出結(jié)果是______。main(){inti,a[10];for(i=9;i>=0;i-)a[i]=10-i;printf("%d%d%d",a[a],a[5],a[8]);}
A.258B.741C.852D.369
49.設(shè)char型變量x中的值為10100111,則表達(dá)式(2+x)(-3)的值是
A.10101001B.10101000C.11111101D.1010101
50.若有以下定義和語句structa{intn,m;};structast[3]={{1,20},{2,19},{3,21}};structa*p=st;則以下錯誤的引用是
A.(p++)->n;B.st[0].n;C.(*p).n;D.p=&st.m;
51.下列敘述中正確的是()。
A.一個算法的空間復(fù)雜度大,則其時間復(fù)雜度也必定大
B.一個算法的空間復(fù)雜度大,則其時間復(fù)雜度必定小
C.一個算法的時間復(fù)雜度大,則其空間復(fù)雜度必定小
D.上述三種說法都不對
52.下列描述中,正確的是()
A.線性鏈表是線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)B.棧與隊列是非線性結(jié)構(gòu)C.雙向鏈表是非線性結(jié)構(gòu)D.只有根結(jié)點(diǎn)的二叉樹是線性結(jié)構(gòu)
53.以下程序中,while循環(huán)的循環(huán)次數(shù)是main(){inti=0;while(i<10){if(i<1)continue;if(i==5)break;i++;}}
A.1B.10C.6D.死循環(huán),不能確定次數(shù)
54.以下敘述中錯誤的是()。
A.對于double類型數(shù)組,不可以直接用數(shù)組名對數(shù)組進(jìn)行整體輸入或輸出
B.數(shù)組名代表的是數(shù)組所占存儲區(qū)的首地址,其值不可改變
C.當(dāng)程序執(zhí)行中,數(shù)組元素的下標(biāo)超出所定義的下標(biāo)范圍時,系統(tǒng)將給出“下標(biāo)越界”的出錯信息
D.可以通過賦初值的方式確定數(shù)組元素的個數(shù)
55.設(shè)有聲明語句chara='\72';,則變量a______。
A.包含1個字符B.包含2個字符C.包含3個字符D.聲明不合法
56.以下4組用戶定義標(biāo)識符中,全部合法的一組是()A._mainencludesin
B.If-maxturbo
C.txtREAL3COM
D.intk_2_001
57.設(shè)x=2.5、a=7、y=4.7,算術(shù)表達(dá)式x+a%3*(int)(x+y)%2/4的值為______。
A.2.5B.7C.4.7D.2.75
58.以下程序有錯,錯誤原因是main(){int*p,i;char*q,ch;p=&i;q=&ch;*p=40;*p=*q;……}
A.p和q的類型不一致,不能執(zhí)行*p=*q;語句
B.*p中存放的是地址值,因此不能執(zhí)行*p=40;語句
C.q沒有指向具體的存儲單元,所以*q沒有實(shí)際意義
D.q雖然指向了具體的存儲單元,但該單元中沒有確定的值,所以執(zhí)行*p=*q;沒有意義,可能會影響后面語句的執(zhí)行結(jié)果
59.下列程序的運(yùn)行結(jié)果為()。
#include<stdio.h>
voidabc(char*str)
{inta,b,i,j;
for(i=j(luò)=0;str[i]!='\0';i++)
if(str[i]!='a')
str[j++]=str[j];
str[j]='\0';
}
voidmain()
{charStr[]="abcdef';
abc(str);
printf("str[]=%s",str);
}
A.str[]=bcdefB.str[]=abcdefC.str[]=aD.str[]=ab
60.算法的有窮性是指A.算法程序的運(yùn)行時間是有限的
B.算法程序所處理的數(shù)據(jù)量是有限的
C.算法程序的長度是有限的
D.算法只能被有限的用戶使用
四、選擇題(20題)61.設(shè)“intx=2,y=1;”,則表達(dá)式(!x||Y--)的值是()。
A.0B.1C.2D.-1
62.在深度為5的滿二叉樹中,葉子結(jié)點(diǎn)的個數(shù)為A.32B.31C.16D.15
63.有以下程序程序運(yùn)行后的輸出結(jié)果是()。
A.28B.24C.32D.36
64.
65.有以下程序
#include"stdio.h"
voidfun(int*a,int*b,intc)
{c=*a+*b;}
main()
{inta[2]={6,9},c=0;
fun(a,a+1,&c);
printf("%d\n",c);
}
程序輸出的結(jié)果是
A.6B.9
C.0D.15
66.有以下程序程序運(yùn)行后的輸出結(jié)果是()。
A.1,3B.2,3C.1,4D.1.2
67.
68.
69.有以下程序:
程序的運(yùn)行結(jié)果是()。
A.Qian,f,95,92
B.Qian,m,85,90
C.Zhao,f,95,92
D.Zhao,m,85,90
70.若有以下程序段:
輸出結(jié)果是()。
A.2B.4C.8D.16
71.設(shè)有以下函數(shù):
A.
B.
C.
D.
72.
73.表達(dá)式:(im)((double)9/2)一9%2的值是()。
A.0B.3C.4D.5
74.有以下程序程序運(yùn)行后的輸出結(jié)果是()。
A.1B.16C.32D.0
75.樹是結(jié)點(diǎn)的集合,它的根結(jié)點(diǎn)數(shù)目是()。
A.有且只有1B.1或多于1C.0或1D.至少2
76.以下敘述中正確的是()。
A.c語言規(guī)定必須用main作為主函數(shù)名,程序?qū)拇碎_始執(zhí)行
B.可以在程序中由用戶指定任意一個函數(shù)作為主函數(shù),程序?qū)拇碎_始執(zhí)行
C.c語言程序?qū)脑闯绦蛑械谝粋€函數(shù)開始執(zhí)行、
D.main的各種大小寫拼寫形式都可以作為主函數(shù)名,如MAIN,Main等
77.
78.
79.
80.在以下選項(xiàng)中,能正確調(diào)用對象屬性的語句是()。
A.對象名(屬性名)B.對象名一>屬性名C.對象名屬性名D.對象名.屬性名
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:利用插入排序法對字符串中的字符按從大到小的順序進(jìn)行排序。插入法的基本方法是:先對字符串中的頭兩個元素進(jìn)行排序,然后把第3個字符插入前2個字符中,插人后前3個字符依然有序,再把第4個字符插入前3個字符中,待排序的字符串已在主函數(shù)中賦予。例如,原始字符串為“goodluck”,則排序后的字符串為“uoolkgdc”。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.編寫一個函數(shù),輸入n個字符串,串與串之間以Enter鍵分隔,找出最短字符串中第一個字符串,傳回該串地址(用一個新串“*”作為結(jié)束輸入的標(biāo)志)。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入所編寫的若干語句。試題程序:
參考答案
1.D
2.Amain函數(shù)中定義一個字符指針s,指向字符串“\\ta\\018bc”。for循環(huán)遍歷s指向的字符串中的字符,然后輸出根據(jù)題意可以理解為:s指向的字符串中有多少個字符,就輸出多少個s指向的字符串中字符分別是\\t(轉(zhuǎn)義字符)、a、\\01(轉(zhuǎn)義字符)、8、b、c,總共6個。其中因?yàn)?不屬于八進(jìn)制中的數(shù)字,所以“\\018”不是一個轉(zhuǎn)義字符,而“\\01”是轉(zhuǎn)義字符。故本題答案為A選項(xiàng)。
3.A++a與a++的區(qū)別是前者先自加再運(yùn)算,后者是先運(yùn)算后自加。
4.A代數(shù)式“”的結(jié)果為小數(shù),轉(zhuǎn)為C語言的表達(dá)式必須是浮點(diǎn)數(shù)。A選項(xiàng)由于1.0為浮點(diǎn)數(shù),計算結(jié)果自動轉(zhuǎn)換為浮點(diǎn)數(shù)。選項(xiàng)B、C、D的表達(dá)式均為0,因此只有選項(xiàng)A正確。故本題答案為A選項(xiàng)。
5.C選項(xiàng)A、B的空間不夠;字符串存儲要有結(jié)束符\0,且要占用一個空間,printf用來輸出字符,不能輸入字符串。
6.A
7.C【答案】:C
【知識點(diǎn)】:需求分析階段的任務(wù)
【解析】:需求分析階段的任務(wù)是深入描述軟件的功能和性能,確定軟件設(shè)計的約束和軟件同其他系統(tǒng)元素的接口細(xì)節(jié),定義軟件的其他有效性需求,借助于當(dāng)前系統(tǒng)的邏輯模型導(dǎo)出目標(biāo)系統(tǒng)邏輯模型,解決目標(biāo)系統(tǒng)“做什么”的問題。可分為需求提出、需求描述及需求評審三個階段。從此可以看出需求分析的任務(wù)不包括制定軟件集成測試計劃,故選C。
8.C
9.D
10.D【解析】算法的空間復(fù)雜度是指執(zhí)行這個算法所需要的內(nèi)存空間。一個算法所占用的存儲空間包括算法程序所占的空間、輸入的初始數(shù)據(jù)所占的存儲空間以及算法執(zhí)行中所需要的額外空間。其中額外空間包括算法程序執(zhí)行過程中的工作單元以及某種數(shù)據(jù)結(jié)構(gòu)所需要的附加存儲空間。如果額外空間量相對于問題規(guī)模來說是常數(shù),則稱該算法是原地工作的。在許多實(shí)際問題中,為了減少算法所占的存儲空間,通常采用壓縮存儲技術(shù),以便盡量減少不必要的額外空間。
11.A依據(jù)fun函數(shù),可知其要實(shí)現(xiàn)的功能是將S中第(t+1)個元素以前的元素逆置賦給數(shù)組P。由于fun中函數(shù)定義了靜態(tài)變量t=3,因此,main函數(shù)中調(diào)用函數(shù)fun(a,&x)時,就是要將數(shù)組a中前4個元素逆置賦給數(shù)x,最后輸出x數(shù)組。
12.B
13.C單目運(yùn)算符“++”的優(yōu)先級高于賦值運(yùn)算符。表達(dá)式“a*=16+(b++)-(++C);”可轉(zhuǎn)化為“a=a*(16+b-(c+1));b=b+1;”,代入值計算可得a=28。故本題答案為C選項(xiàng)。
14.D
15.C
16.C
17.A
18.D解析:A選項(xiàng),將f賦值為0,結(jié)果得到0,因?yàn)?乘任何數(shù)都為0;B選項(xiàng),i<n,計算的是(n-1)!,C選項(xiàng)將陷入死循環(huán)。
19.A執(zhí)行x=x-=x-x語句可寫成x=x-(x-x),可看出結(jié)果為10,故八選項(xiàng)正確。
20.A解析:由于字符“5”和“3”的ASCII碼相差為2,所以ch1經(jīng)過運(yùn)算后的值應(yīng)為65+2=67;同理,ch2經(jīng)過運(yùn)算后的值應(yīng)為65+3=68,即是字符“D”。
21.3535解析:考查swap()函數(shù)。函數(shù)swap(int*a,int*b)的功能是實(shí)現(xiàn)*a和*b中兩個數(shù)據(jù)的交換,在主函數(shù)中調(diào)用swap(p,q)后,參形指針變量a和b分別指向i和j,在swap(int*a,int*b)執(zhí)行完后,指針變量a和b分別指向j和i,而指針變量p,q所指向變量的值沒有發(fā)生變化,所以輸出結(jié)果為35。
22.00解析:在賦值運(yùn)算中。如果表達(dá)式中變量和常量的數(shù)據(jù)類型不一致就會自動進(jìn)行類型轉(zhuǎn)換。系統(tǒng)會計算1.0/c2,由于1.0是實(shí)型,所以均先轉(zhuǎn)化為雙精度型0.500000,再和c1轉(zhuǎn)化后的雙精度數(shù)相乘得0.500000。但其要賦值給整型變量c3,故要進(jìn)行強(qiáng)制轉(zhuǎn)換,c3的值為0。
23.1212解析:本題通過第一個for循環(huán)將數(shù)組arr[0]=arr[9]分別賦值為0-9,通過第二個for循環(huán)的三次循環(huán)累加,求出結(jié)果為12,具體分析如下:
i=1:k=0+arr[1]+1即k=2;
i=2:k=2+arr[2]+2即k=6;
i=3:k=6+arr[3]+3即k=12:
24.(X>10&&x<100)||x<0或(10<x&&x<100)||x<0或x<0||(x>10&&x<100)或0>x||(10<x&&x<100)或(括號有無都可以)(X>10&&x<100)||x<0\r\n\u3000\u3000或(10<x&&x<100)||x<0或x<0||(x>10&&x<100)\r\n\u3000\u3000或0>x||(10<x&&x<100)或(括號有無都可以)
25.passwarnpasswarn解析:n++是在執(zhí)行完其所在的語句后再加1,因此,在執(zhí)行case的時候,n的值依然為'c',執(zhí)行case'c'后面的語句,先打印出“pass”;在執(zhí)行完case'c'后,未遇到break跳出switch,便接著執(zhí)行下面的語句,又打印出warn。所以此題輸出結(jié)果是passwarn。
26.C
27.前后件關(guān)系前后件關(guān)系解析:在數(shù)據(jù)存儲結(jié)構(gòu)中,除了要存儲數(shù)據(jù),還要存儲數(shù)據(jù)的前后件關(guān)系,對于順序存儲的數(shù)據(jù)結(jié)構(gòu),前后件之間的關(guān)系,是通過存儲空間的位置來實(shí)現(xiàn)的,而對于鏈?zhǔn)酱鎯碚f,數(shù)據(jù)元素之間的前后件關(guān)系是通過指針來實(shí)現(xiàn)的。
28.可重用性繼承的優(yōu)點(diǎn):相似的對象可以共享程序代碼和數(shù)據(jù)結(jié)構(gòu),從而大大減少了程序中的冗余,提高軟件的可重用性。
29.-4-4解析:本題中,n=0,可以判斷(!n)為真,執(zhí)行x=x-1=2-1=1;m=1,可以判斷(m)為真,執(zhí)行x=x-2=1-2=-1;進(jìn)而可以判斷(x)為真,執(zhí)行x=x-3=-1-3=-4。所以,最后輸出為-4
30.數(shù)據(jù)庫管理系統(tǒng)或DBMS數(shù)據(jù)庫管理系統(tǒng)或DBMS解析:數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem,DBMS)是一種操縱和管理數(shù)據(jù)庫的大型軟件,是用于建立、使用和維護(hù)數(shù)據(jù)庫,簡稱DBMS。它對數(shù)據(jù)庫進(jìn)行統(tǒng)一的管理和控制,以保證數(shù)據(jù)庫的安全性和完整性。用戶通過DBMS訪問數(shù)據(jù)庫中的數(shù)據(jù),數(shù)據(jù)庫管理員也通過DBMS進(jìn)行數(shù)據(jù)庫的維護(hù)工作。它提供多種功能,可使多個應(yīng)用程序和用戶用不同的方法在同時或不同時刻去建立,修改和詢問數(shù)據(jù)庫。因此,數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)庫管理系統(tǒng)是實(shí)現(xiàn)各種數(shù)據(jù)管理功能的核心軟件。本題的答案是數(shù)據(jù)庫管理系統(tǒng)或DBMS。
31.66解析:經(jīng)過分析將遞歸函數(shù)寫成其數(shù)學(xué)表達(dá)式如下:
f(&a,n)=a[0]+f(&a[1],n-1)n>1
f(&a,n)=a[0]n=1
本題中定義了一個長度為3的數(shù)組aa并初始化。接著調(diào)用遞歸函數(shù)f(),由上面的數(shù)學(xué)表達(dá)式以計算其返回值s=1+2+3=6,所以空白處應(yīng)該填6。
32.1.0/(i*i)或(double)1/(i*i)1.0/(i*i)或(double)1/(i*i)解析:表達(dá)式1+1/(2*2)+1/(3*3)+…+1(n*n)可寫為1/(1*1)+1/(2*2)+1/(3*3)+…+1(n*n)
n
即;∑1÷(i×i)
i=1
對應(yīng)的C語言的表達(dá)式s=s+1.0/(i*i)。注:必須要寫成1.0的形式,否則1/(i*i)返回值為其值截尾取整,即恒為0。
33.維護(hù)維護(hù)
34.事務(wù)分析設(shè)計事務(wù)分析設(shè)計解析:典型的數(shù)據(jù)流圖有兩種,即變換型和事務(wù)型。按照這兩種類型把設(shè)計方法分為兩類,即變換分析設(shè)計和事務(wù)分析設(shè)計。
35.x>5||x<-5x<-5或x<-5||x>5x>5||x<-5,x<-5或x<-5||x>5解析:要使整數(shù)x的絕對值大于5,則x大于5或x小于5,用C語言表示即為:x>5||x<-5或者x<-5||x>5。故本題答案為;x>5||x<-5或者x<-5||x>5。
36.a=2b=3a=2,b=3解析:分析程序,程序從x=1語句開始執(zhí)行,之后執(zhí)行第一個switch語句,switch(x)=switch(1),所以執(zhí)行case1,case1語句中包含一個復(fù)合switch語句:這時執(zhí)行第二個switch語句,此時y=1,所以switch(y)=switch(1),因此執(zhí)行case1,將b加1,得到b=2,遇到break語句,退出第二個switch語句,則整個case1的復(fù)合語句執(zhí)行完畢,由于在這個case1的后面沒有break語句使其退出第一個switch語句,所以接著執(zhí)行下列的case2后面的語句,即將a,b各加1,得到a=2,b=3。
37.p+=2*(p++)p+=2,*(p++)解析:由題可知a[2]=3,因此只要使指針p指向a[3],然后再引用指針的值就可以了。
38.結(jié)構(gòu)結(jié)構(gòu)解析:路徑測試是白盒測試方法中的—種,它要求對程序中的每條路徑最少檢查一次,目的是對軟件的結(jié)構(gòu)進(jìn)行測試。
39.a=2b=1a=2,b=1解析:本題考查了switch結(jié)構(gòu)的內(nèi)容。C語言中,程序執(zhí)行完一個case標(biāo)號的內(nèi)容后,如果沒有break語句,控制結(jié)構(gòu)會轉(zhuǎn)移到下一個case繼續(xù)執(zhí)行,因?yàn)閏ase常量表達(dá)式只是起語句標(biāo)號作用,并不是在該處進(jìn)行條件判斷。本題程序在執(zhí)行完內(nèi)部switch結(jié)構(gòu)后,繼續(xù)執(zhí)行了外部switch結(jié)構(gòu)的case2:分支,最后a和b的值分別為2和1。
40.*s-*t*s-*t解析:本題考查比較字符串的大小。函數(shù)的兩個形參是兩個字符指針變量,指針變量的值是字符串的首地址,*s和*t表示s和t指向的第一個字符,在while循環(huán)中,通過s和t指針的移動,不斷改變所指字符,通過返回s和t的第一個不同字符的ASCII碼的差值*s-*t得到結(jié)果。
41.C解析:本題考查對數(shù)組的理解。C語言規(guī)定只能逐個引用數(shù)組元素,而不能一次引用整個數(shù)組。對于字符數(shù)組,可以將整個字符串一次輸入或輸出。所以,選項(xiàng)C)不正確。
42.A解析:函數(shù)fun()的參數(shù)為指針類型,返回值為字符型,而選項(xiàng)B、C的參數(shù)不是指針類型,所以不正確,選項(xiàng)D中,*fl(s)表示返回值為指針的函數(shù),所以也不正確。
43.B解析:關(guān)系數(shù)據(jù)庫邏輯設(shè)計的主要工作是將\ue008E-R\ue009圖轉(zhuǎn)換成指定RDBMS中的關(guān)系模式。首先,從E-R圖到關(guān)系模式的轉(zhuǎn)換是比較直接的,實(shí)體與聯(lián)系都可以表示成關(guān)系,E-R圖中屬性也可以轉(zhuǎn)換成關(guān)系的屬性,實(shí)體集也可以轉(zhuǎn)換成關(guān)系。
44.D解析:面向?qū)ο笏枷胫械娜齻€主要特征是:封裝性、繼承性和多態(tài)性。
45.B解析:程序段中定義x值為1,!x值為0,因此循環(huán)執(zhí)行的條件永遠(yuǎn)成立,該循環(huán)是死循環(huán)。
46.A解析:本題考查malloc函數(shù)和calloc函數(shù)的應(yīng)用。C語言中庫函數(shù)malloc和calloc的功能都是向系統(tǒng)申請分配內(nèi)存空間。其中函數(shù)malloc的調(diào)用為:malloc(size),其中size是一個無符號整數(shù),表示向系統(tǒng)申請多大的存儲空間;calloc(n,size)表示向系統(tǒng)申請n個大小為size的存儲空間。新標(biāo)準(zhǔn)C提供的malloc和calloc函數(shù)的類型規(guī)定為void*類型,使用時根據(jù)需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換。選項(xiàng)B、C、D都能滿足p指向兩個連續(xù)的整型存儲單元的要求,其中(int*)表示強(qiáng)制類型轉(zhuǎn)換。
47.C解析:^是按位異或運(yùn)算,如果對應(yīng)位不同則結(jié)果為1,相同則為0。
48.C解析:在本題運(yùn)行時主要注意的是當(dāng)i=9時,a[i]=10-9=1;i=8時,a[i]=10-8=2;i=7時,a[i]=10-7=3;……依此類推,直到i=0時,a[i]=10-0=10;此時,i的值已變?yōu)?1,判斷for的循環(huán)條件,不成立,然后輸出a[2],a[5],a[8]分別為8,5,2。
49.D解析:表達(dá)式(2+x)二進(jìn)制表示為“10101001”,(-3)即把3按位取反得到二進(jìn)制值為“11111100”,再把這兩個二進(jìn)制按位加(異或),得到結(jié)果位“01010101”。
50.D解析:可以用以下三種形式來引用結(jié)構(gòu)體變量中的成員:結(jié)構(gòu)體變量名.成員名、指針變量名->成員名和(*指針變量名).成員名。選項(xiàng)D)中“&st.m”取的是結(jié)構(gòu)體中成員的地址而不是結(jié)構(gòu)的地址。
51.D解析:時間復(fù)雜度是指一個算法執(zhí)行時間的相對度量;空間復(fù)雜度是指算法在運(yùn)行過程中臨時占用所需存儲空間大小的度量。人們都希望選擇一個既省存儲空間、又省執(zhí)行時間的算法。然而,有時為了加快算法的運(yùn)行速度,不得不增加空間開銷;有時為了能有效地存儲算法和數(shù)據(jù),又不得不犧牲運(yùn)行時間。時間和空間的效率往往是一對矛盾,很難做到兩全。但是,這不適用于所有的情況,也就是說時間復(fù)雜度和空間復(fù)雜度之間雖然經(jīng)常矛盾,但是二者不存在必然的聯(lián)系。因此,選項(xiàng)A、B、C的說法都是錯誤的。故本題的正確答案是D。
52.AA)【解析】根據(jù)數(shù)據(jù)結(jié)構(gòu)中各數(shù)據(jù)元素之間前后關(guān)系的復(fù)雜程度,一般將數(shù)據(jù)結(jié)構(gòu)分為兩大類型:線性結(jié)構(gòu)與非線性結(jié)構(gòu)。如果一個非空的數(shù)據(jù)結(jié)構(gòu)滿足下列兩個條件:①有且只有一個根結(jié)點(diǎn);②每個結(jié)點(diǎn)最多有一個前件,也最多有一個后件。則稱該數(shù)據(jù)結(jié)構(gòu)為線性結(jié)構(gòu),又稱線性表。所以線性表、棧與隊列、線性鏈表都是線性結(jié)構(gòu),而二:叉樹是非線性結(jié)構(gòu)。
53.D解析:break語句只能在循環(huán)體和switch語句體內(nèi)使用,當(dāng)break出現(xiàn)在switch語句體內(nèi)時,其作用只是跳出該switch語句體。當(dāng)break出現(xiàn)在循環(huán)體中,但不在switch語句體內(nèi)時,則在執(zhí)行break后,跳出本層循環(huán)體.而continue語句的作用是結(jié)束本次循環(huán),即跳過本次循環(huán)中余下尚未執(zhí)行的語句,接著再一次進(jìn)行循環(huán)的條件判定。本程序中,變量i的初始值為0,判斷while后面括號內(nèi)表達(dá)式的值為真,執(zhí)行循環(huán)體內(nèi)的if語句,判斷if后面括號內(nèi)表達(dá)式的值為真,執(zhí)行“continue;”語句.因continue的作用是結(jié)束本次循環(huán),即跳過本次循環(huán)體中余下尚未執(zhí)行的語句,接著再一次進(jìn)行循環(huán)的條件判斷,所以i的值未發(fā)生變化,循環(huán)條件仍然為真,if語句也仍然成立,因此循環(huán)將無止境地進(jìn)行下去。所以,4個選項(xiàng)中D為所選。
54.C解析:在C語言中,除字符數(shù)組外,一個數(shù)組不能通過數(shù)組名對數(shù)姐進(jìn)行整體引用,因此選項(xiàng)A是對的。數(shù)組名中存放的是一個地址常量,它代表整個數(shù)組的首地址,因此選項(xiàng)B是對的。C語言程序在運(yùn)行過程中,系統(tǒng)不自動檢驗(yàn)數(shù)組元素的下標(biāo)是否越界,因此選項(xiàng)C是錯誤的。C語官規(guī)定可以通過賦初值來定義數(shù)組的大小,這時數(shù)組說明符的一對方括號中可以不指定數(shù)組的大小,因此選項(xiàng)D也是正確的。所以,4個選項(xiàng)中選項(xiàng)C符合題意。
55.A解析:轉(zhuǎn)文字符常量'\\xx'可以把'\\'后面的數(shù)字轉(zhuǎn)換為對應(yīng)的ASCII字符。
56.A解析:標(biāo)識符是以字母或下劃線開頭,由字母、數(shù)字或下劃線組成的字符序列(例如,-max含非法字符-),并且用戶標(biāo)識符不能與C語言中的32個關(guān)鍵字同名(例如,int是關(guān)鍵字,不是合法的用戶標(biāo)識符)。選項(xiàng)B中-max不是字母、數(shù)字或下劃線組成的字符序列,故選項(xiàng)B不正確;選項(xiàng)C中3COM不是由字母或下劃線開頭,故選項(xiàng)C不正確;選項(xiàng)D中int為C語言中的關(guān)鍵字,故選項(xiàng)D不正確;選項(xiàng)A中全部為合法的標(biāo)識符,所以,4個選項(xiàng)中選項(xiàng)A符合題意。
57.A解析:取模運(yùn)算只能在整型數(shù)據(jù)之間進(jìn)行,a為整型變量。因?yàn)?、*、/這三個運(yùn)算符的優(yōu)先級別相同,而類型轉(zhuǎn)換符優(yōu)先于*和/運(yùn)算符。a的值為7,7%3=1,所以(int)(2.5+4.7)=7,1*7=7,7%2=1,1/4=0,所以表達(dá)式x+a%3*(int)(x+y)%2/4=x+0=2.5。
58.D解析:該程序的執(zhí)行過程是:首先聲明整型指針變量P和整型變量i,字符型指針變量q和字符型變量ch,將i的地址賦給指針變量p,將ch的地址賦給指針變量q,將40賦給*p,此時,q已經(jīng)指向了一個具體的存儲單元,但ch的值不確定,即*p沒有確定的值,所以不能執(zhí)行*p=*q語句。
59.A解析:本題考查函數(shù)調(diào)用時的參數(shù)傳遞。通過函數(shù)abc的執(zhí)行,將字符串中的字母a去掉,保留剩下的。由于是通過指針調(diào)用,所以改變字符串的結(jié)果。
60.A算法的有窮性,是指算法必須能在有限的時間內(nèi)做完,即算法必須能在執(zhí)行有限個步驟之后終止。
61.B因X為2,所以!X時表達(dá)式值為0,因Y為1,y--表達(dá)式的值為1然后自減1,y為0,所以!x||y--時表達(dá)式的值為1。
62.C2(n-1)
=2(5-1)=16
63.As得到全局變量a的值為4,第一次循環(huán)返回l2,第二次循環(huán)返回l2,累加結(jié)果為28。
64.B
65.C函數(shù)的參數(shù)通常分為兩種:數(shù)值變量和指針變量。數(shù)值變量被函數(shù)調(diào)用后,函數(shù)內(nèi)的參數(shù)為該數(shù)值變量的副本。對副本的一切操作都不會影響到調(diào)用函數(shù)外原來的參數(shù)。指針變量在函數(shù)中傳遞的是對其存放地址的一份副本,該副本存放的地址與原來的指針?biāo)娴牡刂芬恢?。在函?shù)體內(nèi)修改指針存放的地址對應(yīng)的值與在函數(shù)體外對原參數(shù)的修改同樣有效,因?yàn)樵瓍?shù)也指向該地址。
題目中的程序包括主函數(shù)main和fun函數(shù),其中fun函數(shù)為void型,不需要fun函數(shù)返回值。fun函數(shù)的形參為2個整型指針變量和1個整型變量。在main函數(shù)中調(diào)用fun函數(shù),a為指向數(shù)組第一個數(shù)的地址,a+1指向數(shù)組第二個數(shù)的地址,變量c的初始值為0。雖然在fun函數(shù)中也有整型變量c,但是該變量的使用范圍為fun函數(shù),與main中的變量c沒有關(guān)系,有c=*a+*b,即c=15,但是main函數(shù)對fun函數(shù)的參數(shù)傳遞為數(shù)值變量,fun函數(shù)中變量c數(shù)值的改變不會影響main函數(shù)中變量c的數(shù)值改變,即主函數(shù)中變量c的值依然為0。
66.Af函數(shù)功能使第二個指針指向的元素增1,第一個指針指向的元素不變,所以答案選擇A)。
67.B
68.B
69.A本題考查的是函數(shù)調(diào)用時的參數(shù)傳遞以及結(jié)構(gòu)體變量的引用的問題。程序在調(diào)用函數(shù)f時,傳給函數(shù)f的參數(shù)只是結(jié)構(gòu)變量c在棧中的一個拷貝,函數(shù)f的所有操作只是針對這個數(shù)據(jù)拷貝進(jìn)行的修改,這些都不會影響變量c的值。
70.B9用二進(jìn)制表示為1001,右移1位后為0100,即十進(jìn)制4。
71.A函數(shù)指針的定義形式是:數(shù)據(jù)類型標(biāo)識符(*指針變量名)。void(*pf)定義了一個沒有返回值的函數(shù)指針pf,在給函數(shù)指針變量賦值時,只需給出函數(shù)名而不必給出參數(shù)。所以給pf賦值時,只把函數(shù)名fun賦給pf即可。所以正確答案為選項(xiàng)A)。
72.C
73.B先將整型數(shù)據(jù)9強(qiáng)制轉(zhuǎn)換成double型,然后除以2得到的結(jié)果與double型保持一致,即為4.5,然后將4.5強(qiáng)制轉(zhuǎn)換成整型數(shù)據(jù)4,然后計算9%2的值為1,最后計算4一l的值為3,所以選擇B選項(xiàng)。
74.A無符號整型變量a的值為g,二進(jìn)制表示為00001000,右移3位后為00000001,即十進(jìn)制的l,因此輸出1。
75.A樹形結(jié)構(gòu)是一類重要的非線性數(shù)據(jù)結(jié)構(gòu)。樹是n(n≥0)個結(jié)點(diǎn)的集合,對應(yīng)任意一棵非空樹,它具有以下幾點(diǎn)重要的性質(zhì)。
①有且僅有一個特定的稱為根的結(jié)點(diǎn)。
②當(dāng)n>1時,其余結(jié)點(diǎn)可分為m(m>0)個互不相交的有限集T1,T2,…,TM,其中每一個集合本身又是一棵樹,稱為子樹。
因此,本題的正確答案有且只有一個。
76.AC語言中的主函數(shù)只能是main()函數(shù),不能任意指定,所以B選項(xiàng)錯誤。C語言從主函數(shù)main()開始,到主函數(shù)main()結(jié)束,所以C選項(xiàng)錯誤。主函數(shù)必須寫成小寫的main,不能混淆大小寫,所以D選項(xiàng)錯誤。
77.B
78.D
79.B
80.D
81.
82.
【解析】首先指定第一個字符串為長度最小的字符串,然后在循環(huán)過程中將其與其他的所有串的長度進(jìn)行比較,求出最小的串。設(shè)置一個指針變量min,使它的初值為第一個字符串,再使其他的所有串的長度與min的長度進(jìn)行比較,若其他字符串的長度小于min.則將其他字符串的首地址賦值給min。最后使用返回語句,返回最短長度min的字符串的地址。
2022-2023年山西省臨汾市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.允許對隊列進(jìn)行的操作有()。
A.對隊列中的元素排序B.取出最近進(jìn)隊的元素C.在隊頭元素之前插入元素D.刪除隊頭元素
2.有以下程序:#include<stdio.h>voidmain(){char*s=“\ta\018bc”;for(;*s!=‘\0’;s++)printf(“*”);printf(“\n”);}程序運(yùn)行后的輸出結(jié)果是()。
A.******B.*********C.*****D.*******
3.有以下程序:
main
{chara='a',b;
printf("%c,",++a);
printf("%c\n",b=a++):
)
程序運(yùn)行后的輸出結(jié)果是()。A.A.b,bB.b,cC.a,bD.a,c
4.設(shè)有定義“intx,y,z;”,且各變量已經(jīng)賦正整數(shù)值,則以下能正確表示代數(shù)式“”的C語言表達(dá)式是()。
A.1.0/x/y/zB.1/x*y*zC.1/(x*y*z)D.1/x/y/(double)z
5.下列能正確進(jìn)行字符串賦值的是()。
A.chars[5]={"ABCDE"};
B.chars[5]={A,B,C,D,E};
C.char*S;S="ABCDE";
D.char*s;printf("%《",s);
6.將一棵有100個結(jié)點(diǎn)的完全二叉樹從上到下,從左到右依次對結(jié)點(diǎn)進(jìn)行編號,根結(jié)點(diǎn)的編號為1,則編號為49的結(jié)點(diǎn)的左孩子的編號為______。
A.98B.99C.50D.48
7.下面不屬于需求分析階段任務(wù)的是()。
A.確定軟件系統(tǒng)的功能需求B.確定軟件系統(tǒng)的性能需求C.制定軟件集成測試計劃D.需求規(guī)格說明書評審
8.插入和刪除只能在一端進(jìn)行線性表,稱為()。
A.隊列B.循環(huán)隊列C.棧D.循環(huán)棧
9.遞歸式的先序遍歷一個n節(jié)點(diǎn),深度為d的二叉樹,則需要??臻g的大小為()
A.O(logn)B.O(nlogn)C.O(n)D.O(d)
10.算法的空間復(fù)雜度是指()。
A.算法程序的長度B.算法程序中的指令條數(shù)C.算法程序所占的存儲空間D.算法執(zhí)行過程中所需要的存儲空間
11.下列程序的運(yùn)行結(jié)果是()。#include<stdio.h>voidfun(int*S,int*p){staticintt=3:*p=s[t];t--;}voidmain{inta[]={2,3,4,5),k;intx;for(k=0,k<4,k++){fun(a,&x);printf("%d,",x);}}A.5,4,3,2B.2,3,4,5C.2,2,2,2D.5,5,5,5
12.根據(jù)二叉樹的定義可知道二叉樹共有種不同形態(tài)的二叉樹()。
A.3B.4C.5D.7
13.有以下程序:#include<stdio.h>main(){inta=2,b=3,c=4;a*=16+(b++)-(++c);printf(“%d\n”,a);}程序運(yùn)行后的輸出結(jié)果是()。
A.15B.30C.28D.14
14.一個優(yōu)化的程序可以生成n個元素集合的所有子集,那么該程序的時間復(fù)雜度是()
A.O(n!)B.O(nlogn)C.O(n^2)D.O(2^n)
15.C語言提供的合法關(guān)鍵字是()
A.switchB.cherC.caseD.default
16.
17.
18.設(shè)變量已正確定義,則以下能正確計算n!的程序段是______。
A.f=0;for(i=1;i<=n;i++)f*=i;
B.f=1;for(i=1;i<n;i++)f*=i;
C.f=1;for(i=n;i>1;i++)f*=i;
D.f=1;for(i=n;i>=2;i--)f*=i;
19.設(shè)x為int型變量,則執(zhí)行以下語句后,x的值為()。x=10;x=x-=x-x;
A.10B.20C.40D.30
20.已知字母A的ASCII碼為十進(jìn)制的65,下面程序main(){charch1,ch2;ch1='A'+'5'-'3';ch2='A'+'6'-'3';printf("%d,%c\n",ch1,ch2);}的輸出是_________。
A.67,DB.B,CC.C,DD.不確定的值
二、2.填空題(20題)21.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
voidswap(int*a,int*b)
{int*t;
t=a;a=b;b=t;
}
main()
{inti=3,j=5,*p=&i,*q=&j;
swap(p,q);printf("%d%d\n",*p,*q);
}
22.若有以下程序段:
intc1=1,c2=2,c3;
c3=1.0/c2*c1;
則執(zhí)行后,c3中的值是【】。
23.下面程序的輸出是【】。
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)
arr[i]=i;
fov(i=1;i<4;i++)
k+=arr[i]+i;
printf("%d\n",k);}
24.表示條件:10<x<100或x<0的C語言表達(dá)式【】。
25.下列程序段的輸出結(jié)果是【】。
intn='c';
switch(n++)
{default:printf("error");break;
case'a':
case'A':
case'b':
case'B':printf("good");break;
case'c':case'C':printf("pass");
case'd':case'D':printf("warn");
}
26.以下程序的輸出結(jié)果是#include<stdio.h>structstiintx;int*y;}*p;intdt[4]={10,20,30,40};structstaa[4]={50,&dt[0],60,&dt[0],60,&it[0],60,&dt[0],};main(){p=aa;printf("%d\n",++(p->x));}
27.在數(shù)據(jù)的存儲結(jié)構(gòu)中,不僅需要存儲各數(shù)據(jù)元素的信息,還要存放各元素之間______的信息。
28.一個類可以從直接或間接的祖先中繼承所有屬性和方法。采用這個方法提高了軟件的【】。
29.有以下程序:
main()
{intn=0,m=1,x=2;
if(!n)x-=1;
if(m)x-=2;
if(x)x-=3;
printf("%d\n",x);
}
執(zhí)行后輸出的結(jié)果是【】。
30.在數(shù)據(jù)庫系統(tǒng)中,實(shí)現(xiàn)各種數(shù)據(jù)管理功能的核心軟件稱為【】。
31.下面程序的運(yùn)行結(jié)果是【】。
intf(inta[],intn)
{if(n>1)returna[0]+f(&a[1],n-1);
elsereturna[0];
]
main()
{intaa[3]={1,2,3),s;
s=f(&aa[0],3);printf("%d\n",s);
}
32.函數(shù)pi的功能是根據(jù)以下近似公式求π值:
(π*π)/6=1+1/(2*2)+1/(3*3)+…+1(n*n)
現(xiàn)在請你在下面的函數(shù)中填空,完成求π的功能。
#include"math.h"
{doubles=0.0;longi;
for(i=1;i<=n;i++)s=s+【】;
return(sqrt(6*3));
}
33.在軟件生命周期中,【】階段是花費(fèi)最多、持續(xù)時間最長的階段。
34.按數(shù)據(jù)流的類型,結(jié)構(gòu)化設(shè)計方法有兩種設(shè)計策略,它們是變換分析設(shè)計和______。
35.表示""整數(shù)x的絕對值大于5""時值為""真""的C語言表達(dá)式是【】。
36.下列程序的輸出結(jié)果是______。
#include<stdio.h>
main()
{intx=1,y=1,a=1,b=1;
switch(x)
{case1:
switch(y)
{case0:a++;break;
case1:b++;break;
}
case2:
a++;b++;break;
}
printf("a=%d,b=%d\n",a,B);
}
37.若有下列定義:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;,則值為3的表達(dá)式為:______。
38.軟件測試中路徑覆蓋測試是整個測試的基礎(chǔ),它是對軟件【】進(jìn)行測試。
39.以下程序的運(yùn)行結(jié)果是【】。
#include<stdio.h>
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:a++;break;
case1:b++;break;
}
case2:a++;b++;break;
case3:a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
40.函數(shù)mycmp(char*s,char*t)的功能是比較字符串s和t的大小,當(dāng)s等于t時返回0,當(dāng)s>t時返回正值,當(dāng)s<t時返回負(fù)值。請?zhí)羁铡?/p>
mycmp(char*s,char*t)
{while(*s==*t)
{if(*s=='\0')return0;
++s;++t;
}
return(【】);
}
三、1.選擇題(20題)41.下列描述中不正確的是()。
A.字符型數(shù)組中可以存放字符串
B.可以對字符型數(shù)組進(jìn)行整體輸入、輸出
C.可以對整型數(shù)組進(jìn)行整體輸入、輸出
D.不能在賦值語句中通過賦值運(yùn)算符“=”對字符型數(shù)組進(jìn)行整體賦值
42.程序中若有如下說明和定義語句
charfun(char*);
main()
{
char*s="one",a[5]={0},(*f1)()=fun,ch;
……
}
以下選項(xiàng)中對函數(shù)fun的正確調(diào)用語句是
A.(*f1)(A);B.*f1(*s);C.fun(&A);D.ch=*f1(s);
43.將E-R圖轉(zhuǎn)換到關(guān)系模式時,實(shí)體與聯(lián)系都可以表示成________。
A.屬性B.關(guān)系C.鍵D.域
44.以下不是面向?qū)ο笏枷胫械闹饕卣鞯氖?/p>
A.多態(tài)B.繼承C.封裝D.垃圾回收
45.判斷字符型變量chr為小寫字母的表達(dá)式是______。
A.'a'<=chr<='z'
B.(chr>='a')||(chr<='z')
C.(chr>=A)&&(chr<=z)
D.(chr>='a')&&(chr<='z')
46.若指針p已正確定義,要使p指向兩個連續(xù)的整型動態(tài)存儲單元,不正確的語句是______。
A.p=2*(int*)malloc(sizeof(int));
B.p=(int*)mallet(2*sizeof(int));
C.p=(int*)malloc(2*2);
D.p=(int*)calloc(2,sizeof(int));
47.已知inta=1,b=3則a^b的值為
A.3B.1C.2D.4
48.以下程序的輸出結(jié)果是______。main(){inti,a[10];for(i=9;i>=0;i-)a[i]=10-i;printf("%d%d%d",a[a],a[5],a[8]);}
A.258B.741C.852D.369
49.設(shè)char型變量x中的值為10100111,則表達(dá)式(2+x)(-3)的值是
A.10101001B.10101000C.11111101D.1010101
50.若有以下定義和語句structa{intn,m;};structast[3]={{1,20},{2,19},{3,21}};structa*p=st;則以下錯誤的引用是
A.(p++)->n;B.st[0].n;C.(*p).n;D.p=&st.m;
51.下列敘述中正確的是()。
A.一個算法的空間復(fù)雜度大,則其時間復(fù)雜度也必定大
B.一個算法的空間復(fù)雜度大,則其時間復(fù)雜度必定小
C.一個算法的時間復(fù)雜度大,則其空間復(fù)雜度必定小
D.上述三種說法都不對
52.下列描述中,正確的是()
A.線性鏈表是線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)B.棧與隊列是非線性結(jié)構(gòu)C.雙向鏈表是非線性結(jié)構(gòu)D.只有根結(jié)點(diǎn)的二叉樹是線性結(jié)構(gòu)
53.以下程序中,while循環(huán)的循環(huán)次數(shù)是main(){inti=0;while(i<10){if(i<1)continue;if(i==5)break;i++;}}
A.1B.10C.6D.死循環(huán),不能確定次數(shù)
54.以下敘述中錯誤的是()。
A.對于double類型數(shù)組,不可以直接用數(shù)組名對數(shù)組進(jìn)行整體輸入或輸出
B.數(shù)組名代表的是數(shù)組所占存儲區(qū)的首地址,其值不可改變
C.當(dāng)程序執(zhí)行中,數(shù)組元素的下標(biāo)超出所定義的下標(biāo)范圍時,系統(tǒng)將給出“下標(biāo)越界”的出錯信息
D.可以通過賦初值的方式確定數(shù)組元素的個數(shù)
55.設(shè)有聲明語句chara='\72';,則變量a______。
A.包含1個字符B.包含2個字符C.包含3個字符D.聲明不合法
56.以下4組用戶定義標(biāo)識符中,全部合法的一組是()A._mainencludesin
B.If-maxturbo
C.txtREAL3COM
D.intk_2_001
57.設(shè)x=2.5、a=7、y=4.7,算術(shù)表達(dá)式x+a%3*(int)(x+y)%2/4的值為______。
A.2.5B.7C.4.7D.2.75
58.以下程序有錯,錯誤原因是main(){int*p,i;char*q,ch;p=&i;q=&ch;*p=40;*p=*q;……}
A.p和q的類型不一致,不能執(zhí)行*p=*q;語句
B.*p中存放的是地址值,因此不能執(zhí)行*p=40;語句
C.q沒有指向具體的存儲單元,所以*q沒有實(shí)際意義
D.q雖然指向了具體的存儲單元,但該單元中沒有確定的值,所以執(zhí)行*p=*q;沒有意義,可能會影響后面語句的執(zhí)行結(jié)果
59.下列程序的運(yùn)行結(jié)果為()。
#include<stdio.h>
voidabc(char*str)
{inta,b,i,j;
for(i=j(luò)=0;str[i]!='\0';i++)
if(str[i]!='a')
str[j++]=str[j];
str[j]='\0';
}
voidmain()
{charStr[]="abcdef';
abc(str);
printf("str[]=%s",str);
}
A.str[]=bcdefB.str[]=abcdefC.str[]=aD.str[]=ab
60.算法的有窮性是指A.算法程序的運(yùn)行時間是有限的
B.算法程序所處理的數(shù)據(jù)量是有限的
C.算法程序的長度是有限的
D.算法只能被有限的用戶使用
四、選擇題(20題)61.設(shè)“intx=2,y=1;”,則表達(dá)式(!x||Y--)的值是()。
A.0B.1C.2D.-1
62.在深度為5的滿二叉樹中,葉子結(jié)點(diǎn)的個數(shù)為A.32B.31C.16D.15
63.有以下程序程序運(yùn)行后的輸出結(jié)果是()。
A.28B.24C.32D.36
64.
65.有以下程序
#include"stdio.h"
voidfun(int*a,int*b,intc)
{c=*a+*b;}
main()
{inta[2]={6,9},c=0;
fun(a,a+1,&c);
printf("%d\n",c);
}
程序輸出的結(jié)果是
A.6B.9
C.0D.15
66.有以下程序程序運(yùn)行后的輸出結(jié)果是()。
A.1,3B.2,3C.1,4D.1.2
67.
68.
69.有以下程序:
程序的運(yùn)行結(jié)果是()。
A.Qian,f,95,92
B.Qian,m,85,90
C.Zhao,f,95,92
D.Zhao,m,85,90
70.若有以下程序段:
輸出結(jié)果是()。
A.2B.4C.8D.16
71.設(shè)有以下函數(shù):
A.
B.
C.
D.
72.
73.表達(dá)式:(im)((double)9/2)一9%2的值是()。
A.0B.3C.4D.5
74.有以下程序程序運(yùn)行后的輸出結(jié)果是()。
A.1B.16C.32D.0
75.樹是結(jié)點(diǎn)的集合,它的根結(jié)點(diǎn)數(shù)目是()。
A.有且只有1B.1或多于1C.0或1D.至少2
76.以下敘述中正確的是()。
A.c語言規(guī)定必須用main作為主函數(shù)名,程序?qū)拇碎_始執(zhí)行
B.可以在程序中由用戶指定任意一個函數(shù)作為主函數(shù),程序?qū)拇碎_始執(zhí)行
C.c語言程序?qū)脑闯绦蛑械谝粋€函數(shù)開始執(zhí)行、
D.main的各種大小寫拼寫形式都可以作為主函數(shù)名,如MAIN,Main等
77.
78.
79.
80.在以下選項(xiàng)中,能正確調(diào)用對象屬性的語句是()。
A.對象名(屬性名)B.對象名一>屬性名C.對象名屬性名D.對象名.屬性名
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:利用插入排序法對字符串中的字符按從大到小的順序進(jìn)行排序。插入法的基本方法是:先對字符串中的頭兩個元素進(jìn)行排序,然后把第3個字符插入前2個字符中,插人后前3個字符依然有序,再把第4個字符插入前3個字符中,待排序的字符串已在主函數(shù)中賦予。例如,原始字符串為“goodluck”,則排序后的字符串為“uoolkgdc”。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.編寫一個函數(shù),輸入n個字符串,串與串之間以Enter鍵分隔,找出最短字符串中第一個字符串,傳回該串地址(用一個新串“*”作為結(jié)束輸入的標(biāo)志)。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入所編寫的若干語句。試題程序:
參考答案
1.D
2.Amain函數(shù)中定義一個字符指針s,指向字符串“\\ta\\018bc”。for循環(huán)遍歷s指向的字符串中的字符,然后輸出根據(jù)題意可以理解為:s指向的字符串中有多少個字符,就輸出多少個s指向的字符串中字符分別是\\t(轉(zhuǎn)義字符)、a、\\01(轉(zhuǎn)義字符)、8、b、c,總共6個。其中因?yàn)?不屬于八進(jìn)制中的數(shù)字,所以“\\018”不是一個轉(zhuǎn)義字符,而“\\01”是轉(zhuǎn)義字符。故本題答案為A選項(xiàng)。
3.A++a與a++的區(qū)別是前者先自加再運(yùn)算,后者是先運(yùn)算后自加。
4.A代數(shù)式“”的結(jié)果為小數(shù),轉(zhuǎn)為C語言的表達(dá)式必須是浮點(diǎn)數(shù)。A選項(xiàng)由于1.0為浮點(diǎn)數(shù),計算結(jié)果自動轉(zhuǎn)換為浮點(diǎn)數(shù)。選項(xiàng)B、C、D的表達(dá)式均為0,因此只有選項(xiàng)A正確。故本題答案為A選項(xiàng)。
5.C選項(xiàng)A、B的空間不夠;字符串存儲要有結(jié)束符\0,且要占用一個空間,printf用來輸出字符,不能輸入字符串。
6.A
7.C【答案】:C
【知識點(diǎn)】:需求分析階段的任務(wù)
【解析】:需求分析階段的任務(wù)是深入描述軟件的功能和性能,確定軟件設(shè)計的約束和軟件同其他系統(tǒng)元素的接口細(xì)節(jié),定義軟件的其他有效性需求,借助于當(dāng)前系統(tǒng)的邏輯模型導(dǎo)出目標(biāo)系統(tǒng)邏輯模型,解決目標(biāo)系統(tǒng)“做什么”的問題??煞譃樾枨筇岢觥⑿枨竺枋黾靶枨笤u審三個階段。從此可以看出需求分析的任務(wù)不包括制定軟件集成測試計劃,故選C。
8.C
9.D
10.D【解析】算法的空間復(fù)雜度是指執(zhí)行這個算法所需要的內(nèi)存空間。一個算法所占用的存儲空間包括算法程序所占的空間、輸入的初始數(shù)據(jù)所占的存儲空間以及算法執(zhí)行中所需要的額外空間。其中額外空間包括算法程序執(zhí)行過程中的工作單元以及某種數(shù)據(jù)結(jié)構(gòu)所需要的附加存儲空間。如果額外空間量相對于問題規(guī)模來說是常數(shù),則稱該算法是原地工作的。在許多實(shí)際問題中,為了減少算法所占的存儲空間,通常采用壓縮存儲技術(shù),以便盡量減少不必要的額外空間。
11.A依據(jù)fun函數(shù),可知其要實(shí)現(xiàn)的功能是將S中第(t+1)個元素以前的元素逆置賦給數(shù)組P。由于fun中函數(shù)定義了靜態(tài)變量t=3,因此,main函數(shù)中調(diào)用函數(shù)fun(a,&x)時,就是要將數(shù)組a中前4個元素逆置賦給數(shù)x,最后輸出x數(shù)組。
12.B
13.C單目運(yùn)算符“++”的優(yōu)先級高于賦值運(yùn)算符。表達(dá)式“a*=16+(b++)-(++C);”可轉(zhuǎn)化為“a=a*(16+b-(c+1));b=b+1;”,代入值計算可得a=28。故本題答案為C選項(xiàng)。
14.D
15.C
16.C
17.A
18.D解析:A選項(xiàng),將f賦值為0,結(jié)果得到0,因?yàn)?乘任何數(shù)都為0;B選項(xiàng),i<n,計算的是(n-1)!,C選項(xiàng)將陷入死循環(huán)。
19.A執(zhí)行x=x-=x-x語句可寫成x=x-(x-x),可看出結(jié)果為10,故八選項(xiàng)正確。
20.A解析:由于字符“5”和“3”的ASCII碼相差為2,所以ch1經(jīng)過運(yùn)算后的值應(yīng)為65+2=67;同理,ch2經(jīng)過運(yùn)算后的值應(yīng)為65+3=68,即是字符“D”。
21.3535解析:考查swap()函數(shù)。函數(shù)swap(int*a,int*b)的功能是實(shí)現(xiàn)*a和*b中兩個數(shù)據(jù)的交換,在主函數(shù)中調(diào)用swap(p,q)后,參形指針變量a和b分別指向i和j,在swap(int*a,int*b)執(zhí)行完后,指針變量a和b分別指向j和i,而指針變量p,q所指向變量的值沒有發(fā)生變化,所以輸出結(jié)果為35。
22.00解析:在賦值運(yùn)算中。如果表達(dá)式中變量和常量的數(shù)據(jù)類型不一致就會自動進(jìn)行類型轉(zhuǎn)換。系統(tǒng)會計算1.0/c2,由于1.0是實(shí)型,所以均先轉(zhuǎn)化為雙精度型0.500000,再和c1轉(zhuǎn)化后的雙精度數(shù)相乘得0.500000。但其要賦值給整型變量c3,故要進(jìn)行強(qiáng)制轉(zhuǎn)換,c3的值為0。
23.1212解析:本題通過第一個for循環(huán)將數(shù)組arr[0]=arr[9]分別賦值為0-9,通過第二個for循環(huán)的三次循環(huán)累加,求出結(jié)果為12,具體分析如下:
i=1:k=0+arr[1]+1即k=2;
i=2:k=2+arr[2]+2即k=6;
i=3:k=6+arr[3]+3即k=12:
24.(X>10&&x<100)||x<0或(10<x&&x<100)||x<0或x<0||(x>10&&x<100)或0>x||(10<x&&x<100)或(括號有無都可以)(X>10&&x<100)||x<0\r\n\u3000\u3000或(10<x&&x<100)||x<0或x<0||(x>10&&x<100)\r\n\u3000\u3000或0>x||(10<x&&x<100)或(括號有無都可以)
25.passwarnpasswarn解析:n++是在執(zhí)行完其所在的語句后再加1,因此,在執(zhí)行case的時候,n的值依然為'c',執(zhí)行case'c'后面的語句,先打印出“pass”;在執(zhí)行完case'c'后,未遇到break跳出switch,便接著執(zhí)行下面的語句,又打印出warn。所以此題輸出結(jié)果是passwarn。
26.C
27.前后件關(guān)系前后件關(guān)系解析:在數(shù)據(jù)存儲結(jié)構(gòu)中,除了要存儲數(shù)據(jù),還要存儲數(shù)據(jù)的前后件關(guān)系,對于順序存儲的數(shù)據(jù)結(jié)構(gòu),前后件之間的關(guān)系,是通過存儲空間的位置來實(shí)現(xiàn)的,而對于鏈?zhǔn)酱鎯碚f,數(shù)據(jù)元素之間的前后件關(guān)系是通過指針來實(shí)現(xiàn)的。
28.可重用性繼承的優(yōu)點(diǎn):相似的對象可以共享程序代碼和數(shù)據(jù)結(jié)構(gòu),從而大大減少了程序中的冗余,提高軟件的可重用性。
29.-4-4解析:本題中,n=0,可以判斷(!n)為真,執(zhí)行x=x-1=2-1=1;m=1,可以判斷(m)為真,執(zhí)行x=x-2=1-2=-1;進(jìn)而可以判斷(x)為真,執(zhí)行x=x-3=-1-3=-4。所以,最后輸出為-4
30.數(shù)據(jù)庫管理系統(tǒng)或DBMS數(shù)據(jù)庫管理系統(tǒng)或DBMS解析:數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem,DBMS)是一種操縱和管理數(shù)據(jù)庫的大型軟件,是用于建立、使用和維護(hù)數(shù)據(jù)庫,簡稱DBMS。它對數(shù)據(jù)庫進(jìn)行統(tǒng)一的管理和控制,以保證數(shù)據(jù)庫的安全性和完整性。用戶通過DBMS訪問數(shù)據(jù)庫中的數(shù)據(jù),數(shù)據(jù)庫管理員也通過DBMS進(jìn)行數(shù)據(jù)庫的維護(hù)工作。它提供多種功能,可使多個應(yīng)用程序和用戶用不同的方法在同時或不同時刻去建立,修改和詢問數(shù)據(jù)庫。因此,數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)庫管理系統(tǒng)是實(shí)現(xiàn)各種數(shù)據(jù)管理功能的核心軟件。本題的答案是數(shù)據(jù)庫管理系統(tǒng)或DBMS。
31.66解析:經(jīng)過分析將遞歸函數(shù)寫成其數(shù)學(xué)表達(dá)式如下:
f(&a,n)=a[0]+f(&a[1],n-1)n>1
f(&a,n)=a[0]n=1
本題中定義了一個長度為3的數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 場地轉(zhuǎn)租三方協(xié)議
- 土石方爆破合同
- 店面租賃協(xié)議范本
- 防火卷簾門采購合同范本
- 二零二五年度冷鏈件代發(fā)食品安全管理協(xié)議
- 二零二五年度生豬養(yǎng)殖保險服務(wù)合作協(xié)議
- 二零二五年度檔口租賃合同-檔口租賃與城市更新合作
- 二零二五年度特殊行業(yè)解雇員工安置協(xié)議
- 高端醫(yī)療器械模具設(shè)計與制造合同(二零二五年度)
- 2025年度茶葉種植基地租賃與種植管理合同
- 2025年合肥公交集團(tuán)有限公司駕駛員招聘180人預(yù)筆試參考題庫附帶答案詳解
- 2025年蘇州市職業(yè)大學(xué)單招職業(yè)適應(yīng)性測試題庫完美版
- (二模)2025年寶雞市高考模擬檢測試題(二)物理試卷(含答案)
- 營銷管理實(shí)踐總結(jié)報告
- 2025年初級社會工作者綜合能力全國考試題庫(含答案)
- 2024年全國國家版圖知識競賽題庫及答案(中小學(xué)組)
- 宏觀經(jīng)濟(jì)學(xué) 布蘭查德第六版 第6章勞動力市場
- 99S203 消防水泵接合器安裝圖集
- 斯瓦希里語輕松入門
- 拼音田字格(A4 word 打印版)
- GA∕T 743-2016 閃光警告信號燈
評論
0/150
提交評論