版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2021年四川省資陽市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.
有以下程序:
main
{intx=102,y=012;
printf("%2d,%2d\n",x,y);
}
執(zhí)行后輸出結(jié)果是()。
A.10,01B.02,12C.102,10D.02,10
2.設(shè)有如下函數(shù)定義:#include<stdio.h>intfun(intk){if(k<1)return0;elseif(k==1)return1;elsereturnfun(k-1)+1;}若執(zhí)行調(diào)用語句“n=fun(3);”,則函數(shù)fun總共被調(diào)用的次數(shù)是()。
A.2B.3C.4D.5
3.
4.設(shè)有以下函數(shù)“voidfun(intn,char*s){…}”,則下列對函數(shù)指針的定義和賦值均正確的是()。
A.void(*pf)(int,char);pf=&fun;
B.void*pf();pf=fun;
C.void*pf();*pf=fun;
D.void(*pf)(int,char*);pf=fun;
5.設(shè)有定義:
inta=1,b=2,C=3;
以下語句中執(zhí)行效果與其他三個不同的是()。
A.if(a>B.C=a,a=b,b=C;
B.if(a>B.{C=a,a=b,b=C;}
C.if(a>B.C=a;a=b;b=c;
D.if(a>B.{C=a;a=b;b=c;}
6.有以下程序main(){intp[7]={11,13,14,15,16,17,18},i=0,k=0;while(i<7&&p[i]%2){k=k+p[i];i++;}printf("%d\n",k);}執(zhí)行后輸出結(jié)果是
A.58B.56C.45D.24
7.有以下程序
#include<stdio.h>
main()
{charc1,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar();c6=getchar();
putchar(c1);putchar(c2);
printf("%c%c\n",c5,c6);
}
程序運行后,若從鍵盤輸入(從第1列開始)
123<回車>
45678<回車>
則輸出結(jié)果是A.A.1267B.1256C.1278D.1245
8.執(zhí)行下列程序后,輸出的結(jié)果是()。#include<stdio.h>#defineS(X)X*Xvoidmain{inta=9,k=3,m=2;a/=S(k+m)/S(k+m):printf("%d",a);}A.1B.4C.9D.0
9.對于C語言的函數(shù),下列敘述中正確的是()。
A.函數(shù)的定義不能嵌套,但函數(shù)調(diào)用可以嵌套
B.函數(shù)的定義可以嵌套,但函數(shù)調(diào)用不能嵌套
C.函數(shù)的定義和調(diào)用都不能嵌套
D.函數(shù)的定義和調(diào)用都可以嵌套
10.若有定義“a[]={1,2,3,4,5,6,7,8,9,10};”,則“a[a[5]-a[7]/a[1]]”的值是()。
A.2B.4C.3D.10
11.設(shè)有定義“doublea[10],*s=a;”,以下能夠代表數(shù)組元素a[3]的是()。
A.(*s)[3]B.*(s+3)C.*s[3]D.*s+3
12.
13.有以下程序:#include<stdio.h>intf(intm){staticintn=0;n+=m;returnn;}main(){intn=0;printf("%d,"f(++n));printf("%d\n",f(n++));}程序運行后的輸出結(jié)果是()。A.1,2B.1,1C.2,3D.3,3
14.有如下程序段
voidfun(int*a,int*b)
{int*k;
k=a;a=b;b=k;
}
main()
{inta=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf("%d%d",a,b);
}
程序運行后輸出的結(jié)果是A.A.63
B.36
C.編譯出錯
D.00
15.設(shè)x和y均為int型變量,且x=10,y=3,則以下語句的輸出結(jié)果是()printf("%d,%d\n",x--,--y);
A.10,3B.9,3C.9,2D.10,2
16.以下程序的輸出結(jié)果是()。unionmyun{struct{intx,y,z;)u;intk:}a;main{a.u.x=4;a.u.y=5;a.u.z=6;k=0;printf(%d\n",a.u.x);}A.4B.5C.6D.0
17.對兩個數(shù)組a和b進行下列初始化:charm[]1="l234567":charn[]={1,2,3,4,5,6,7);則下列敘述正確的是()。A.數(shù)組m與數(shù)組n完全相同B.數(shù)組m與數(shù)組n長度相同C.數(shù)組m比數(shù)組n長1D.數(shù)組m與數(shù)組n中都存放字符串
18.冒泡排序在最壞情況下的比較次數(shù)是()。
A.n(n+1)/2B.nlog2nC.n(n-1)/2D.n/2
19.有以下程序:#include<stdio.h>main(){inta=1,b=0;if(--a)b++;elseif(a==0)b+=2;elseb+=3:print[("%d\n",b);}程序運行后的輸出結(jié)果是()。A.0B.1C.2D.3
20.下列關(guān)于棧的描述中錯誤的是()。A.棧是先進后出的線性表B.棧只能順序存儲C.棧具有記憶作用D.對棧的插入與刪除操作中,不需要改變棧底指針
二、2.填空題(20題)21.數(shù)據(jù)庫保護分為:安全性控制、______、并發(fā)性控制和數(shù)據(jù)的恢復(fù)。
22.算法的復(fù)雜度主要包括時間復(fù)雜度和______復(fù)雜度。
23.排序是計算機程序設(shè)計中的一種重要操作,常見的排序方法有插入排序、【】和選擇排序等。
24.按照邏輯結(jié)構(gòu)分類,結(jié)構(gòu)可以分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),棧屬于______。
25.設(shè)有宏定義:
#defineWIDTH80
#defineLENGTHWIDTH+40
則執(zhí)行賦值語句“v=LENGTH*20;"(v為int型變量)后,v的值是【】。
26.下面程序的功能是:計算110之間的奇數(shù)之和與偶數(shù)之和,請?zhí)羁铡?/p>
#include<stdio.h>
main()
{inta,b,c,I;
a=c=0;
for(I=0;I<=10;I+=2)
{a+=I;
【】;
c+=b;}
printf("偶數(shù)之和=%d\n",a);
printf("奇數(shù)之和=%d\n",c-11);}
27.以下程序中函數(shù)f的功能是在數(shù)組x的n個數(shù)(假定n個數(shù)互不相同)中找出最大最小數(shù),將其中最小的數(shù)與第一個數(shù)對換,把最大的數(shù)與最后一個數(shù)對換。請?zhí)羁铡?/p>
#include<stdio.h>
voidf(intx[],intn)
{intp0,p1,i,j,t,m;
i=j=x[0];p0=p1=0;
for(m=0;m<n;m++)
{if(x[m]>i){i=x[m];p0=m;}
elseif(x[m]<j){j=x[m];p1=m;}
}
t=x[p0];x[p0]=x[n-1];x[n-1]=t;
t=x[p1];x[p1]=【】;【】=t;
}
main()
{inta[10],u;
for(u=0;u<10;u++)scanf("%d",&a[u]);
f(a,10);
for(u=0;u<10;u++)printf("%d",a[u]);
printf("\n");
}
28.函數(shù)pi的功能是根據(jù)以下公式近似求得的:
pi*pi/6=1+1/(2*2)+1/(3.3)+...+1/(n*n)
請在下面的函數(shù)中天空,完成求pi的功能。
#include<math.h>
doublepi(longn)
{doubles=0.0,longi;
for(i=1;i<<=n;i++)s=s+【】;
return(sqrt(6*s));
}
29.以下定義的結(jié)構(gòu)體類型擬包括兩個成員,其中成員變量info用來存入整形數(shù)據(jù);成員變量link是指向自身結(jié)構(gòu)體的指針,請將定義比沖完整
structnode
{intinfo;
______link;};
30.測試的目的是暴露錯誤,評價程序的可靠性;而______得目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。
31.strcmp函數(shù)的功能是【】。
32.下面程序的輸出結(jié)果是【】。
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)arr[i]=i;
for(i=0;i<4;i++)k+=arr[i]=i;
printf("%d\n",k);
}
33.分析下列程序:
main()
{intx=1,y=0,a=0,b=0;
switch(a)
{case1:switch(b)
{case0:x++;
case1:y++;break;
}
case2:x++;y++;break;
}
printf("x=%d,y=%d\n",x,y);
}
運行程序的輸出結(jié)果是______。
34.設(shè)有下列的程序段:
charstr[]="Hello";
char*ptr;
ptr=-str;
執(zhí)行上面的程序段后,*(ptr+5)的值為______。
35.以下程序輸出矩陣中值為。的元素的行下標和列下標。行下標和列下標分別放在同一下標的r和c數(shù)組元素中。程序通過調(diào)用隨機函數(shù)給矩陣賦值。
#defineN5
#include<stdlib.h>
main()
{inta[N][N],i,j,c[N*N],r[N*N],n;
for(i=0,i<N;i++)
for(j=0;j<N;j++)a[i][j]=rand()%5;
n=gindex(【】);
printf("\n\nTheresult:\nn=%d\n",n);
for(i=0;i<n;i++)printf("%4d%4d\n",r[i],c[i]);
}
intgindex(int(*p)[N],int*c,int*r)
{inti,j,k;
【】;
for(i=0;i<N,i++)
for(j=0;j<N;j++)
if(【】==0)
{r[k]=i;c[k]=j;【】;}
return【】;
}
36.以下程序中函數(shù)huiwen的功能是檢查一個字符串是否是回文,當字符串是回文時,函數(shù)數(shù)返回字符串:yes!否則函數(shù)返回這符串:no!并在主函數(shù)中輸出。所謂回文即正向與反向的拼寫都一樣,例如:adgda。請?zhí)羁?/p>
#include<string.h>
char*huiwen(char*str)
{char*p1,*p2;inti,t=0;
pl=str;p2=______;
for(i=0;i<=strlen(str)/2;i+*)
if(*p1++!=*p2--){t=1;break;}
if(______)return("yes!");
elsereturn(*no!");
}
main()
{charstr[50];
printf("Input:");scanf("%s",str);
printf("%s\n",______);
}
37.程序的運行結(jié)果為【】。
main()
{intx,y,z;
x=24;
y=024;
z=0x24;
printf("%d,%d,%d\n",x,y,z);
}
38.常用的黑箱測試有等價類劃分法、【】和錯誤推測法3種。
39.以下程序的功能是:輸出100以內(nèi)(不含100)能被3整除且個位數(shù)為6的所有整數(shù),請?zhí)羁铡?/p>
#include<stdio.h>
main()
{inti,j
for(i=0;【】;i++)
{j=i*10+6;
if(【】)continue:
Printf("%d”",j);
}
}
40.以下程序用來輸出結(jié)構(gòu)體變量student所占存儲單元的字節(jié)數(shù),請?zhí)羁铡?/p>
structst
{charname[20];doublescore;
};
main()
{structststudent;
printf("studentsize:%d\n",sizeof(【】));
}
三、1.選擇題(20題)41.某一個漢字的區(qū)位碼為(2113H),則其內(nèi)碼為()
A.(2199)10B.(C1B3H)C.(C1B3)10D.(B1B3H)
42.下列描述中正確的是()。
A.軟件工程只是解決軟件項目的管理問題
B.軟件工程主要解決軟件產(chǎn)品的生產(chǎn)率問題
C.軟件工程的主要思想是強調(diào)在軟件開發(fā)過程中需要應(yīng)用工程化原則
D.軟件工程只是解決軟件開發(fā)過程中的技術(shù)問題
43.若有以下說明和語句:structst{intn;char*ch;};structsta[3]={5,"abc",7,"def",9,"ghk"},*p=a;則值為6的表達式是______。
A.p++->nB.p->n++C.(*p).n++D.++p->n
44.有如下程序
main()
{charch[2][5]={"6937","8254"},*p[2];
inti,j,s=0;
for(i=0;i<2;i++)p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>′\0′;j+=2)
s=10*s+p[i][j]-′0′;
printf("%d\n",s);}
該程序的輸出結(jié)果是
A.69825B.63825C.6385D.693825
45.線性表L=(a1,a2,a3,…ai,…an),下列說法正確的是()
A.每個元素都有一個直接前件和直接后件
B.線性表中至少要有一個元素
C.表中諸元素的排列順序必須是由小到大或由大到小
D.除第一個元素和最后一個元素外,其余每個元素都有一個且只有一個直接前件和直接后件
46.若有如下程序:intm=1;main(){intt=0,s=0;{intm=4;s+=m;)t+=m;printf("%d,%d\n",s,t);}則程序運行后的輸出結(jié)果是()。
A.1,1B.1,4C.4,1D.4,4
47.下列程序的輸出結(jié)果是______。main(){inti=3;switch(i){case1:case2:printf("%d",i);case3:case4:break;default:printf("OK");}}
A.0B.3C.OKD.沒有任何輸出
48.以下敘述中正確的是
A.用C程序?qū)崿F(xiàn)的算法必須要有輸入和輸出操作
B.用C程序?qū)崿F(xiàn)的算法可以沒有輸出但必須要有輸入
C.用C程序?qū)崿F(xiàn)的算法可以沒有輸入但必須要有輸出
D.用C程序?qū)崿F(xiàn)的算法可以既沒有輸入出沒有輸出
49.已知各變量的類型說明如下:intk,a,b;unsignedlongw=5;doublex=1.42;則以下不符合C語言語法的表達式是():
A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)
50.因特網(wǎng)(習慣上稱國際互聯(lián)網(wǎng))的英文名是()
A.InternetB.IntranetC.NCFCD.ISDN
51.執(zhí)行下面的語句后,表達式*(p[0]+1)+**(q+2)的值為______。inta[]={5,4,3,2,1},*p[]={a+3,a+2,a+1,a},**q=p;
A.8B.7C.6D.5
52.當把4個表達式用做if語句的控制表達式時,有一個選項與其他3個選項含義不同,這個選項是()。
A.k%2B.k%2==1C.(k%2)!=0D.!k%2==1
53.以下非法的賦值語句是
A.n=(i=2,++i);B.j++;C.++(i+1);D.x=j>0;
54.有以下程序:#include<stdio.h>main(){unsignedchara,b;a=413;b=4&3;printf("%d%d\n",a,b);}執(zhí)行后的輸出結(jié)果是()。
A.70B.07C.11D.430
55.下面敘述正確的是______。A.算法的執(zhí)行效率與數(shù)據(jù)的存儲結(jié)構(gòu)無關(guān)
B.算法的空間復(fù)雜度是指算法程序中指令(或語句)的條數(shù)
C.算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止
D.以上三種描述都不對
56.若有定義floata=25,b,*p=&b;,則下列對賦值語句*p=a;和p=&a;的正確解釋為()。
A.兩個語句都是將變量a的值賦予變量p
B.*p=a是使p指向變量a,而p=&a是將變量a的值賦予變量指針p
C.*p=a是將變量a的值賦予變量b,而p=&a是使p指向變量a
D.兩個語句都是使p指向變量a
57.C語言中用于結(jié)構(gòu)化程序設(shè)計的三種基本結(jié)構(gòu)是A.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)
B.if、switch、break
C.for、while、do-while
D.if、for、continue
58.程序中對fun()函數(shù)有如下說明void*fun();此說明的含義是______。
A.fun函數(shù)無返回值
B.fun函數(shù)的返回值可以是任意的數(shù)據(jù)類型
C.fun函數(shù)的返回值是無值型的指針類型
D.指針fun指向一個函數(shù),該函數(shù)無返回值
59.若有說明語句:double*p,a;則能通過scanf語句正確給輸入項讀入數(shù)據(jù)的程序段是()。
A.*p=&a;sCanf("%1f",p);
B.*p=&a;scanf("%f",p);
C.p=&a;scanf("%1f",*p);
D.p=&a;scanf("%1f",p);
60.在下列敘述中,錯誤的一條是()
A.主函數(shù)main中定義的變量在整個文件或程序中有效
B.不同函數(shù)中,可以使用相同名字的變量
C.形式參數(shù)是局部變量
D.在―個函數(shù)內(nèi)部,可在復(fù)合語句中定義變量,這些變量只在本復(fù)合語句中有效
四、選擇題(20題)61.以下關(guān)于指針概念不正確的是()。
A.指針變量可以用整數(shù)賦值,但不可以用浮點數(shù)賦值
B.一個變量的地址稱為該變量的指針,一個指針變量只能指向同一類型的變量
C.只有同一類型的變量地址才能放到指向該類型變量的指針變量之中
D.只能將地址賦給指針變量
62.
有以下程序
#include<stdio.h>
#include<string.h>
typedefstrlIct{charname[9];charsex;floatscore[2];}STU;
STUf(STUa)
{STUb={"Zhao",m,85.0,90.0);inti;
strcpy(aname,b.name);
sex:b.sex;
for(i=0;i<2;i++)a.score[i]=b.score[i];
returna;
}
main
{STUc="Qian",f,95.0,92.0},d;
d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]);
}
程序的運行結(jié)果是()。
A.Qian,f,95,92
B.Qian,m,85,90
C.Zhao,m,85,90
D.Zhao,f,95,92
63.若有以下程序:
上面程序的輸出結(jié)果是()。
A.5B.7C.1D.3
64.
65.以下數(shù)組定義中錯誤的是()。
A.
B.
C.
D.
66.以下敘述中錯誤的是()。
A.改變函數(shù)形參的值,不會改變對應(yīng)實參的值
B.函數(shù)可以返回地址值
C.可以給指針變量賦一個整數(shù)作為地址值.
D.當在程序的開頭包含頭文件stdio.h時,可以給指針變量賦NULL
67.
68.一個關(guān)系中屬性個數(shù)為1時,稱此關(guān)系為()。
A.對應(yīng)關(guān)系B.單一關(guān)系C.一元關(guān)系D.二元關(guān)系
69.有以下程序程序運行后的輸出結(jié)果是()。
A.6,4,3,2B.6,2,l,l,C.1,1,2,6,D.2,3,1,6,
70.設(shè)有定義:intm=0;。以下選項的四個表達式中與其他三個表達式的值不相同的是()。
A.++mB.m+=1C.m++D.m+1
71.
72.
73.有以下程序:
程序運行后的輸出結(jié)果是()。
A..3,2,1,B.1,2,3,4,5,6,C.1,1,1,1,1,lD.6,6,6,6,6,6,
74.對線性表進行二分法檢索,其前提條件是()。A.A.線性表以順序方式存儲,并按關(guān)鍵碼值排好序B.線性表以順序方式存儲,并按關(guān)鍵碼的檢索頻率排好序
C.線性表以鏈式方式存儲,并按關(guān)鍵碼值排好序
D.線性表以鏈式方式存儲,并按關(guān)鍵碼的檢索頻率排好序
75.(65)軟件設(shè)計包括軟件的結(jié)構(gòu)、數(shù)據(jù)接口和過程設(shè)計,其中軟件的過程設(shè)計是指()
A.模塊間的關(guān)系
B.系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程描述
C.軟件層次結(jié)構(gòu)
D.軟件開發(fā)過程
76.下列選項中,不是一個算法的基本特征的是()。
A.完整性B.可行性C.有窮性D.擁有足夠的情報
77.以下敘述中正確的是
A.自定義的函數(shù)中一定要有return語句
B.自定義的函數(shù)中不可以有多個return語句
C.自定義的函數(shù)中可以沒有return語句,此時函數(shù)應(yīng)被定義為void類型
D.函數(shù)的return語句一定要帶有表達式
78.下列關(guān)于隊列的敘述中正確的是______。A.在隊列中只能插入數(shù)據(jù)B.在隊列中只能刪除數(shù)據(jù)C.隊列是先進先出的線性表D.隊列是先進后出的線性表
79.
80.以下不合法的字符常量是
A.’x\018’B.’\"’C.’\\’D.’\xcc’
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:對M名學生的學習成績,按從低到高的順序找出前m(m≤10)名學生來,并將這些學生數(shù)據(jù)存放在一個動態(tài)分配的連續(xù)存儲區(qū)中,此存儲區(qū)的首地址作為函數(shù)值返回。
請修改程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c在此程序中,編寫函數(shù)intfun(),其功能是求出小于或等于lim的所有素數(shù),將其存放在aa數(shù)組中,并返回所求出的素數(shù)的個數(shù)。注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:1#include<conio.h>2#include<stdio.h>3#include<stdlib.h>4#defineMAX1005intfun(intlim,intaa[MAX])6{78}9voidmain()10{11FILE*wf;12intlimit,i,sum;13intaa[MAX];14system("CLS");15printf("輸入一個整數(shù):");16scanf("%d",&limit);17sum=fun(limit,aa);18for(i=0;i<sum;i++)19{20if(i%10==0&&i!=0)/*每行輸出10個數(shù)*/21printf("\n");22printf("%5d",aa[i]);23}24/******************/25wf=fopen("out.dat","w");26sum=fun(15,aa);27for(i=0;i<sum;i++)28{29if(i%10==0&&i!=0)/*每行輸出10個數(shù)*/30fprintf(wf,"\n");31fprintf(wf,"%5d",aa[i]);32}33fclose(wf);34/******************/35}
參考答案
1.C解析:本題中,“printf('%2d,%2d\\n',x,y)”表示以逗號隔開輸出兩個十進制整數(shù),每個整數(shù)域?qū)捠?。而在C語言中規(guī)定:當域?qū)捫∮趯嶋H寬度時域?qū)挷黄鹱饔?,按實際寬度輸出,因此最后的輸出值為102和10(y的初值012表示八進制整數(shù)12,等于十進制的10)。所以,4個選項中選項C符合題意。
2.B執(zhí)行調(diào)用語句“n=fun(3);”,3被當作實參傳遞進去,進行了一次調(diào)用。3被當作實參傳進去后,程序會執(zhí)行“elsereturnfun(k-1)+1;”,函數(shù)被調(diào)用了第2次,參數(shù)是3-1,也就是2。2被當作參數(shù)傳進去后,程序會執(zhí)行“elsereturnfun(k-1)+1;”函數(shù)被調(diào)用了第3次,參數(shù)是2-1,也就是1。1被當作實參傳進去后,程序會執(zhí)行“elseif(k==1)return1;”,函數(shù)不再被遞歸調(diào)用。所以最終結(jié)果為3次。故本題答案為B選項。
3.A
4.D函數(shù)的參數(shù)可以是指針類型,它的作用是將一個變量的地址傳送到另一個函數(shù)中。函數(shù)名代表函數(shù)的入口地址,指向函數(shù)的指針應(yīng)該定義為“void(*Pf)();”。如果定義為“void*pf();”,則表示函數(shù)pf的返回值是一個基類型為void的指針。故本題答案為D選項。
5.C由于a小于b,所以所有選項中的條件都為假,c選項中實際執(zhí)行了a=b;b=c;兩個操作。而A、B、D選項由于條件不成立,所以什么也沒有做,所以選擇c選項。
6.D解析:在主函數(shù)中首先定義了一個數(shù)組p并初始化,在while后面括號里的表達式中,i初值為0,當p[i]為偶數(shù)時,P[i]%2等于0,根據(jù)“&&”運算符的規(guī)則,其表達式為假退出循環(huán),顯然當i=2時,p[i]=14為偶數(shù),此時while后面括號里的表達式的值為假,退出循環(huán),此時k=p[0]+p[1],即k=11+13。所以最后輸出k為24。
7.D解析:putchar(c1)輸出1,putchar(c2)輸出2,printf(“%c%c\\n”,c5,c6)輸出45。
8.D本題主要考查帶參數(shù)的宏定義,過程如下:由于定義為define(x)x*x沒有括號優(yōu)先級,所以:a=a/(S(k+m)/S(k+m))=a/(k+m*k+m/k+m*k+m)=9/(3+2*3+2/3+2*3+2)=0。
9.A
10.C題干中,數(shù)組a包含10個元素。其中a[5]為6,a[7]為8,a[1]為2,所以表達式“a[a[5]-a[7]/a[1]]”等價于“a[6-8/2]”,等價于a[2],即3。故本題答案為C選項。
11.B題中,首先定義了double型的數(shù)組a,并將數(shù)組首地址賦給指針s?!?*s)”表示“a[1]”,“s[3]”不是指針變量,不能使用間址運算符“*”,故選項A、C不能表示“a[3]”;選項D的“*s+3”等于“a[0]+3”。故本題答案為B選項。
12.C
13.A解析:static變量用于局部變量中有記憶功能和全局生存期。函數(shù)中的靜態(tài)變量的特點是每次調(diào)用函數(shù),靜態(tài)變量的值是上次調(diào)用完該函數(shù)后的靜態(tài)變量值,所以在此題中,第一調(diào)用函數(shù),返回1,此時函數(shù)中的靜態(tài)變量n的值為l,所以第二次調(diào)用函數(shù)時,返回值為2。
14.B在本題中,程序首先定義了一個無返回值的函數(shù)fun,該函數(shù)帶有兩個整型的指針形參變量,在函數(shù)體中,首先定義一個整型指針變量k,然后試圖利用k來交換a和b的結(jié)果。但處理語句k=a;很明顯是對地址進行賦值操作。在C語言中,指針變量作為函數(shù)參數(shù)時,可以改變被指向的變量的值,但不能改變指針變量本身的值,即我們可以改變實參指向的變量的值,不能使實參指向其他的變量。因此,本函數(shù)并不能交換形參所指向變量的結(jié)果。
在主函數(shù)中,首先定義了兩個整型變量a和b,并分別被初始化為3和6,然后定義兩個指針變量x和y,分別指向a和b,接著調(diào)用fun函數(shù),傳遞的實參為指針變量x和y,根據(jù)前面對fun函數(shù)的分析可知,調(diào)用該函數(shù)后并不能實現(xiàn)a和b數(shù)組的交換,因此,執(zhí)行輸出語句后,輸出的結(jié)果是36。本題正確答案選B。
15.D
16.D因為a是結(jié)構(gòu)體變量,最后一次輸入的值為結(jié)構(gòu)體中的值,即a中的任何一個值都為0。
17.C在m數(shù)組中賦值的是字符串,其長度為7,末尾有結(jié)束符\0,故字節(jié)數(shù)為8,而n數(shù)組中賦的是字符,其長度為7,故C選項正確。
18.C冒泡排序的基本思想是:將相鄰的兩個元素進行比較,如果反序,則交換;對于一個待排序的序列,經(jīng)一趟排序后,最大值的元素移動到最后的位置,其他值較大的元素也向最終位置移動,此過程稱為一趟冒泡。對于有n個數(shù)據(jù)的序列,共需n-1趟排序,第i趟對從l到n-i個數(shù)據(jù)進行比較、交換。冒泡排序的最壞情況是待排序序列逆序,第l趟比較n-1次,第2趟比較n-2次。依此類推,最后趟比較1次,一共進行n-l趟排序。因此,冒泡排序在最壞情況下的比較次數(shù)是(n-1)+(n-2)+…+l,結(jié)果為n(n-1)/2。本題的正確答案是選項C。
19.D
20.B棧是限定只能在表的一端進行插入和刪除操作的線性表,入棧和出棧都是在棧頂進行,它們的操作特點是先進后出,因此具有記憶作用。棧可以采用順序存儲,也可以采用鏈式存儲。
21.完整性控制完整性控制
22.空間空間解析:算法的復(fù)雜度主要包括時間復(fù)雜度和空間復(fù)雜度。所謂算法的時間復(fù)雜度,是指執(zhí)行算法所需要的計算工作量。一個算法的空間復(fù)雜度,一般是指執(zhí)行這個算法所需要的內(nèi)存空間。
23.交換排序交換排序解析:常見的排序方法有插入排序(包括簡單插入排序法和希爾排序法等)、交換排序(包括冒泡排序和快速排序法等)和選擇排序(包括簡單選擇排序和堆排序等)。注意:常見的排序方法及其作用機制和區(qū)別。
24.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)元素之間的邏輯關(guān)系,分為線性結(jié)構(gòu)和非線性結(jié)構(gòu)。常見的線性結(jié)構(gòu)有線性表、棧和隊列等,常見的非線性結(jié)構(gòu)有樹、二叉樹等。
25.880
26.b=I+1b=I+1解析:本題考查了for循環(huán)語句的執(zhí)行過程。i+=2是修正表達式,執(zhí)行一次循環(huán)體后i的值就增加2,i的初始值為0,每次加2后的和累加至a,所以a的值就是110之間的偶數(shù)之和;b的值是111之間的奇數(shù)和,但在輸出b值時,c去掉多加的11,即為110之間的奇數(shù)之和。
27.x[0]x[0]x[0],x[0]解析:函數(shù)f()通過for循環(huán)逐個比較數(shù)組x中的元素,循環(huán)結(jié)束后,p0和p1分別表示最大值和最小值在數(shù)組中的下標位置,然后按照題意將最大值x[p0]和數(shù)組的最后一個元素x[n-1]交換位置,再將最小值x[p1]和第一個元素(x[0])進行交換,所以空白處應(yīng)該填入x[0]。
28.1.0/i/i或1.0/(i*i)1.0/i/i或1.0/(i*i)解析:由題面中提供的計算pi的公式可知:在第i項其值為1/(i*i),考慮到運算結(jié)果為浮點數(shù),故必須要將1轉(zhuǎn)化為浮點數(shù)或采用1.0/(i*i)的形式。故本題應(yīng)填1.0/(i*i)或其等效形式。
29.解析:本題中的結(jié)構(gòu)類型名為structnode,所以空白處應(yīng)填:structnode*,即定義一個指向自身的結(jié)構(gòu)體指針。
30.軟件測試的目標是在精心控制的環(huán)境下執(zhí)行程序,以發(fā)現(xiàn)程序中的錯誤,給出程序可靠性的鑒定;調(diào)試也稱排錯,它是一個與測試有聯(lián)系又有區(qū)別的概念。具體來說,測試的目的是暴露錯誤,評價程序的可靠性,而調(diào)試的目的是發(fā)現(xiàn)錯誤的位置,并改正錯誤。\r\n\r\n
31.字符串的比較strcmp函數(shù)的原型是intstrcmp(char*s1,char*s2);功能是對s1和s2所指字符串進行比較,若s1<s2返回負數(shù),若s1==s2返回0,若s1>s2返回正數(shù)。
32.66解析:本題第1個for循環(huán)是為數(shù)組arr元素賦初值。第2個for循環(huán)是分別用i=0,1,2,3給數(shù)組元素arr[0]、arr[1]、arr[2]、arr[3]賦值,再累加到變量k中,k=0+1+2+3=6。
33.x=1y=0。x=1,y=0。解析:本題程序的主體部分是switch語句的嵌套結(jié)構(gòu),當變量a的值為0時,在第一層switch-case語句中,沒有匹配的case分支。因此,x和y的值沒有變化,仍然是1和0。
34.'\0''\\0'解析:本題涉及字符數(shù)組和指針的兩個知識點:①在c語言中,字符型數(shù)組在存放字符串時會自動在末尾加上字符串結(jié)束標識符'\\0',所以題中數(shù)組str有6個元素。②ptr指向數(shù)組s仕的首地址,ptr+5是指向str[5],*(ptr+5)是引用str[5]的值,即'\\0'。
35.acrk=0p[i][j]k++k
36.str+strlen(p1)-1或str+strlen(str)-1殘str-1+strlen(str)或3tr-1+strlen(p1)t==0或!t或t=='\0'huiwen(str)str+strlen(p1)-1或str+strlen(str)-1殘str-1+strlen(str)或3tr-1+strlen(p1)\r\nt==0或!t或t=='\\0'\r\nhuiwen(str)解析:判斷回文教一般使用兩個指針或下標變量分別從檢查串的第1個字符和最后一個字符開始相向移動,并比較兩者內(nèi)容是否相同,直到中間相遇一直相同則是回文數(shù),否則不是。函數(shù)huiwen中開始定義了兩個字符指針p1和p2,并讓p1指向str的開始位置,所以p2應(yīng)該指向str的尾部,即&str[strlen(sir)-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)。
37.242036
38.邊界值分析法邊界值分析法解析:黑箱測試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)程序功能導(dǎo)出測試用例。常用的黑箱測試有等價類劃分、邊界值分析法和錯誤推測法3種。
39.i<10或i<9j%3!=0或j%3i<10或i<9\r\nj%3!=0或j%3解析:程序中的j用于存放符合條件的整數(shù),j=i,10+6;求得個位數(shù)為6的整數(shù),由此可得出程序的循環(huán)次數(shù)為i<10,所以[15]處填i<10。然后通過if語句判斷整數(shù)是否能被3整除,若不能則繼續(xù)下一次循環(huán),若能則輸出該整數(shù),所以[16]處填j%3!=0。
40.structst或studentstructst或student
41.B
42.CC?!窘馕觥寇浖こ淌侵笇⒐こ袒乃枷霊?yīng)用于軟件的開發(fā)、應(yīng)用和維護的過程,包括軟件開發(fā)技術(shù)和軟件工程管理。
43.D解析:根據(jù)結(jié)構(gòu)變量的存儲特點,p+1意味著增加地址值為結(jié)構(gòu)體數(shù)組a的一個元素所占的字節(jié)數(shù),即p++使p由a[0]指向a[1]起始地址。本題++p->n得到p指向的結(jié)構(gòu)體變量中成員n的值使之加1。因為p指向數(shù)組a起始地址,p->n的值為5,再掏打自加1運行,結(jié)果為6。
44.C解析:該題稍微難一點。主要要搞清楚以下幾點:①定義了一個指針數(shù)組char*p[2]后,程序中第一個循環(huán)for(i=0;i<2;i++)p[i]=ch[i];的作用,是使指針數(shù)組的p[0]元素(它本身是一個指針)指向了二維數(shù)組ch的第一行字符串,并使指針數(shù)組的p[1]元素指向二維數(shù)組ch的第二行字符串,這樣,就使指針數(shù)組p和二維數(shù)組ch建立起了一種對應(yīng)關(guān)系,以后對二維數(shù)組ch的某個元素的引用就有兩種等價的形式:ch[i][j]或p[i][j]。②對二維數(shù)組ch的初始化,使其第一行ch[0]中存入了字符串'6937',第二行ch[1]中的內(nèi)容為字符串'8254'。③程序中第二個循環(huán)中的循環(huán)體s=s*10+p[i][j]-\'0\';的功能是這樣的,每執(zhí)行一次,將s中的值乘以10(也即,將s中的數(shù)值整體向左移動一位,并在空出來的個位上添一個0),再將當前p[i][j]中的字符量轉(zhuǎn)換為相應(yīng)的數(shù)字,然后把這個數(shù)字加到s的個位上。④注意到內(nèi)層循環(huán)的循環(huán)條件p[i]\ue009[j]>\'\\0\'是指p[i][j]中的字符只要不是字符串結(jié)束標志\'\\0\'就繼續(xù)循環(huán),語句j+=2;是使下標j每次增加2,也即一個隔一個地從p[i]所指向的字符串中取出字符。經(jīng)過上述解析后,不難看出,該程序首先從p[0]所指向的字符串'6937'中一個隔一個地取出字符,分別是\'6\'和\'3\',然后從p[1]所指向的字符串'8254'中一個隔一個地取出字符,分別是\'8\'和\'5\',同時經(jīng)過轉(zhuǎn)換和相加運算后,結(jié)果s中的值應(yīng)該是6385。
45.D解析:線性表可以為空表,排除選項B。第一個元素沒有直接前件,最后一個元素沒有直接后件,故排除選項A。線性表的定義中,元素的排列沒有規(guī)定大小順序,故選項C也有誤,只有D項是正確的。
46.C解析:{intm=4;s+=m;}是復(fù)合語句,m=4,s+=m等價于s=s+m=0+4=4。t+=m等價于t=t+m,這里m為全局變量,值為1,t=t+m=O+1=1。
47.D解析:在題中,i的值為3,由于“case3:”后面沒有break語句,所以繼續(xù)向下執(zhí)行“case4:”后面的語句,由于“case4:”后面的語句為break強行退出switch語句,所以,本題沒有任何輸出。
48.C解析:算法是指為解決某個特定問題而采取的確定且有限的步驟。一個算法應(yīng)當具有以下五個特性:有窮性;確定性;可行性;有零個或多個輸入;有一個或多個輸出。所以,4個選項中選項C符合題意。
49.A解析:“%”是求余運算符或模運算符,“%”兩側(cè)均應(yīng)為整型數(shù)據(jù),選項A)中的x是double型數(shù)據(jù)。
50.A
51.D解析:p為指針數(shù)組,其元素分別為指向數(shù)組a的4個元素的指針。q為指向指針的指針變量,其初值為指針數(shù)組p的首地址。所以:表達式*(p[0]+1)+**(q+2)=*(a+3+1)+**(p+2)即是*(a+4)+*(a+1)=a[5]+a[2]=1+4=5。
52.A整數(shù)k對2求余數(shù)的兩個結(jié)果只能是0和1,所以選項A)表示k除以2的余數(shù),其結(jié)果是0或1。在選項B)、c)和D)中包括算術(shù)求余運算符“%”,關(guān)系等于運算符“-”和關(guān)系不等于運算符“!=”以及邏輯非運算符“!”。而邏輯運算符與賦值運算符、算術(shù)運算符、關(guān)系運算符之間從高到低的運算優(yōu)先次序是:!(邏輯“非”)、算術(shù)運算符、關(guān)系運算符、(邏輯“與”)、?(邏輯“或”)、賦值運算符。選項B)含義是判斷表達式k%2的結(jié)果是否等于1、選項C)的含義是判斷表達式k%2的結(jié)果是否不等于0,選項D)含義是判斷表達式!k%2的結(jié)果是否等于1,所以選項B)、C)和D)的禽義相同。
53.C解析:本題考查的知識點是賦值語句的基本知識。在表達式的運算中,雙目賦值運算符的格式為“變量二表達式”,單目運算符一般形式為“運算符表達式”或“表達式運算符”。常量和表達式是不能被賦值的。選項A為復(fù)合表達式,首先計算(i=2,++i)的值,然后賦值給n,故選項A正確;選項B為簡單自加運算,故選項B正確;選項C在表達式++(i+1);中,(i+1)不是變量,該表達式的值為常量,而在++運算中,其運算對象必須為變量,故選項C錯誤;選項D中為復(fù)合賦值表達式,正確.所以應(yīng)當選擇C。
54.A解析:&是按位“與”運算符,其運算規(guī)則是:參加運算的兩個運算量,如果兩個相應(yīng)的位都為1,則該位的結(jié)果值為1,否則為0。|是按位“或”運算符,其運算規(guī)則是:兩個相應(yīng)位中只要有一個為1,該位的結(jié)果為1。4轉(zhuǎn)換為二進制數(shù)為0100,3轉(zhuǎn)換為二進制數(shù)為0011,則4|3=0111,即7,4&3=0000,即0。
55.C解析:算法的執(zhí)行效率與數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)都有很緊密的關(guān)系。算法的空間復(fù)雜度是指執(zhí)行該算法需要的內(nèi)存空間,并非算法程序中指令的條數(shù)。算法一般應(yīng)該具有以下4個特征:可行性、確定性、有窮性和擁有足夠情報。其中,有窮性是指算法必須能在執(zhí)行有限個步驟之后終止,否則可能失去實際意義。
56.C解析:“p”是指針變量,指向一個地址:“*p”,為p指針所指向地址的內(nèi)容。
57.A解析:結(jié)構(gòu)化程序由3種基本結(jié)構(gòu)組成,即順序結(jié)構(gòu)、循環(huán)結(jié)構(gòu)(包括for語句、while語句及do…\u3000while語句)和選擇結(jié)構(gòu)(包括if語句和switch語句)。
58.C解析:C語言中函數(shù)的定義分為有參函數(shù)的定義和無參函數(shù)的定義。無參函數(shù)的定義形式為:
類型標識符函數(shù)名()
{說明部分
語句
}
有參函數(shù)的定義有兩種形式:
類型標識符函數(shù)名(形式參數(shù)列表)
形式參數(shù)說明
{說明部分
語句
}
或
類型標識符函數(shù)名(類型名形參1,類型名形參2,…)
{說明部分
語句
}
其中函數(shù)名為用戶定義的C語言的合法標識符,其前面的類型標識符用來說明函數(shù)值的類型,可以是C允許的任何類型,如int、char、float、double和指針類型等。當函數(shù)值為整型時類型標識符可以省略,如果函數(shù)沒有返回值,類型標識符可以是void型。當函數(shù)的形參多于一個時,各個形參之間用逗號分隔。
59.D解析:double*p,a;語句表示定義了一個指向雙精度型的指針變量p和雙精度型變量a,而語句p=&a表示將變量a的地址賦給指針變量p;scanf'('%1f',p)表示用鍵盤輸入的數(shù)賦給指針變量p所指向的地址單元中。scanf()函數(shù)要求在輸入double型數(shù)據(jù),格式控制符必須用%1f(或%1e)。否則,數(shù)據(jù)不能正確輸入。所以選項D)為正確答案。
60.A
61.A指針是用來指示一個內(nèi)存地址的變量,因此只能將地址賦給指針變量,而不能是整數(shù)或浮點數(shù)。
62.Cf函數(shù)的功能是對形參a的各個成員用結(jié)構(gòu)體變量b的各個成員進行賦值后,然后返回變量a。
63.C在c語言中,數(shù)組元素下標是從0開始的;指針變量P指向數(shù)組的首地址。for循環(huán)語句中,指針變量P始終指向數(shù)組的首地址,因而執(zhí)行循環(huán)賦值語句后數(shù)組各元素的值均變?yōu)?。
64.D
65.B二維數(shù)組的初始化有以下幾種形式:①分行進行初始化;②不分行進行初始化;③部分數(shù)組元素進行初始化;④省略第一維的定義,不省略第二維的定義。選項B)等號右邊分了3行,大于等號左邊數(shù)組的行數(shù)2。
66.C解析:函數(shù)形參和實參分別占用不同的內(nèi)存單元,改變形參的值不會影響對應(yīng)實參的值,選項A)正確。指針類型的函數(shù)可以返回地址值,選項B)正確。在文件stdio.h中,NULL被定義為void型的指針,選項D)也正確。指針變量的值只能是存儲單元地址,而不能是一個整數(shù),選項C)錯誤。
67.B
68.C解析:在關(guān)系模型數(shù)據(jù)庫中,基本結(jié)構(gòu)是二維表,這種二維表稱為關(guān)系。關(guān)系的列稱為屬性,一個具有N個屬性的關(guān)系稱為N元關(guān)系。注意:各種關(guān)系查詢語言與過程性語言和非
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年股權(quán)轉(zhuǎn)讓合同股權(quán)比例與轉(zhuǎn)讓價格
- 2024建筑水電工程合同書
- 2024年銷售中介服務(wù)條款正式版協(xié)議版B版
- 2025年度新能源發(fā)電項目投資與運營管理合同3篇
- 2024年項目股份轉(zhuǎn)移及合作意向合同一
- 2024年舞臺燈光維修保養(yǎng)協(xié)議版B版
- 2025年倉儲物流安全管理規(guī)范執(zhí)行合同3篇
- 2024年高效農(nóng)業(yè)設(shè)備定制與供應(yīng)合同
- 2025年度食品鋪貨與餐飲行業(yè)合作合同3篇
- 職業(yè)學院學生外出活動管理規(guī)定
- 冬春季呼吸道傳染病防控
- 數(shù)學-2025年高考綜合改革適應(yīng)性演練(八省聯(lián)考)
- 2024-2025學年安徽省六安市金安區(qū)三上數(shù)學期末調(diào)研試題含解析
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應(yīng)用實踐指導(dǎo)材料之10:“5領(lǐng)導(dǎo)作用-5.4創(chuàng)新文化”(雷澤佳編制-2025B0)
- 【物 理】2024-2025學年八年級上冊物理寒假作業(yè)人教版
- 交通運輸安全生產(chǎn)管理規(guī)范
- 2024年期貨居間業(yè)務(wù)代理合同范本2篇
- 2024年醫(yī)療器械經(jīng)營質(zhì)量管理規(guī)范培訓(xùn)課件
- 2024年計算機二級WPS考試題庫380題(含答案)
- 化妝品原料名稱對照及用途
- 雙梁門式起重機計算書
評論
0/150
提交評論