版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2021年安徽省滁州市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.對于C語言的函數(shù),下列敘述中正確的是()。
A.函數(shù)的定義不能嵌套,但函數(shù)調(diào)用可以嵌套
B.函數(shù)的定義可以嵌套,但函數(shù)調(diào)用不能嵌套
C.函數(shù)的定義和調(diào)用都不能嵌套
D.函數(shù)的定義和調(diào)用都可以嵌套
2.下列敘述中不正確的是()。
A.在C語言中調(diào)用函數(shù)時,只能把實(shí)參的值傳送給形參,形參的值不能傳送給實(shí)參
B.在C的函數(shù)中,最好使用全局變量
C.外部變量可以在函數(shù)之間傳遞數(shù)據(jù)
D.自動變量實(shí)質(zhì)上是一個函數(shù)內(nèi)部的局部變量
3.若有定義“inta=1234,b=-5678;”,用語句“printf("%+-6d%+-6d",a,b);”輸出,以下正確的輸出結(jié)果是()。
A.+1234-5678(中間有一個空格,最后有一個空格)
B.+1234-5678(最前面有一個空格,中間有一個空格)
C.+-1234+-5678(最前面和最后均無空格)
D.1234-5678(中間有兩個空格,最后有一個空格)
4.下面程序的輸出結(jié)果是______。#inc1ude<stdio.h>main(){char*p[]={"BOOL","OPK","H","SP"};inti;for(i=3;i>=0;i-,i-)prinf("%c",*p[i]);print("\n")}
A.SOB.SPC.SPOPKD.SHOB
5.一個棧的初始狀態(tài)為空?,F(xiàn)將元素1、2、3、4、5、A、B、C、D、E依次入棧,然后再依次出棧,則元素出棱的順序是()。A.A.12345ABCDEB.EDCBA54321C.ABCDEl2345D.54321EDCBA
6.下面哪種排序的平均比較次數(shù)最少()
A.插入排序B.選擇排序C.堆排序D.快速排序
7.有如下程序段
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);
}
程序運(yùn)行后輸出的結(jié)果是A.A.63
B.36
C.編譯出錯
D.00
8.有以下程序:#include<stdio.h>voidfun(doublex,double*y,double*z){*y=*y-1.0;*z=*z+x;}main(){doublea=2.5,b=9.0,*pa,*pb;pa=&a;pb=&b;fun(b-a,pa,pb);printf(“%f\n”,a);}程序運(yùn)行后的輸出結(jié)果是()。
A.8.000000B.9.000000C.1.500000D.10.500000
9.信息隱蔽的概念與下述哪一種概念直接相關(guān)?
A.軟件結(jié)構(gòu)定義B.模塊獨(dú)立性C.模塊類型的劃分D.模塊耦合度
10.函數(shù)fread(buffer,size,count,fp)中buffer代表的是()。
A.—個存儲區(qū),存放要讀的數(shù)據(jù)項
B.一個整數(shù),代表要讀入的數(shù)據(jù)項總數(shù)
C.一個文件指針,指向要讀的文件
D.—個指針,指向讀入數(shù)據(jù)要存放的地址
11.設(shè)棧S的初始狀態(tài)為空,6個元素入棧的順序?yàn)閑1,e2,e3,e4,e5和e6。若出棧的順序是e2,e4,e3,e6,e5,el,則棧s的容量至少應(yīng)該是()。
A.6B.4C.3D.2
12.以下選項中,能表示邏輯值“假”的是()
A.1B.0.000001C.0D.100.0
13.已知字母A的ASCII代碼值為65,若變量kk為char型,以下不能正確判斷出kk中的值為大寫字母的表達(dá)式是
A.kk>=′A′&&kk<=′Z′
B.!(kk>=′A′||kk<=′Z′)
C.(kk+32)>=′a′&&(kk+32)<=′Z′
D.isalpha(kk)&&(kk<91)
14.有嵌套的if語句:if(a<b) if(a<c)k=a; elsek=c;elseif(b<c)k=b;elsek=c;以下選項中與上述if語句等價的語句是()。
A.k=(a<b)?((b<c)?a:b):((b>c)?b:c);
B.k=(a<b)?((a<c)?a:c):((b<c)?b:c);
C.k=(a<b)?a:b;k=(b<c)?b:c;
D.k=(a<b)?a:b;k=(a<c)?a:c;
15.線性鏈表中結(jié)點(diǎn)的結(jié)構(gòu)為(data,next)。已知指針p所指結(jié)點(diǎn)不是尾結(jié)點(diǎn),若在*p之后插入結(jié)點(diǎn)*s,則應(yīng)執(zhí)行下列()操作。
A.s->next=p;p->next=s;
B.s->next=p->next;p->next=s;
C.s->next=p->next;p=s;
D.p->next=s;s->next=p;
16.廣義表((a))的表尾是()。
A.aB.(a)C.((a))D.()
17.若有定義floata[15],*p=a;,且數(shù)組a的首地址為300H,則p+13所指向的數(shù)組元素的地址為()。
A.334HB.30DHC.352HD.31AH
18.數(shù)據(jù)的不可分割的基本單位是()。
A.元素B.結(jié)點(diǎn)C.數(shù)據(jù)類型D.數(shù)據(jù)項
19.下面哪種排序算法是穩(wěn)定的()
A.快速排序B.堆排序C.歸并排序D.選擇排序
20.有以下程序#include<stdio.h>#include<string.h>main(){chara[10]=”abcd”;printf("%d,%d\n",strlen(a),sizeof(a));}程序運(yùn)行后的輸出結(jié)果是()。A.7,4B.4,10C.8,8D.10,10
二、2.填空題(20題)21.設(shè)函數(shù)findbig已定義為求3個數(shù)中的最大值,以下程序?qū)⒗煤瘮?shù)指針調(diào)用findbig函數(shù)。請?zhí)羁铡?/p>
main()
{intfindbig(int,int,int);
int(*f)(),x,y,z,big;
f=【】。
scanf("%d%d%d",&x,&y,&z);
big=(*f)(x,y,z);
printf("big=%d\n",big);
}
22.以下定義的結(jié)構(gòu)體類型擬包括兩個成員,其中成員變量info用來存入整形數(shù)據(jù);成員變量link是指向自身結(jié)構(gòu)體的指針,請將定義比沖完整
structnode
{intinfo;
______link;};
23.若x和y都是double型變量,且x的初值為3.0,y的初值為2.0,則表達(dá)式pow(y,fabs(x))的值為【】。
24.以下程序的輸出結(jié)果是______。
main()
{inta[10]={10,20,30,40,50,60,70,80,90,100},*p;
p=a+2;printf("%d\n',(p+2)[3]);
}
25.若x為血類型,請寫出與!x等價的C語言表達(dá)式______。
26.若i、j為int類型,則以下程序段內(nèi)循環(huán)體的總執(zhí)行次數(shù)是【】。
for(i=5;i;i--)
for(j=0;j<3;j++)
{
}
27.常用的軟件結(jié)構(gòu)設(shè)計工具是結(jié)構(gòu)圖(SC),也稱程序結(jié)構(gòu)圖。其中,用矩形表示______,用帶空心圓的箭頭表示傳遞的是數(shù)據(jù)。
28.數(shù)據(jù)庫保護(hù)分為:安全性控制、______、并發(fā)性控制和數(shù)據(jù)的恢復(fù)。
29.若x,y和z均是int型變量,則執(zhí)行下面表達(dá)式后的x值為【】。
x=(y=4)+(z=2)
30.下面程序的輸出是【】。
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)
arr[i]=i;
for(i=1;i<4;i++)
k+=arr[i]+i;
printf("%d\n"k);}
31.在數(shù)據(jù)庫管理系統(tǒng)提供的數(shù)據(jù)定義語言、數(shù)據(jù)操縱語言和數(shù)據(jù)控制語言中,【】負(fù)責(zé)數(shù)據(jù)的模式定義與數(shù)據(jù)的物理存取構(gòu)建。
32.理解下面的程序,填空完善程序。
main()
{inta,b,c;
scanf("%d%d",【】);
c=【】(a,b);
printf("a=%db=%dmax=%d\n",a,b,c);
}
intmax(x,y)
【】;
{intz;
if(x>y)z=x;
elsez=y(tǒng);
【】;
}
33.以下程序運(yùn)行后的輸出結(jié)果是【】。
main()
{inta[4][4]={{1,2,3,4),{5,6,7,8},{11,12,13,14},{15,16,17,18}};
inti=0,j=0,s=0;
while(i++<4)
{
if(i==2||i==4)continue;
j=0;
do{S+=a[i][j];j++;}while(j<4);
}
printf("%d\n",s);
}
34.以下程序的定義語句中,x[1]的初值是【】,程序運(yùn)行后輸出的內(nèi)容是【】。
#include<stdio.h>
main()
{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;
for(i=0;i<4;i++)
{p[i]=&x[2*i+1];
printf("%d",p[i][0]);
}
printf("\n");)
}
35.與表達(dá)式a+=b等價的另一書寫形式是______。
36.問題處理方案的正確而完整的描述稱為______。
37.以下程序輸出的最后一個值是【】
intff(intn)
{staticintf=1;
f=f*n;
returnf;
}
main()
{inti;
for(i=1;i<=5;i++)printf("%d\n",ff(i));
}
38.樹中度為零的結(jié)點(diǎn)稱為______。
39.下面程序
main()
{inti,j,m,n;
i=5;
j=10;
m=++i;
n=j++;
printf("%d,%d,%d,%d",i,j,m,n);
}
運(yùn)行后,i,j,m,n的值分別是_______。
40.下列程序的輸出結(jié)果是______。
main()
{inti,sum;
for(i=1;i<7;i++)
sum+=i;
primf("%d",sum);
}
三、1.選擇題(20題)41.下列選項中,不能用作標(biāo)識符的是A._1234_B._1_2C.int_2_D.2_int_
42.設(shè)變量a是int型,f是float型,i是double型,則表達(dá)式10+'a'+i*f值的數(shù)據(jù)類型為()。
A.intB.floatC.doubleD.不確定
43.有以下程序#include<stdio.h>main(){int*p,j;p=NULLp=fun();for(j=0;j<4;j+){printf("%d",*p);p++;}}int*fun(){inta[4],k;for(k=0;k<4;k++)a[k]=k;return(A);}程序運(yùn)行后的輸出結(jié)果是()
A.程序有錯不能運(yùn)行B.輸出4個NULLC.輸出0123D.輸出1111
44.有下列程序:main(){intt,a=1,b=5,c=-2;while(a>b>c){t=a;a=b;b=t;c++;}printf("%d,%d,%d",a,b,c);}
A.1,5,0B.1,5,-2C.5,1,-1D.5,1,-2
45.在下列關(guān)于邏輯表達(dá)式a&&b的敘述中,錯誤的一條是()
A.若a為真、b為真,則a&&b為真
B.若a為真、b為假,則a&&b為假
C.若a為假、b為真,則a&&b為真
D.若a為假、b為真,則a&&b為假
46.以下程序輸出的結(jié)果為______。main(){char*alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"};char**p;inti;p=alpha;for(i+0;i<4;i++)printf("%s",p[i]);}
A.ABCDEFGHIJKLB.ABCDC.ABCDEFGHIJKLMNOPD.AEIM
47.以下程序的運(yùn)行結(jié)果為______。main(){inti,f1,f2;f1=f2=1;for(i=0;i<4;i++){printf("%d%d",f1,f2);f1+=f2;f2+=f1;}}
A.1123581321
B.1122551010
C.1258981321
D.0112451521
48.若有以下定義語句:doublea[5];inti=0;能正確給a數(shù)組元素輸入數(shù)據(jù)的語句是()
A.scanf("%lf%lf%lf%lf%lf,a);
B.for(i=0;i<=5;i++)scanf("%lf,a+i);
C.while(i<5)scanf("%lf",&a[i++]);
D.while(i<5)seanf("%lf,a+i);
49.以下正確的說法是______。
A.實(shí)參和與其對應(yīng)的形參各占用獨(dú)立的存儲單元
B.實(shí)參和與其對應(yīng)的形參共用一個存儲單元
C.只有當(dāng)實(shí)參和與其對應(yīng)的形參同名時才共用存儲單元
D.型參是虛擬的,函數(shù)在沒有被調(diào)用時,不占用存儲單元
50.已定義以下函數(shù)
intfun(int*p)
{return*p;)
fun函數(shù)返回值是A.不確定的值B.一個整數(shù)C.形參P中存放的值D.形參P的地址值
51.數(shù)據(jù)結(jié)構(gòu)作為計算機(jī)的一門學(xué)科,主要研究數(shù)據(jù)的邏輯結(jié)構(gòu)、對各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行的運(yùn)算,以及()。A.A.數(shù)據(jù)的存儲結(jié)構(gòu)B.計算方法C.數(shù)據(jù)映象D.邏輯存儲
52.下面程序中有錯誤的行是(每行程序前面的數(shù)字表示行號)1main()2{3inta[3]={1};4inti;5scanf("%d",&a);6for(i-1;i<3;i++)a[0]=a[0]+a[i];7printf("a[0]=%d\n,"a[0]);8}
A.3B.6C.7D.5
53.有以下程序
intfun(intn)
{if(n==1)return1;
else
return(n+fun(n-1));
}
main()
{intx;
scanf("%d",&x);x=fun(x);printf("%d\n",x)
}
執(zhí)行程序時,給變量x輸入10,程序的輸出結(jié)果是
A.55B.54C.65D.45
54.請讀程序:#include<stdio.h>f(intb[],intn){inti,r;r=l;for(i=0;i<=n;i++)r=r*b[i];returnr;}main(){intxa[]={2,3,4,5,6,7,8,9};x=f(a,3);printf("%d\n",x);}上面程序的輸出結(jié)果是()
A.720B.120C.24D.6
55.設(shè)有以下語句charx=3,y=6,z;z=x^y<<2;則z的二進(jìn)制值是
A.10100B.11011C.11100D.11000
56.若x是int型變量,且有下面的程序片段:for(x=3;x<6;x++)printf(x%2)?("**%d"):(”##%d\n”),x);上面程序片段的輸出結(jié)果是()
A.**3##4**5
B.##3**4##5
C.##3**4##5
D.**3##4**5
57.下列程序運(yùn)行后,如果從鍵盤上輸入ABCDE<回車>,則輸出結(jié)果為______。#include<stdio.h>#include<string.h>fuch(charstr[]){intnum=0;while(*(str+num)!='\0')num++;return(num);}main(){charstr[10],*p=str;gets(p);printf("%d\n",fuch(p));}
A.8B.7C.6D.5
58.fscanf函數(shù)的正確調(diào)用形式是()。
A.fscanf(文件指針,格式字符串,輸出表列);
B.fscanf(格式字符串,輸出表列,文件指針);
C.fscanf(格式字符串,文件指針,輸入表列);
D.fscanf(文件指針,格式字符串,輸入表列);
59.在下列敘述中,正確的一條是()
A.表達(dá)式1+2<<3和sizeof(3.8)的結(jié)果分別為24和8
B.函數(shù)fputc(c,stdout)與putchar(c)的結(jié)果相同
C.語句int*pt中的*pt是指針變量名
D.主函數(shù)和其他函數(shù)可以互相調(diào)用
60.在一棵二叉樹上第5層的結(jié)點(diǎn)數(shù)最多是______。
A.8B.16C.32D.15
四、選擇題(20題)61.
62.以下關(guān)于retllm語句的敘述中正確的是()。
A.一個自定義函數(shù)中必須有一條return語句
B.一個自定義函數(shù)中可以根據(jù)不同情況設(shè)置多條retum語句
C.定義成void類型的函數(shù)中可以有帶返回值的return語句
D.沒有return語句的自定義函數(shù)在執(zhí)行結(jié)束時不能返回到調(diào)用處
63.有以下程序:
程序運(yùn)行后的輸出結(jié)果是()。
A.a=2,b=2B.a=2,b=1C.a=1,b=1D.a=1,b=0
64.
65.若有以下程序:inta=1,b=2:a=a^b:b=b^a:則執(zhí)行以上語句后a和b的值分別是()。
A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2.b=1
66.
67.有下列程序:main{inty=10;do{y--;}while(--y);printf("%d\n",--y);)當(dāng)執(zhí)行程序時,輸出的結(jié)果是()。A.-1B.1C.4D.0
68.
69.有以下程序:
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.57B.39C.24D.11
70.
71.有以下程序:
程序運(yùn)行后的輸出結(jié)果是()。
A.b,B"b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B
72.若有以下語句
73.有以下程序:
main()
{
chara[7]="a0\OaO\0";inti,j;
i=sizeof(a);j=strlen(a);
printf("%d%d\n",i,j);
}
程序運(yùn)行后的輸出結(jié)果是()。
A)22B)76
C)75D)62
74.
75.若有定義語句:intX=10;,則表達(dá)式x-=x+x的值為()。
A.0B.-20C.-10D.10
76.有以下程序:
程序運(yùn)行后的輸出結(jié)果是()。
A.1,2,3,0,0,0,0,0,0,0,
B.1,2,3,1,2,3,0,0,0,0,
C.123,0,0,0,0,123,0,0,0,0,
D.1,2,3,0,0,1,2,3,0,0,
77.下列關(guān)于C語言的敘述錯誤的是()。
A)大寫字母和小寫字母的意義相同
B)不同類型的變量可以在一個表達(dá)式中
C)在賦值表達(dá)式中等號(=)左邊的變量和右邊的值可以是不同類型
D)同一個運(yùn)算符號在不同的場合可以有不同的含義
78.
79.如果在C程序中要用到庫函數(shù)中的字符串比較函數(shù)strcmp(),那么在程序前面應(yīng)該添加的頭文件是()。
A.stdio.hB.string,hC.a(chǎn)lloc.hD.math.H
80.有以下程序:
程序運(yùn)行后的輸出結(jié)果是()。
A.10B.16C.6D.12
五、程序改錯題(1題)81.在主函數(shù)中從鍵盤輸入若干個數(shù)放人數(shù)組中,用0結(jié)束輸入并放在最后一個元素中。下列給定程序中,函數(shù)proc()的功能是計算數(shù)組元素中值為負(fù)數(shù)的平均值(不包括0)。例如,數(shù)組中元素的值為78、-65、-15、35、-45、0,則程序的運(yùn)行結(jié)果為-41.666667。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.請編寫函數(shù)proc(),其功能是:計算并輸出下列多項式值。S=(1+1/2)+(1/3+1/4)+…+(1/(2n1)+1/2n)例如,若主函數(shù)從鍵盤給n輸入100后,則輸出為s=5.878031。n的值要求大于1但不大于100。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
參考答案
1.A
2.B解析:編譯時,編譯系統(tǒng)不為局部變量分配內(nèi)存單元,而是在程序運(yùn)行中,當(dāng)局部變量所在的函數(shù)被調(diào)用時,編譯系統(tǒng)根據(jù)需要要臨時分配內(nèi)存,調(diào)用結(jié)束空間釋放;全局變量一經(jīng)定義,編譯系統(tǒng)為其分配固定的內(nèi)存單元,在程序運(yùn)行的自始至終都占用固定的單元。在考慮內(nèi)存不定的情況下,最好使用全局變量。
3.Aprintf函數(shù)參數(shù)包括格式控制字符串和輸出參數(shù),其中格式控制字符串中除了格式控制字符外,其他字符原樣輸出。本題中的printf(“%+-6d%+-6d”,a,b);”,在%和格式控制字符d之間,“+”號表示輸出的數(shù)字帶正負(fù)號號表示輸出數(shù)據(jù)向左對齊,“6”表示輸出寬度,如果輸出數(shù)據(jù)的寬度不夠6,那么左對齊,右邊補(bǔ)空格。所以本題輸出+1234-5678(中間有一個空格,最后有一個空格)。本題答案為A選項。
4.A解析:p[0]存放的是“BOOL\\0”的首地址;p[1]存放的是“OPk\\0”的首址等。在printf語句中輸出的*p[i]表示p[i]字符串中的第一個字符。在for循環(huán)中,i的初值為3,那么輸出的第—個字符為“S”,接著兩次i--,則輸出的值為*p[1],即字符“O”,所以本題的輸出為SO。
5.B棧是先進(jìn)后出的原則組織數(shù)據(jù),所以人棧最早的最后出棧,所以選擇B。
6.D
7.B在本題中,程序首先定義了一個無返回值的函數(shù)fun,該函數(shù)帶有兩個整型的指針形參變量,在函數(shù)體中,首先定義一個整型指針變量k,然后試圖利用k來交換a和b的結(jié)果。但處理語句k=a;很明顯是對地址進(jìn)行賦值操作。在C語言中,指針變量作為函數(shù)參數(shù)時,可以改變被指向的變量的值,但不能改變指針變量本身的值,即我們可以改變實(shí)參指向的變量的值,不能使實(shí)參指向其他的變量。因此,本函數(shù)并不能交換形參所指向變量的結(jié)果。
在主函數(shù)中,首先定義了兩個整型變量a和b,并分別被初始化為3和6,然后定義兩個指針變量x和y,分別指向a和b,接著調(diào)用fun函數(shù),傳遞的實(shí)參為指針變量x和y,根據(jù)前面對fun函數(shù)的分析可知,調(diào)用該函數(shù)后并不能實(shí)現(xiàn)a和b數(shù)組的交換,因此,執(zhí)行輸出語句后,輸出的結(jié)果是36。本題正確答案選B。
8.Cmain函數(shù)定義兩個double類型的變量a、b,分別賦初值為2.5、9.0。另外定義兩個double類型的指針變量pa、pb,其中pa指向a,pb指向b。然后將b-a、pa、pb傳給函數(shù)fun,此時x的值為6.5,y指向a,z指向b?!?y=*y-1.0;”是將變量a的值減去1.0賦給a,a的值為1.5;“*z=*z+x;”是將變量b的值加上6.5賦給b,b的值為15.5。fun函數(shù)執(zhí)行完畢后,輸出a的值為1.5。故本題答案為C選項。
9.B解析:采用信息隱蔽的目的就是為了確保每個模塊的獨(dú)立性。
10.Dfread函數(shù)用來讀二進(jìn)制文件,其中buffer是數(shù)據(jù)塊的指針,它是內(nèi)存塊的首地址,輸入的數(shù)據(jù)存入此內(nèi)存中;size表示每個數(shù)據(jù)塊的字節(jié)數(shù);count用來指定每讀一次讀入的數(shù)據(jù)塊個數(shù);fp是文件指針,指向要讀的文件。選項A、B、C錯誤。本題答案為D選項。
11.C
12.C\n本題考查邏輯值假,在程序中非0字符表示邏輯真,0表示邏輯假,所以答案選擇C。
\n
13.B解析:C語言的字符以其ASCII碼的形式存在,所以要確定某個字符是大寫字母,只要確定它的ASCII碼在'A'和'Z'之間就可以了,選項A)和C)符合要求。函數(shù)isalpha用來確定一個字符是否為字母,大寫字母的ASCII碼值的范圍為65到90,所以如果一個字母的ASCII碼小于91,那么就能確定它是大寫字母。
14.B題目中嵌套語句的含義是當(dāng)“a<b”且“a<c”成立時,將a的值賦給k。如果“a<b”成立而“a<c”不成立,則將c的值賦給k。如果“a<b”不成立而“b<c”成立,則將b的值賦給k。如果“a<b”不成立且“b<c”也不成立,則將c的值賦給k。判斷條件表達(dá)式,只有B選項可以表示這個含義。故本題答案為B選項。
15.B
16.D
17.C解析:解答本題,首先要明白在對指針進(jìn)行加、減運(yùn)算的時候,數(shù)字“1”不是十進(jìn)制的數(shù)“1”,而是指'1'個存儲單元長度,而1個存儲單元長度占多少存儲空間,應(yīng)該視具體情況而定。如果基本類型是int型,移動1個存儲單元的長度就是位移2個字節(jié),如果基本類型是float型,移動1個存儲單元的長度就是位移4個字節(jié)。所以p+13所指向的數(shù)組元素的地址:300H+(13*上標(biāo))4)H=352H。
18.D
19.C
20.Bstrlen是求字符串的長度,結(jié)果為4,sizeof是求數(shù)組的長度,而數(shù)據(jù)在定義時已給出長度為10。
21.findbigfindbig解析:f是指向函數(shù)的指針變量,根據(jù)題意要求,空格處應(yīng)填入findbig。
本題目考查:C語言中指向函數(shù)的指針變量定義的一般形式為;
數(shù)據(jù)類型標(biāo)識符(*指針變量名)();
“數(shù)據(jù)類型標(biāo)識符”表示函數(shù)返回值的類型。
函數(shù)的調(diào)用可以通過函數(shù)名調(diào)用,也可以通過函數(shù)指針調(diào)用。在給函數(shù)指針變量賦值時,只需給出函數(shù)名而不必給出參數(shù)。(*p)()表示定義一個指向函數(shù)的指針變量,專門用來存放函數(shù)的入口地址,可以先后指向不同的指針變量。用函數(shù)指針調(diào)用函數(shù)時,只需要將(*p)代替函數(shù)名即可,在(*p)之后的括號中,根據(jù)需要寫上參數(shù)。
22.解析:本題中的結(jié)構(gòu)類型名為structnode,所以空白處應(yīng)填:structnode*,即定義一個指向自身的結(jié)構(gòu)體指針。
23.88解析:fabs函數(shù)功能是求x的絕對值,計算結(jié)果為double型。pow功能是計算x的y次方的值,計算結(jié)果同樣為double型。所以本題表達(dá)式相當(dāng)于2.0的3.0次方,結(jié)果為8.000000。
24.80。80。解析:p=a+2使指針p指向數(shù)組a的第三個元素,即a[2],(p+2)[3]使p再移動5個單位,則指向了數(shù)組元素a[7],它的值為80。
25.x==0x==0解析:!x的邏輯意思就是x為非,即x==0。
26.1515解析:執(zhí)行二重循環(huán)時,外循環(huán)每執(zhí)行一次,內(nèi)循環(huán)將循環(huán)一遍。本題的程序段中外循環(huán)執(zhí)行了5次,內(nèi)循環(huán)執(zhí)行了3次,所以程序段內(nèi)循環(huán)體的總執(zhí)行次數(shù)是15。
27.模塊模塊解析:矩形表示的是模塊,箭頭表示的是模塊間的調(diào)用關(guān)系。用帶實(shí)心圓的箭頭表示傳遞的是控制信息,用帶空心圓的箭頭表示傳遞的是數(shù)據(jù)。
28.完整性控制完整性控制
29.6
30.1212解析:本題通過第一個for循坪將數(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;
31.數(shù)據(jù)定義語言數(shù)據(jù)定義語言解析:在數(shù)據(jù)庫管理系統(tǒng)提供的數(shù)據(jù)定義語言,數(shù)據(jù)操縱語言和數(shù)據(jù)控制語言中,數(shù)據(jù)定義語言負(fù)責(zé)數(shù)據(jù)的模式定義與數(shù)據(jù)的物理存取構(gòu)建,數(shù)據(jù)操縱語言負(fù)責(zé)數(shù)據(jù)的操縱,包括查詢及增、刪、改等操作,數(shù)據(jù)控制語言負(fù)責(zé)數(shù)據(jù)完整性、安全性的定義與檢查以及并發(fā)控制、恢復(fù)等功能。
32.&a&bmaxintxyreturn(z)
33.9292解析:本題的主函數(shù)中首先定義了一個4行4列的二維數(shù)組,然后執(zhí)行一個while循環(huán),該循環(huán)中又嵌套了一個do-while循環(huán)。先看while循環(huán),該循環(huán)通過i++的值來判斷是否結(jié)束循環(huán),當(dāng)i++的值為4的時候結(jié)束循環(huán),當(dāng)i=O時,執(zhí)行while的循環(huán)體,顯然if語句條件不滿足不執(zhí)行,接著讓j=0,然后執(zhí)行do-while循環(huán)體,不難看出do-while循環(huán)的功能是將第i+1行的所有元素加起來,所以這時s的值為s=a[1][0]+a[1][1]+a[1][2]+a[1][3]=26,當(dāng)i=1時,i+1=2,if后面括號里的表達(dá)式的值為真執(zhí)行后面的continue語句,結(jié)束該次循環(huán);當(dāng)i=2時,i加1變?yōu)?,把第3+1行的所有元素的值加到s上,此時s=s+a[2][0]+a[2][1]+a[2][2]+a[2][3]=92,當(dāng)i=3時,3+1=4,if后面括號里的表達(dá)式的值為真執(zhí)行后面的continue語句,結(jié)束該次循環(huán),當(dāng)i=3時,if后面括號里的表達(dá)式的值為真執(zhí)行后面的continue語句,結(jié)束該次循環(huán)當(dāng)i=4時while循環(huán)結(jié)束,所以最后輸出的s的值為92。
34.224682,2468解析:在主函數(shù)中根據(jù)整型數(shù)組x[]的定義可知,x[1]的初值等于2。在for循環(huán)語句中,當(dāng)i=0時,p[0]=&x[1],p[0][0]=2;當(dāng)i=1時,p[1]=&x[3],p[1][0]=4;當(dāng)i=2時,p[2]=&x[5],p[2][0]=6;當(dāng)i=3時,p[3]=&x[7],\ue008p[3][0]\ue009=8,所以程序輸出的結(jié)果為2、4、6、8。
35.a=a+ba=a+b解析:a+=b與a=a+b等價,作用是把變量a的值加b后再賦給變量a。
36.算法或程序或流程圖算法或程序或流程圖解析:算法是問題處理方案正確而完整的描述。
37.120120解析:靜態(tài)變量的類型說明符是static,靜態(tài)局部變量屬于靜態(tài)存儲方式,它具有以下特點(diǎn):
①靜態(tài)局部變量屬于靜態(tài)存儲類別,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元。在程序整個運(yùn)行期間都不釋放。
②對靜態(tài)局部變量是在編譯時賦初值的,即只賦初值—次,在程序運(yùn)行時它已有初值。以后每次調(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ù)的階乘。
38.葉子結(jié)點(diǎn)葉子結(jié)點(diǎn)解析:樹中度為零的結(jié)點(diǎn),也就是沒有后件的結(jié)點(diǎn),稱為葉子結(jié)點(diǎn)。
39.611610。6,11,6,10。解析:本題考查自加的前置和后置的區(qū)別。
40.無定值無定值解析:for(i=l;i<7;i++)決定了循環(huán)次數(shù)為6次,每次執(zhí)行的操作是sum+=i,但由于sum沒有初始化,并不知道sum的初值是多少,所以結(jié)果無定值。
41.D解析:本題考核的知識點(diǎn)是用戶的標(biāo)識符。在C語言中,合法的標(biāo)識符由字母、數(shù)字和下劃線組成,并且第一個字符必須為字母或者下劃線,如:acd,d_ad、_adf124,_124等都是合法的標(biāo)識符號.而2asdf、_sd/=都不是合法的標(biāo)識符.在C語言中大寫字母和小寫字母被認(rèn)為是兩個不同的字符,如:ACD和acd是兩個不同的標(biāo)識符號。選項D中用下劃線作為第一個字符,這是不合法的,故選項D不正確,所以,4個選項中選項D符合題意。
42.C解析:根據(jù)混合運(yùn)算規(guī)則,如果有一個數(shù)據(jù)是float型或double型,則其他數(shù)據(jù)類型先轉(zhuǎn)化為double型,運(yùn)算的結(jié)果最終也是double型。
43.A
44.A解析:本題考查while循環(huán)。先判斷while循環(huán)的控制表達(dá)式是否成立,發(fā)現(xiàn)a>b>c不成立,所以不執(zhí)行循環(huán)。直接輸出a、b、c的值。
45.C
46.C解析:alpha[0]指向“ABCD”的首地址;alpha[1]指向“EFGH”的首地址;alpha[2]指向“IJKL”的首地址,依此類推。當(dāng)執(zhí)行p=alpha后,p指向指針數(shù)組alpha的首地址。for循環(huán)中輸出了4個字符串。
47.A
48.C
49.D解析:形參在個數(shù)和類型上要與實(shí)參匹配,形參在未被調(diào)用之前,不占用存儲單元。
50.B解析:p中存放的是地址值,但是*p間接引用了p指向的整數(shù)值。因此返回一個整數(shù)。
51.A解析:數(shù)據(jù)結(jié)構(gòu)作為計算機(jī)的一門學(xué)科,主要研究和討論以下三個方面的問題:①數(shù)據(jù)集合中各數(shù)據(jù)元素之間所固有的邏輯關(guān)系,即數(shù)據(jù)的邏輯結(jié)構(gòu);②在對數(shù)據(jù)進(jìn)行處理時,各數(shù)據(jù)元素在計算機(jī)中的存儲關(guān)系,即數(shù)據(jù)的存儲結(jié)構(gòu);③對各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行的運(yùn)算。
52.D
53.A本題主要考查函數(shù)的遞歸調(diào)用。在做遞歸調(diào)用函數(shù)類型的題目時,我們首先要找到函數(shù)的出口和遞歸結(jié)束的條件。
在本題中,程序首先定義了一個fun函數(shù),函數(shù)的形參是一個整型變量n,從后面的程序可以看出,該函數(shù)是一個遞歸函數(shù)。在函數(shù)體中,首先執(zhí)行條件判斷語句,如果條件結(jié)果為真,說明變量n為1,此時返回1,這是遞歸函數(shù)的出口;否則返回函數(shù)的遞歸調(diào)用。
在主函數(shù)中,定義一個變量x,并試圖通過鍵盤輸入的方式為變量x賦初值,然后調(diào)用fun函數(shù),并用x作為其形參,用x保存最后的運(yùn)行結(jié)果輸出。
變量x的初值為10,從上面的分析我們知道,遞歸調(diào)用的出口是n=1,而每遞歸一次n的值減1,因此,函數(shù)fun遞歸調(diào)用了9次,其運(yùn)算相當(dāng)于10+9+8+7+6+5+4+3+2+1=55。因此,程序最終的輸出結(jié)果是55。
54.B
55.B解析:本題考查兩個位運(yùn)算符。按位異或運(yùn)算符“”’是雙目運(yùn)算符,其功能是參與運(yùn)算的兩數(shù)各對應(yīng)的二進(jìn)位相異或,當(dāng)兩對應(yīng)的二進(jìn)位相異或時,結(jié)果為1。左移運(yùn)算符“<<”是雙目運(yùn)算符,其功能把“<<”左邊的運(yùn)算數(shù)的各二進(jìn)位全部左移若干位,由“<<”右邊的數(shù)指定移動的位數(shù),高位丟棄,低位補(bǔ)0,并且“<<”運(yùn)算符的優(yōu)先級于“^”。
56.D
57.D
58.D解析:fscanf的調(diào)用形式是:fscanf(文件指針,格式字符串,輸入表列);
59.C
60.B[答案]B
[考點(diǎn)]數(shù)據(jù)結(jié)構(gòu)與算法
[評析]依次從上到下,可得出:
第1層結(jié)點(diǎn)數(shù)為1;
第2層結(jié)點(diǎn)數(shù)為2*1=2;
第3層結(jié)點(diǎn)數(shù)為2*2=4;
第n層結(jié)點(diǎn)數(shù)為2的n-1次冪
61.C
62.B在函數(shù)中允許有多個IettLrll語句,但每次調(diào)用只能有一個return語句被執(zhí)行,因此只能返回一個函數(shù)值。定義成void類型的函數(shù),不允許從該函數(shù)取得返回值,也不允許使用return語句,c選項描述錯誤。沒有return語句的函數(shù)在執(zhí)行到函數(shù)的最后一條語句后會自動返回到調(diào)用處,A、D選項描述錯誤。因此B選項正確。
63.BC88e常量表達(dá)式只是起語句標(biāo)號作用,并不是該處進(jìn)行條件判斷。在執(zhí)行switch語句時,根據(jù)switch的表達(dá)式,找到與之匹配的Case語句,就從此case子句執(zhí)行下去,不在進(jìn)行判斷,直到碰到break或函數(shù)結(jié)束為止。所以執(zhí)行內(nèi)層switch(y)時只執(zhí)行了a++,此時a的值為1。然后執(zhí)行外層case2語句的a++;b++;a為2,b為1。所以結(jié)果為B。
64.B
65.B本題考查按位異或的用法。按位異或運(yùn)算的規(guī)則是:兩個運(yùn)算數(shù)的相應(yīng)二進(jìn)制位相同,則結(jié)果為0,相異則結(jié)果為1。b=2的二進(jìn)制為00000010,a=1的二進(jìn)制為00000001,a=a^b=00000011,轉(zhuǎn)化為十進(jìn)制后為3,b=b^a=00000010-00000011=00000001,即1。
66.B
67.A本題考查do-while循環(huán)。當(dāng)--y是0(即y是o)時結(jié)束循環(huán),輸出--y,先將y的值減1再輸出Y的值。
68.C
69.D循環(huán)的條件是i<7并且p[i]是奇數(shù),當(dāng)i=0時,i<7,p[i]=11,滿足條件,所以k=0+11=11,然后i++,i++,所以i=2,p[2]=14,為偶數(shù),退出循環(huán),這時k還是11.
70.B
71.A本題重點(diǎn)考察函數(shù)的調(diào)用,首先要了解字母對應(yīng)的ASCIl碼。例如A為65,a為97。即字母+1劂可得到下一個字母。-其次是函數(shù)形參和實(shí)參的問題,運(yùn)行過程如下:在fun(&b,a)中,}c=.a(chǎn)-,d=65。}c+l=V,d+1=66,prinff(”%c,%c,”,}C,d);輸出b,B,因?yàn)橹羔榗指向地址的值為b,此時b=}C=.b.;豳數(shù)返回執(zhí)行ptud(。%C,%c、n”,b,8);輸出b,A,因此A選項正確。
72.A本題考核的知識點(diǎn)是結(jié)構(gòu)體類型定義和結(jié)構(gòu)體的基本概念。結(jié)構(gòu)體類型的定義格式為:slxuct結(jié)構(gòu)體名{成員說明列表};結(jié)構(gòu)體變量的定義有3種形式。第一種:定義結(jié)構(gòu)體類型的同時定義結(jié)構(gòu)體變量,如struct結(jié)構(gòu)體名{成員說明列表)變量;第二種:先定義一個結(jié)構(gòu)體類型,然后使用該類型來定義結(jié)構(gòu)體變量,如structstudent{成員說明列表l;student變量;第三種:定義一個無名稱的結(jié)構(gòu)體類型的同時定義結(jié)構(gòu)體變量,如truct§tudent{成員說明列表l變量。
73.C數(shù)組a中有5個元素a,0,0,a,0占7個字節(jié)的內(nèi)容。最后一個\\0為結(jié)束符。
74.D
75.C算術(shù)運(yùn)算符+的優(yōu)先級高于-=.且-=的結(jié)合方向?yàn)樽杂蚁蜃?,所以表達(dá)式x-=x+x可以表示成;=x-(x+x)=10-(10+10)=-10,選擇C。
76.D本題考查文件操作函數(shù),兩次fwrite后,幣文件中已經(jīng)寫入l,2,3,O,0,l,2,3,0,0然后將文件幣中的內(nèi)容重新寫人數(shù)組a中,最后輸出a為1。2,3,0,0,1,2,3,0,0,所以選項D正確。
77.AC語言中,大小寫代表不同的兩個標(biāo)識符。
78.C
79.B頭文件;C語言中要用庫函數(shù),則需在前面添加頭文件。輸入輸出函數(shù)的頭文件為”stdio.h”
80.D第一個for循環(huán)作用是對數(shù)組8賦初值,從0~9,第二個缸循環(huán)是計算數(shù)組前4項的a[i]+i的和。0+0,1+1,2+2,3+3,經(jīng)計算的結(jié)果為l2,因此答案為D選項。
81.
82.
【解析】首先定義一個變量來存放表達(dá)式的和.根據(jù)題目中提供的多項式,通過n次循環(huán)來求出n項的和。最后把所求得的和返回到主函數(shù)當(dāng)中。
2021年安徽省滁州市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.對于C語言的函數(shù),下列敘述中正確的是()。
A.函數(shù)的定義不能嵌套,但函數(shù)調(diào)用可以嵌套
B.函數(shù)的定義可以嵌套,但函數(shù)調(diào)用不能嵌套
C.函數(shù)的定義和調(diào)用都不能嵌套
D.函數(shù)的定義和調(diào)用都可以嵌套
2.下列敘述中不正確的是()。
A.在C語言中調(diào)用函數(shù)時,只能把實(shí)參的值傳送給形參,形參的值不能傳送給實(shí)參
B.在C的函數(shù)中,最好使用全局變量
C.外部變量可以在函數(shù)之間傳遞數(shù)據(jù)
D.自動變量實(shí)質(zhì)上是一個函數(shù)內(nèi)部的局部變量
3.若有定義“inta=1234,b=-5678;”,用語句“printf("%+-6d%+-6d",a,b);”輸出,以下正確的輸出結(jié)果是()。
A.+1234-5678(中間有一個空格,最后有一個空格)
B.+1234-5678(最前面有一個空格,中間有一個空格)
C.+-1234+-5678(最前面和最后均無空格)
D.1234-5678(中間有兩個空格,最后有一個空格)
4.下面程序的輸出結(jié)果是______。#inc1ude<stdio.h>main(){char*p[]={"BOOL","OPK","H","SP"};inti;for(i=3;i>=0;i-,i-)prinf("%c",*p[i]);print("\n")}
A.SOB.SPC.SPOPKD.SHOB
5.一個棧的初始狀態(tài)為空?,F(xiàn)將元素1、2、3、4、5、A、B、C、D、E依次入棧,然后再依次出棧,則元素出棱的順序是()。A.A.12345ABCDEB.EDCBA54321C.ABCDEl2345D.54321EDCBA
6.下面哪種排序的平均比較次數(shù)最少()
A.插入排序B.選擇排序C.堆排序D.快速排序
7.有如下程序段
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);
}
程序運(yùn)行后輸出的結(jié)果是A.A.63
B.36
C.編譯出錯
D.00
8.有以下程序:#include<stdio.h>voidfun(doublex,double*y,double*z){*y=*y-1.0;*z=*z+x;}main(){doublea=2.5,b=9.0,*pa,*pb;pa=&a;pb=&b;fun(b-a,pa,pb);printf(“%f\n”,a);}程序運(yùn)行后的輸出結(jié)果是()。
A.8.000000B.9.000000C.1.500000D.10.500000
9.信息隱蔽的概念與下述哪一種概念直接相關(guān)?
A.軟件結(jié)構(gòu)定義B.模塊獨(dú)立性C.模塊類型的劃分D.模塊耦合度
10.函數(shù)fread(buffer,size,count,fp)中buffer代表的是()。
A.—個存儲區(qū),存放要讀的數(shù)據(jù)項
B.一個整數(shù),代表要讀入的數(shù)據(jù)項總數(shù)
C.一個文件指針,指向要讀的文件
D.—個指針,指向讀入數(shù)據(jù)要存放的地址
11.設(shè)棧S的初始狀態(tài)為空,6個元素入棧的順序?yàn)閑1,e2,e3,e4,e5和e6。若出棧的順序是e2,e4,e3,e6,e5,el,則棧s的容量至少應(yīng)該是()。
A.6B.4C.3D.2
12.以下選項中,能表示邏輯值“假”的是()
A.1B.0.000001C.0D.100.0
13.已知字母A的ASCII代碼值為65,若變量kk為char型,以下不能正確判斷出kk中的值為大寫字母的表達(dá)式是
A.kk>=′A′&&kk<=′Z′
B.!(kk>=′A′||kk<=′Z′)
C.(kk+32)>=′a′&&(kk+32)<=′Z′
D.isalpha(kk)&&(kk<91)
14.有嵌套的if語句:if(a<b) if(a<c)k=a; elsek=c;elseif(b<c)k=b;elsek=c;以下選項中與上述if語句等價的語句是()。
A.k=(a<b)?((b<c)?a:b):((b>c)?b:c);
B.k=(a<b)?((a<c)?a:c):((b<c)?b:c);
C.k=(a<b)?a:b;k=(b<c)?b:c;
D.k=(a<b)?a:b;k=(a<c)?a:c;
15.線性鏈表中結(jié)點(diǎn)的結(jié)構(gòu)為(data,next)。已知指針p所指結(jié)點(diǎn)不是尾結(jié)點(diǎn),若在*p之后插入結(jié)點(diǎn)*s,則應(yīng)執(zhí)行下列()操作。
A.s->next=p;p->next=s;
B.s->next=p->next;p->next=s;
C.s->next=p->next;p=s;
D.p->next=s;s->next=p;
16.廣義表((a))的表尾是()。
A.aB.(a)C.((a))D.()
17.若有定義floata[15],*p=a;,且數(shù)組a的首地址為300H,則p+13所指向的數(shù)組元素的地址為()。
A.334HB.30DHC.352HD.31AH
18.數(shù)據(jù)的不可分割的基本單位是()。
A.元素B.結(jié)點(diǎn)C.數(shù)據(jù)類型D.數(shù)據(jù)項
19.下面哪種排序算法是穩(wěn)定的()
A.快速排序B.堆排序C.歸并排序D.選擇排序
20.有以下程序#include<stdio.h>#include<string.h>main(){chara[10]=”abcd”;printf("%d,%d\n",strlen(a),sizeof(a));}程序運(yùn)行后的輸出結(jié)果是()。A.7,4B.4,10C.8,8D.10,10
二、2.填空題(20題)21.設(shè)函數(shù)findbig已定義為求3個數(shù)中的最大值,以下程序?qū)⒗煤瘮?shù)指針調(diào)用findbig函數(shù)。請?zhí)羁铡?/p>
main()
{intfindbig(int,int,int);
int(*f)(),x,y,z,big;
f=【】。
scanf("%d%d%d",&x,&y,&z);
big=(*f)(x,y,z);
printf("big=%d\n",big);
}
22.以下定義的結(jié)構(gòu)體類型擬包括兩個成員,其中成員變量info用來存入整形數(shù)據(jù);成員變量link是指向自身結(jié)構(gòu)體的指針,請將定義比沖完整
structnode
{intinfo;
______link;};
23.若x和y都是double型變量,且x的初值為3.0,y的初值為2.0,則表達(dá)式pow(y,fabs(x))的值為【】。
24.以下程序的輸出結(jié)果是______。
main()
{inta[10]={10,20,30,40,50,60,70,80,90,100},*p;
p=a+2;printf("%d\n',(p+2)[3]);
}
25.若x為血類型,請寫出與!x等價的C語言表達(dá)式______。
26.若i、j為int類型,則以下程序段內(nèi)循環(huán)體的總執(zhí)行次數(shù)是【】。
for(i=5;i;i--)
for(j=0;j<3;j++)
{
}
27.常用的軟件結(jié)構(gòu)設(shè)計工具是結(jié)構(gòu)圖(SC),也稱程序結(jié)構(gòu)圖。其中,用矩形表示______,用帶空心圓的箭頭表示傳遞的是數(shù)據(jù)。
28.數(shù)據(jù)庫保護(hù)分為:安全性控制、______、并發(fā)性控制和數(shù)據(jù)的恢復(fù)。
29.若x,y和z均是int型變量,則執(zhí)行下面表達(dá)式后的x值為【】。
x=(y=4)+(z=2)
30.下面程序的輸出是【】。
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)
arr[i]=i;
for(i=1;i<4;i++)
k+=arr[i]+i;
printf("%d\n"k);}
31.在數(shù)據(jù)庫管理系統(tǒng)提供的數(shù)據(jù)定義語言、數(shù)據(jù)操縱語言和數(shù)據(jù)控制語言中,【】負(fù)責(zé)數(shù)據(jù)的模式定義與數(shù)據(jù)的物理存取構(gòu)建。
32.理解下面的程序,填空完善程序。
main()
{inta,b,c;
scanf("%d%d",【】);
c=【】(a,b);
printf("a=%db=%dmax=%d\n",a,b,c);
}
intmax(x,y)
【】;
{intz;
if(x>y)z=x;
elsez=y(tǒng);
【】;
}
33.以下程序運(yùn)行后的輸出結(jié)果是【】。
main()
{inta[4][4]={{1,2,3,4),{5,6,7,8},{11,12,13,14},{15,16,17,18}};
inti=0,j=0,s=0;
while(i++<4)
{
if(i==2||i==4)continue;
j=0;
do{S+=a[i][j];j++;}while(j<4);
}
printf("%d\n",s);
}
34.以下程序的定義語句中,x[1]的初值是【】,程序運(yùn)行后輸出的內(nèi)容是【】。
#include<stdio.h>
main()
{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;
for(i=0;i<4;i++)
{p[i]=&x[2*i+1];
printf("%d",p[i][0]);
}
printf("\n");)
}
35.與表達(dá)式a+=b等價的另一書寫形式是______。
36.問題處理方案的正確而完整的描述稱為______。
37.以下程序輸出的最后一個值是【】
intff(intn)
{staticintf=1;
f=f*n;
returnf;
}
main()
{inti;
for(i=1;i<=5;i++)printf("%d\n",ff(i));
}
38.樹中度為零的結(jié)點(diǎn)稱為______。
39.下面程序
main()
{inti,j,m,n;
i=5;
j=10;
m=++i;
n=j++;
printf("%d,%d,%d,%d",i,j,m,n);
}
運(yùn)行后,i,j,m,n的值分別是_______。
40.下列程序的輸出結(jié)果是______。
main()
{inti,sum;
for(i=1;i<7;i++)
sum+=i;
primf("%d",sum);
}
三、1.選擇題(20題)41.下列選項中,不能用作標(biāo)識符的是A._1234_B._1_2C.int_2_D.2_int_
42.設(shè)變量a是int型,f是float型,i是double型,則表達(dá)式10+'a'+i*f值的數(shù)據(jù)類型為()。
A.intB.floatC.doubleD.不確定
43.有以下程序#include<stdio.h>main(){int*p,j;p=NULLp=fun();for(j=0;j<4;j+){printf("%d",*p);p++;}}int*fun(){inta[4],k;for(k=0;k<4;k++)a[k]=k;return(A);}程序運(yùn)行后的輸出結(jié)果是()
A.程序有錯不能運(yùn)行B.輸出4個NULLC.輸出0123D.輸出1111
44.有下列程序:main(){intt,a=1,b=5,c=-2;while(a>b>c){t=a;a=b;b=t;c++;}printf("%d,%d,%d",a,b,c);}
A.1,5,0B.1,5,-2C.5,1,-1D.5,1,-2
45.在下列關(guān)于邏輯表達(dá)式a&&b的敘述中,錯誤的一條是()
A.若a為真、b為真,則a&&b為真
B.若a為真、b為假,則a&&b為假
C.若a為假、b為真,則a&&b為真
D.若a為假、b為真,則a&&b為假
46.以下程序輸出的結(jié)果為______。main(){char*alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"};char**p;inti;p=alpha;for(i+0;i<4;i++)printf("%s",p[i]);}
A.ABCDEFGHIJKLB.ABCDC.ABCDEFGHIJKLMNOPD.AEIM
47.以下程序的運(yùn)行結(jié)果為______。main(){inti,f1,f2;f1=f2=1;for(i=0;i<4;i++){printf("%d%d",f1,f2);f1+=f2;f2+=f1;}}
A.1123581321
B.1122551010
C.1258981321
D.0112451521
48.若有以下定義語句:doublea[5];inti=0;能正確給a數(shù)組元素輸入數(shù)據(jù)的語句是()
A.scanf("%lf%lf%lf%lf%lf,a);
B.for(i=0;i<=5;i++)scanf("%lf,a+i);
C.while(i<5)scanf("%lf",&a[i++]);
D.while(i<5)seanf("%lf,a+i);
49.以下正確的說法是______。
A.實(shí)參和與其對應(yīng)的形參各占用獨(dú)立的存儲單元
B.實(shí)參和與其對應(yīng)的形參共用一個存儲單元
C.只有當(dāng)實(shí)參和與其對應(yīng)的形參同名時才共用存儲單元
D.型參是虛擬的,函數(shù)在沒有被調(diào)用時,不占用存儲單元
50.已定義以下函數(shù)
intfun(int*p)
{return*p;)
fun函數(shù)返回值是A.不確定的值B.一個整數(shù)C.形參P中存放的值D.形參P的地址值
51.數(shù)據(jù)結(jié)構(gòu)作為計算機(jī)的一門學(xué)科,主要研究數(shù)據(jù)的邏輯結(jié)構(gòu)、對各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行的運(yùn)算,以及()。A.A.數(shù)據(jù)的存儲結(jié)構(gòu)B.計算方法C.數(shù)據(jù)映象D.邏輯存儲
52.下面程序中有錯誤的行是(每行程序前面的數(shù)字表示行號)1main()2{3inta[3]={1};4inti;5scanf("%d",&a);6for(i-1;i<3;i++)a[0]=a[0]+a[i];7printf("a[0]=%d\n,"a[0]);8}
A.3B.6C.7D.5
53.有以下程序
intfun(intn)
{if(n==1)return1;
else
return(n+fun(n-1));
}
main()
{intx;
scanf("%d",&x);x=fun(x);printf("%d\n",x)
}
執(zhí)行程序時,給變量x輸入10,程序的輸出結(jié)果是
A.55B.54C.65D.45
54.請讀程序:#include<stdio.h>f(intb[],intn){inti,r;r=l;for(i=0;i<=n;i++)r=r*b[i];returnr;}main(){intxa[]={2,3,4,5,6,7,8,9};x=f(a,3);printf("%d\n",x);}上面程序的輸出結(jié)果是()
A.720B.120C.24D.6
55.設(shè)有以下語句charx=3,y=6,z;z=x^y<<2;則z的二進(jìn)制值是
A.10100B.11011C.11100D.11000
56.若x是int型變量,且有下面的程序片段:for(x=3;x<6;x++)printf(x%2)?("**%d"):(”##%d\n”),x);上面程序片段的輸出結(jié)果是()
A.**3##4**5
B.##3**4##5
C.##3**4##5
D.**3##4**5
57.下列程序運(yùn)行后,如果從鍵盤上輸入ABCDE<回車>,則輸出結(jié)果為______。#include<stdio.h>#include<string.h>fuch(charstr[]){intnum=0;while(*(str+num)!='\0')num++;return(num);}main(){charstr[10],*p=str;gets(p);printf("%d\n",fuch(p));}
A.8B.7C.6D.5
58.fscanf函數(shù)的正確調(diào)用形式是()。
A.fscanf(文件指針,格式字符串,輸出表列);
B.fscanf(格式字符串,輸出表列,文件指針);
C.fscanf(格式字符串,文件指針,輸入表列);
D.fscanf(文件指針,格式字符串,輸入表列);
59.在下列敘述中,正確的一條是()
A.表達(dá)式1+2<<3和sizeof(3.8)的結(jié)果分別為24和8
B.函數(shù)fputc(c,stdout)與putchar(c)的結(jié)果相同
C.語句int*pt中的*pt是指針變量名
D.主函數(shù)和其他函數(shù)可以互相調(diào)用
60.在一棵二叉樹上第5層的結(jié)點(diǎn)數(shù)最多是______。
A.8B.16C.32D.15
四、選擇題(20題)61.
62.以下關(guān)于retllm語句的敘述中正確的是()。
A.一個自定義函數(shù)中必須有一條return語句
B.一個自定義函數(shù)中可以根據(jù)不同情況設(shè)置多條retum語句
C.定義成void類型的函數(shù)中可以有帶返回值的return語句
D.沒有return語句的自定義函數(shù)在執(zhí)行結(jié)束時不能返回到調(diào)用處
63.有以下程序:
程序運(yùn)行后的輸出結(jié)果是()。
A.a=2,b=2B.a=2,b=1C.a=1,b=1D.a=1,b=0
64.
65.若有以下程序:inta=1,b=2:a=a^b:b=b^a:則執(zhí)行以上語句后a和b的值分別是()。
A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2.b=1
66.
67.有下列程序:main{inty=10;do{y--;}while(--y);printf("%d\n",--y);)當(dāng)執(zhí)行程序時,輸出的結(jié)果是()。A.-1B.1C.4D.0
68.
69.有以下程序:
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.57B.39C.24D.11
70.
71.有以下程序:
程序運(yùn)行后的輸出結(jié)果是()。
A.b,B"b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B
72.若有以下語句
73.有以下程序:
main()
{
chara[7]="a0\OaO\0";inti,j;
i=sizeof(a);j=strlen(a);
printf("%d%d\n",i,j);
}
程序運(yùn)行后的輸出結(jié)果是()。
A)22B)76
C)75D)62
74.
75.若有定義語句:intX=10;,則表達(dá)式x-=x+x的值為()。
A.0B.-20C.-10D.10
76.有以下程序:
程序運(yùn)行后的輸出結(jié)果是()。
A.1,2,3,0,0,0,0,0,0,0,
B.1,2,3,1,2,3,0,0,0,0,
C.123,0,0,0,0,123,0,0,0,0,
D.1,2,3,0,0,1,2,3,0,0,
77.下列關(guān)于C語言的敘述錯誤的是()。
A)大寫字母和小寫字母的意義相同
B)不同類型的變量可以在一個表達(dá)式中
C)在賦值表達(dá)式中等號(=)左邊的變量和右邊的值可以是不同類型
D)同一個運(yùn)算符號在不同的場合可以有不同的含義
78.
79.如果在C程序中要用到庫函數(shù)中的字符串比較函數(shù)strcmp(),那么在程序前面應(yīng)該添加的頭文件是()。
A.stdio.hB.string,hC.a(chǎn)lloc.hD.math.H
80.有以下程序:
程序運(yùn)行后的輸出結(jié)果是()。
A.10B.16C.6D.12
五、程序改錯題(1題)81.在主函數(shù)中從鍵盤輸入若干個數(shù)放人數(shù)組中,用0結(jié)束輸入并放在最后一個元素中。下列給定程序中,函數(shù)proc()的功能是計算數(shù)組元素中值為負(fù)數(shù)的平均值(不包括0)。例如,數(shù)組中元素的值為78、-65、-15、35、-45、0,則程序的運(yùn)行結(jié)果為-41.666667。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.請編寫函數(shù)proc(),其功能是:計算并輸出下列多項式值。S=(1+1/2)+(1/3+1/4)+…+(1/(2n1)+1/2n)例如,若主函數(shù)從鍵盤給n輸入100后,則輸出為s=5.878031。n的值要求大于1但不大于100。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
參考答案
1.A
2.B解析:編譯時,編譯系統(tǒng)不為局部變量分配內(nèi)存單元,而是在程序運(yùn)行中,當(dāng)局部變量所在的函數(shù)被調(diào)用時,編譯系統(tǒng)根據(jù)需要要臨時分配內(nèi)存,調(diào)用結(jié)束空間釋放;全局變量一經(jīng)定義,編譯系統(tǒng)為其分配固定的內(nèi)存單元,在程序運(yùn)行的自始至終都占用固定的單元。在考慮內(nèi)存不定的情況下,最好使用全局變量。
3.Aprintf函數(shù)參數(shù)包括格式控制字符串和輸出參數(shù),其中格式控制字符串中除了格式控制字符外,其他字符原樣輸出。本題中的printf(“%+-6d%+-6d”,a,b);”,在%和格式控制字符d之間,“+”號表示輸出的數(shù)字帶正負(fù)號號表示輸出數(shù)據(jù)向左對齊,“6”表示輸出寬度,如果輸出數(shù)據(jù)的寬度不夠6,那么左對齊,右邊補(bǔ)空格。所以本題輸出+1234-5678(中間有一個空格,最后有一個空格)。本題答案為A選項。
4.A解析:p[0]存放的是“BOOL\\0”的首地址;p[1]存放的是“OPk\\0”的首址等。在printf語句中輸出的*p[i]表示p[i]字符串中的第一個字符。在for循環(huán)中,i的初值為3,那么輸出的第—個字符為“S”,接著兩次i--,則輸出的值為*p[1],即字符“O”,所以本題的輸出為SO。
5.B棧是先進(jìn)后出的原則組織數(shù)據(jù),所以人棧最早的最后出棧,所以選擇B。
6.D
7.B在本題中,程序首先定義了一個無返回值的函數(shù)fun,該函數(shù)帶有兩個整型的指針形參變量,在函數(shù)體中,首先定義一個整型指針變量k,然后試圖利用k來交換a和b的結(jié)果。但處理語句k=a;很明顯是對地址進(jìn)行賦值操作。在C語言中,指針變量作為函數(shù)參數(shù)時,可以改變被指向的變量的值,但不能改變指針變量本身的值,即我們可以改變實(shí)參指向的變量的值,不能使實(shí)參指向其他的變量。因此,本函數(shù)并不能交換形參所指向變量的結(jié)果。
在主函數(shù)中,首先定義了兩個整型變量a和b,并分別被初始化為3和6,然后定義兩個指針變量x和y,分別指向a和b,接著調(diào)用fun函數(shù),傳遞的實(shí)參為指針變量x和y,根據(jù)前面對fun函數(shù)的分析可知,調(diào)用該函數(shù)后并不能實(shí)現(xiàn)a和b數(shù)組的交換,因此,執(zhí)行輸出語句后,輸出的結(jié)果是36。本題正確答案選B。
8.Cmain函數(shù)定義兩個double類型的變量a、b,分別賦初值為2.5、9.0。另外定義兩個double類型的指針變量pa、pb,其中pa指向a,pb指向b。然后將b-a、pa、pb傳給函數(shù)fun,此時x的值為6.5,y指向a,z指向b?!?y=*y-1.0;”是將變量a的值減去1.0賦給a,a的值為1.5;“*z=*z+x;”是將變量b的值加上6.5賦給b,b的值為15.5。fun函數(shù)執(zhí)行完畢后
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度生物制藥廠房租賃合同及藥品研發(fā)生產(chǎn)服務(wù)協(xié)議3篇
- 科技力量團(tuán)隊榮耀
- 2025年度精密模具加工委托合同協(xié)議書4篇
- 2025年度柴油發(fā)電機(jī)租賃與環(huán)保檢測服務(wù)協(xié)議3篇
- 二零二五年度出租車租賃運(yùn)營管理承包合同3篇
- 二零二五年度餐飲行業(yè)健康證照辦理服務(wù)合同樣本3篇
- 2025年度產(chǎn)學(xué)研合作知識產(chǎn)權(quán)共享合同2篇
- 專業(yè)鉆掘設(shè)備出租協(xié)議規(guī)范文本一
- 個人租車合同協(xié)議書
- 2025年度廁所清潔能源應(yīng)用與改造合同3篇
- 深圳2024-2025學(xué)年度四年級第一學(xué)期期末數(shù)學(xué)試題
- 中考語文復(fù)習(xí)說話要得體
- 《工商業(yè)儲能柜技術(shù)規(guī)范》
- 華中師范大學(xué)教育技術(shù)學(xué)碩士研究生培養(yǎng)方案
- 醫(yī)院醫(yī)學(xué)倫理委員會章程
- xx單位政務(wù)云商用密碼應(yīng)用方案V2.0
- 風(fēng)浪流耦合作用下錨泊式海上試驗(yàn)平臺的水動力特性試驗(yàn)
- 高考英語語法專練定語從句含答案
- 有機(jī)農(nóng)業(yè)種植技術(shù)操作手冊
- 塑料件缺陷匯總
- 2020年的中國海外工程示范營地申報材料及評分標(biāo)準(zhǔn)
評論
0/150
提交評論