版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
2021年遼寧省錦州市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.簡單的交換排序方法是()。
A.快速排序B.選擇排序C.堆排序D.冒泡排序
2.有如下程序:main{intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++.b++;}printf("a=%d,b=%d\n",a,b);}該程序的輸出結(jié)果是()。A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2
3.有以下程序:#include<stdio.h>#deflneS1(z)4*z+4*(z)#defineS2(x,y)4*(x)*(y)+y*xmain(){inta=1,b=2;printf(“%d,”,S1(a+b));printf(“%d,”,S2(a,b)+S1(3));printf(“%d”,S2(3+a,b+3));}程序運行后的輸出結(jié)果是()。
A.18,34,100B.24,34,92C.24,34,100D.18,34,92
4.以下敘述中,不正確的是()。
A.使用staticfloata定義的外部變量存放在內(nèi)存中的靜態(tài)存儲區(qū)
B.使用floatb定義的外部變量存放在內(nèi)存中的動態(tài)存儲區(qū)
C.使用staticfloatc定義的內(nèi)部變量存放在內(nèi)存中的靜態(tài)存儲區(qū)
D.使用floatd定義的內(nèi)部變量存放在內(nèi)存中的動態(tài)存儲區(qū)
5.有以下程序
#include<stdio.h>
intfun(intx,inty)
{if(x==y)return(x);
elsereturn((x+y)/2);
}
main()
{inta=4,b=5,c=6;
printf("%d\n",fun(2*a,fun(b,c)));
}
程序運行后的輸出結(jié)果是A.3B.6C.8D.12
6.對于“if(表達式)語句”,以下敘述正確的是()。
A.“表達式”不能是變量
B.“表達式”的值只能是整數(shù)值
C.“表達式”可以是常量
D.“表達式”中不可以出現(xiàn)字符型變量的比較
7.有如下程序段:
inta=14,b=15,x;
charc='A';
x=(a&&b)&&(c<'B'):
執(zhí)行該程序后,x的值為()。A.A.trueB.falseC.0D.1
8.對于移動平均算法,是計算某變量之前n個數(shù)值的算術(shù)平均,正確的說法是()
A.空間復(fù)雜度是O(1)B.空間復(fù)雜度是O(n)C.空間復(fù)雜度是O(logn)D.空間復(fù)雜度是O(nlogn)
9.若有以下程序段intm=0xabc,n=0xabc;m-=n;printf("%X\n",m);執(zhí)行后輸出結(jié)果是A.0X0B.0x0C.0D.0XABC
10.
11.下列程序的輸出結(jié)果是()。#include<stdio.h>main{structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un))}A.6,2B.6,4C.8,4D.8,6
12.設(shè)x,y,t均為int型變量,執(zhí)行語句:
x=y=3;
t=++x||++y;
完成后,y的值為A.A.不確定B.4C.3D.1
13.
14.sizeof(float)是()。A.一個雙精度型表達式B.一個整型表達式C.一種函數(shù)調(diào)用D.一個不合法的表達式
15.軟件生命周期是指()。A.軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程
B.軟件從需求分析、設(shè)計、實現(xiàn)到測試完成的過程
C.軟件的開發(fā)過程
D.軟件的運行維護過程
16.已知一個有序表為(15,19,30,33,49,50,65,88,93,126,164),當(dāng)二分查找值為126的元素時,檢索成功需進行的比較次數(shù)為()。
A.1次B.2次C.3次D.4次
17.下列有關(guān)圖的遍歷說法中,不正確的是()
A.圖的遍歷必須用遞歸實現(xiàn)
B.基本遍歷算法兩種:深度遍歷和廣度遍歷
C.有向圖和無向圖都可以進行遍歷操作
D.圖的遍歷算法可以執(zhí)行在有回路的圖上
18.
19.
20.有以下程序:#include<stdio.h>,main(){intS;scanf("%d",&s);while(s>O){switch(s){casel:printf("%d",s+5);case2:printf("%d",s+4);break;case3:printf("%d",s+3);default:("%d",s+1);break;}scanf("%d",&s);}}運行時,若輸入123450<回車>,由輸出結(jié)果是()。A.6566456B.66656C.66666D.6666656
二、2.填空題(20題)21.在關(guān)系運算中,【】運算是在給定關(guān)系的某些域上進行的運算。
22.對于圖書管理數(shù)據(jù)庫,將圖書表中“人民郵電出版社”的圖書的單價漲價5%。請對下面的SQL語句填空:UPDATE圖書______WHERE出版單位="人民郵電出版社"
23.在面向?qū)ο蠓椒ㄖ?,【】描述的是具有相似屬性與操作的一組對象。
24.軟件開發(fā)環(huán)境是全面支持軟件開發(fā)全過程的______的集合。
25.下列表達式用于判斷y是否為閏年。閏年的判斷條件是:年號能被4整除但不能被100整除或年號能被400整除,請?zhí)羁誣_____。
26.下列程序的輸出結(jié)果是______。
main()
{inta=1,b=2,c=3,t=0;
if(a<B){t=a;a=b;b=t;}
if(a<C){t=a;a=c;c=t;}
printf("%d,%d,%d\n",a,b,C);
}
27.已知函數(shù)isaplha(ch)的功能是判斷變量ch是否是字母,若是,則該數(shù)值為1,否則為0。下面程序執(zhí)行后的輸出結(jié)果是()。
#include<ctype.h>
#include<string.h>
voidfun(chars[])
{inti,j;
for(i=0,j=0;s[i];i++)
s[j]='\0';
}
main()
{charss[80]="goodmorning";
fun(ss);
printf("%s",ss);
}
28.診斷和改正程序中錯誤的工作通常稱為【】。
29.十進制數(shù)111用八位二進制數(shù)表示為【】。
30.下列程序中的數(shù)組a包括10個整數(shù)元素,分別將前項和后項之和存入數(shù)組b,并按每行4個元素輸出數(shù)組b。請?zhí)羁铡?/p>
#include<stdioh>
main()
{inta[10],b[10],i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
for(i;0;i<9;i++)
{if(i%4==0)primf("\n");
printf("%3d",b[i];
}
}
31.以下程序的運行結(jié)果是______。
#include<stdio.h>
longfib(intg)
{switch(g)
{case0:return0;
case1:
case2:return1;}
return(fib(g-1)+fib(g-2));}
main()
{longk;
k=fib(5);
printf("k=%51d\n",k);}
32.若有以下程序
intf(intx,inty)
{return(y-x)*x;}
main()
{inta=3,b=4,c=5,d;
d=f(f(3,4),f(3,5));
ptintf("%d\n",D);
執(zhí)行后輸出結(jié)果是______。
33.下列語句的輸出結(jié)果是【】。
chara=3;printf("%d,%o,%x,%u\n",a,a,a,a);
34.以下程序運行后的輸出結(jié)果是【】
#include<stdio,h>fun(inta)
{intb=0;staticintc=3;
b++;c++;
return(a+b+c);
}
main()
inti,a=5;
for(i=0;i<3;i++)prinff("%d%d",i,fun(a));
printf("\n");
}
35.若從鍵盤輸入58,則以下程序輸出的結(jié)果是______。
main{)
{inta;
scanf("%d",&a);
if(a>50)printf("%d",a);
if(a>40)printf("%d",a);
if(a>30)printf("%d",a);
}
36.下列程序的輸出結(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");
}
37.以下程序運行后的輸出結(jié)果是【】。
main()
{intp[7]{11,13,14,15,16,17,18};
inti=0,j=0;
while(i<7&&p[i]%2==1)j+=p[i++];
printf("%d\n",j);
}
38.將代數(shù)式轉(zhuǎn)換成程序設(shè)計中的表達式為【】。
39.匯編程序和編譯程序翻譯的目標(biāo)程序需經(jīng)【】連接成可執(zhí)行的程序。
40.若有定義語句chars[100],d[100];intj=0,i=0;且s中已賦字符串,請?zhí)羁找詫崿F(xiàn)拷貝。(注:不使用逗號表達式)
while(s[i])(d[j]=【】;j++;}
d[j]=0;
三、1.選擇題(20題)41.有以下程序:#include<stdio.h>main(){FILE*fp;inti,k,n;fp=fopen("data.dar","w+");for(i=1;i<6;i++){fprintf(fp,"%d",i);if(i%3==0)fprintf(fp,"\n");}rewind(fp);fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);}程序運行后的輸出結(jié)果是()。
A.00B.12345C.14D.12
42.設(shè)有定義語句:charc1=92,c2=92;,則以下表達式中值為零的是()。
A.c1c2
B.c1&c2C.~c2D.c1|c2
43.若int類型數(shù)據(jù)占兩個字節(jié),則下列語句intk=-1;printf("%d,%u\n",k,k);的輸出為()
A.-1,-1B.-132,767C.-132,768D.-165,535
44.______是構(gòu)成C語言程序的基本單位。
A.函數(shù)B.過程C.子程序D.子例程
45.數(shù)據(jù)庫設(shè)計包括兩個方面的設(shè)計內(nèi)容,它們是()
A.概念設(shè)計和邏輯設(shè)計B.模式設(shè)計和內(nèi)模式設(shè)計C.內(nèi)模式設(shè)計和物理設(shè)計D.結(jié)構(gòu)特性設(shè)計和行為特性設(shè)計
46.下列有關(guān)數(shù)據(jù)庫的描述,正確的是
A.數(shù)據(jù)處理是將信息轉(zhuǎn)化為數(shù)據(jù)的過程
B.數(shù)據(jù)的物理獨立性是指當(dāng)數(shù)據(jù)的邏輯結(jié)構(gòu)改變時,數(shù)據(jù)的存儲結(jié)構(gòu)不變
C.關(guān)系中的每一列稱為元組,一個元組就是一個字段
D.如果一個關(guān)系中的屬性或?qū)傩越M并非該關(guān)系的關(guān)鍵字,但它是另一個關(guān)系的關(guān)鍵宇,則稱其為本關(guān)系的外關(guān)鍵字
47.下列字符串是用戶自定義標(biāo)識符的是______。
A._w1B.3_xyC.intD.LINE-3
48.下面程序段中的循環(huán)體的執(zhí)行次數(shù)是()。for(i=4;i<0;i--)for(j=1;j<=4;j++)sum=sum+j;
A.4B.0C.12D.16
49.有以下程序:main(){inti=1,j=1,k=2;if((j++‖k++)&&i++)printf("%d,%d,%d\n",i,j,k);}執(zhí)行后的輸出結(jié)果是______。
A.1,1,2B.2,2,1C.2,2,2D.2,2,3
50.以下選項中,非法的字符常量是______。
A.'\t'B.'\17'C.\nD.'\xaa'
51.以下敘述中,正確的是______。
A.do…while語句構(gòu)成的循環(huán)不能用其他語句構(gòu)成的循環(huán)來代替
B.do…while語句構(gòu)成的循環(huán)只能用break語句退出
C.用do…while語句構(gòu)成的循環(huán),在while后的表達式為非零時結(jié)束循環(huán)
D.用do…while語句構(gòu)成的循環(huán),在while后的表達式為零時結(jié)束循環(huán)
52.設(shè)有定義:charp[]={'1','2','3'},*q=p;,以下不能計算出一個char型數(shù)據(jù)所占字節(jié)數(shù)的表達式是
A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])
53.數(shù)據(jù)結(jié)構(gòu)中,與所使用的計算機無關(guān)的是數(shù)據(jù)的()
A.存儲結(jié)構(gòu)B.物理結(jié)構(gòu)C.邏輯結(jié)構(gòu)D.線性結(jié)構(gòu)
54.有以下程序:#include<stdio.h>unionpw{inti;charch[2];}a;main(){a.ch[0]=13;a.ch[1]=0;printf("%d\n",a.i);}程序的輸出結(jié)果是()。
A.13B.14C.208D.209
55.閱讀下列程序段,則程序的輸出結(jié)果為#include"stdio.h"#defineM(X,Y)(X)*(Y)#defineN(X,Y)(X)/(Y)main(){inta=5,b=6,c=8,k;k=N(M(a,b),c);printf("%d\n",k);}
A.3B.5C.6D.8
56.有如下程序段:inta=14,b=15,x;charc='A';x=(a&&b)&&(c<'B');執(zhí)行該程序段后,x的值為()。
A.tureB.假C.0D.1
57.fgetc函數(shù)的作用是從指定文件讀入—個字符,該文件的打開方式必須是______。
A.只讀B.追加C.讀或讀寫D.以上均正確
58.在長度為64的有序線性表中進行順序查找,最壞情況下需要比較的次數(shù)為A.63B.64C.6D.7
59.有以下程序structs{intx,y;}data[2]={10,100,20,200};main()structs*p=data;printf("%d\n",++(p->x));程序運行后的輸出結(jié)果是
A.10B.11C.20D.21
60.若有如下程序段:structstudent{intnum;floatscore;}stu[3]={{10,85},{60,58},{32,23}};main(){structstudent*t;t=stu;}則下面表達式中值為58的是()。
A.(*t).numB.*(t++)->numC.(*++t)scoreD.(++t)->score
四、選擇題(20題)61.以下選項中,能用作數(shù)據(jù)常量的是()。
A.115LB.0118C.1.5elD.0115
62.有以下程序當(dāng)執(zhí)行程序時,按下列方式輸入數(shù)據(jù)(從第l列開始,<CR>代表回車,注意;回車也是--+qz符)12<CR>34<CR>則輸出結(jié)果是()。
A.123B.12C.1234D.1234
63.
執(zhí)行下列程序后,輸出的結(jié)果是()。
#include<stdio.h>
#defineS(X)X*X
voidmain
{inta=9,k=3,m=2;
a/=S(k+m)/S(k+m):
printf("%d",a);
}
A.1B.4C.9D.0
64.設(shè)A為存放(短)整型的一維數(shù)組,如果A的首地址為P,那么A中第i個元素的地址為()。
A.P+i*2B.P+(i-1)*2C.P+(i-1)D.P+i
65.以下不能正確表示代數(shù)式4cd/ab的C語言表達式縣().
A.4*c*d/a/bB.c*d/a/b*4C.c/a/b*d*4D.4*c*d/a*b
66.有以下程序
67.
68.表達式'5'-'1'的值是()。A.A.整數(shù)4B.字符4C.表達式不合法D.字符6
69.軟件生命周期是指()。A.軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程
B.軟件從需求分析、設(shè)計、實現(xiàn)到測試完成的過程
C.軟件的開發(fā)過程
D.軟件的運行維護過程
70.假定X和Y為double型,則表達式x=2,y=x+3/2的值是()。
A.3.500000B.3C.2.000000D.3.000000
71.(38)索引屬于()
A.模式
B.內(nèi)模式
C.外模式
D.概念模式
72.軟件生命周期可分為定義階段、開發(fā)階段和維護階段。詳細設(shè)計屬于()。
A.定義階段B.開發(fā)階段C.維護階段D.上述三個階段
73.
74.有以下程序:
程序運行后的結(jié)果是()。
A.6,4,3,2,1
B.6,5,4,3,2
C.5,4,3,2,1
D.10,4,3,2,l
75.讀取二進制文件的函數(shù)調(diào)用形式為:fread(buffer,size,Count,fp);,其中buffed
代表的是()。
A.一個內(nèi)存塊的首地址,代表讀入數(shù)據(jù)存放的地址
B.一個整型變量,代表待讀取的數(shù)據(jù)的字節(jié)數(shù)
C.一個文件指針,指向待讀取的文件
D.一個內(nèi)存塊的字節(jié)數(shù)
76.
有以下程序:
#include<stdio.h>
main
{intx=4,y;
do
{y=x;
if(!y)printf("x");
else
printf("y"):
x--;
}while(x);
}
程序的輸出結(jié)果是()。
A.xyyxB.yyyyC.yyxxD.yxyx
77.以下選項中敘述錯誤的是()。
A.C程序函數(shù)中定義的賦有初值的靜態(tài)變量,每調(diào)用一次函數(shù),賦一次初值
B.在同一函數(shù)中,各復(fù)合語句內(nèi)可以定義變量,其作用域僅限本復(fù)合語句內(nèi)
C.C程序函數(shù)中定義的自動變量,系統(tǒng)不自動賦確定的初值
D.C程序函數(shù)的性能不可以說明為static型變量
78.若有定義語句:
79.若以下選項中的變量已正確定義,則正確的賦值語句是()。
A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3
80.軟件開發(fā)中需求分析的主要任務(wù)是()。
A.定義和描述目標(biāo)系統(tǒng)“做什么”B.獲取需求C.給出軟件解決方案D.需求評審
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc的功能是:從字符串str中,刪除所有大寫字母F。
請修改程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
voidproc(char*str)
{
inti,j;
//****found****
for(i=j=0;str[i]一0;i++)
if(str[i]!=F)
//****found****
str[i]=str[i];
str[j]=\0;
}
voidmain
{
charstr[80];
printf("\nEnterastring:");
gets(str);
printf("Theoriginalstring:");
puts(str);
proc(str);
printf("Thestringafterdeleted:");
puts(str);
printf("\n\n");}
六、程序設(shè)計題(1題)82.請編寫函數(shù)proc(),它的功能是計算:s=(1n(1)4-1n(2)+In(3)4-…+1n(m))0.5在C語言中可調(diào)用log(n)函數(shù)求1n(n)。例如,若n1的值為30,則proc()函數(shù)值為8.640500。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
參考答案
1.D解析:所謂的交換類排序方法是指借助數(shù)據(jù)元素之間的互相交換進行排序的一種方法,包括冒泡排序和快速排序,冒泡排序是一種最簡單的交換排序方法,它通過相鄰元素的交換,逐步將線性表變成有序。
2.A當(dāng)x為1時,執(zhí)行case1,a自加等于1,因為case1后沒有break,接著執(zhí)行case2,此時a的值為2,b自加為1,故選擇A選項。
3.D程序中S1和S2都是宏定義。S1(a+b)宏展開后的表達式為4*a+b+4*(a+b),即4*1+2+4*(1+2),結(jié)果為18;S2(a,b)宏展開后的表達式為4*(a)*(b)+b*a,即4*(1)*(2)+2*1,結(jié)果為10;S1(3)宏展開后的表達式為4*3+4*(3),結(jié)果為24;32(3+a,b+3)宏展開后的表達式為4*(3+a)*(b+3)+b+3*3+a,即4*(3+1)*(2+3)+2+3*3+1,結(jié)果為92。最終輸出:18,34,92。故本題答案為D選項。
4.B
5.B
6.CC語言中沒有規(guī)定“if(表達式)語句”中的“表達式”的形式,其可以是任意合法的表達式。故本題答案為C選項。
7.D在C語言中,當(dāng)表達式成立時用l表示,不成立時用0表示,即x=(a&&b)&&(c<'B')=(14&&15)&&('A'<'B')=1&&1=1,故選擇D選項。
8.A
9.C解析:格式字符x或x是以十六進制無符號形式輸出整型數(shù)(不帶前導(dǎo)0x或OX)。對于x用abc輸出,X用ABC輸出。
10.D
11.B本題主要考查結(jié)構(gòu)和聯(lián)合內(nèi)存使用的一些區(qū)別:結(jié)構(gòu)中每個成員相互獨立,一個結(jié)構(gòu)所占內(nèi)存空間的大小是結(jié)構(gòu)中每個成員所占內(nèi)存空間大小的總和;聯(lián)合所占用內(nèi)存空間是指最長的成員占用的空間。
12.Ct=++x或++y,當(dāng)++x不為0的時候,即++x為真,則不需要再繼續(xù)判斷++y,那么y就不再執(zhí)行自加,因此y=3.
13.A
14.B該函數(shù)用于數(shù)據(jù)類型和變量。注意:sizeof操作符不能用于函數(shù)、不完全類型或位字段。不完全類型指具有未知存儲大小的數(shù)據(jù)類型,如未知存儲大小的數(shù)組類型、void類型等。
15.A通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為軟件生命周期。也就是說,軟件產(chǎn)品從考慮其概念開始,到該軟件產(chǎn)品不能使用為止的整個時期都屬于軟件生命周期。
16.C
17.A
18.D
19.D
20.A根據(jù)題意,當(dāng)s=1時,輸出65;當(dāng)s=2時,輸出6;當(dāng)S=3時,則輸出64;當(dāng)S=4時,輸出5;當(dāng)s=5時,輸出6;當(dāng)s=0時,程序直接退出。所以最后答案為6566456,A選項正確。
21.投影投影解析:在關(guān)系運算中,投影運算是在給定關(guān)系的某些域上進行的運算。
22.更新表中元組的值,使用UPDATE命令,一次可以更新表中的一個或多個屬性值。UPDATE短語之后指定更新數(shù)據(jù)所屬的表,將新的屬性值或表達式賦值給對應(yīng)的屬性名(SET單價=單價*1.05),并置于SET短語之后。要求對人民郵電出版社的圖書漲5%,需要用WHERE短語對元組進行限制,即對符合條件的元組進行更新。\r\n\r\n
23.類類解析:在面向?qū)ο蠓椒ㄖ?,類描述的是具有相似屬性與操作的一組對象。
24.軟件工具軟件工具解析:軟件開發(fā)環(huán)境是各類軟件開發(fā)工具的集合體。
25.(y%4==0)&&(y%100!=0)||(y%400==0)(y%4==0)&&(y%100!=0)||(y%400==0)解析:考查邏輯表達。年號能被4整除(y%4==0)但不能被100整除(y%100!=0),兩者是與的關(guān)系,年號能被400整除即y%400==0,與前兩項是或的關(guān)系。
26.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。
27.goodmorninggoodmorning解析:子函數(shù)fun(chars[])的作用是將字符數(shù)組s中除去字母以外的所有其他字符都去掉,然后將字母仍按原來的順序存在數(shù)組s中。在主函數(shù)中調(diào)用fun(ss),是將“goodmorning”中所有的非字母去掉,在這里就是去掉空格,然后輸出ss。
28.程序調(diào)試程序調(diào)試解析:程序調(diào)試的任務(wù)是診斷和改正程序中的錯誤。程序調(diào)試與軟件測試不同,軟件測試是盡可能多地發(fā)現(xiàn)軟件中的錯誤。先要發(fā)現(xiàn)軟件的錯誤,然后借助于調(diào)試工具找出軟件錯誤的具體位置。軟件測試貫穿整個軟件生命期,而調(diào)試主要在開發(fā)階段。
29.11011111101111解析:本題通過除2取余法即可求出十進制數(shù)111所對應(yīng)的二進制數(shù)1101111。
30.b[i]=a[i]+a[i+1]b[i]=a[i]+a[i+1]解析:將數(shù)組a中元素a[i]與a[i+1]值相加后的值賦予數(shù)組b中元素b[i]小即可實現(xiàn)將一個數(shù)組的前項和后項之和存入另一數(shù)組。
31.k=5k=5解析:本題主要考查了函數(shù)的遞歸調(diào)用方法。g=0或g=1或g=2是遞歸的終止條件,然后用回代的方法從一個已知值推出下一個值,直到計算出最終結(jié)果。
32.99解析:在主函數(shù)中函數(shù)f(f(3,4),f(3,5))的返回值賦給d。函數(shù)的第一個參數(shù)為f(3,4)的返回值,函數(shù)f(9,4)返回值為(4-3)*3=3,f(3,5)返回值為(5-3)*3=6,那么函數(shù)f(f(3,4),f(3,5))等價于函數(shù)f(3,6)其返回值為(6-3)*3=9。因此d被賦值為9;所以輸出9。
33.31371f3131,37,1f,31解析:此題考查了printf函數(shù)的格式字符,題中d是以十進制形式輸出,o是以八進制形式輸出,x是以十六進制形式輸出,u以不帶符號的十進制數(shù)輸出。
34.1011121210111212解析:用static關(guān)鍵字聲明的變量稱為靜態(tài)局部變量。靜態(tài)局部變量只在編譯時賦一次初值,以后再次調(diào)用函數(shù)時不再重新賦初值,而是保留上次函數(shù)調(diào)用結(jié)束時的值。程序中的變量c為靜態(tài)變量,當(dāng)再次調(diào)用fun函數(shù)時,變量c不再被賦初值,變量c的值為上次調(diào)用fun函數(shù)時所保留下來的值,具體在程序運行過程中的體現(xiàn)如下:
當(dāng)i=0時,第一次調(diào)用fun(5),這時a=5,b=0,c=3,執(zhí)行b++,c++,得到b=1,c=4,則a+b+c=10,返回主函數(shù)輸出010;當(dāng)i=1時,第二次調(diào)用fun(5),這時a=5,b=0,c=4,執(zhí)行b++,c++,得到b=1,c=5,則a+b+c=11,返回主函數(shù)輸出111;當(dāng)i=2時,第三次調(diào)用fun(5),這時a=5,b=0,c=5,執(zhí)行b++,c++,得到b=1,c=6,則a+b+c=12,返回主函數(shù)輸出212;當(dāng)i=3時,循環(huán)結(jié)束,所以輸出結(jié)果為:010111212。
35.585858585858解析:在程序中,執(zhí)行scanf()語句后,a被賦值為58。接著執(zhí)行第一個if語句,因為,a=58>50,執(zhí)行第一個訂語句后面的輸出語句,輸出58;接著執(zhí)行第二個if語句,因為,a=58>4O,執(zhí)行第二個if語句后面的輸出語句,輸出58;接著執(zhí)行第三個if語句,因為,a=58>30,執(zhí)行第三個if語句后面的輸出語句,輸出58,所以最后的輸出為585858。
36.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逆序輸出。
37.2424解析:本題主函數(shù)中首先定義了一個長度為7的數(shù)組,然后用一個while循環(huán)引用數(shù)組的元素,當(dāng)i大于7或者p[i]為偶數(shù)時,循環(huán)結(jié)束。顯然當(dāng)i=2時,p[2]=14為偶數(shù)時,循環(huán)結(jié)束,此時j的值為j=p[0]+p[1]=24。
38.SQRT(x2+y2)/(a+b)
39.裝配程序裝配程序
40.s[i++]s[i++]解析:本題中為了能實現(xiàn)字符串的拷貝,需要使字符數(shù)組s從頭到尾依次遍歷其所有元素.本題應(yīng)使用i的自增后置來實現(xiàn)。
41.D解析:程序首先定義了一個文件指針fp,并使用fopen()函數(shù)以“w+”方式新建一個可讀寫文件“data.dat”。然后使用一個for循環(huán),循環(huán)變量i從1遞增到5,在循環(huán)體中每次寫入循環(huán)變量i的值和4個空格,當(dāng)i能被3整除的時候?qū)懭胍粋€換行符。所以循環(huán)結(jié)束時,文件中的內(nèi)容應(yīng)該為:
123
45
接下來程序使用rewind()函數(shù),將文件的讀寫指針調(diào)回起始位置。并調(diào)用fscanf()函數(shù)從文件中讀取兩個整數(shù)到變量k和n。所以最終輸出應(yīng)該為:12。故本題選D。
42.A解析:選項A為異或運算符,如果參加運算的兩個位相同,結(jié)果為0,否則為1。顯然選項A中參加運算的c1和c2相同,故其值為0。選項B為位與運算,如果參加運算的兩位都為1,則結(jié)果為1,否則結(jié)果為0,選項B中參加運算的c1和c2都為真,所以該結(jié)果為1。選項C為取反運算,用來對一個二進制取反,顯然c2取反后不為0,選項D為位或運算,參加運算的兩位只要有一個為1,那么運算結(jié)果為1,顯然參加運算的c1和c2都不為0,故運算結(jié)果不為0。所以,4個選項中選項A符合題意。
43.D
44.A解析:C程序是由函數(shù)構(gòu)成的?!獋€C源程序至少包含—個main函數(shù),也可以包含—個main函數(shù)和若干個其他函數(shù),因此,函數(shù)是C程序的基本單位。
45.A解析:模式設(shè)計和內(nèi)模式設(shè)計是概念設(shè)計的兩種方法。物理設(shè)計是根據(jù)特定的計算機系統(tǒng),對數(shù)據(jù)的存儲結(jié)構(gòu)和存取方法進行設(shè)計,從而實現(xiàn)從邏輯結(jié)構(gòu)到物理結(jié)構(gòu)的轉(zhuǎn)換。從系統(tǒng)開發(fā)的角度來看,結(jié)構(gòu)特性設(shè)計和行為特性-設(shè)計是數(shù)據(jù)庫應(yīng)用系統(tǒng)所具有的兩個特性。結(jié)構(gòu)特性的設(shè)計,設(shè)計各級數(shù)據(jù)庫模式(靜態(tài)特性):行為特性的設(shè)計,改變實體及其特性,決定數(shù)據(jù)庫系統(tǒng)的功能(動態(tài)特性)。
46.D解析:數(shù)據(jù)處理是指將數(shù)據(jù)轉(zhuǎn)換成信息的過程,故選項A)敘述錯誤;數(shù)據(jù)的物理獨立性是指數(shù)據(jù)的物理結(jié)構(gòu)的改變,不會影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),故選項B)敘述錯誤;關(guān)系中的行稱為元組,對應(yīng)存儲文件中的記錄,關(guān)系中的列稱為屬性,對應(yīng)存儲文件中的字段,故選項C)敘述錯誤。
47.A解析:標(biāo)識符是由字母或下劃線打頭,由字母、數(shù)字、下劃線組成的字符串,包括關(guān)鍵字、編譯預(yù)處理命令和用戶自定義標(biāo)識符3種,選項B、D不是合法的標(biāo)識符,選項C是關(guān)鍵字。
48.B解析:本題是一個雙重循環(huán),而外循環(huán)的循環(huán)條件i<O在剛開始的時候就不滿足(i的初值為4),所以循環(huán)體一次也不會執(zhí)行。故應(yīng)該選擇B。
49.C解析:本題考查“邏輯或”運算的特例。本題中if語句的條件表達式為(j++||k++)&&i++,首先計算表達式(j++||k++)的值,++運算符位于右側(cè),因此先取j、k當(dāng)前值進行運算,因j=1,所以表達式(j++||k++)的值為真,k++表達式不再執(zhí)行,故執(zhí)行完表達式(j++||k++)&&i++后,j=2、k=2、i=2。
50.C解析:C語言中字符常量是以單引號括起來的單個字符,或為以“\\”與三位八進制數(shù)值或兩位十六進制數(shù)值代替單個字符。
51.D
52.A解析:在本題中,p和q同為指向字符類型數(shù)據(jù)的指針。*q和p[0]同為字符型數(shù)據(jù)。選項B)、C)和D)都符合題目的要求;選項A)計算得出的是指針類型數(shù)據(jù)所占的內(nèi)存字節(jié)數(shù)。
53.Cc)【解析】數(shù)據(jù)的邏輯結(jié)構(gòu)反映的是數(shù)據(jù)元素之間的邏輯關(guān)系,與使用的計算機無關(guān)。
54.A解析:本題中,首先定義了一個共用體pw,其中有兩個域:整型變量i和字符數(shù)組ch,因為共用體中的域是共享內(nèi)存空間的,又?jǐn)?shù)組的元素有低到高存儲:ch[0]在低字節(jié),ch[1]在高字節(jié)。整型變量i占兩個字節(jié),高位與ch[1]共用存儲空間,低位與ch[0]共用存儲空間,而高位ch[1]的值為0,所以輸出的成員變量i的值就是ch[0]的值13。
55.A解析:帶參數(shù)的宏定義命令行形式如下:#define宏名(形參表)替換文本。首先進行M的宏替換,之后再進行N的宏替換,替換后的表達式為(a)*(b)/(C)。
56.D解析:本題考查邏輯與運算符的用法,在表達式x=(a&&b)&&(c<'B')中,先判斷a&&b,邏輯與條件的兩邊都為真,而c<'B'是成立的,所以該表達式的值為1。
57.D解析:fgetc函數(shù)是指從指定的文件讀入—個字符,該文件必須是以讀或讀寫方式打開的。fgetc函數(shù)的調(diào)用形式為:ch=fgetc(fp);。
58.B解析:在長度為64的有序線性表中,其中的64個數(shù)據(jù)元素是按照從大到小或從小到大的順序排列有序的。在這樣的線性表中進行順序查找,最壞的情況就是查找的數(shù)據(jù)元素不性表中或位于線性表的最后。按照線性表的順序查找算法,首先用被查找的數(shù)據(jù)和線性表的第一個數(shù)據(jù)元素進行比較,若相等,則查找成功,否則,繼續(xù)進行比較,即和線性表的第二個數(shù)據(jù)元素進行比較。同樣,若相等,則查找成功,否則,繼續(xù)進行比較。依次類推,直到性表中查找到該數(shù)據(jù)或查找到線性表的最后一個元素,算法才結(jié)束。因此,在長度為64的有序線性表十進行順序查找,最壞的情況下需要比較64次。因此,本題的正確答案為選項B。
59.B解析:本題中定義了一個結(jié)構(gòu)體數(shù)組data[2]并初始化,主函數(shù)中定義了一個結(jié)構(gòu)體類型指針變量并讓它指向data的首地址,由于p指向第一個元素的地址,所以p->x相當(dāng)于data[0].x即為10,所以++(p->x)后的值為11.所以,4個選項中選項B符合題意。
60.D解析:本題是以結(jié)構(gòu)體指針的方式防問結(jié)構(gòu)體數(shù)組中的元素。main()函數(shù)之前聲明了一個結(jié)構(gòu)體,并在聲明同時定義了一個全局結(jié)構(gòu)體數(shù)組stu[3]。主函數(shù)中,第一行定義了一個該結(jié)構(gòu)體的指針t,然后讓t指向stu,即t指向的是數(shù)組stu的第一個元素。選項A提取的是數(shù)組第一個元素的num成員,值為10,不符合題意。選項B使用了一個后綴自增運算符,使t指向第二個元素,但t++表達式返回的還是第一個元素的指針,故結(jié)果與選項A相同,不符合題意,選項C語法錯誤編譯不會通過。故應(yīng)該選擇D。
61.A
62.A按照從鍵盤輸入的數(shù)據(jù)可以判斷字符1賦給了變量a,字符2賦給了變量b,字符<cR>即回車賦給了變量e,字符3賦給了變量d。因此打印輸出的結(jié)果為選項A)。
63.D
\n本題主要考查帶參數(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。
\n
64.B
65.Dc語言中算術(shù)運算符的結(jié)合性均為自左向右。選項D中表達式計算結(jié)果是4cdb/a,和題目要求的代數(shù)式不一致,因此選項D不能正確表示題目所給代數(shù)式的內(nèi)容。
66.A第一次循環(huán)i值為3,j值分別為l和2,所以輸出為4和5;第二次循環(huán)i值為2,j值分別為l和2,所以輸出為3和4;第三次循環(huán)i值為l,j值分別為l和2,所以輸出為2和3,答案選擇A)。
67.C
68.A在c語言中,字符都是變?yōu)槠鋵?yīng)的ASCII碼值來參加算術(shù)運算的,但字符間的相對位置關(guān)系還是不變的,字符5和字符1的ASCII碼值相差仍是4。
69.A通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為軟件生命周期。也就是說,軟件產(chǎn)品從考慮其概念開始,到該軟件產(chǎn)品不能使用為止的整個時期都屬于軟件生命周期。
70.D本題考查C語言中變量類型的轉(zhuǎn)換。
C語言中若參與運算的變量的數(shù)據(jù)類型不同,則先轉(zhuǎn)換成同一類型,然后進行運算。轉(zhuǎn)換數(shù)據(jù)始終往長度增加的方向進行,以確保精確度,如int和long運算,則將int轉(zhuǎn)換為long再運算,所有的浮點運算都是以雙精度(double)進行的。
題目中x、y都為double型數(shù)據(jù),而表達式3/2為兩個整型變量之間的計算,計算結(jié)果只保留整數(shù)部分,小數(shù)部分省略掉。3/2的結(jié)果為1。后面變?yōu)橛嬎銀=x+1,這時都需要變?yōu)閐ouble型數(shù)據(jù),結(jié)果為3.000000。
71.B
72.B解析:軟件生命周期由軟件定義、軟件開發(fā)和軟件維護三個階段組成。軟件定義可分為軟件系統(tǒng)的可行性研究和需求分析兩個階段。軟件開發(fā)階段由5個階段組成:概要設(shè)計、詳細設(shè)計、編寫代碼、組裝測試和確認(rèn)測試。軟件維護時期的主要任務(wù)是使軟件持久地滿足用戶的需要。選項B正確。
73.B
74.D表達式(*q)++先取出q所指對象的值,再對該值遞增,計算中q的值不變。所以f函數(shù)的功能是將指針q所指的數(shù)加5。函數(shù)調(diào)用f(a);相當(dāng)于將數(shù)組a的第一個元素加5,操作后a[5]={10,4,3,2,1}。
75.Afread(void*buffer,sizet_size,sizet__count,F(xiàn)ILE*stream);功能是從一個文件流中讀數(shù)據(jù),讀取countl"元素,每個元素disize個字節(jié),如果調(diào)用成功返回count。buffer:用于接收數(shù)據(jù)的內(nèi)存地址,大小至少是size*count個字節(jié);size:單個元素的大小,單位是字節(jié);count:元素的個數(shù),每個元素占size個字節(jié);streaili:輸入流。故本題答案為A)。
76.C
\n本題考查do-while語句和if…else語句。do-while語句的功能是先執(zhí)行循環(huán)體再判斷條件,所以,先判斷if語句的條件,y=-4,!y為邏輯0,條件不成立,執(zhí)行下面的else語句,輸出y,然后將x的值減1,x=3,條件不成立,執(zhí)行下面的else語句,輸出Y,然后將X的值減1,x=2,滿足while循環(huán)條件,繼續(xù)循環(huán)。第三次循環(huán):先判斷if語句的條件,y=2,!y為邏輯0,條件不成立,執(zhí)行下面的else語句,輸出y,然后將X的值減1,x=l,滿足while循環(huán)條件,繼續(xù)循環(huán)。第四次循環(huán):先判斷if語句的條件,y=-1,!y為邏輯0,條件不成立,執(zhí)行下面的else語句,輸出Y,然后將x的值減1,x=0,不滿足while循環(huán)條件,結(jié)束循環(huán)。所以B正確。
\n
77.A靜態(tài)變量不是每調(diào)用一次就賦一次初值,而是將需要定義許多相同的具有相同屬性的值時,使用靜態(tài)變量來節(jié)省空間,所以A選項錯誤。
78.A++優(yōu)先級高于*,*p++值為year下一個變量的值(如果有的話),不能滿足題意,所以選擇A)
79.C解析:賦值的一般形式為:變量名:表達式;,賦值的方向為由右向左,即將:右側(cè)表達式的值賦給:左側(cè)的變量,執(zhí)行步驟是先計算再賦值。選項A中運算符%的運算對象必須為整數(shù),而選項A中26.8不為整數(shù),故選項A不正確;選項B將一個變量賦值給一個常量,這在C語言中是不允許的,故選項B不正確;選項D中也是將一個常量3賦值給一個常量,故選項D不正確;所以,4個選項中選項C符合題意。
80.A需求分析階段的工作可以分為4個方面:需求獲取、需求分析、編寫需求規(guī)格說明書和需求評審。需求分析的任務(wù)是發(fā)現(xiàn)需求、求精、建模和定義需求的過程,是描述“做什么”的軟件開發(fā)階段。故選A選項。
81.(1)錯誤:for(i=j=0;str[i]!=0;i++)
\n正確:for(i=j=0;str[i]!=\0;i++)
\n(2)錯誤:str[j]=str[i];
\n正確:str[i++]=str[i];
\n【解析】根據(jù)題目中的要求,從字符串str中刪除所有大寫字母F,需要檢查字符串str中的每一個字符,直到字符串結(jié)束,因此,“for(i=j=0;str[i]!=0;i++)”應(yīng)改為“for(i=J=0;str[i]!=0;i++)”;將每一個不是F的字符放入原來的字符串中,形成新的字符串,因此,“str[j]=str[i];”應(yīng)改為“str[j++]=str[i];”。
\n
82.
【解析】由題目中所給表達式可知,表達式的值為m項表達式的和然后開平方??梢允紫韧ㄟ^m次循環(huán)求得m項表達式的和,然后將其和開平方并返回到主函數(shù)當(dāng)中。
2021年遼寧省錦州市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.簡單的交換排序方法是()。
A.快速排序B.選擇排序C.堆排序D.冒泡排序
2.有如下程序:main{intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++.b++;}printf("a=%d,b=%d\n",a,b);}該程序的輸出結(jié)果是()。A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2
3.有以下程序:#include<stdio.h>#deflneS1(z)4*z+4*(z)#defineS2(x,y)4*(x)*(y)+y*xmain(){inta=1,b=2;printf(“%d,”,S1(a+b));printf(“%d,”,S2(a,b)+S1(3));printf(“%d”,S2(3+a,b+3));}程序運行后的輸出結(jié)果是()。
A.18,34,100B.24,34,92C.24,34,100D.18,34,92
4.以下敘述中,不正確的是()。
A.使用staticfloata定義的外部變量存放在內(nèi)存中的靜態(tài)存儲區(qū)
B.使用floatb定義的外部變量存放在內(nèi)存中的動態(tài)存儲區(qū)
C.使用staticfloatc定義的內(nèi)部變量存放在內(nèi)存中的靜態(tài)存儲區(qū)
D.使用floatd定義的內(nèi)部變量存放在內(nèi)存中的動態(tài)存儲區(qū)
5.有以下程序
#include<stdio.h>
intfun(intx,inty)
{if(x==y)return(x);
elsereturn((x+y)/2);
}
main()
{inta=4,b=5,c=6;
printf("%d\n",fun(2*a,fun(b,c)));
}
程序運行后的輸出結(jié)果是A.3B.6C.8D.12
6.對于“if(表達式)語句”,以下敘述正確的是()。
A.“表達式”不能是變量
B.“表達式”的值只能是整數(shù)值
C.“表達式”可以是常量
D.“表達式”中不可以出現(xiàn)字符型變量的比較
7.有如下程序段:
inta=14,b=15,x;
charc='A';
x=(a&&b)&&(c<'B'):
執(zhí)行該程序后,x的值為()。A.A.trueB.falseC.0D.1
8.對于移動平均算法,是計算某變量之前n個數(shù)值的算術(shù)平均,正確的說法是()
A.空間復(fù)雜度是O(1)B.空間復(fù)雜度是O(n)C.空間復(fù)雜度是O(logn)D.空間復(fù)雜度是O(nlogn)
9.若有以下程序段intm=0xabc,n=0xabc;m-=n;printf("%X\n",m);執(zhí)行后輸出結(jié)果是A.0X0B.0x0C.0D.0XABC
10.
11.下列程序的輸出結(jié)果是()。#include<stdio.h>main{structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un))}A.6,2B.6,4C.8,4D.8,6
12.設(shè)x,y,t均為int型變量,執(zhí)行語句:
x=y=3;
t=++x||++y;
完成后,y的值為A.A.不確定B.4C.3D.1
13.
14.sizeof(float)是()。A.一個雙精度型表達式B.一個整型表達式C.一種函數(shù)調(diào)用D.一個不合法的表達式
15.軟件生命周期是指()。A.軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程
B.軟件從需求分析、設(shè)計、實現(xiàn)到測試完成的過程
C.軟件的開發(fā)過程
D.軟件的運行維護過程
16.已知一個有序表為(15,19,30,33,49,50,65,88,93,126,164),當(dāng)二分查找值為126的元素時,檢索成功需進行的比較次數(shù)為()。
A.1次B.2次C.3次D.4次
17.下列有關(guān)圖的遍歷說法中,不正確的是()
A.圖的遍歷必須用遞歸實現(xiàn)
B.基本遍歷算法兩種:深度遍歷和廣度遍歷
C.有向圖和無向圖都可以進行遍歷操作
D.圖的遍歷算法可以執(zhí)行在有回路的圖上
18.
19.
20.有以下程序:#include<stdio.h>,main(){intS;scanf("%d",&s);while(s>O){switch(s){casel:printf("%d",s+5);case2:printf("%d",s+4);break;case3:printf("%d",s+3);default:("%d",s+1);break;}scanf("%d",&s);}}運行時,若輸入123450<回車>,由輸出結(jié)果是()。A.6566456B.66656C.66666D.6666656
二、2.填空題(20題)21.在關(guān)系運算中,【】運算是在給定關(guān)系的某些域上進行的運算。
22.對于圖書管理數(shù)據(jù)庫,將圖書表中“人民郵電出版社”的圖書的單價漲價5%。請對下面的SQL語句填空:UPDATE圖書______WHERE出版單位="人民郵電出版社"
23.在面向?qū)ο蠓椒ㄖ?,【】描述的是具有相似屬性與操作的一組對象。
24.軟件開發(fā)環(huán)境是全面支持軟件開發(fā)全過程的______的集合。
25.下列表達式用于判斷y是否為閏年。閏年的判斷條件是:年號能被4整除但不能被100整除或年號能被400整除,請?zhí)羁誣_____。
26.下列程序的輸出結(jié)果是______。
main()
{inta=1,b=2,c=3,t=0;
if(a<B){t=a;a=b;b=t;}
if(a<C){t=a;a=c;c=t;}
printf("%d,%d,%d\n",a,b,C);
}
27.已知函數(shù)isaplha(ch)的功能是判斷變量ch是否是字母,若是,則該數(shù)值為1,否則為0。下面程序執(zhí)行后的輸出結(jié)果是()。
#include<ctype.h>
#include<string.h>
voidfun(chars[])
{inti,j;
for(i=0,j=0;s[i];i++)
s[j]='\0';
}
main()
{charss[80]="goodmorning";
fun(ss);
printf("%s",ss);
}
28.診斷和改正程序中錯誤的工作通常稱為【】。
29.十進制數(shù)111用八位二進制數(shù)表示為【】。
30.下列程序中的數(shù)組a包括10個整數(shù)元素,分別將前項和后項之和存入數(shù)組b,并按每行4個元素輸出數(shù)組b。請?zhí)羁铡?/p>
#include<stdioh>
main()
{inta[10],b[10],i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
for(i;0;i<9;i++)
{if(i%4==0)primf("\n");
printf("%3d",b[i];
}
}
31.以下程序的運行結(jié)果是______。
#include<stdio.h>
longfib(intg)
{switch(g)
{case0:return0;
case1:
case2:return1;}
return(fib(g-1)+fib(g-2));}
main()
{longk;
k=fib(5);
printf("k=%51d\n",k);}
32.若有以下程序
intf(intx,inty)
{return(y-x)*x;}
main()
{inta=3,b=4,c=5,d;
d=f(f(3,4),f(3,5));
ptintf("%d\n",D);
執(zhí)行后輸出結(jié)果是______。
33.下列語句的輸出結(jié)果是【】。
chara=3;printf("%d,%o,%x,%u\n",a,a,a,a);
34.以下程序運行后的輸出結(jié)果是【】
#include<stdio,h>fun(inta)
{intb=0;staticintc=3;
b++;c++;
return(a+b+c);
}
main()
inti,a=5;
for(i=0;i<3;i++)prinff("%d%d",i,fun(a));
printf("\n");
}
35.若從鍵盤輸入58,則以下程序輸出的結(jié)果是______。
main{)
{inta;
scanf("%d",&a);
if(a>50)printf("%d",a);
if(a>40)printf("%d",a);
if(a>30)printf("%d",a);
}
36.下列程序的輸出結(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");
}
37.以下程序運行后的輸出結(jié)果是【】。
main()
{intp[7]{11,13,14,15,16,17,18};
inti=0,j=0;
while(i<7&&p[i]%2==1)j+=p[i++];
printf("%d\n",j);
}
38.將代數(shù)式轉(zhuǎn)換成程序設(shè)計中的表達式為【】。
39.匯編程序和編譯程序翻譯的目標(biāo)程序需經(jīng)【】連接成可執(zhí)行的程序。
40.若有定義語句chars[100],d[100];intj=0,i=0;且s中已賦字符串,請?zhí)羁找詫崿F(xiàn)拷貝。(注:不使用逗號表達式)
while(s[i])(d[j]=【】;j++;}
d[j]=0;
三、1.選擇題(20題)41.有以下程序:#include<stdio.h>main(){FILE*fp;inti,k,n;fp=fopen("data.dar","w+");for(i=1;i<6;i++){fprintf(fp,"%d",i);if(i%3==0)fprintf(fp,"\n");}rewind(fp);fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);}程序運行后的輸出結(jié)果是()。
A.00B.12345C.14D.12
42.設(shè)有定義語句:charc1=92,c2=92;,則以下表達式中值為零的是()。
A.c1c2
B.c1&c2C.~c2D.c1|c2
43.若int類型數(shù)據(jù)占兩個字節(jié),則下列語句intk=-1;printf("%d,%u\n",k,k);的輸出為()
A.-1,-1B.-132,767C.-132,768D.-165,535
44.______是構(gòu)成C語言程序的基本單位。
A.函數(shù)B.過程C.子程序D.子例程
45.數(shù)據(jù)庫設(shè)計包括兩個方面的設(shè)計內(nèi)容,它們是()
A.概念設(shè)計和邏輯設(shè)計B.模式設(shè)計和內(nèi)模式設(shè)計C.內(nèi)模式設(shè)計和物理設(shè)計D.結(jié)構(gòu)特性設(shè)計和行為特性設(shè)計
46.下列有關(guān)數(shù)據(jù)庫的描述,正確的是
A.數(shù)據(jù)處理是將信息轉(zhuǎn)化為數(shù)據(jù)的過程
B.數(shù)據(jù)的物理獨立性是指當(dāng)數(shù)據(jù)的邏輯結(jié)構(gòu)改變時,數(shù)據(jù)的存儲結(jié)構(gòu)不變
C.關(guān)系中的每一列稱為元組,一個元組就是一個字段
D.如果一個關(guān)系中的屬性或?qū)傩越M并非該關(guān)系的關(guān)鍵字,但它是另一個關(guān)系的關(guān)鍵宇,則稱其為本關(guān)系的外關(guān)鍵字
47.下列字符串是用戶自定義標(biāo)識符的是______。
A._w1B.3_xyC.intD.LINE-3
48.下面程序段中的循環(huán)體的執(zhí)行次數(shù)是()。for(i=4;i<0;i--)for(j=1;j<=4;j++)sum=sum+j;
A.4B.0C.12D.16
49.有以下程序:main(){inti=1,j=1,k=2;if((j++‖k++)&&i++)printf("%d,%d,%d\n",i,j,k);}執(zhí)行后的輸出結(jié)果是______。
A.1,1,2B.2,2,1C.2,2,2D.2,2,3
50.以下選項中,非法的字符常量是______。
A.'\t'B.'\17'C.\nD.'\xaa'
51.以下敘述中,正確的是______。
A.do…while語句構(gòu)成的循環(huán)不能用其他語句構(gòu)成的循環(huán)來代替
B.do…while語句構(gòu)成的循環(huán)只能用break語句退出
C.用do…while語句構(gòu)成的循環(huán),在while后的表達式為非零時結(jié)束循環(huán)
D.用do…while語句構(gòu)成的循環(huán),在while后的表達式為零時結(jié)束循環(huán)
52.設(shè)有定義:charp[]={'1','2','3'},*q=p;,以下不能計算出一個char型數(shù)據(jù)所占字節(jié)數(shù)的表達式是
A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])
53.數(shù)據(jù)結(jié)構(gòu)中,與所使用的計算機無關(guān)的是數(shù)據(jù)的()
A.存儲結(jié)構(gòu)B.物理結(jié)構(gòu)C.邏輯結(jié)構(gòu)D.線性結(jié)構(gòu)
54.有以下程序:#include<stdio.h>unionpw{inti;charch[2];}a;main(){a.ch[0]=13;a.ch[1]=0;printf("%d\n",a.i);}程序的輸出結(jié)果是()。
A.13B.14C.208D.209
55.閱讀下列程序段,則程序的輸出結(jié)果為#include"stdio.h"#defineM(X,Y)(X)*(Y)#defineN(X,Y)(X)/(Y)main(){inta=5,b=6,c=8,k;k=N(M(a,b),c);printf("%d\n",k);}
A.3B.5C.6D.8
56.有如下程序段:inta=14,b=15,x;charc='A';x=(a&&b)&&(c<'B');執(zhí)行該程序段后,x的值為()。
A.tureB.假C.0D.1
57.fgetc函數(shù)的作用是從指定文件讀入—個字符,該文件的打開方式必須是______。
A.只讀B.追加C.讀或讀寫D.以上均正確
58.在長度為64的有序線性表中進行順序查找,最壞情況下需要比較的次數(shù)為A.63B.64C.6D.7
59.有以下程序structs{intx,y;}data[2]={10,100,20,200};main()structs*p=data;printf("%d\n",++(p->x));程序運行后的輸出結(jié)果是
A.10B.11C.20D.21
60.若有如下程序段:structstudent{intnum;floatscore;}stu[3]={{10,85},{60,58},{32,23}};main(){structstudent*t;t=stu;}則下面表達式中值為58的是()。
A.(*t).numB.*(t++)->numC.(*++t)scoreD.(++t)->score
四、選擇題(20題)61.以下選項中,能用作數(shù)據(jù)常量的是()。
A.115LB.0118C.1.5elD.0115
62.有以下程序當(dāng)執(zhí)行程序時,按下列方式輸入數(shù)據(jù)(從第l列開始,<CR>代表回車,注意;回車也是--+qz符)12<CR>34<CR>則輸出結(jié)果是()。
A.123B.12C.1234D.1234
63.
執(zhí)行下列程序后,輸出的結(jié)果是()。
#include<stdio.h>
#defineS(X)X*X
voidmain
{inta=9,k=3,m=2;
a/=S(k+m)/S(k+m):
printf("%d",a);
}
A.1B.4C.9D.0
64.設(shè)A為存放(短)整型的一維數(shù)組,如果A的首地址為P,那么A中第i個元素的地址為()。
A.P+i*2B.P+(i-1)*2C.P+(i-1)D.P+i
65.以下不能正確表示代數(shù)式4cd/ab的C語言表達式縣().
A.4*c*d/a/bB.c*d/a/b*4C.c/a/b*d*4D.4*c*d/a*b
66.有以下程序
67.
68.表達式'5'-'1'的值是()。A.A.整數(shù)4B.字符4C.表達式不合法D.字符6
69.軟件生命周期是指()。A.軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程
B.軟件從需求分析、設(shè)計、實現(xiàn)到測試完成的過程
C.軟件的開發(fā)過程
D.軟件的運行維護過程
70.假定X和Y為double型,則表達式x=2,y=x+3/2的值是()。
A.3.500000B.3C.2.000000D.3.000000
71.(38)索引屬于()
A.模式
B.內(nèi)模式
C.外模式
D.概念模式
72.軟件生命周期可分為定義階段、開發(fā)階段和維護階段。詳細設(shè)計屬于()。
A.定義階段B.開發(fā)階段C.維護階段D.上述三個階段
73.
74.有以下程序:
程序運行后的結(jié)果是()。
A.6,4,3,2,1
B.6,5,4,3,2
C.5,4,3,2,1
D.10,4,3,2,l
75.讀取二進制文件的函數(shù)調(diào)用形式為:fread(buffer,size,Count,fp);,其中buffed
代表的是()。
A.一個內(nèi)存塊的首地址,代表讀入數(shù)據(jù)存放的地址
B.一個整型變量,代表待讀取的數(shù)據(jù)的字節(jié)數(shù)
C.一個文件指針,指向待讀取的文件
D.一個內(nèi)存塊的字節(jié)數(shù)
76.
有以下程序:
#include<stdio.h>
main
{intx=4,y;
do
{y=x;
if(!y)printf("x");
else
printf("y"):
x--;
}while(x);
}
程序的輸出結(jié)果是()。
A.xyyxB.yyyyC.yyxxD.yxyx
77.以下選項中敘述錯誤的是()。
A.C程序函數(shù)中定義的賦有初值的靜態(tài)變量,每調(diào)用一次函數(shù),賦一次初值
B.在同一函數(shù)中,各復(fù)合語句內(nèi)可以定義變量,其作用域僅限本復(fù)合語句內(nèi)
C.C程序函數(shù)中定義的自動變量,系統(tǒng)不自動賦確定的初值
D.C程序函數(shù)的性能不可以說明為static型變量
78.若有定義語句:
79.若以下選項中的變量已正確定義,則正確的賦值語句是()。
A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3
80.軟件開發(fā)中需求分析的主要任務(wù)是()。
A.定義和描述目標(biāo)系統(tǒng)“做什么”B.獲取需求C.給出軟件解決方案D.需求評審
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc的功能是:從字符串str中,刪除所有大寫字母F。
請修改程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
voidproc(char*str)
{
inti,j;
//****found****
for(i=j=0;str[i]一0;i++)
if(str[i]!=F)
//****found****
str[i]=str[i];
str[j]=\0;
}
voidmain
{
charstr[80];
printf("\nEnterastring:");
gets(str);
printf("Theoriginalstring:");
puts(str);
proc(str);
printf("Thestringafterdeleted:");
puts(str);
printf("\n\n");}
六、程序設(shè)計題(1題)82.請編寫函數(shù)proc(),它的功能是計算:s=(1n(1)4-1n(2)+In(3)4-…+1n(m))0.5在C語言中可調(diào)用log(n)函數(shù)求1n(n)。例如,若n1的值為30,則proc()函數(shù)值為8.640500。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
參考答案
1.D解析:所謂的交換類排序方法是指借助數(shù)據(jù)元素之間的互相交換進行排序的一種方法,包括冒泡排序和快速排序,冒泡排序是一種最簡單的交換排序方法,它通過相鄰元素的交換,逐步將線性表變成有序。
2.A當(dāng)x為1時,執(zhí)行case1,a自加等于1,因為case1后沒有break,接著執(zhí)行case2,此時a的值為2,b自加為1,故選擇A選項。
3.D程序中S1和S2都是宏定義。S1(a+b)宏展開后的表達式為4*a+b+4*(a+b),即4*1+2+4*(1+2),結(jié)果為18;S2(a,b)宏展開后的表達式為4*(a)*(b)+b*a,即4*(1)*(2)+2*1,結(jié)果為10;S1(3)宏展開后的表達式為4*3+4*(3),結(jié)果為24;32(3+a,b+3)宏展開后的表達式為4*(3+a)*(b+3)+b+3*3+a,即4*(3+1)*(2+3)+2+3*3+1,結(jié)果為92。最終輸出:18,34,92。故本題答案為D選項。
4.B
5.B
6.CC語言中沒有規(guī)定“if(表達式)語句”中的“表達式”的形式,其可以是任意合法的表達式。故本題答案為C選項。
7.D在C語言中,當(dāng)表達式成立時用l表示,不成立時用0表示,即x=(a&&b)&&(c<'B')=(14&&15)&&('A'<'B')=1&&1=1,故選擇D選項。
8.A
9.C解析:格式字符x或x是以十六進制無符號形式輸出整型數(shù)(不帶前導(dǎo)0x或OX)。對于x用abc輸出,X用ABC輸出。
10.D
11.B本題主要考查結(jié)構(gòu)和聯(lián)合內(nèi)存使用的一些區(qū)別:結(jié)構(gòu)中每個成員相互獨立,一個結(jié)構(gòu)所占內(nèi)存空間的大小是結(jié)構(gòu)中每個成員所占內(nèi)存空間大小的總和;聯(lián)合所占用內(nèi)存空間是指最長的成員占用的空間。
1
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度住宅小區(qū)車位維修保養(yǎng)合同范本3篇
- 2024物流轉(zhuǎn)包商服務(wù)質(zhì)量評價體系合同
- 2024牛肉產(chǎn)業(yè)技術(shù)創(chuàng)新與研發(fā)合作合同
- 2025年度大理石石材工程環(huán)保評估與施工合同3篇
- 2025年度新能源項目打樁工程合作合同4篇
- 2025年度智能窗簾控制系統(tǒng)研發(fā)與集成承包合同4篇
- 2024年電商平臺運營服務(wù)外包合同
- 2024版項目股權(quán)出售合同:公司權(quán)益轉(zhuǎn)讓協(xié)議
- 2025年度新能源電池產(chǎn)品進出口合同4篇
- 2025年度房地產(chǎn)租賃權(quán)轉(zhuǎn)讓合同3篇
- 服裝板房管理制度
- 2024年縣鄉(xiāng)教師選調(diào)進城考試《教育學(xué)》題庫及完整答案(考點梳理)
- 車借給別人免責(zé)協(xié)議書
- 河北省興隆縣盛嘉恒信礦業(yè)有限公司李杖子硅石礦礦山地質(zhì)環(huán)境保護與治理恢復(fù)方案
- 第七章力與運動第八章壓強第九章浮力綜合檢測題(一)-2023-2024學(xué)年滬科版物理八年級下學(xué)期
- 醫(yī)療機構(gòu)診療科目名錄(2022含注釋)
- 微視頻基地策劃方案
- 光伏項目質(zhì)量評估報告
- 八年級一本·現(xiàn)代文閱讀訓(xùn)練100篇
- 2023年電池系統(tǒng)測試工程師年度總結(jié)及下一年計劃
- 應(yīng)急預(yù)案評分標(biāo)準(zhǔn)表
評論
0/150
提交評論