




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2021-2022年黑龍江省雞西市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.以下程序段中,與語句“k=a>b?(b>c?1:0):0;”功能相同的是()。
A.if((a>b)||(b>c))k=1;elsek=0;
B.if((a>b)&&(b>c))k=1;elsek=0;
C.if(a<=b)k=0;elseif(b<=c)k=1;
D.if(a>b)k=1;elseif(b>c)k=1;elsek=0;
2.將數(shù)組a[0,1,…,m-1]作為循環(huán)隊列SQ的存儲空間,f為隊頭指示,r為隊尾指示,則執(zhí)行出隊操作的語句為()A.f=f+1B.f=(f+1)%mC.r=(r+1)%mD.f=(f+1)%(m+1)
3.有以下程序:#include<stdio.h>intfun(intx,inty){if(x!=y)return((x+y)/2);elsereturn(x);}main(){inta=4,b=5,c=6;printf(“%d\n”,fun(2*a,fun(b,c)));}程序運行后的輸出結(jié)果是()。
A.3B.6C.8D.12
4.以下敘述中正確的是()。
A.構(gòu)成C程序的基本單位是函數(shù)
B.可以在一個函數(shù)中定義另一個函數(shù)
C.main函數(shù)必須放在其他函數(shù)之前
D.C函數(shù)定義的格式是K&R格式
5.
6.已有定義:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判斷c中的字符是否為大寫字堪的表達式是()。
A.isupper(c)B.A<=c<=ZC.A<=c&&c<=ZD.c<=(z-32)&&(a-32)<=c
7.設(shè)有定義:intx=2.以下表達式中,值不為6的是()。A.2*x,x+=2B.x++.2*xC.x*=(1+x)D.x*=x+1
8.若以下選項中的變量已正確定義,則正確的賦值語句是()。
A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3
9.有如下嵌套的if語句:if(a<b)if(a<c)k=a;elsek=C:elseif(b<c)k=b;elsek=C;以下選項中與上述if語句等價的語句是()。A.k=(a<b)?a:b;k=(b<c)?b:C;
B.k=(a<b)?((b<c)?a:b):((b>c)?b:c);
C.k=(a<b)?((a<c)?a:c):((b<c)?b:c);
D.k=(a<b)?a:b;k=(a<c)?a:c;
10.有以下程序
#include<stdio.h>
voidfun(intx)
{if(x/2>1)fun(x/2);
printf(”%d”,x);
}
main()
{fun(7);printf(”\n”);}
程序運行后的輸出結(jié)果是()。A.137B.731C.73D.37
11.若長度為n的線性表采用順序存儲結(jié)構(gòu),在其第i個位置插入一個新元素的算法的時間復(fù)雜度為()。
A.O(0)B.O(1)C.O(n)D.O(n2)
12.有以下程序main(){chars[]="abcde";s+=2;printf("%d\n",s[0]);}執(zhí)行后的結(jié)果是______。A.輸出字符a的ASCⅡ碼B.輸出字符c的ASCⅡ碼C.輸出字符cD.程序出錯
13.若整型變量a、b、c、d中的值依次為2、2、3、4,則條件表達式a<b?a:c<d?c:d的值是()。A.1B.2C.3D.4
14.有以下程序段:charc1,c2;for(c=‘0’,c2=‘9’;c1<c2;c1++,c2--)printf(“%c%c”,c1,c2);程序段的執(zhí)行結(jié)果是()。
A.0123456789B.0918273645C.0123498765D.9876543210
15.有以下程序:#include<stdio.h>main(){charb[]=“happynewyear”,k;for(k=0;b[k];k++) printf(“%c”,b[k]-‘a(chǎn)’+‘A’);}程序運行后的輸出結(jié)果是()。
A.hAppynewyeArB.HappynewyearC.HAPPYNEWYEARD.HaPPYNEWYEaR
16.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。
A.0,-1,-1,-1
B.0,-1,-1,0
C.0,-1,-1,0,-1,0
D.0,-1,-1,-1,-1,-1
17.采用開放定址法處理散列表的沖突時,其平均查找長度()
A.高于二分查找B.高于鏈接法處理沖突C.低于二分查找D.低于鏈接法處理沖突
18.已知待排序的n個元素可分為n/k個組,每個組包含k個元素,且任一組內(nèi)的各元素均分別大于前一組內(nèi)的所有元素和小于后一組內(nèi)的所有元素,若采用基于比較的排序,其時間下界應(yīng)為()A.O(nlog2n)B.O(nlog2k)C.O(klog2n)D.O(klog2k)
19.以下不合法的用尸標識符是()。A.A.804zhangB._hhC.yy614D.If
20.一個算法應(yīng)當具有5個特性,以下敘述中正確的是()。
A.有窮性、確定性、復(fù)雜性、有零個或多個輸入、有一個或多個輸出
B.有窮性、確定性、可行性、有零個或多個輸入、有一個或多個輸出
C.有窮性、確定性、可行性、必須要有一個以上的輸入、有一個或多個輸出
D.有窮性、確定性、復(fù)雜性、有零個或多個輸入、必須要有多個輸出
二、2.填空題(20題)21.以下程序中函數(shù)huiwen的功能是檢查一個字符串是否是回文,當字符串是回文時,函數(shù)返回字符串:yes!,否則函數(shù)返回字符串:no!,并在主函數(shù)中輸出。所謂回文即正向與反向的拼寫都一樣,例如:adgda。請?zhí)羁铡?/p>
#include<string.h>
char*huiwen(char*str)
{char*p1,*p2;inti,t=0;
p1=str;p2=【】;
for(i=0;i<=strlen(str)/2;i++)
if(*p1++!=*p2--){t=1;bteak;}
if(【】)return("yes!");
elsereturn("no!");
}
main()
{charsb[50];
printf("Input:");scanf("%s",str);
ptintf("%s\n",【】);
}
22.【】是數(shù)據(jù)庫設(shè)計的核心。
23.以下程序的運行結(jié)果是【】。
#include<string.h>
char*ss(char*s)
{returns+strlen(s)/2;}
main()
{char*p,*str="abcdefgh";
p=ss(str);printf("%s\n",p);
}
24.為了建立如圖所示的存儲結(jié)構(gòu)(即每個結(jié)點含兩個域,data是數(shù)據(jù)域,next是指向結(jié)點的指針域)。請?zhí)羁铡?/p>
structlink{chardata;【】;}node;
25.以下程序運行后的輸出結(jié)果是______。
main()
{inta=3,b=4,c=5,t=99;
i[(b<a&&a<C)t=a;a=c;c=t;
if(a<c&&b<C)t=b;b=a;a=t;
printf("%d%d%d\n",a,b,c);
}
26.下列程序的輸出結(jié)果是______。
#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");
}
27.下述程序的輸出結(jié)果是【】。
#include<stdio.h>
intfun(intx)
{intp;
if(x==0||x==1)
return3;
else
p=x-fun(x-2);
returnp;}
voidmain()
{printf("\n%d",fun(9));}
28.一棵二叉樹中共有80個葉子結(jié)點與10個度為1的結(jié)點,則該二叉樹中的總結(jié)點數(shù)為【】。
29.順序存儲方法是把邏輯上相鄰的結(jié)點存儲在物理位置______的存儲單元中。
30.若有以下定義語句,則不移動指針p,并且通過指針p引用值為98的數(shù)組元素的表達式是【】。
intw[10]={23,54,10,33,47,98,72,80,61},*p=w;
31.若x為int類型,請寫出與!x等價的C語言表達式______。
32.閱讀下面語句,則程序的執(zhí)行結(jié)果是【】。
#include"stdio.h"
main()
{inta=-1,b=1,k;
if((++a<0)&&!(b--<=0))
printf("%d,%d\n",a,b);
elseprintf("%d,%d\n",b,a);}
33.已定義charch='$';inti=1,j;,執(zhí)行j!=ch&&i++以后,i的值為______。
34.數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的【】以及對數(shù)據(jù)的操作運算。
35.符合結(jié)構(gòu)化原則的三種基本控制結(jié)構(gòu)是順序結(jié)構(gòu)、()和循環(huán)結(jié)構(gòu)。
36.數(shù)據(jù)流的類型有______和事務(wù)型。
37.程序測試分為靜態(tài)分析和動態(tài)測試。其中【】是指不執(zhí)行程序,而只是對程序文本進行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯誤。
38.在進行軟件結(jié)構(gòu)設(shè)計時,應(yīng)遵循的最主要原理是【】。
39.以下程序輸出的最后一個值是【】
intff(intn)
{staticintf=1;
f=f*n;
returnf;
}
main()
{inti;
for(i=1;i<=5;i++)printf("%d\n",ff(i));
}
40.軟件測試中路徑覆蓋測試是整個測試的基礎(chǔ),它是對軟件【】進行測試。
三、1.選擇題(20題)41.在C程序中,判邏輯值時,用“非0”表示邏輯值“真”,又用“0”表示邏輯值“假”。在求邏輯值時,邏輯真和邏輯假可分別表示為
A.10B.01C.非0非0D.11
42.下列有關(guān)數(shù)據(jù)庫的描述,正確的是______。
A.數(shù)據(jù)庫是一個DBF文件B.數(shù)據(jù)庫是一個關(guān)系C.數(shù)據(jù)庫是一個結(jié)構(gòu)化的數(shù)據(jù)集合D.數(shù)據(jù)庫是一組文件
43.有以下程序
main()
{inti;
for(i=1;i<=40;i++)
{if(i++%5==0)
if(++i%8==0)printf("%d",i);
}
printf("\n");
}
執(zhí)行后的輸出結(jié)果是
A.5B.24C.32D.40
44.有以下程序:#include<stdio.h>voidfun(int*s,intnl,intn2){inti,j,t;i=nl;j=n2;while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j--;}}main(){inta[10]={1,2,3,4,5,6,7,8,9,0},k;fun(a,0,3);fun(a,4,9);fun(a,0,9);for(k=0;k<10;k++)printf("%d",a[k]);printf("\n");}程序運行的結(jié)果是()。
A.9.87654e+008B.4.3211e+009C.5.6789e+009D.9.87651e+008
45.以下程序運行后,輸出結(jié)果是______。fut(int**s,intp[2][3]){**s=p[1][1];}main(){inta[2][3]={1,3,5,7,9,11},*p;p=(int*)malloc(sizeof(int));fur(&p,a);printf("%d\n",*p);}
A.1B.7C.9D.11
46.下列模式中,能夠給出數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法的是A.內(nèi)模式B.外模式C.概念模式D.邏輯模式
47.main(){floatx=123.456;printf("%-5.2f\n",x);}以上程序輸出的結(jié)果是______。
A.123.4B.123.5C.123.45D.123.46
48.下列程序的輸出結(jié)果是______。unionun{inta[3];longb;charc[6];}un1,*p;main(){p=&un1;p->a[0]=0x37;p->a[1]=0x38;p->a[2]=0x39;printf("%c\n",p->c[4]);}
A.39B.9C.38D.8
49.有以下程序:#include<string.h>main(){charp[]={'a','b','c'},q[10]={'a','b','c'};printf("%d%d\n",strlen(p),strlen(q));}以下敘述中正確的是()。
A.在給p和q數(shù)組置初值時,系統(tǒng)會自動添加字符串結(jié)束符,故輸出的長度都為3
B.由于p數(shù)組中沒有字符串結(jié)束符,長度不能確定;但q數(shù)組中字符串長度為3
C.由于q數(shù)組中沒有字符串結(jié)束符,長度不能確定;但p數(shù)組中字符串長度為3
D.由于p和q數(shù)組中都沒有字符串結(jié)束符,故長度都不能確定
50.按照“先進后出”原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是()。
A.隊列B.棧C.雙向鏈表D.二叉樹
51.下面函數(shù)的功能是______。exchange(int*ptr1,*ptr2){int*ptr;ptr=-ptr1;ptr1=ptr2;ptr2=ptr;}
A.交換*ptr1和*ptr2的值
B.無法改變*ptr1和*ptr2的值
C.可能造成系統(tǒng)故障,因為使用了空指針
D.交換*ptr1和*pb2的地址
52.在一個具有n個結(jié)點的有序單鏈表中插入一個新結(jié)點并仍然有序的時間復(fù)雜性為______。
A.O(1)B.O(n)C.O(n2)D.O(log2n)
53.下列實體的聯(lián)系中,屬于多對多聯(lián)系的是()
A.學(xué)生與課程B.學(xué)校與校長C.住院的病人與病床D.工資級別與職工
54.設(shè)只是一個二元關(guān)系,S是一個三元關(guān)系,則下列運算中正確的是()。
A.R-SB.RX×SC.R∩SD.R∪S
55.以下程序執(zhí)行后,sum的值是______。main(){inti,sum;for(i=1;i<6;i++)sum+=i;printf("%d\n",sum);}
A.15B.14C.不確定D.0
56.以下程序的輸出結(jié)果是______。main(){charstr[12]={'s','t','r','i','n','g'};printf("%d/n",strlen(str));}
A.6B.7C.11D.12
57.有以下程序:main(){inti,t[][3]={9,8,7,6,5,4,3,2,1};for(i=0;i<3;i++)printf("%",t[2-i][i]);}程序執(zhí)行后的輸出結(jié)果是()。
A.753B.357C.369D.751
58.下列敘述中正確的是()。
A.在賦值表達式中,賦值號的左邊既可以是變量,也可以是任意表達式
B.實型變量中允許存放整型數(shù)
C.若a和b類型相同,在執(zhí)行了賦值a=b后,b中的值將放入a中,但b中的值不變
D.在C程序中,求余運算符“%”兩邊的類型相同時才能進行運算
59.以下描述中,不是線性表順序存儲結(jié)構(gòu)特征的是()。
A.可隨機訪問B.需要連續(xù)的存儲空間C.不便于插入和刪除D.邏輯相鄰的數(shù)據(jù)物理位置上不相鄰
60.有以下程序:intf1(doubleA){returna*a;}intf2(intx,inty){doublea,b;a=f1(x);b=f1(y);returna+b;}main(){doublew;w=f2(2.1,4.0);}程序執(zhí)行后,變量w的值是()。
A.20.21B.20C.20.0D.0.0
四、選擇題(20題)61.執(zhí)行下面的程序后,a的值為()。main{inta,b;for(a=1,b=1;a<=10;a++){if(b%3==l){b+=3;continue;}b-=5;}}A.7B.8C.9D.10
62.
以下程序的輸出結(jié)果是()。
main
{charw[][10]={"ABCD","EFGH","IJKL","
MNOP"),K;
for(k=1;k<3;k++)printf("%s\n",w[k]);
A.ABCDFGHKLB.ABCDEFGUC.EFGJKOD.EFGHUKL
63.有以下程序:#include<stdio.h>main(){inta[5]={1,2,3,4,5),b[5]={0,2,1,3,o},i,s=0;for(i=o;i<5;i++)s=s+a[b[i]];printf(”%d\n”,s);}程序運行后的輸出結(jié)果是()。A.6B.10C.11D.15
64.
下列程序的執(zhí)行結(jié)果是()。
#include<stdioh>
main
{inta,b,c;
a=b=2,c=I;
c=(a++)-1;printf("%d,0Ad",a,c);
c+=-a+++(++b);printf("%d,%d",a,c);
)
A.3,14,1B.3,14,2C.2,04,1D.2,14,1
65.若有定義語句:
66.下列關(guān)于算法復(fù)雜度描述正確的是()。
A.算法的時間復(fù)雜度是指算法執(zhí)行的時間
B.算法的空間復(fù)雜度是指執(zhí)行這個算法所需的內(nèi)存空間
C.一個算法的空間復(fù)雜度大,則其時間復(fù)雜度必定大
D.一個算法的空間復(fù)雜度大,則其時間復(fù)雜度必定小
67.(59)SQL語言又稱為()
A.結(jié)構(gòu)化定義語言
B.結(jié)構(gòu)化控制語言
C.結(jié)構(gòu)化查詢語言
D.結(jié)構(gòu)化操縱語言
68.
69.
有以下程序
#include<stdio.h>
intfun(chars[])
{intn=0;
while(*s<=9&&*s>=0){n=10*n+*s-o;s++;)
return(n);
}
main
{chars[10]={6,1,*,4,*,9,*,0,*);
printf("%d",fun(s));
}
程序運行的結(jié)果是()。
A.9B.61490C.61D.5
70.以下選項中與“if(a==l)a=b;elsea++;”語句功能不同的switch語句是()。
A.switch(a){casel:a=b;break;default:a++;}
B.switch(a==l){case0:a=b;break;casel:a++;}
C.switch(a){default:a++;break;casel:a=b;}
D.switch(a==l){casel:a=b;break;case0:a++;}
71.以下敘述中錯誤的是()。。
A.C程序必須由一個或一個以上的函數(shù)組成
B.函數(shù)調(diào)用可以作為一個獨立的語句存在
C.NN數(shù)NNN值,必須通過return語句返回
D.函數(shù)形參的值也可以傳回給對應(yīng)的實參
72.以下程序的主函數(shù)中調(diào)用了在其面前定義的fun函數(shù)#include<stdio.h>...main(){doublea[15],k;k=fun(a);...}則以下選項中錯誤的fun函數(shù)首部是()。、A.doublefun(doublea[l5])
B.doublefun(double*a)
C.doublefun(doublea[])
D.doublefun(doublea)
73.有以下程序:
voidmain()
{intk=0,n=0;
while(k<5)
{switch(k)
{default:break;
case1:n+=k;
case2:
case3:n+=k;
}
k++;
}
printf("%d\n",n);
}
程序運行后的輸出結(jié)果是()。
A)0B)4
C)6D)7
74.有以下函數(shù)定義:
voidfun(intn,doublex){……}
若以下選項中的變量都已正確定義并賦值,則對函數(shù)fun正確調(diào)用的語句是
A.fun(inty,doublem);B.k=fun(10,12.5);
C.fun(x,n);D.voidfun(n,x);
75.要求以下程序的功能是計算:s=1+1/2+1/3+…+1/100。
程序運行后輸出結(jié)果錯誤,導(dǎo)致錯誤結(jié)果的程序行是()。
A.s=1.0;
B.
C.S=S+1/n;
D.
76.
已知有如下結(jié)構(gòu)體:
structsk
{inta;
floatb;
}data,*p;
若有P=&data,則對data的成員a引用正確的是()。
A.(*p).data.a(chǎn)B.(*p).a(chǎn);C.p->data.a(chǎn)D.p.data.a(chǎn)
77.有以下程序程序運行后的輸出結(jié)果是()。
A.Zha0,m,85,90,Qian,f,95,92
B.Zha0,m,85,90,Zha0,m,85,90
C.Qian.f,95,92,Qian,f,95,92
D.Qian,f,95,92,Zha0,m,85,90
78.以下定義數(shù)組的語句中錯誤的是()。
79.
80.下列關(guān)于棧的描述中錯誤的是()。
A.棧是先進先出的線性表B.棧只能順序存儲C.棧具有記憶作用D.對棧的插入刪除操作中,不需要改變棧底指針
五、程序改錯題(1題)81.下列給定程序中函數(shù)fun()的功能是:把從主函數(shù)中輸人的3個數(shù)。最大的數(shù)放在a中,中間的數(shù)放在b中,最小的數(shù)放在C中。例如,若輸入的數(shù)為:55,12,34,輸出的結(jié)果應(yīng)當是:a=55.0,b=34.0,c=12.0。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:
六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),其功能是將放在字符串數(shù)組中的M個字符串(每個字符串的長度不超過N),按順序合并成一個新的字符串。例如,若字符串數(shù)組中的M個字符串為|“AAAA”,“BBBBBBB”,“CC”|,則合并后的字符串內(nèi)容應(yīng)該是“AAAABBBBBBBCC”。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#include<conio.h>#defineM3#defineN20voidfun(chara[M][N],char*b){}voidmain(){ charw[M][N]={“AAAA”,“BBBBBBB”,“CC”}; chara[100]={“##################”}; inti; printf(“Thestring:\n”); for(i=0;i<=""p=""> puts(w[i]); printf(“\n”); fun(w,a); printf(“TheAstring:\n”); printf(“%s”,a); printf(“\n\n”);}
參考答案
1.B條件表達式的含義是:如果表達式1成立,結(jié)果為表達式2的值,如果不成立,則為表達式3的值。在題干中,如果“a>b”且“b>c”,則k值為1;如果“a>b”且“b<c”,則k值為0;如果“a<b”,則k值為0。條件“a>b”與“b>c”中只要有一個條件不成立,k的值就為0。故本題答案為B選項。
2.B
3.Bfun函數(shù)的功能是獲取2個數(shù)的平均值,注意平均值是整型數(shù),小數(shù)會被截斷。調(diào)用函數(shù)“fun(2*4,fun(5,6))”相當于調(diào)用函數(shù)“fun(8,5)”,平均值是6。故本題答案為B選項。
4.A解析:本題考查C語言的綜合基礎(chǔ)知識。構(gòu)成C程序的基本單位是函數(shù),一個C程序總是從main函數(shù)開始執(zhí)行,而不論main函數(shù)在整個程序中的位置如何。C語言的函數(shù)定義都是互相平行、獨立的,在定義函數(shù)時,一個函數(shù)內(nèi)不能定義另一個函數(shù)。C函數(shù)定義的一般格式有兩種:傳統(tǒng)格式和現(xiàn)代格式。傳統(tǒng)格式也稱K&R格式,是早期編譯系統(tǒng)使用的格式;現(xiàn)代格式又稱ANSI格式,是現(xiàn)代編譯系統(tǒng)使用的格式。
5.D
6.B選項B先計算關(guān)系表達式“A<=c”的值是0還是l,再比較該值與字符z之間的大小關(guān)系,不能實現(xiàn)題目所要求的功能。
7.A[解析]A)選項中逗號表達式先計算第一表達式2*x,然后計算表達式x+=2的值,即x=x+2即4.整個逗號表達式為第二個表達式的值4.所以選A)。B)選項中首先計算逗號表達式中第一個表達式x++,此時x為3.再執(zhí)行第二個表達式2*x=2*3=6.所以逗號表達式為第二個表達式的值6.C)選項的賦值表達式可以表示為x==x*(1+x)=2*(1+2)=6.D)選項中的表達式可以表示為x=x*(x+1)=2*3=6.
8.C解析:賦值的一般形式為:變量名:表達式;,賦值的方向為由右向左,即將:右側(cè)表達式的值賦給:左側(cè)的變量,執(zhí)行步驟是先計算再賦值。選項A中運算符%的運算對象必須為整數(shù),而選項A中26.8不為整數(shù),故選項A不正確;選項B將一個變量賦值給一個常量,這在C語言中是不允許的,故選項B不正確;選項D中也是將一個常量3賦值給一個常量,故選項D不正確;所以,4個選項中選項C符合題意。
9.C條件運算符(?:)是C語言中唯一的一個三目運算符,它是對第一個表達式做真/假檢測,然后根據(jù)結(jié)果返回兩個表達式中的一個作為運算的結(jié)果。<表達式1>?<表達式2>:<表達式3>。在運算中,首先對第一個表達式進行檢驗,如果為真,則返回表達式2的值;如果為假,則返回表達式3的值。
10.D解析:本程序主要考查遞歸函數(shù)。fun(7),首先將參數(shù)代入函數(shù),因為(7/2)>1,所以執(zhí)行f(3),以此類推直到f(1.5),(1.5/2)<1,所以執(zhí)行打印函數(shù),此時x值為3,然后退出f(1.5)返回f(3),打印x值即7。所以選D。
11.C
12.D解析:此題中s是—個字符數(shù)組,而字符數(shù)紐是在編繹時為它分配內(nèi)存單元的,即此字符數(shù)組的地址在編譯時是確定的,所以對此地址變量并不能賦值,故語句“s+=2;”錯誤,故程序出錯。
13.C本題考查三目運算符a<b?a:c<d?c:d也可寫成a<b?a:(c<d?c:d),所以根據(jù)優(yōu)先級,先算括號內(nèi)的,c小于d為真取C的值,再看a小于b為假,所以取C的值。
14.B程序定義兩個字符變量c1和c2。for循環(huán)中,首先為c1賦值‘0’,為c2賦值‘9’,接著判斷c1和C2的大小。由于字符變量可以作為整型數(shù)處理,數(shù)字字符的ASCII值按字面數(shù)值的大小順序連續(xù)遞增,因此c1小于c2成立,執(zhí)行循環(huán)體輸出“09”,再將c1自增1,c2自減1后,執(zhí)行下一輪循環(huán),直到c1=‘5’,c2=‘4’時,c1<c2不成立,循環(huán)終止。最終程序段輸出:0918273645。故本題答案為B選項。
15.C程序定義一個字符數(shù)組b,并使用字符串“happynewyeai”進行初始化。然后通過for循環(huán),遍歷字符數(shù)組b中的每個字符,再將b中的字符元素修改為大寫字母。程序輸出:HAPPYNEWYEAR。故本題答案為C選項。
16.A程序定義整型變量a和b,初值分別是1,-2。for語句中循環(huán)條件式為“a--&&b++”,因為--和++的優(yōu)先級高于邏輯與運算符&&,所以循環(huán)條件式等價于“(a--)&&(b++)”,自左向右運算。第1輪循環(huán),a、b的值為1,-2,首先執(zhí)行a--,a--的值為1,執(zhí)行完后a的值為0;繼續(xù)執(zhí)行b++,b++的值為-2,執(zhí)行完后b的值為-1。整個表達式“a--&&b++”的值為真,程序輸出0,-1。第2輪循環(huán),a、b的值分別為0,-1,首先執(zhí)行a--,a--的值為0,執(zhí)行完后a的值為-1,由于a--的值為0,根據(jù)邏輯與運算的短路原則,表達式“a--&&b++”的值一定為假,表達式b++不再執(zhí)行,循環(huán)結(jié)束,執(zhí)行循環(huán)體外的printf語句,輸出a、b的值分別為:-1,-1。所以本題輸出結(jié)果為:0,-1,-1,-1。本題答案為A選項。
17.B
18.B
19.AC語言規(guī)定,標識符是由字母、數(shù)字或下劃線組成,并且它的第一個字符必須是字母或下劃線。
20.B算法是指為解決某個特定問題而采取的確定且有限的步驟,一個算法應(yīng)當具有5個特征:有窮性、確定性、可行性、有雩個或多個輸入、有一個或多個輸出。本題答案為B選項。
21.str+strlen(p1)-1或str+strlen(str)-1或str-1+strlen(str)或str-1+strlen(p1)t==0或!t或t=='\0'huiwen(str)str+strlen(p1)-1或str+strlen(str)-1或str-1+strlen(str)或str-1+strlen(p1)\r\nt==0或!t或t=='\\0'\r\nhuiwen(str)解析:函數(shù)huiwen中開始定義了兩個字符指針p1和p2,并讓p1指向sb的開始位置,所以p2應(yīng)該指向str的尾部,即&str[strlen(str)-1]或?qū)懗蓅tr+strlen(str)-1或者其他等價形式。然后使用一個循環(huán),循環(huán)str的長度的一半次數(shù),比較p1和p2的內(nèi)容,并分別遞增和遞減這兩個指針。若有不同,則讓標志t為1,并跳出循環(huán)。所以最后一個if語句應(yīng)該為判斷標志t是否為1,即應(yīng)該填t==0或者其它等價形式。在主函數(shù)中,應(yīng)該輸出huiwen()函數(shù)的返回結(jié)果,即最后一空應(yīng)該填huiwen(str)。
22.數(shù)據(jù)模型數(shù)據(jù)模型
23.efghefgh解析:函數(shù)ss返回形參s所指向的符號串的后半部分,故p='efgh'。
24.structlink*next
25.45994599解析:本題是一個陷阱題,以書寫格式來考查考生對if語句的理解.if語句只對緊跟其后的一條語句或語句塊產(chǎn)生作用。因此,題目中兩條if語句只有t=a;和t=b是if的子句。第1條if語句中b<a為假,所以跳過語句t=a;,執(zhí)行a=c;c=t;后,a=5、b=4、c=99。第2條if語句的判斷條件a<c&&b<c為真,所以后面三條語句都被執(zhí)行,這三條語句構(gòu)成一次a和b的內(nèi)容交換。所以最后輸出的結(jié)果是:4599。
26.86518651解析:主程序中,第一次循環(huán)時,i=0,調(diào)用sb(s,x)子函數(shù),此時n=3,x=s[n]=s[3]=8,然后將n減1變?yōu)?;第二次循環(huán)時,i=1,調(diào)用sb(s,x)子函數(shù),因為將n定義為了靜態(tài)變量,所以此時n=2,返回x=s[n]=s[2]=6;第三次循環(huán)時,i=2,調(diào)用sb(s,x)子函數(shù),此時n=1,返回x=s[n]=s[1]=5;第四次循環(huán)時,i=3,調(diào)用sb(s,x)子函數(shù),此時n=0,返回x=s[n]=s[0]=1。此程序?qū)嶋H上是將數(shù)組s逆序輸出。
27.77解析:本題考查的是函數(shù)的遞歸調(diào)用。x=0或x=1是遞歸的終止條件,然后用回代的方法從一個已知值推出下一個值,直到計算出最終結(jié)果。
28.179179解析:在任意一棵二叉樹中,度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。本題中的二叉樹有80個葉子結(jié)點,因此,該二叉樹有80-1=79個度為2的結(jié)點;又知本題中的二叉樹有10個度為1的結(jié)點。因此,本題中的二叉樹總結(jié)點數(shù)為:葉子結(jié)點數(shù)+度為1的結(jié)點數(shù)+度為2的結(jié)點數(shù)=80+10+79=179
29.相鄰相鄰
30.*(p+5)
31.x==0x==0解析:!x的邏輯意思就是x為非,即x==0。
32.101,0解析:與運算兩邊的語句必須同時為真時,結(jié)果才為真,當執(zhí)行完if((++a<0)&&!(b--<=0))時,a,b的值已經(jīng)發(fā)生了變化。
33.11解析:在執(zhí)行邏輯表達式“j=!ch&&i++”時,首先判斷j=!ch的值,因為“ch='$'”不為0,所以“j=!ch=0”,編譯系統(tǒng)便不再計算表達式“i++”的值,i的值不變,仍為1。
34.存儲結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)包括3個方面,即數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存儲結(jié)構(gòu)及對數(shù)據(jù)的操作運算。
35.選擇結(jié)構(gòu)選擇結(jié)構(gòu)解析:程序設(shè)計語言僅僅使用順序、選擇和重復(fù)(循環(huán))三種基本控制結(jié)構(gòu)就足以表達出各種其他形式結(jié)構(gòu)的程序設(shè)計方法。遵循程序結(jié)構(gòu)化的設(shè)計原則,按結(jié)構(gòu)化程序設(shè)計方法設(shè)計出的程序易于理解、使用和維護;可以提高編程工作的效率,降低軟件的開發(fā)成本。
36.變換型變換型
37.靜態(tài)分析靜態(tài)分析解析:程序測試分為靜態(tài)分析和動態(tài)測試。其中,靜態(tài)分析是指不執(zhí)行程序,而只是對程序文本進行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯誤。
38.模塊獨立原理模塊獨立原理
39.120120解析:靜態(tài)變量的類型說明符是static,靜態(tài)局部變量屬于靜態(tài)存儲方式,它具有以下特點:
①靜態(tài)局部變量屬于靜態(tài)存儲類別,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元。在程序整個運行期間都不釋放。
②對靜態(tài)局部變量是在編譯時賦初值的,即只賦初值—次,在程序運行時它已有初值。以后每次調(diào)用函數(shù)時不再重新賦初值而只是保留上次函數(shù)調(diào)用結(jié)束時的值。
③如在定義局部變量時不賦初值的話,則對靜態(tài)局部變量來說,編譯時自動賦初值0(對數(shù)值型變量)或空字符(對字符變量)。(注意:C語言中的非靜態(tài)變量在定義時,系統(tǒng)并不會自動給它賦初值)
④雖然靜態(tài)局部變量在函數(shù)調(diào)用結(jié)束后仍然存在,但其他函數(shù)是不能引用它的。
本題中函數(shù)的功能是:與for語句一起求一個整數(shù)的階乘。
40.結(jié)構(gòu)結(jié)構(gòu)解析:路徑測試是白盒測試方法中的—種,它要求對程序中的每條路徑最少檢查一次,目的是對軟件的結(jié)構(gòu)進行測試。
41.A解析:在C程序中,判斷邏輯值時,用非0表示真,用0表示假。邏輯表達式計算時,邏輯表達式值為真是用1表示的,若邏輯表達式的值為假,則用0表示。
42.C解析:數(shù)據(jù)庫(Database,簡稱DB)是數(shù)據(jù)的集合,它具有統(tǒng)一的結(jié)構(gòu)形式并存放于統(tǒng)一的存儲介質(zhì)內(nèi),是多種應(yīng)用數(shù)據(jù)的集成,并可被各個應(yīng)用程序所共享。數(shù)據(jù)庫中的數(shù)據(jù)具有“集成”、“共事”之特點。
43.C解析:當for循環(huán)執(zhí)行到第30次時,i的值為30能被5整除,然后繼續(xù)執(zhí)行兩次if語句,i經(jīng)過兩次自加1運算,值變?yōu)?2,能被8整除,故此時第一次執(zhí)行'printf('%d',i);'語句,即輸出32。
44.C解析:函數(shù)fun的功能是:將數(shù)組s中從n1至n2的元素首尾互換,然后將第2個和倒數(shù)第2個元素互換,依次類推,其實也就是將原來的元素倒置。執(zhí)行fun(a,0,3);將數(shù)組a中的第0~3個元素互換,結(jié)果為4321;執(zhí)行fun(a,4,9);將數(shù)組a中的第4~9個元素互換,結(jié)果為098765。此時a中的元素依次為4321098765,執(zhí)行fun(a,0,9);再次將這10個元素倒置,結(jié)果為5678901234。
45.C
46.A數(shù)據(jù)庫管理系統(tǒng)的三級模式結(jié)構(gòu)由外模式、模式和內(nèi)模式組成。
外模式,或子模式,或用戶模式,是指數(shù)據(jù)庫用戶所看到的數(shù)據(jù)結(jié)構(gòu),是用戶看到的數(shù)據(jù)視圖。模式,或邏輯模式,是數(shù)據(jù)庫中對全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特性的描述,是所有用戶所見到的數(shù)據(jù)視圖的總和。外模式是模式的一一部分。內(nèi)模式,或存儲模式,或物理模式,是指數(shù)據(jù)在數(shù)據(jù)庫系統(tǒng)內(nèi)的存儲介質(zhì)上的表示,即對數(shù)據(jù)的物理結(jié)構(gòu)和存取方式的描述。
47.D解析:f格式符,用來輸出實數(shù),以小數(shù)形式式輸出?!?-m.nf”的含義是:輸出數(shù)據(jù)共占m列,其中n位小數(shù),如果輸出位數(shù)小于m,則右端補空恪。如果總長度大于列數(shù),則按實際情況四舍五入輸出。
48.B解析:共用體中的成員共同占用一段內(nèi)存單元,其中整型數(shù)組a中的數(shù)據(jù)存儲形式以及和字符數(shù)組的對應(yīng)關(guān)系如圖所示。
49.A解析:在給p和q數(shù)組賦初值時,系統(tǒng)會自動添加字符串結(jié)束符,從題目中可以看出數(shù)組p和q都有3個字符,所以長度均為3。
50.BB.【解析】棧是一種特殊的線性表,其插入和刪除運算都只在線性表的一端進行,而另一端是封閉的。進行插入、刪除的一端稱為棧頂,封閉的一端稱為棧底。棧頂元索是最后被插入的元素,也是最后被刪除的元素。棧是按先進后出的原則組織數(shù)據(jù)的。
【知識拓展】“?!钡男问饺缡謽尩膹椣?,最后壓入的子彈總是最先被彈出,而最先壓人的子彈最后才被彈出,也就是“先進后出”。
51.B解析:函數(shù)中將指針變量ptr1和ptr2中的值交換,而不是交換指針ptr1和ptr2所指變量中的值。
52.B
53.AA本題考查關(guān)系數(shù)據(jù)庫中實體之間的聯(lián)系。實體之間的聯(lián)系有3種:一對一關(guān)系、一對多關(guān)系和多對多關(guān)系。一個學(xué)生可以選擇多門課程,一門課程可被多個學(xué)生選擇,所以學(xué)生與課程之間是多對多的聯(lián)系
54.B解析:關(guān)系的交(∩)、并(∪)和差(-)運算要求兩個關(guān)系是同元的,顯然作為二元的R和三元S只能做笛卡爾積運算。
55.C解析:變量sum在使用時未賦初值,所以無法確定sum最終的值。
56.A解析:在C語言中,字符串的長度是其首字符到NULL(不含)字符的總字符個數(shù)。本題定義字符數(shù)組str的同時,對第7個元素,由系統(tǒng)自動添加上“\\0”,故字符串的長度為6。
57.B解析:定義二維數(shù)組時第一維的長度可以不指定,該程序中t[][3]通過賦初值等價于t[3][3],并且其數(shù)組按行進行賦值,故通過for循環(huán)輸出的分別是t[2][0]、t[1][1]和t[0][2]。
58.B解析:選項A),在賦值表達式中,賦值號的左邊只能是變量或者是代表某個存儲單元的表達式,不能是任意表達式。
在判斷選項B)時首先應(yīng)該建立這桿的概念,整型變量中只能存放整型數(shù),實型變量中能存放實型數(shù),也能存放整型數(shù)。
選項C),執(zhí)行表達式a=b后,將把變量b存儲單元中的值賦給變量a,從而覆蓋a中原有的值,但b中原有的值并不改變。
選項D),在C程序中,求余運算符“%”兩邊的類型均為整型數(shù)據(jù)。
59.DD)【解析】線性表的順序存儲是用一片連續(xù)的空間來存放數(shù)據(jù)元素,其特點是邏輯上相鄰的元素在物理位置上也相鄰。數(shù)據(jù)元素之間邏輯上的先后關(guān)系自動隱含在物理位置的相鄰元素之中,因此不需要另外開辟空間來保存元素之間的關(guān)系。
60.C
61.D本題考查continue的用法,continue語句的作用是結(jié)束本次循環(huán),直接進行下次循環(huán)。所以在程序中,只有當a=10時,才退出循環(huán),故選擇D選項。
62.D
\n當k=1時,循環(huán)成立,輸出w[l]的數(shù)組即EFGH,接著執(zhí)行k++后k為2;當k=2時,循環(huán)成立,輸出w[2]的數(shù)組即IJKL,接著執(zhí)行k++后,k為3;當k=3時,循環(huán)不成立,退出。
\n
63.C本題考查數(shù)組的使用。本題定義了兩個數(shù)組,注意數(shù)組的下標是從0開始的,進行第1次for循環(huán):當i=0時,b[0]為數(shù)組b中第l個元素,結(jié)果為0,那么a[0]也是數(shù)組a中第l個元素,結(jié)果為1,所以S的值為1。第2次循環(huán):i此時自加為l,b[1]為數(shù)組的第2個元素,值為2,所以可求出a[2](數(shù)組中的第3個元素)的值為3,s=s+3,所以S的值為4。進入第3次for循環(huán),依此類推,第3次for循環(huán)結(jié)束時s的值為6。第4次for循環(huán),s的值變?yōu)閘0。第5次for循環(huán)時,此時i的值為4,s的值變?yōu)閘l,i=5不符合題意,所以跳出循環(huán),輸出結(jié)果,所以本題答案為C。
64.A
\n本題主要考查自加減運算符(++,--)的使用。①如果作為前綴變量“++a,--a”,在使用a之前,先使a的值加1或者減1,再使用表達式的值參與運算;②后綴變量“a++,a--”,先使用表達式的值參與運算,在使用a之后,再使i的值加1或者減1。在本題中計算表達式c=(a++)-1時先使用a的值進行計算,結(jié)果為c=2-1=1,然后將a的值加1,即執(zhí)行完此句后l3-的值是3;表達式c+=-a+++(++b)也可寫成C=c+(一a++)+(++b),c=1+(一3)+3=1,此時a=4,b=3。
\n
65.A++優(yōu)先級高于*,*p++值為year下一個變量的值(如果有的話),不能滿足題意,所以選擇A)
66.B算法的時間復(fù)雜度是指執(zhí)行算法所需的計算工作量。算法的空間復(fù)雜度是指執(zhí)行這個算法所需的內(nèi)存空間。在一個算法的空間復(fù)雜度大的情況下,其時間復(fù)雜度可能會很大,具體視情況而定;反之亦然。
67.C
68.A
69.C
\n在fun函數(shù)中,while循環(huán)的功能是逐個取字符數(shù)組s的字符判斷其是否是數(shù)字。若是則將這些數(shù)字組成一個數(shù)保存到變量n中,并返回變量n的值。
\n
70.B題中當a的值為l時,關(guān)系表達式a==l的值為真,即1,因此程序?qū)⑻D(zhuǎn)到easel執(zhí)行a++操作,與題干程序剛好相反。
71.D形參是函數(shù)定義時由用戶定義的形式上的變量,實參是函數(shù)調(diào)用時,主調(diào)函數(shù)為被調(diào)函數(shù)提供的原始數(shù)據(jù)。在C語言中,實參向形參傳送數(shù)據(jù)的方式是“值傳遞”。因此D選項正確。
72.A由題可知fun的參數(shù)為變量,而a[15]為常量,所以答案為A。
73.D首先k=0,執(zhí)行default,退出switch,k++,執(zhí)行case1,2,3后,n=2,k++,執(zhí)行case2,3,n=4,k++,執(zhí)行case3,n=7.執(zhí)行k++,執(zhí)行default,k++,退出循環(huán)。
74.C選項A中,fun(inty,doublem);中變量y和m前不需要類型說明;因為函數(shù)fun(10,12.5)沒有返回值,所以選項B錯誤;調(diào)用函數(shù)fun時,不需要在函數(shù)前面加上void,所以選項D錯誤。故本題的正確答案是選項C。
75.C本題的考查點是查找程序運行錯誤的原因。主要考查運算中字符的轉(zhuǎn)換。初看此題,可能不太容易發(fā)現(xiàn)錯誤,該題的運行結(jié)果是1.0000,算法錯誤。s=s+1/n;1/2=0,因為n為整型,所以1/n都為0。這就是導(dǎo)致本題出錯的原因。s=s+1/n應(yīng)改為s=s+1.0/n。
76.B
\n本題主要考查結(jié)構(gòu)指針:P=&data,訪問結(jié)構(gòu)體的成員。它可以通過結(jié)構(gòu)變量訪問,即data,可以用等價的指針形式:(*p).a(chǎn)和P->a來訪問結(jié)構(gòu)體變量中的成員。
\n
77.A本題考查的是函數(shù)調(diào)用時的參數(shù)傳遞問題。程序在調(diào)用函數(shù)時,傳給函數(shù)啪參數(shù)只是結(jié)構(gòu)變量C在棧中的一個拷貝,函數(shù)馓的所有操作只是針對這個數(shù)據(jù)拷貝進行的修改,這些都不會影響變量C的值。因此本題答案為A)。
78.BB)選項中定義的數(shù)組為2行4列,而賦值時賦成了3行所以出錯。
79.B
80.B
\n棧是線性表的一種,它的特點是先進后出,并且只能在表的一端進行插入和刪除操作的線性表,入棧和出棧都是在棧頂進行,因此具有記憶作用,??梢圆捎庙樞虼鎯Γ部梢圆捎面準酱鎯?。
\n
81.(1)錯誤:float*k;
正確:floatk;
(2)錯誤:if(*a>*c)
正確:if(*a<*c)
【解析】變量定義首先要判斷變量的類型,給定程序的賦值語句中,k是以變量形式進行賦值的,所以k不是指針,定義為指針是不正確的;由給出程序可以看出,if語句是為了將小于*C的值放入*C中,所以應(yīng)該改為“if(*a<*c)”。
82.voidfun(chara[M][N],char*b){ inti,j,k=0; for(i=0;i /*將字符串數(shù)組中的M個字符串,按順序存入一個新的字符串*/ for(j=0;a[i][j]!='V),;j++) b[k++]=a[i][j]; b[k]=‘\0’; /*在字符串最后加上字符串結(jié)束標志*/}該題考核的是字符串連接操作。字符串數(shù)組相當于二維字符數(shù)組。字符數(shù)組a是M行N列的二維數(shù)組。通過兩層for循環(huán)遍歷數(shù)組a,將數(shù)組a中的元素保存到數(shù)組b中。在數(shù)組b的最后一個元素后添加字符串結(jié)束標志‘\\0’。2021-2022年黑龍江省雞西市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.以下程序段中,與語句“k=a>b?(b>c?1:0):0;”功能相同的是()。
A.if((a>b)||(b>c))k=1;elsek=0;
B.if((a>b)&&(b>c))k=1;elsek=0;
C.if(a<=b)k=0;elseif(b<=c)k=1;
D.if(a>b)k=1;elseif(b>c)k=1;elsek=0;
2.將數(shù)組a[0,1,…,m-1]作為循環(huán)隊列SQ的存儲空間,f為隊頭指示,r為隊尾指示,則執(zhí)行出隊操作的語句為()A.f=f+1B.f=(f+1)%mC.r=(r+1)%mD.f=(f+1)%(m+1)
3.有以下程序:#include<stdio.h>intfun(intx,inty){if(x!=y)return((x+y)/2);elsereturn(x);}main(){inta=4,b=5,c=6;printf(“%d\n”,fun(2*a,fun(b,c)));}程序運行后的輸出結(jié)果是()。
A.3B.6C.8D.12
4.以下敘述中正確的是()。
A.構(gòu)成C程序的基本單位是函數(shù)
B.可以在一個函數(shù)中定義另一個函數(shù)
C.main函數(shù)必須放在其他函數(shù)之前
D.C函數(shù)定義的格式是K&R格式
5.
6.已有定義:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判斷c中的字符是否為大寫字堪的表達式是()。
A.isupper(c)B.A<=c<=ZC.A<=c&&c<=ZD.c<=(z-32)&&(a-32)<=c
7.設(shè)有定義:intx=2.以下表達式中,值不為6的是()。A.2*x,x+=2B.x++.2*xC.x*=(1+x)D.x*=x+1
8.若以下選項中的變量已正確定義,則正確的賦值語句是()。
A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3
9.有如下嵌套的if語句:if(a<b)if(a<c)k=a;elsek=C:elseif(b<c)k=b;elsek=C;以下選項中與上述if語句等價的語句是()。A.k=(a<b)?a:b;k=(b<c)?b:C;
B.k=(a<b)?((b<c)?a:b):((b>c)?b:c);
C.k=(a<b)?((a<c)?a:c):((b<c)?b:c);
D.k=(a<b)?a:b;k=(a<c)?a:c;
10.有以下程序
#include<stdio.h>
voidfun(intx)
{if(x/2>1)fun(x/2);
printf(”%d”,x);
}
main()
{fun(7);printf(”\n”);}
程序運行后的輸出結(jié)果是()。A.137B.731C.73D.37
11.若長度為n的線性表采用順序存儲結(jié)構(gòu),在其第i個位置插入一個新元素的算法的時間復(fù)雜度為()。
A.O(0)B.O(1)C.O(n)D.O(n2)
12.有以下程序main(){chars[]="abcde";s+=2;printf("%d\n",s[0]);}執(zhí)行后的結(jié)果是______。A.輸出字符a的ASCⅡ碼B.輸出字符c的ASCⅡ碼C.輸出字符cD.程序出錯
13.若整型變量a、b、c、d中的值依次為2、2、3、4,則條件表達式a<b?a:c<d?c:d的值是()。A.1B.2C.3D.4
14.有以下程序段:charc1,c2;for(c=‘0’,c2=‘9’;c1<c2;c1++,c2--)printf(“%c%c”,c1,c2);程序段的執(zhí)行結(jié)果是()。
A.0123456789B.0918273645C.0123498765D.9876543210
15.有以下程序:#include<stdio.h>main(){charb[]=“happynewyear”,k;for(k=0;b[k];k++) printf(“%c”,b[k]-‘a(chǎn)’+‘A’);}程序運行后的輸出結(jié)果是()。
A.hAppynewyeArB.HappynewyearC.HAPPYNEWYEARD.HaPPYNEWYEaR
16.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。
A.0,-1,-1,-1
B.0,-1,-1,0
C.0,-1,-1,0,-1,0
D.0,-1,-1,-1,-1,-1
17.采用開放定址法處理散列表的沖突時,其平均查找長度()
A.高于二分查找B.高于鏈接法處理沖突C.低于二分查找D.低于鏈接法處理沖突
18.已知待排序的n個元素可分為n/k個組,每個組包含k個元素,且任一組內(nèi)的各元素均分別大于前一組內(nèi)的所有元素和小于后一組內(nèi)的所有元素,若采用基于比較的排序,其時間下界應(yīng)為()A.O(nlog2n)B.O(nlog2k)C.O(klog2n)D.O(klog2k)
19.以下不合法的用尸標識符是()。A.A.804zhangB._hhC.yy614D.If
20.一個算法應(yīng)當具有5個特性,以下敘述中正確的是()。
A.有窮性、確定性、復(fù)雜性、有零個或多個輸入、有一個或多個輸出
B.有窮性、確定性、可行性、有零個或多個輸入、有一個或多個輸出
C.有窮性、確定性、可行性、必須要有一個以上的輸入、有一個或多個輸出
D.有窮性、確定性、復(fù)雜性、有零個或多個輸入、必須要有多個輸出
二、2.填空題(20題)21.以下程序中函數(shù)huiwen的功能是檢查一個字符串是否是回文,當字符串是回文時,函數(shù)返回字符串:yes!,否則函數(shù)返回字符串:no!,并在主函數(shù)中輸出。所謂回文即正向與反向的拼寫都一樣,例如:adgda。請?zhí)羁铡?/p>
#include<string.h>
char*huiwen(char*str)
{char*p1,*p2;inti,t=0;
p1=str;p2=【】;
for(i=0;i<=strlen(str)/2;i++)
if(*p1++!=*p2--){t=1;bteak;}
if(【】)return("yes!");
elsereturn("no!");
}
main()
{charsb[50];
printf("Input:");scanf("%s",str);
ptintf("%s\n",【】);
}
22.【】是數(shù)據(jù)庫設(shè)計的核心。
23.以下程序的運行結(jié)果是【】。
#include<string.h>
char*ss(char*s)
{returns+strlen(s)/2;}
main()
{char*p,*str="abcdefgh";
p=ss(str);printf("%s\n",p);
}
24.為了建立如圖所示的存儲結(jié)構(gòu)(即每個結(jié)點含兩個域,data是數(shù)據(jù)域,next是指向結(jié)點的指針域)。請?zhí)羁铡?/p>
structlink{chardata;【】;}node;
25.以下程序運行后的輸出結(jié)果是______。
main()
{inta=3,b=4,c=5,t=99;
i[(b<a&&a<C)t=a;a=c;c=t;
if(a<c&&b<C)t=b;b=a;a=t;
printf("%d%d%d\n",a,b,c);
}
26.下列程序的輸出結(jié)果是______。
#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");
}
27.下述程序的輸出結(jié)果是【】。
#include<stdio.h>
intfun(intx)
{intp;
if(x==0||x==1)
return3;
else
p=x-fun(x-2);
returnp;}
voidmain()
{printf("\n%d",fun(9));}
28.一棵二叉樹中共有80個葉子結(jié)點與10個度為1的結(jié)點,則該二叉樹中的總結(jié)點數(shù)為【】。
29.順序存儲方法是把邏輯上相鄰的結(jié)點存儲在物理位置______的存儲單元中。
30.若有以下定義語句,則不移動指針p,并且通過指針p引用值為98的數(shù)組元素的表達式是【】。
intw[10]={23,54,10,33,47,98,72,80,61},*p=w;
31.若x為int類型,請寫出與!x等價的C語言表達式______。
32.閱讀下面語句,則程序的執(zhí)行結(jié)果是【】。
#include"stdio.h"
main()
{inta=-1,b=1,k;
if((++a<0)&&!(b--<=0))
printf("%d,%d\n",a,b);
elseprintf("%d,%d\n",b,a);}
33.已定義charch='$';inti=1,j;,執(zhí)行j!=ch&&i++以后,i的值為______。
34.數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的【】以及對數(shù)據(jù)的操作運算。
35.符合結(jié)構(gòu)化原則的三種基本控制結(jié)構(gòu)是順序結(jié)構(gòu)、()和循環(huán)結(jié)構(gòu)。
36.數(shù)據(jù)流的類型有______和事務(wù)型。
37.程序測試分為靜態(tài)分析和動態(tài)測試。其中【】是指不執(zhí)行程序,而只是對程序文本進行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯誤。
38.在進行軟件結(jié)構(gòu)設(shè)計時,應(yīng)遵循的最主要原理是【】。
39.以下程序輸出的最后一個值是【】
intff(intn)
{staticintf=1;
f=f*n;
returnf;
}
main()
{inti;
for(i=1;i<=5;i++)printf("%d\n",ff(i));
}
40.軟件測試中路徑覆蓋測試是整個測試的基礎(chǔ),它是對軟件【】進行測試。
三、1.選擇題(20題)41.在C程序中,判邏輯值時,用“非0”表示邏輯值“真”,又用“0”表示邏輯值“假”。在求邏輯值時,邏輯真和邏輯假可分別表示為
A.10B.01C.非0非0D.11
42.下列有關(guān)數(shù)據(jù)庫的描述,正確的是______。
A.數(shù)據(jù)庫是一個DBF文件B.數(shù)據(jù)庫是一個關(guān)系C.數(shù)據(jù)庫是一個結(jié)構(gòu)化的數(shù)據(jù)集合D.數(shù)據(jù)庫是一組文件
43.有以下程序
main()
{inti;
for(i=1;i<=40;i++)
{if(i++%5==0)
if(++i%8==0)printf("%d",i);
}
printf("\n");
}
執(zhí)行后的輸出結(jié)果是
A.5B.24C.32D.40
44.有以下程序:#include<stdio.h>voidfun(int*s,intnl,intn2){inti,j,t;i=nl;j=n2;while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j--;}}main(){inta[10]={1,2,3,4,5,6,7,8,9,0},k;fun(a,0,3);fun(a,4,9);fun(a,0,9);for(k=0;k<10;k++)printf("%d",a[k]);printf("\n");}程序運行的結(jié)果是()。
A.9.87654e+008B.4.3211e+009C.5.6789e+009D.9.87651e+008
45.以下程序運行后,輸出結(jié)果是______。fut(int**s,intp[2][3]){**s=p[1][1];}main(){inta[2][3]={1,3,5,7,9,11},*p;p=(int*)malloc(sizeof(int));fur(&p,a);printf("%d\n",*p);}
A.1B.7C.9D.11
46.下列模式中,能夠給出數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法的是A.內(nèi)模式B.外模式C.概念模式D.邏輯模式
47.main(){floatx=123.456;printf("%-5.2f\n",x);}以上程序輸出的結(jié)果是______。
A.123.4B.123.5C.123.45D.123.46
48.下列程序的輸出結(jié)果是______。unionun{inta[3];longb;charc[6];}un1,*p;main(){p=&un1;p->a[0]=0x37;p->a[1]=0x38;p->a[2]=0x39;printf("%c\n",p->c[4]);}
A.39B.9C.38D.8
49.有以下程序:#include<string.h>main(){charp[]={'a','b','c'},q[10]={'a','b','c'};printf("%d%d\n",strlen(p),strlen(q));}以下敘述中正確的是()。
A.在給p和q數(shù)組置初值時,系統(tǒng)會自動添加字符串結(jié)束符,故輸出的長度都為3
B.由于p數(shù)組中沒有字符串結(jié)束符,長度不能確定;但q數(shù)組中字符串長度為3
C.由于q數(shù)組中沒有字符串結(jié)束符,長度不能確定;但p數(shù)組中字符串長度為3
D.由于p和q數(shù)組中都沒有字符串結(jié)束符,故長度都不能確定
50.按照“先進后出”原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是()。
A.隊列B.棧C.雙向鏈表D.二叉樹
51.下面函數(shù)的功能是______。exchange(int*ptr1,*ptr2){int*ptr;ptr=-ptr1;ptr1=ptr2;ptr2=ptr;}
A.交換*ptr1和*ptr2的值
B.無法改變*ptr1和*ptr2的值
C.可能造成系統(tǒng)故障,因為使用了空指針
D.交換*ptr1和*pb2的地址
52.在一個具有n個結(jié)點的有序單鏈表中插入一個新結(jié)點并仍然有序的時間復(fù)雜性為______。
A.O(1)B.O(n)C.O(n2)D.O(log2n)
53.下列實體的聯(lián)系中,屬于多對多聯(lián)系的是()
A.學(xué)生與課程B.學(xué)校與校長C.住院的病人與病床D.工資級別與職工
54.設(shè)只是一個二元關(guān)系,S是一個三元關(guān)系,則下列運算中正確的是()。
A.R-SB.RX×SC.R∩SD.R∪S
55.以下程序執(zhí)行后,sum的值是______。main(){inti,sum;for(i=1;i<6;i++)sum+=i;printf("%d\n",sum);}
A.15B.14C.不確定D.0
56.以下程序的輸出結(jié)果是______。main(){charstr[12]={'s','t','r','i','n','g'};printf("%d/n",strlen(str));}
A.6B.7C.11D.12
57.有以下程序:main(){inti,t[][3]={9,8,7,6,5,4,3,2,1};for(i=0;i<3;i++)printf("%",t[2-i][i]);}程序執(zhí)行后的輸出結(jié)果是()。
A.753B.357C.369D.751
58.下列敘述中正確的是()。
A.在賦值表達式中,賦值號的左邊既可以是變量,也可以是任意表達式
B.實型變量中允許存放整型數(shù)
C.若a和b類型相同,在執(zhí)行了賦值a=b后,b中的值將放入a中,但b中的值不變
D.在C程序中,求余運算符“%”兩邊的類型相同時才能進行運算
59.以下描述中,不是線性表順序存儲結(jié)構(gòu)特征的是()。
A.可隨機訪問B.需要連續(xù)的存儲空間C.不便于插入和刪除D.邏輯相鄰的數(shù)據(jù)物理位置上不相鄰
60.有以下程序:intf1(doubleA){returna*a;}intf2(intx,inty){doublea,b;a=f1(x);b=f1(y);returna+b;}main(){doublew;w=f2(2.1,4.0);}程序執(zhí)行后,變量w的值是()。
A.20.21B.20C.20.0D.0.0
四、選擇題(20題)61.執(zhí)行下面的程序后,a的值為()。main{inta,b;for(a=1,b=1;a<=10;a++){if(b%3==l){b+=3;continue;}b-=5;}}A.7B.8C.9D.10
62.
以下程序的輸出結(jié)果是()。
main
{charw[][10]={"ABCD","EFGH","IJKL","
MNOP"),K;
for(k=1;k<3;k++)printf("%s\n",w[k]);
A.ABCDFGHKLB.ABCDEFGUC.EFGJKOD.EFGHUKL
63.有以下程序:#include<stdio.h>main(){inta[5]={1,2,3,4,5),b[5]={0,2,1,3,o},i,s=0;for(i=o;i<5;i++)s=s+a[b[i]];printf(”%d\n”,s);}程序運行后的輸出結(jié)果是()。A.6B.10C.11D.15
64.
下列程序的執(zhí)行結(jié)果是()。
#include<stdioh>
main
{inta,b,c;
a=b=2,c=I;
c=(a++)-1;printf("%d,0Ad",a,c);
c+=-a+++(++b);printf("%d,%d",a,c);
)
A.3,14,1B.3,14,2C.2,04,1D.2,14,1
65.若有定義語句:
66.下列關(guān)于算法復(fù)雜度描述正確的是()。
A.算法的時間復(fù)雜度是指算法執(zhí)行的時間
B.算法的空間復(fù)雜度是指執(zhí)行這個算法所需的內(nèi)存空間
C.一個算法的空間復(fù)雜度大,則其時間復(fù)雜度必定大
D.一個算法的空間復(fù)雜度大,則其時間復(fù)雜度必定小
67.(59)SQL語言又稱為()
A.結(jié)構(gòu)化定義語言
B.結(jié)構(gòu)化控制語言
C
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國商業(yè)地產(chǎn)市場分析預(yù)測報告
- 2024-2025學(xué)年高中政治專題3.2樹立正確的消費觀練基礎(chǔ)版含解析必修1
- 2024年高中歷史專題一中國傳統(tǒng)文化主流思想的演變第4課明末清初的思想活躍局面練習(xí)含解析人民版必修3
- 2025-2030年中國鼓風(fēng)試驗箱行業(yè)深度研究分析報告
- 汽車技術(shù)研究項目可行性研究報告評審方案設(shè)計2025年發(fā)改委標準案例范文
- 2024-2025學(xué)年高中物理第四章牛頓運動定律第7節(jié)用牛頓運動定律解決問題二A同步訓(xùn)練含解析新人教版必修1
- 2024-2025學(xué)年高中語文課時作業(yè)13在馬克思墓前的講話含解析新人教版必修2
- 2024-2025學(xué)年高中物理第二章4惠更斯原理波的反射與折射練習(xí)含解析教科版選修3-4
- 2025年鋼制噴塑雙層玻璃柜行業(yè)深度研究分析報告
- 寶石、玉石礦項目評估報告
- 聯(lián)合救治房顫患者的協(xié)議書
- 企業(yè)自查報告范文
- 沐足店長合同范例
- 母嬰護理的職業(yè)道德
- 《商務(wù)溝通-策略、方法與案例》課件 第二章 口頭溝通
- 運灰安全管理制度模版(2篇)
- 2024年生態(tài)環(huán)境局公務(wù)員考試600題內(nèi)部選題庫(A卷)
- 2024年湖南省公務(wù)員錄用考試《行測》真題及答案解析
- 工商企業(yè)管理畢業(yè)論文的范文
- 《物權(quán)法》本科題集
- 新能源汽車驅(qū)動電機及控制系統(tǒng)檢修課件 學(xué)習(xí)情境6:電機控制系統(tǒng)檢修
評論
0/150
提交評論