版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2022年河北省邯鄲市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.一個有8個頂點(diǎn)的有向圖,所有頂點(diǎn)的入度出度之和與所有頂點(diǎn)的出度之和的差是()
A.16B.4C.0D.2
2.
3.設(shè)x=011050,則x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
4.以下敘述中錯誤的是()。
A.可以通過typedef增加新的類型
B.可以typedef將已存在的類型用一個新的名字來代表
C.用typedef定義新的類型名后,原有類型名仍有效
D.用typedef可以為各種類型起別名,但不能為變量起別名
5.有下列程序:
程序執(zhí)行后的輸出結(jié)果是()。A.3,7,3,7B.7,3,7,3C.3,7,7,3D.7,3,3,7
6.有以下程序:#include<stdio.h>voidfun(char*a,charB){while(*(a++)!=‘0’);while(*(a-1)<B)*(a--)=*(a-1);*(a--)=b;}main(){chars[8]=“pmfc”,r,c;c=getchar();fun(s,c);puts(s);}程序運(yùn)行時輸入k并按<Enter>鍵,則輸出結(jié)果為()。
A.pmfkcB.pmfckC.kpmfcD.pmkfc
7.以下有關(guān)scanf函數(shù)的敘述中錯誤的是()。
A.在scanf函數(shù)的格式字符前既可以加入正整數(shù)指定輸入數(shù)據(jù)所占的寬度,也可以對實數(shù)指定小數(shù)位的寬度
B.scanf函數(shù)有返回值,其值就是本次調(diào)用scanf函數(shù)時正確讀入的數(shù)據(jù)項個數(shù)
C.scanf函數(shù)從輸入字符流中按照格式控制指定的格式解析出相應(yīng)數(shù)據(jù),送到指定地址中
D.在scanf函數(shù)中的格式控制字符串不會輸出到屏幕上
8.棧和隊列的共同點(diǎn)是()。
A.都是先進(jìn)先出B.都是先進(jìn)后出C.只允許在端點(diǎn)處插入和刪除元素D.沒有共同特點(diǎn)
9.以下敘述中錯誤的是()。
A.形參可以是常量、變量或表達(dá)式
B.實參可以是常量、變量或表達(dá)式
C.實參的類型應(yīng)與形參的類型賦值兼容
D.實參的個數(shù)應(yīng)與形參的個數(shù)一致
10.
11.采用表結(jié)構(gòu)來表示數(shù)據(jù)和數(shù)據(jù)間聯(lián)系的模型是()。
A.層次模型B.概念模型C.網(wǎng)狀模型D.關(guān)系模型
12.已知函數(shù)的調(diào)用形式為fread(buf,size,count,fp),參數(shù)buf的含義是
A.一個整型變量,代表要讀入的數(shù)據(jù)項總數(shù)
B.一個文件指針,指向要讀的文件
C.一個指針;指向要讀入數(shù)據(jù)的存放地址
D.一個存儲區(qū),存放要讀的數(shù)據(jù)項
13.
14.第
4
題
棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是
A.ABCEDB.DCBEAC.DBCEAD.CDABE
15.下列敘述中錯誤的是()。A.在程序中凡是以“#”開始的語句行都是預(yù)處理命令行
B.預(yù)處理命令行的最后不能以分號表示結(jié)束
C.#defineMAX是合法的宏定義命令行
D.C程序?qū)︻A(yù)處理命令行的處理是在程序執(zhí)行的過程中進(jìn)行的
16.按照“先進(jìn)先出”組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是()。
A.隊列B.棧C.雙向鏈表D.二叉樹
17.
18.用樹形結(jié)構(gòu)來表示實體之間聯(lián)系的模型稱為()。
A.關(guān)系模型B.層次模型C.網(wǎng)狀模型D.數(shù)據(jù)模型
19.以下程序的輸出結(jié)果是()。main(){inti,a[4][4]一{{1,3,5),{2,4,6},{3,5,7}};printf("%(1%d%d%d\n".a(chǎn)[O][3],a[1][2],a[2][1],a[3][0];}A.0650B.1470C.5430D.輸出值不定
20.若輸入“abcdef”“abdef”,下述程序的輸出結(jié)果為()。#include<stdio.h>#include<string.h>main{intn;chars1[20],s2[20],*p1,*p2;scanf("%s",s1);scanf("%S",s2);p1=s1;p2=s2;n=strcmp(p1,p2);printf("Vood\n",n);}A.-1B.0C."abcdef"D."abdef"
二、2.填空題(20題)21.下列程序的功能是將字符串s中所有的字符c刪除。請?zhí)羁铡?/p>
#include<stdio.h>
main()
{chars[80];
inti,j;
gets(s);
for(i=j=0;s[i]!='\0';i++)
if(s[i]!='c')
s[j]='\0';
puts(s);
}
22.以下程序的作用是:從名為filea.dat的文本文件中逐個讀入字符并顯示在屏幕上。請?zhí)羁铡?/p>
#include<stdio.h>
main()
{FILE*fp;charch;
fp=fopen(【】);
ch=fsetc(fp);
while(!feof(fp)){putchar(ch);ch=fgetc(fp);}
putchar('\n');fclose(fp);
}
23.以下程序用于判斷a,b,c能否構(gòu)成三角形,若能,輸出YES,否則輸出NO。當(dāng)給a,b,c輸入三角形三條邊長時,確定a,b,c能構(gòu)成三角形的條件是需同時滿足三個條件:a+b>c,a+c>b,b+c>a。請?zhí)羁铡?/p>
#include<stdio.h>
main()
{floata,b,c;
scanf("%f%f%f",&a,&b,&c);
if(【】)printf("YES\n");/*a.b.c能構(gòu)成三角形*/
elseprinff("NO\n");/*a.b.c不能構(gòu)成三解形*/
}
24.x和y都是double型變量,x的初值為4.0,y的初值為2.0,則表達(dá)式pow(y,fabs(x))的值為______。
25.語句:x++;++x;x=1+x;執(zhí)行后都使變量x中的值增1,請寫出一條同一功能的賦值語句______。
26.若x為int類型,請寫出與!x等價的C語言表達(dá)式______。
27.函數(shù)my_cmp()的功能是比較字符串s和t的大小,當(dāng)s等于t時返回0,否則返回s和t的第一個不同字符的ASCII碼差值,即s>t時返回正值,s<t時返回負(fù)值。請?zhí)羁铡?/p>
My_cmp(char*s,char*t)
{while(*s==*t)
{if(*s==′\0)return0;
++s;++t;
}return【】;
}
28.在先左后右的原則下,根據(jù)訪問根結(jié)點(diǎn)的次序,二叉樹的遍歷可以分為三種;前序遍歷、【】遍歷和后序遍歷。
29.有以下程序:
main()
{inta[]={1,2,3,4,5,6,7,8,9,0},*p;
for(p=a;p<a+10;p++)printf("%d,",*p);
}
程序運(yùn)行后的輸出結(jié)果是【】。
30.下面程序把從終端讀入的10個整數(shù)以二進(jìn)制方式寫入一個名為bi.dat的新文件中。
#include<stdio.h>
FILE*fp;
main()
{inti,j;
if(fp=fopen(【】)==NULL)exit(0);
for(i=0;i<10;i++)
{scanf("%d",&j);
fwrite(&j,sizeof(int),1,【】;
}
fclose(fp);
}
31.下列程序的功能是對輸入的一行字符中的數(shù)字字符的字面值累加,輸出此累加和,請?zhí)羁铡?/p>
#include<stdio.h>
#include<ctype.h>
main()
{charc;
inta,s=0;
while(______)
if(isdigit(C))
{a=c-'0';s+=a;}
printf("s=%d",s);
}
32.設(shè)有以下定義:
structss
{intinfo;structss*link;}x,y,z;
且已建立如下圖所示鏈表結(jié)構(gòu),
請寫出刪除點(diǎn)y的賦值語句【】。
33.排序是計算機(jī)程序設(shè)計中的一種重要操作,常見的排序方法有插入排序、______和選擇排序。
34.若想通過以下輸入語句給a賦值1,給b賦值2.則輸入數(shù)據(jù)的形式應(yīng)該是【】。
inta,b;
scanf("a=%d,b=%d",&a,&b);
35.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與()。
36.某二叉樹中度為2的結(jié)點(diǎn)有18個,則該二叉樹中有【】個葉子結(jié)點(diǎn)。
37.下列程序段的輸出結(jié)果是【】。
intn='c';
switch(n++)
{default:printf("error");break;
case'a':
case'A':
case'b':
case'B':printf("good");break;
case'c':case'C':printf("pass");
case'd':case'D':printf("warn");
}
38.數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的【】以及對數(shù)據(jù)的操作運(yùn)算。
39.設(shè)有如下宏定義
#defineMYSWAP(z,x,y)
{z=x;x=y;y=z;}
以下程序段通過宏調(diào)用實現(xiàn)變量a,b內(nèi)容交換,請?zhí)羁铡?/p>
floata=5,b=16,c;
MYSWAP(【】a,b);
40.若s是int型變量,且s=8,則s%3+(s+1)%3表達(dá)式的值為()。
三、1.選擇題(20題)41.C語言程序的基本單位是______。
A.程序行B.語句C.函數(shù)D.字符
42.語句“printf("a\bhow\'are\'y\\\bou\n");”的輸出結(jié)果是()。
A.a\bhow\'are\'y\\bou
B.a\bhow\'are\'y\bou
C.how'are'you
D.ahow'are'y\bou
43.下列關(guān)于棧的描述中錯誤的是()
A.棧是先進(jìn)后出的線性表B.棧只能順序存儲C.棧具有記憶作用D.對棧的插入與刪除操作中,不需要改變棧底指針
44.可在C程序中用作用戶標(biāo)識符的一組標(biāo)識符是A.and2007
B.Date_y-m-d
C.HiDr.Tom
D.caseBigl
45.軟件開發(fā)離不開系統(tǒng)環(huán)境資源的支持,其中必要的測試數(shù)據(jù)屬于A.硬件資源B.通信資源C.支持軟件D.輔助資源
46.下列有關(guān)數(shù)據(jù)庫的描述,正確的是______。
A.數(shù)據(jù)庫是一個DBF文件B.數(shù)據(jù)庫是一個關(guān)系C.數(shù)據(jù)庫是一個結(jié)構(gòu)化的數(shù)據(jù)集合D.數(shù)據(jù)庫是一組文件
47.已知字母A的ASCII碼為十進(jìn)制的65,下面程序main(){charch1,ch2;ch1='A'+'5'-'3';ch2='A'+'6'-'3';printf("%d,%c\n",ch1,ch2);}的輸出是_________。
A.67,DB.B,CC.C,DD.不確定的值
48.下列程序段的運(yùn)行結(jié)果是()。#include<stdio.h>voidmain(){charstr[]="ABC",*p=str;printf("%d\n",*(p+3));}
A.67B.0C.字符'C'的地址D.字符'C'
49.在下列選項中,沒有構(gòu)成死循環(huán)的程序段是()。
A.inti=100;for(;;){i=i%10+1;if(i>10)break;}
B.while(1);
C.intk=0;do{++k;}while(k<=10);
D.ints=12;while(s);--s;
50.若有如下程序:main(){intn;for(n=0;n<9;n++){if(n<1){printf("%d",n);continue;}if(n==4)break;printf("%d",n);}}則循環(huán)體執(zhí)行的次數(shù)是()。
A.1B.5C.9D.死循環(huán)
51.以下程序輸出的結(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
52.有以下程序:voidswap1(intC[]){intt;t=c[0];c[0]=C[1];c[1]=t;}voidswap2(intc0,intc1){intt;t=c0;c0=c1;c1=t;}main(){inta[2]={3,5},b[2]={3,5);swapl(a);swap2(b[0],b[1]);printf("%d%d%d%d\n",a[0],a[1],b[0],b[1]);}其輸出結(jié)果是
A.5353B.5335C.3535D.3553
53.有以下程序:#include<string.h>main(){charstr[][20]={"Hello","Beijing"},*p=str;printf("%d\n",strlen(p+20));}程序運(yùn)行后的輸出結(jié)果是______。
A.0B.5C.7D.20
54.按照“后進(jìn)先出”原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是()。
A.隊列B.棧C.雙向鏈表D.二叉樹
55.若x為int類型變量,則執(zhí)行以下程序段后的x值是______。x=6;x+=x-=x*x;
A.36B.-60C.60D.-24
56.有以下程序floatfun(intx,inty){return(x+y);}main(){inta=2,b=5,c=8;printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}程序運(yùn)行后的輸出結(jié)果是
A.編譯出錯B.9C.21D.9
57.有如下程序段int*p,a=10,b=1;p=&a;a=*p+b;執(zhí)行該程序段后,a的值為______。
A.12B.11C.10D.編譯出錯
58.以下符合C語言語法的實型常量是
A.1.2E0.5B.3.14159EC.5.00E-03D.E15
59.下列選項中不合法的十六進(jìn)制數(shù)是()。
A.OxffB.OXllC.OxlgD.OXabc
60.下列關(guān)系運(yùn)算中,能使經(jīng)運(yùn)算后得到的新關(guān)系中元組個數(shù)少于原來關(guān)系中元組個數(shù)的是()。
A.選擇B.投影C.連接D.并
四、選擇題(20題)61.下列敘述中正確的是()。
A.線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)與順序存儲結(jié)構(gòu)所需要的存儲空間是相同的
B.線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)所需要的存儲空間一般要多于順序存儲結(jié)構(gòu)
C.線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)所需要的存儲空間一般要少于順序存儲結(jié)構(gòu)
D.線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)所需要的存儲空間與順序存儲結(jié)構(gòu)沒有任何關(guān)系
62.有以下程序
#include"stdio.h"
main()
{charstr[]="tomeetme",str1[]="toseeyou";
char*p=str,*p1=str1;
inti;
for(i=0;i<7;i++)
if(*(p+i)==*(p1+i))
putchar(*(p+i));
printf("\n");
}
程序的運(yùn)行結(jié)果是
A.to
B.tomeet
C.toee
D.程序段不能通過編譯
63.在軟件開發(fā)中,需求分析階段可以使用的工具是()。A.N—s圖B.DFD圖C.PAD圖D.程序流程圖
64.
有以下程序:
main()
{intk=5,n=0;
do
{switch(k)
{case1:
case3:n+=l;k--;break;
defalut:n=0;k--;
case2:
case4:n+=2;k--;break:
}
printf("%d",n);
}while(k>0&&n<5);
}
程序運(yùn)行后的輸出結(jié)果是()。
A.235B.0235C.02356D.2356
65.
66.有以下程序:#include<stdio.h>main(){charcl=1,c2=2;cl=getchar();c2=getchar();putchar(c1);putcha:(c2);}當(dāng)程序運(yùn)行時輸入a<回車>后,下列敘述中正確的是()。A.變量c1被賦予字符a,c2被賦予回車符
B.程序?qū)⒌却脩糨斎氲?個字符
C.變量c1被賦予字符a,c2中仍是原有字符2
D.變量c1被賦予字符a,c2中將無確定值
67.第
42
題
下面說明不正確的是
A.chara[10]="china";
B.chara[10],*p=a;p="china"
C.char*a;a="china";
D.chara[10],*p;p=a="china"
68.有以下程序:
程序運(yùn)行后的輸出結(jié)果是()。
A.61B.70C.63D.71
69.
70.下面不屬于需求分析階段任務(wù)的是()。
A.確定軟件系統(tǒng)的功能需求B.確定軟件系統(tǒng)的性能需求C.制定軟件集成測試計劃D.需求規(guī)格說明書評審
71.有以下程序:
程序運(yùn)行后的輸出結(jié)果是()。.
A.3,3B.1,1C.2,3D.1,2
72.對下列二叉樹
進(jìn)行中序遍歷的結(jié)果是()。
A.ACBDFEGB.ACBDFGEC.ABDCGEFD.FCADBEG
73.設(shè)有定義:,以下不能將一行(不超過80個字符)帶有空格的字符串正確讀入的語句或語句組是()。
74.設(shè)有下列二叉樹:
對此二叉樹中序遍歷的結(jié)果為()。
A.ACBDEFB.DEBFCAC.ABDECFD.DBEAFC
75.有以下程序:
程序運(yùn)行后的輸出結(jié)果是()。
A.b,B"b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B
76.
77.有以下程序:
若想通過鍵盤輸入,使得al的值為12,a2的值為34,cl的值為字符a,c2的值為字符b,程序運(yùn)行后的輸出結(jié)果是:l2,a,34,b。則正確的輸入格式是(以下-代表空格,<;CR>;代表回車)()。
A.12-a34-b<CR>
B.12-a-34-b<CR>
C.12,a,34,b<CR>
D.12a34b<CR>
78.下列關(guān)于二叉樹的敘述中,正確的是()。
A.葉子結(jié)點(diǎn)總是比度為2的結(jié)點(diǎn)少一個
B.葉子結(jié)點(diǎn)總是比度為2的結(jié)點(diǎn)多一個
C.葉子結(jié)點(diǎn)數(shù)是度為2的結(jié)點(diǎn)數(shù)的兩倍
D.度為2的結(jié)點(diǎn)數(shù)是度為1的結(jié)點(diǎn)數(shù)的兩倍
79.若有定義:inta,h;通過語句:scanf(”%d;%d”,&a,&B.;,能把整數(shù)3賦給變量a,5賦給變量b的輸入數(shù)據(jù)是()。
A.35B.3,5C.3;5D.35
80.(55)在設(shè)計程序時,應(yīng)采納的原則之一是()
A.程序結(jié)構(gòu)應(yīng)有助于讀者理解
B.不限制goto語句的使用
C.減少或取消注解行
D.程序越短越好
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:判斷一個整數(shù)m是否是素數(shù),若是返回1,否則返回0。在main()函數(shù)中,若proc()返回1,則輸出″YES″;若proc()返回0,則輸出″NO″!
請修改程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main)函數(shù),不得增行或刪行,也不得,t更改程序的結(jié)構(gòu)。
試題程序:
六、程序設(shè)計題(1題)82.編寫函數(shù)fun,其功能是:求ss所指字符串中指定字符的個數(shù),并返回此值。例如,若輸入字符串123412132,輸入字符為1,則輸出3。
注意:部分源程序在文件PROCl.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填人你編寫的若干語句。
參考答案
1.C
2.B
3.A本題考查按位與運(yùn)算,按位與就是相同為1,不同為0,把x=011050化成二進(jìn)制為0001001000101000,把01252化成二進(jìn)制為0000001010101010,兩者相與得0000001000101000。
4.A關(guān)鍵字typedet的作用只是將C語言中的已有的數(shù)據(jù)類型作了置換,并不是增加新的類型,所以A)錯誤。
5.C程序定義兩個整型變量i、j,初值為3,7。另外,定義兩個整型指針變量p、q,其中p指向i,q指向j。將i、j的地址傳給swap函數(shù)。在swap函數(shù)中,a指向i,b指向j。通過臨時變量t交換a和b指向的值,此時a指向的實參i、b指向的實參j的值發(fā)生了交換。即a指向i的值為7,b指向j的值為3;再通過臨時變量tp交換a和b的指針值,使得a指向j,b指向i。所以swap中輸出a指向的值為3(j),b指向的值為7(i);swap函數(shù)調(diào)用結(jié)束后,輸出p和q指向的值,即i、j的值為7、3。所以程序輸出:3,7,7,3。本題答案為C選項。
6.Dmain函數(shù)定義一個字符數(shù)組s,使用字符串“pmfc”初始化;然后通過getchar讀取一個字符k到字符變量c;再將字符串s和字符c傳入fun函數(shù)。函數(shù)fun首先通過while循環(huán)遍歷字符串s,直到指針a指向字符串結(jié)束標(biāo)識‘\\0’后的一個字符,如下圖所示。接著通過while循環(huán)逆序遍歷字符串s,首先a-1的字符位‘\\0’,它的ASCII值為0,小于b(字符‘k’)的ASCII值107,那么將‘\\0’賦給下標(biāo)為5的元素位置。接著繼續(xù)向前遍歷,同理,將‘c’(ASCII值為99)賦給下標(biāo)為4的元素位置,將‘f’(ASCII值為102)賦給下標(biāo)為3的元素位置。由于‘m’(ASCII值為109)大于b,因此循環(huán)結(jié)束,將b(字符‘k’)賦給下標(biāo)為2的元素位置,此時str字符串如下。故本題答案為D選項。
7.A在scanf函數(shù)的格式字符前可以加入一個正整數(shù)指定輸入數(shù)據(jù)所占的寬度,但不可以對實數(shù)指定小數(shù)位的寬度,選項A錯誤,其他選項正確。故本題答案為A選項。
8.C解析:棧和隊列都是操作受限制的線性表,只允許在端點(diǎn)插入和刪除。不同點(diǎn)是:棧只允許在表的一端進(jìn)行插入和刪除操作,而隊列允許在表的一端進(jìn)行插入操作,而在另一端進(jìn)行刪除操作。
9.A函數(shù)中,形參必須是變量,實參可以是常量、變量或表達(dá)式,選項A錯誤,選項B正確;實參的個數(shù)和類型要與形參一致,選項C、D正確。本題答案為A選項。
10.C
11.D關(guān)系模型采用二維表來表示,簡稱表。本題答案為D選項。
12.C解析:這是一道考查fread函數(shù)的題。buf是一個指針,fread是讀入數(shù)據(jù)的存放地址;fwrite是輸出數(shù)據(jù)的地址(以上指的是起始地址)。
13.A
14.B解析:棧操作原則上“后進(jìn)先出”,棧底至棧頂依次存放元素A、B、C、D,則表明這4個元素中D是最后進(jìn)棧,B、C處于中間,A最早進(jìn)棧。所以出棧時一定是先出D,再出C,最后出A。
15.C解析:預(yù)處理命令行是以“#”開始的語句,預(yù)處理命令行的最后不能以分號表示結(jié)束,預(yù)處理命令行。其中宏定義的字符替換的定義格式為:#define標(biāo)識符字符串,預(yù)處理命令行是在系統(tǒng)對源程序進(jìn)行編譯之前進(jìn)行處理的,不是在程序執(zhí)行的過程中。
16.A隊列是一種特殊的線性表,只允許在表的一端插八元素,在表的另一端刪除元素,插入元素的一端叫“隊尾”,刪除元素的一端叫“隊頭”。先插入的元素先被刪除,是按“先進(jìn)先出”的原則組織數(shù)據(jù)的。
【知識拓展】“隊列”和“棧”都是一種特殊的線性表。之所以稱之為“隊列”,其形式如“排隊”。要講究“先來后到”,先進(jìn)先出,后進(jìn)后出。
17.C
18.B解析:在數(shù)據(jù)庫系統(tǒng)中,由于采用的數(shù)據(jù)模型不同,相應(yīng)的數(shù)據(jù)庫管理系統(tǒng)(DBMS)也不同。目前常用的數(shù)據(jù)模型有3種:層次模型、網(wǎng)狀模型和關(guān)系模型。在層次模型中,實體之間的聯(lián)系是用樹結(jié)構(gòu)來表示的,其中實體集(記錄型)是樹中的結(jié)點(diǎn),而樹中各結(jié)點(diǎn)之間的連線表示它們之間的關(guān)系。所以,本題的正確答案是B。
19.A當(dāng)所賦的值不夠其列的寬度時,系統(tǒng)在其后自動補(bǔ)0,因此a[0][3]=0,a[1][2]=6,a[2][1]=5,a[3][0]=0,故選擇A選項。
20.D本題考查字符串比較函數(shù)strcmp(s1,s2),若s1>s2,則返回1;若s1=s2,則返回0;若s1<s2,則返回-1。字符串依次比較的是它們字符的ASCIl碼值。
21.S[j++]=s[i]S[j++]=s[i]解析:循環(huán)開始后如果數(shù)組s中儲存值與字符c相同,則i++直接跳過當(dāng)前值;如果不相同,則將當(dāng)前值賦予數(shù)組指定位置,并通過j++將下標(biāo)加1,指向下一元素要存儲的位置。
22.filea.dat"r"filea.dat,'r'解析:fopen函數(shù)的調(diào)用方式通常為fopen(文件名,使用文件方式)。本題中要求程序可以打開filea.dat文件,并且是要讀取文件中的內(nèi)容,所以空白處應(yīng)當(dāng)填入'filea.dat','r'。
23.(a+b>c)&&(a+c>b)&&(b+c>a)(a+b>c)&&(a+c>b)&&(b+c>a)解析:根據(jù)構(gòu)成三角形的條件:兩邊之和大于第三邊,得出空格應(yīng)該填(a+b>c)&&(a+c>b)&&(b+c>a)或與其等價的形式。
24.1616解析:函數(shù)運(yùn)算不改變數(shù)據(jù)類型,所以結(jié)果也是double型,fabs(x)是對x取絕對值,pow(y,fabs(x))是y的labs(x)次冪,即2.04。0=16.000000(注意;結(jié)果為double型)。
25.x+=1x+=1解析:本題考查“++”,“--”運(yùn)算符?!?+”、“--”只能作用于變量,不能用于表達(dá)式或常量;前綴形式是在使用變量之前先將其值增1或減1,后綴形式是先使用變量原來的值,使用完后再使其增1或減1。
26.x==0x==0解析:!x的邏輯意思就是x為非,即x==0。
27.*s-*t*s-*t解析:兩字符串大小比較必須從它們的首字符開始,在對應(yīng)字符相等情況下循環(huán),直至不相等結(jié)束。相等時,若字符串已到了字符串的結(jié)束標(biāo)記符,則兩字符串相同,函數(shù)返回0值;如還有后繼字符,則準(zhǔn)備比較下一對字符。對應(yīng)字符不相同,循環(huán)結(jié)束。循環(huán)結(jié)束時,就以兩個當(dāng)前字符的差返回,所以在空框處應(yīng)填入*s-*t,保證在s>t時,返回正值,當(dāng)s<t時,返回負(fù)值。
28.中序中序解析:在先左后右的原則下,根據(jù)訪問根結(jié)點(diǎn)的次序,二叉樹的遍歷可以分為三種:前序遍歷、中序遍歷和后序遍歷.前序遍歷是指在訪問根結(jié)點(diǎn)、遍歷左子樹與遍歷右子樹這三者中,首先訪問根結(jié)點(diǎn),然后遍歷左子樹,最后遍歷右子樹;并且遍歷左、右子樹時,仍然先訪問根結(jié)點(diǎn),然后遍歷左子樹,最后遍歷右子樹。中序遍歷指在訪問根結(jié)點(diǎn)、遍歷左了樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹:并且遍歷左、右子樹時,仍然先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹。后序遍歷指在訪問根結(jié)點(diǎn)、遍歷左子樹與遍歷右子樹這三者中,首先遍歷右子樹,然后訪問根結(jié)點(diǎn),最后遍歷左子樹;并且遍歷左、右子樹時,仍然光遍歷右子樹,然后訪問根結(jié)點(diǎn),最后遍歷左子樹。
29.12345678901,2,3,4,5,6,7,8,9,0,解析:p指向a的首地址。a+10表示的是a[10]的地址,嘲此此程序的功能就是輸出數(shù)組a。
30."bi.dat"fp'bi.dat'\r\nfp解析:打開文件函數(shù)fopen的參數(shù)是文件名,因此有fopen('bi.dat');而寫文件的參數(shù)是文件指針,因此有fwrite(&j,sizeof(int),1,fp);
31.(c=getchar())!='\n'(c=getchar())!='\\n'解析:分析題目可知,程序中運(yùn)用函數(shù)c=getchar()從標(biāo)準(zhǔn)輸入設(shè)備讀取下一個字符,而且是一行的字符(即沒有換行),所以條件為(c=getchar())!='\\n'。
32.x.link=&z;或x.link=y.link;或x.link=x.link->link;或x.link=*(x.link).link;x.link=&z;或x.link=y.link;或x.link=x.link->link;或x.link=*(x.link).link;解析:要刪除結(jié)點(diǎn)y,只需讓結(jié)點(diǎn)x的指針域指向y結(jié)點(diǎn)的指針域所指向的后續(xù)結(jié)點(diǎn)就可,因此把結(jié)點(diǎn)z的地址賦給x的指針域就可以了,即讓結(jié)點(diǎn)x的指針域指向結(jié)點(diǎn)z。而結(jié)點(diǎn)z的地址保存在結(jié)點(diǎn)y的指針域中,因此只需把結(jié)點(diǎn)y的指針域賦值給結(jié)點(diǎn)x的指針域即可。
33.交換排序交換排序解析:所謂排序是指將一個無序序列整理成按值非遞減順序排列成的有序序列,常用的排序方法有:交換排序、插入排序和選擇排序。其中交換排序包括冒泡排序和快速排序,插入排序包括簡單插入排序和希爾排序,選擇排序包括直接選擇排序和堆排序。
34.a=1b=2
35.存儲結(jié)構(gòu)存儲結(jié)構(gòu)解析:數(shù)據(jù)結(jié)構(gòu)是指相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合,即數(shù)據(jù)的組織形式。它分為數(shù)據(jù)的邏輯結(jié)構(gòu)和數(shù)據(jù)的存儲結(jié)構(gòu)。
36.1919解析:根據(jù)二叉樹的性質(zhì):在任意一棵二叉樹中,度為。的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為2的結(jié)點(diǎn)多一個。本題中度為2的結(jié)點(diǎn)數(shù)為18,故葉子結(jié)點(diǎn)數(shù)為18+1=19個。
37.passwarnpasswarn解析:n++是在執(zhí)行完其所在的語句后再加1,因此,在執(zhí)行case的時候,n的值依然為'c',執(zhí)行case'c'后面的語句,先打印出“pass”;在執(zhí)行完case'c'后,未遇到break跳出switch,便接著執(zhí)行下面的語句,又打印出warn。所以此題輸出結(jié)果是passwarn。
38.存儲結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)包括3個方面,即數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存儲結(jié)構(gòu)及對數(shù)據(jù)的操作運(yùn)算。
39.cc解析:該題考查以下兩個知識點(diǎn):
(1)用一個指定的標(biāo)識符(即名字)來代表一個字符串,它的一般形式為#define標(biāo)識符字符串
(2)在MYSWAP宏定義中,利用中間變量z來交換x和y的值,所以要實現(xiàn)a和b的交換,只需通過中間變量即可,所以,此處應(yīng)填c。
40.22解析:考查基本表達(dá)式的計算,“%”運(yùn)算符的功能是取余。題中條件s=8,則s%3=2,(s+1)%3=9%3=0,所以表達(dá)式s%3+(s+1)%3=2+0=2。
41.C解析:C語言是一個函數(shù)語言,C語言的主體就是一個主函數(shù),然后有庫函數(shù)和用戶自定義的函數(shù)來配合主函數(shù)完成一系列的任務(wù),所以說,C語言的基本單位是函數(shù)。
42.C解析:“\\b”格式符表示退格,功能是將它后面的字母把它前面的字母覆蓋,導(dǎo)致“\\b'’格式符前面的字母不能輸出;“\\'”格式符表示輸出單引號字符;“\\\\”格式符表示輸出反斜線字符。
43.B解析:在棧中,允許插入與刪除的一端稱為棧頂,不允許插入與刪除的另一端稱為棧底。棧頂元素總是最后被插入的元素,從而也是最先能被刪除的元素;棧底元素總是最先被插入的元素,從而也是最后才能被刪除的元素。即棧是按照先進(jìn)后出(FILO,F(xiàn)irstInLastOut)或后進(jìn)先出(LIFO,LastInFirstOut)的原則組織數(shù)據(jù)的,因此,棧也被稱為先進(jìn)后出表或后進(jìn)先出表。由此可以看出,棧具有記憶作用。答案B錯在帶鏈的棧的結(jié)點(diǎn)存儲順序與其邏輯順序是可以不一致的。
44.A解析:在C語言中,合法標(biāo)識符的命名規(guī)則是:標(biāo)識符可以由字母、數(shù)字和下畫線3種字符組成,且第一個字符必須為字母或下畫線。C語言的標(biāo)識符可以分為關(guān)鍵字、預(yù)定義標(biāo)識符和用戶標(biāo)識符。選項B)和C)中的橫線以及點(diǎn)都不合法,選項D)中的case為C語言關(guān)鍵字。
45.D軟件開發(fā)離不開系統(tǒng)環(huán)境資源的支持,其中主要的資源有硬件資源、通信資源、輔助資源等。(1)硬件資源是指組成計算機(jī)及相關(guān)應(yīng)用所需要的硬件,它是軟件開發(fā)必不可少的資源,因為無論什么樣的軟件工具都需要在硬件上完成任務(wù),它是其他資源的基礎(chǔ)資源。(2)通信資源是指為軟件開發(fā)提供通信支撐的資源,它與測試數(shù)據(jù)無關(guān)。(3)支持軟件是指為軟件開發(fā)提供操作平臺的軟件,如常用的面向?qū)ο箝_發(fā)的Rose軟件,它主要是軟件開發(fā)的工具。通過對上述分析的總結(jié),可以知道本題的正確答案選D。
46.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ù)具有“集成”、“共事”之特點(diǎn)。
47.A解析:由于字符“5”和“3”的ASCII碼相差為2,所以ch1經(jīng)過運(yùn)算后的值應(yīng)為65+2=67;同理,ch2經(jīng)過運(yùn)算后的值應(yīng)為65+3=68,即是字符“D”。
48.B解析:先定義了一個指向字符型數(shù)組str的指針p,指針p旨向數(shù)組str的首地址,p+3將指針指向str[3],又因為字符型數(shù)組在存放字符串時會自動在末尾加上'\\0',所以*(p+3)=0。
49.C
50.B解析:因為在循環(huán)中存在一條這樣的語句“if(n=4)break;”,所以循環(huán)變量n遞增到4的時候循環(huán)會被強(qiáng)行結(jié)束。故一共循環(huán)了5次,每次n的值分別為0、1、2、3、4。應(yīng)該選擇B。
51.C解析:alpha[0]指向“ABCD”的首地址;alpha[1]指向“EFGH”的首地址;alpha[2]指向“IJKL”的首地址,依此類推。當(dāng)執(zhí)行p=alpha后,p指向指針數(shù)組alpha的首地址。for循環(huán)中輸出了4個字符串。
52.B解析:本題中函數(shù)swapl()是傳遞的地址。所以對該形參c的改變將影響實參,分析可知該函數(shù)的作用,是使數(shù)組c的第一個元素和第二個元素的值互換。主函數(shù)中調(diào)用該函數(shù)將a作為實參傳遞給形參c,故執(zhí)行該函數(shù)后a的第一個元素和第二個元素的值將交換。分別為5和3。函數(shù)swap2()是值傳遞的,所以該函數(shù)執(zhí)行后對數(shù)組b將沒有任何改變,此時該數(shù)組的第一個和第二個元素依然為3和5,因此最后的輸出為5、3、3和5,所以,4個選項中選項B符合題意。
53.C解析:二維數(shù)組的初始化及庫函數(shù)strlen()的應(yīng)用,主函數(shù)中定義了一個二維字符數(shù)組并初始化,初始化后的結(jié)果為str[0]=“Hello”、str[1]=“Beijing”,然后定義一個字符指針變量p并讓它指向數(shù)組的首地址,即指向str[0],而在C語言中無論是一維還是多維數(shù)組,其元素在內(nèi)存中都是順序存放的,故p+20后指針指向str[1],所以strlen(p+20);返回的是str[1]中的字符串的長度,即Beijing的長度為7,所以最后輸出的值為7。
54.B解析:“后進(jìn)先出”表示最后被插入的元素最先能被刪除。選項A中,隊列是指允許在—端進(jìn)行插入、而在另一端進(jìn)行刪除的線性表,在隊列這種數(shù)據(jù)結(jié)構(gòu)中,最先插入的元素將最先能夠被刪除,反之,最后插入的元素將最后才能被刪除,隊列又稱為“先進(jìn)先出”的線性表,它體現(xiàn)了“先來先服務(wù)”的原則:選項B中,棧頂元素總是最后被插入的元素,從而也是最先能被刪除的元素,棧底元素總是最先被插入的元素,從而也是最后才能被刪除的元素。隊列和棧都屆于線性表,它們具有順序存儲的特點(diǎn),所以才有“先進(jìn)先出”和“后進(jìn)先出”的數(shù)據(jù)組織方式。雙向鏈表使用鏈?zhǔn)酱鎯Ψ绞?,二叉樹也通常采用鏈?zhǔn)酱鎯Ψ绞剑鼈兊拇鎯?shù)據(jù)的空間可以是不連續(xù)的,各個數(shù)據(jù)結(jié)點(diǎn)的存儲順序與數(shù)據(jù)元素之間的邏輯關(guān)系可以不一致。所以選項C和選項D錯誤。本題的正確答案為選項B。
55.B
56.B解析:本題考查函數(shù)的綜合知識。首先,我們可以利用強(qiáng)制轉(zhuǎn)換類型轉(zhuǎn)換運(yùn)算符將一個表達(dá)式轉(zhuǎn)換成所需類型。如:(double)a是將a轉(zhuǎn)換成double類型;(int)(x+y)是將x+y的值轉(zhuǎn)換成整型。
本題可按部就班地逐步運(yùn)算:
fun((int)fun(a+c,b),a-c)
fun((int)fun(10,5),2-8)
fun((int)15.000000,-6)
fun(15,-6)
9
57.B解析:執(zhí)行p=&a;后,p指向整數(shù)a,*p即p的目標(biāo)變量,也就是a;所以a=*p+b等價于a=a+b,可知a的值最終為11。
58.C解析:在C語言中,可以用指數(shù)形式將實型常量表示為數(shù)值和指數(shù)兩部分,數(shù)值部分不能為空,指數(shù)部分只能為整數(shù)表示。選項A中1.2和0.5都不是整數(shù),故選項A不正確;選項B中3.14159也不是整數(shù),故選項B不正確;選項D中數(shù)值部分不能為空,故選項D也不正確。所以,4介選項中選項C符合題意。
59.C解析:十六進(jìn)制是以“0x”或“0X”開頭的字符串,字符串中只能含有0~9這10個數(shù)字和a、b、c、d、e、f這6個字母。
60.A解析:選擇運(yùn)算是在指定的關(guān)系中選取所有滿足給定條件的元組,構(gòu)成一個新的關(guān)系,而這個新的關(guān)系是原關(guān)系的一個子集。因此,一個關(guān)系經(jīng)選擇運(yùn)算后得到的新關(guān)系中,元組個數(shù)少于原來關(guān)系中元組個數(shù)。
61.B線性鏈?zhǔn)酱鎯Y(jié)構(gòu)中每個結(jié)點(diǎn)都由數(shù)據(jù)域與指針域兩部分組成,增加了存僻:空間,因此一般要多于順序存儲結(jié)構(gòu),選項B)正確。
62.C本題屬于綜合性題目,考查的知識點(diǎn)有字符數(shù)組的指針表示,for循環(huán)與if語句的結(jié)合,初始時定義兩個字符數(shù)組:str和str1,用兩個指針p、p1分別指向這兩個數(shù)組,每個數(shù)組中都是長度為8的字符串。定義變量i作為數(shù)組下標(biāo)的增量,if語句表示如果有*(p+i)=*(p1+i),即str[i]=str1[i],則將相同的字符輸出。tomeetme中與toseeyou相同位置上具有的相同字符為toee。
63.B在需求分析階段可以使用的工具有數(shù)據(jù)流圖(DFD),數(shù)據(jù)字典(DD),判定樹與判定表,因此本題答案為B)。
64.B
\n本題考查分支語句用法加個句號因為變量的初始值分別為k一5、n一0,所以程序第1次進(jìn)入循環(huán)時,執(zhí)行default語句,輸出0,k減1;這時n=0、k=4,程序進(jìn)行第2次循環(huán),執(zhí)行case4:這個分支,結(jié)果是n=2、k=3,打印出2;這時n=2、k=3,break跳出,程序進(jìn)行第3次循環(huán),執(zhí)行case3:這個分支,結(jié)果是n=3、k=2,打印出3;這時n一3、k2,b¨ak跳出,程序然后進(jìn)行第4次循環(huán),執(zhí)行case2:case4:這個分支,結(jié)果是n=5、k=1,打印出5,break跳出,這時因為n=5不滿足n<5的循環(huán)條件,因此循環(huán)結(jié)束。
\n
65.C
66.A本題考查getchar函數(shù),從終端讀入一個字符作為函數(shù)值。在輸入時,空格、回車符都將作為字符讀入,而且只有在用戶敲入回車鍵時,讀入才開始執(zhí)行。所以當(dāng)輸入a<回車>后,變量c1被賦予字符a,而變量c2被賦予回車符。
67.DC語言中操作一個字符串常量的方法有:①把字符串常量存放在一個字符數(shù)組中;②用字符指針指向字符串,然后通過字符指針來訪問字符串存儲區(qū)域。當(dāng)字符串常量在表達(dá)式中出現(xiàn)時,根據(jù)數(shù)組的類型轉(zhuǎn)換規(guī)則,它被轉(zhuǎn)換成字符指針。本題D項中錯誤的關(guān)鍵是對數(shù)組初始化時,可以在變量定義時整體賦初值,但不能在賦值語句中整體賦值。
68.Bsizeof是返回字符串在內(nèi)存中所占用的
69.A
70.C【答案】:C
【知識點(diǎn)】:需求分析階段的任務(wù)
【解析】:需求分析階段的任務(wù)是深入描述軟件的功能和性能,確定軟件設(shè)計的約束和軟件同其他系統(tǒng)元素的接口細(xì)節(jié),定義軟件的其他有效性需求,借助于當(dāng)前系統(tǒng)的邏輯模型導(dǎo)出目標(biāo)系統(tǒng)邏輯模型,解決目標(biāo)系統(tǒng)“做什么”的問題??煞譃樾枨筇岢?、需求描述及需求評審三個階段。從此可以看出需求分析的任務(wù)不包括制定軟件集成測試計劃,故選C。
71.D該題目中首先區(qū)別++n和n++,第一次調(diào)用f函數(shù)時,將++n(n自增l后再參與運(yùn)算)作為參數(shù)進(jìn)行傳遞,此時變量m的值為1,執(zhí)行n+=m;后,n=1,將l返回主函數(shù),并輸出。第二次調(diào)用f函數(shù)時,將n++(n參與運(yùn)算后再自增1)作為參數(shù)進(jìn)行傳遞,此時變量m的值為1,執(zhí)行語句n+=m;,由于n是靜態(tài)存儲變量,因此n=2,將2返回主函數(shù)并輸出。因此D選項正確。
72.A解析:二叉樹的中序遍歷指在訪問根結(jié)點(diǎn)、遍歷左子樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹;并且遍歷左、右子樹時,仍然先遍歷左子樹,然后訪問根結(jié)點(diǎn),最后遍歷右子樹。
73.A字符串的輸入不能使用“scarf(%s"s);",而應(yīng)該使用‘‘gets(s)”,因此選擇A)。
74.D前序遍歷:ABDECF\n中序:DBEAFC\n后序:DEBFCA
75.A本題重點(diǎn)考察函數(shù)的調(diào)用,首先要了解字母對應(yīng)的ASCIl碼。例如A為65,a為97。即字母+1劂可得到下一個字母。-其次是函數(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,因為指針c指向地址的值為b,此時b=}C=.b.;豳數(shù)返回執(zhí)行ptud(。%C,%c、n”,b,8);輸出b,A,因此A選項正確。
76.D
77.D在輸入多個數(shù)據(jù)時,若格式控制串中無非格式字符,則認(rèn)為所有輸入的字符均為有效字符。所以應(yīng)按選項D的順序輸入數(shù)據(jù)。
78.B根據(jù)二叉樹的基本性質(zhì)3:在任意一棵二叉樹中,度為0的葉子結(jié)點(diǎn)總是比度為2的結(jié)點(diǎn)多一個。所以選擇8。
79.C輸入數(shù)據(jù)的格式必須與seanf()的格式控制串完全匹配,所以輸入時必須在3和5之間輸入“;”。
80.A注:和設(shè)計風(fēng)格有關(guān)
81.(1)錯誤:k++
正確:k++;
(2)錯誤:if(m=k)
正確:if(m==k)
【解析】根據(jù)C語言的語法規(guī)則,每一條語句都要以分號結(jié)束,因此,要在語句“k++”之后加上分號。判斷變量m與變量k是否相等應(yīng)該用符號“==”,符號“=”為賦值符號,因此,“if(m=k)”應(yīng)改為“if(m==k)”。
82.
intfun(char*ss,charc)
inti=0;
for(;*ss!=’\0‘;ss++)if(}ss==c
i++/*求出*所指字符串中指定字符的個數(shù)*/
returni;
【考點(diǎn)分析】
本題考查:for循環(huán)語句遍歷字符串,并通過if條件語句,判斷字符串是否結(jié)束。
【解題思路】
從字符串中查找指定字符,需要使用循環(huán)判斷結(jié)構(gòu),循環(huán)語句用來遍歷字符串,循環(huán)條件為字符串沒有結(jié)束,即當(dāng)前字符不是‘\0’,判斷語句用來判斷當(dāng)前字符是否為指定字符。最后返回指定字符的個數(shù)。2022年河北省邯鄲市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.一個有8個頂點(diǎn)的有向圖,所有頂點(diǎn)的入度出度之和與所有頂點(diǎn)的出度之和的差是()
A.16B.4C.0D.2
2.
3.設(shè)x=011050,則x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
4.以下敘述中錯誤的是()。
A.可以通過typedef增加新的類型
B.可以typedef將已存在的類型用一個新的名字來代表
C.用typedef定義新的類型名后,原有類型名仍有效
D.用typedef可以為各種類型起別名,但不能為變量起別名
5.有下列程序:
程序執(zhí)行后的輸出結(jié)果是()。A.3,7,3,7B.7,3,7,3C.3,7,7,3D.7,3,3,7
6.有以下程序:#include<stdio.h>voidfun(char*a,charB){while(*(a++)!=‘0’);while(*(a-1)<B)*(a--)=*(a-1);*(a--)=b;}main(){chars[8]=“pmfc”,r,c;c=getchar();fun(s,c);puts(s);}程序運(yùn)行時輸入k并按<Enter>鍵,則輸出結(jié)果為()。
A.pmfkcB.pmfckC.kpmfcD.pmkfc
7.以下有關(guān)scanf函數(shù)的敘述中錯誤的是()。
A.在scanf函數(shù)的格式字符前既可以加入正整數(shù)指定輸入數(shù)據(jù)所占的寬度,也可以對實數(shù)指定小數(shù)位的寬度
B.scanf函數(shù)有返回值,其值就是本次調(diào)用scanf函數(shù)時正確讀入的數(shù)據(jù)項個數(shù)
C.scanf函數(shù)從輸入字符流中按照格式控制指定的格式解析出相應(yīng)數(shù)據(jù),送到指定地址中
D.在scanf函數(shù)中的格式控制字符串不會輸出到屏幕上
8.棧和隊列的共同點(diǎn)是()。
A.都是先進(jìn)先出B.都是先進(jìn)后出C.只允許在端點(diǎn)處插入和刪除元素D.沒有共同特點(diǎn)
9.以下敘述中錯誤的是()。
A.形參可以是常量、變量或表達(dá)式
B.實參可以是常量、變量或表達(dá)式
C.實參的類型應(yīng)與形參的類型賦值兼容
D.實參的個數(shù)應(yīng)與形參的個數(shù)一致
10.
11.采用表結(jié)構(gòu)來表示數(shù)據(jù)和數(shù)據(jù)間聯(lián)系的模型是()。
A.層次模型B.概念模型C.網(wǎng)狀模型D.關(guān)系模型
12.已知函數(shù)的調(diào)用形式為fread(buf,size,count,fp),參數(shù)buf的含義是
A.一個整型變量,代表要讀入的數(shù)據(jù)項總數(shù)
B.一個文件指針,指向要讀的文件
C.一個指針;指向要讀入數(shù)據(jù)的存放地址
D.一個存儲區(qū),存放要讀的數(shù)據(jù)項
13.
14.第
4
題
棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是
A.ABCEDB.DCBEAC.DBCEAD.CDABE
15.下列敘述中錯誤的是()。A.在程序中凡是以“#”開始的語句行都是預(yù)處理命令行
B.預(yù)處理命令行的最后不能以分號表示結(jié)束
C.#defineMAX是合法的宏定義命令行
D.C程序?qū)︻A(yù)處理命令行的處理是在程序執(zhí)行的過程中進(jìn)行的
16.按照“先進(jìn)先出”組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是()。
A.隊列B.棧C.雙向鏈表D.二叉樹
17.
18.用樹形結(jié)構(gòu)來表示實體之間聯(lián)系的模型稱為()。
A.關(guān)系模型B.層次模型C.網(wǎng)狀模型D.數(shù)據(jù)模型
19.以下程序的輸出結(jié)果是()。main(){inti,a[4][4]一{{1,3,5),{2,4,6},{3,5,7}};printf("%(1%d%d%d\n".a(chǎn)[O][3],a[1][2],a[2][1],a[3][0];}A.0650B.1470C.5430D.輸出值不定
20.若輸入“abcdef”“abdef”,下述程序的輸出結(jié)果為()。#include<stdio.h>#include<string.h>main{intn;chars1[20],s2[20],*p1,*p2;scanf("%s",s1);scanf("%S",s2);p1=s1;p2=s2;n=strcmp(p1,p2);printf("Vood\n",n);}A.-1B.0C."abcdef"D."abdef"
二、2.填空題(20題)21.下列程序的功能是將字符串s中所有的字符c刪除。請?zhí)羁铡?/p>
#include<stdio.h>
main()
{chars[80];
inti,j;
gets(s);
for(i=j=0;s[i]!='\0';i++)
if(s[i]!='c')
s[j]='\0';
puts(s);
}
22.以下程序的作用是:從名為filea.dat的文本文件中逐個讀入字符并顯示在屏幕上。請?zhí)羁铡?/p>
#include<stdio.h>
main()
{FILE*fp;charch;
fp=fopen(【】);
ch=fsetc(fp);
while(!feof(fp)){putchar(ch);ch=fgetc(fp);}
putchar('\n');fclose(fp);
}
23.以下程序用于判斷a,b,c能否構(gòu)成三角形,若能,輸出YES,否則輸出NO。當(dāng)給a,b,c輸入三角形三條邊長時,確定a,b,c能構(gòu)成三角形的條件是需同時滿足三個條件:a+b>c,a+c>b,b+c>a。請?zhí)羁铡?/p>
#include<stdio.h>
main()
{floata,b,c;
scanf("%f%f%f",&a,&b,&c);
if(【】)printf("YES\n");/*a.b.c能構(gòu)成三角形*/
elseprinff("NO\n");/*a.b.c不能構(gòu)成三解形*/
}
24.x和y都是double型變量,x的初值為4.0,y的初值為2.0,則表達(dá)式pow(y,fabs(x))的值為______。
25.語句:x++;++x;x=1+x;執(zhí)行后都使變量x中的值增1,請寫出一條同一功能的賦值語句______。
26.若x為int類型,請寫出與!x等價的C語言表達(dá)式______。
27.函數(shù)my_cmp()的功能是比較字符串s和t的大小,當(dāng)s等于t時返回0,否則返回s和t的第一個不同字符的ASCII碼差值,即s>t時返回正值,s<t時返回負(fù)值。請?zhí)羁铡?/p>
My_cmp(char*s,char*t)
{while(*s==*t)
{if(*s==′\0)return0;
++s;++t;
}return【】;
}
28.在先左后右的原則下,根據(jù)訪問根結(jié)點(diǎn)的次序,二叉樹的遍歷可以分為三種;前序遍歷、【】遍歷和后序遍歷。
29.有以下程序:
main()
{inta[]={1,2,3,4,5,6,7,8,9,0},*p;
for(p=a;p<a+10;p++)printf("%d,",*p);
}
程序運(yùn)行后的輸出結(jié)果是【】。
30.下面程序把從終端讀入的10個整數(shù)以二進(jìn)制方式寫入一個名為bi.dat的新文件中。
#include<stdio.h>
FILE*fp;
main()
{inti,j;
if(fp=fopen(【】)==NULL)exit(0);
for(i=0;i<10;i++)
{scanf("%d",&j);
fwrite(&j,sizeof(int),1,【】;
}
fclose(fp);
}
31.下列程序的功能是對輸入的一行字符中的數(shù)字字符的字面值累加,輸出此累加和,請?zhí)羁铡?/p>
#include<stdio.h>
#include<ctype.h>
main()
{charc;
inta,s=0;
while(______)
if(isdigit(C))
{a=c-'0';s+=a;}
printf("s=%d",s);
}
32.設(shè)有以下定義:
structss
{intinfo;structss*link;}x,y,z;
且已建立如下圖所示鏈表結(jié)構(gòu),
請寫出刪除點(diǎn)y的賦值語句【】。
33.排序是計算機(jī)程序設(shè)計中的一種重要操作,常見的排序方法有插入排序、______和選擇排序。
34.若想通過以下輸入語句給a賦值1,給b賦值2.則輸入數(shù)據(jù)的形式應(yīng)該是【】。
inta,b;
scanf("a=%d,b=%d",&a,&b);
35.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與()。
36.某二叉樹中度為2的結(jié)點(diǎn)有18個,則該二叉樹中有【】個葉子結(jié)點(diǎn)。
37.下列程序段的輸出結(jié)果是【】。
intn='c';
switch(n++)
{default:printf("error");break;
case'a':
case'A':
case'b':
case'B':printf("good");break;
case'c':case'C':printf("pass");
case'd':case'D':printf("warn");
}
38.數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的【】以及對數(shù)據(jù)的操作運(yùn)算。
39.設(shè)有如下宏定義
#defineMYSWAP(z,x,y)
{z=x;x=y;y=z;}
以下程序段通過宏調(diào)用實現(xiàn)變量a,b內(nèi)容交換,請?zhí)羁铡?/p>
floata=5,b=16,c;
MYSWAP(【】a,b);
40.若s是int型變量,且s=8,則s%3+(s+1)%3表達(dá)式的值為()。
三、1.選擇題(20題)41.C語言程序的基本單位是______。
A.程序行B.語句C.函數(shù)D.字符
42.語句“printf("a\bhow\'are\'y\\\bou\n");”的輸出結(jié)果是()。
A.a\bhow\'are\'y\\bou
B.a\bhow\'are\'y\bou
C.how'are'you
D.ahow'are'y\bou
43.下列關(guān)于棧的描述中錯誤的是()
A.棧是先進(jìn)后出的線性表B.棧只能順序存儲C.棧具有記憶作用D.對棧的插入與刪除操作中,不需要改變棧底指針
44.可在C程序中用作用戶標(biāo)識符的一組標(biāo)識符是A.and2007
B.Date_y-m-d
C.HiDr.Tom
D.caseBigl
45.軟件開發(fā)離不開系統(tǒng)環(huán)境資源的支持,其中必要的測試數(shù)據(jù)屬于A.硬件資源B.通信資源C.支持軟件D.輔助資源
46.下列有關(guān)數(shù)據(jù)庫的描述,正確的是______。
A.數(shù)據(jù)庫是一個DBF文件B.數(shù)據(jù)庫是一個關(guān)系C.數(shù)據(jù)庫是一個結(jié)構(gòu)化的數(shù)據(jù)集合D.數(shù)據(jù)庫是一組文件
47.已知字母A的ASCII碼為十進(jìn)制的65,下面程序main(){charch1,ch2;ch1='A'+'5'-'3';ch2='A'+'6'-'3';printf("%d,%c\n",ch1,ch2);}的輸出是_________。
A.67,DB.B,CC.C,DD.不確定的值
48.下列程序段的運(yùn)行結(jié)果是()。#include<stdio.h>voidmain(){charstr[]="ABC",*p=str;printf("%d\n",*(p+3));}
A.67B.0C.字符'C'的地址D.字符'C'
49.在下列選項中,沒有構(gòu)成死循環(huán)的程序段是()。
A.inti=100;for(;;){i=i%10+1;if(i>10)break;}
B.while(1);
C.intk=0;do{++k;}while(k<=10);
D.ints=12;while(s);--s;
50.若有如下程序:main(){intn;for(n=0;n<9;n++){if(n<1){printf("%d",n);continue;}if(n==4)break;printf("%d",n);}}則循環(huán)體執(zhí)行的次數(shù)是()。
A.1B.5C.9D.死循環(huán)
51.以下程序輸出的結(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
52.有以下程序:voidswap1(intC[]){intt;t=c[0];c[0]=C[1];c[1]=t;}voidswap2(intc0,intc1){intt;t=c0;c0=c1;c1=t;}main(){inta[2]={3,5},b[2]={3,5);swapl(a);swap2(b[0],b[1]);printf("%d%d%d%d\n",a[0],a[1],b[0],b[1]);}其輸出結(jié)果是
A.5353B.5335C.3535D.3553
53.有以下程序:#include<string.h>main(){charstr[][20]={"Hello","Beijing"},*p=str;printf("%d\n",strlen(p+20));}程序運(yùn)行后的輸出結(jié)果是______。
A.0B.5C.7D.20
54.按照“后進(jìn)先出”原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是()。
A.隊列B.棧C.雙向鏈表D.二叉樹
55.若x為int類型變量,則執(zhí)行以下程序段后的x值是______。x=6;x+=x-=x*x;
A.36B.-60C.60D.-24
56.有以下程序floatfun(intx,inty){return(x+y);}main(){inta=2,b=5,c=8;printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}程序運(yùn)行后的輸出結(jié)果是
A.編譯出錯B.9C.21D.9
57.有如下程序段int*p,a=10,b=1;p=&a;a=*p+b;執(zhí)行該程序段后,a的值為______。
A.12B.11C.10D.編譯出錯
58.以下符合C語言語法的實型常量是
A.1.2E0.5B.3.14159EC.5.00E-03D.E15
59.下列選項中不合法的十六進(jìn)制數(shù)是()。
A.OxffB.OXllC.OxlgD.OXabc
60.下列關(guān)系運(yùn)算中,能使經(jīng)運(yùn)算后得到的新關(guān)系中元組個數(shù)少于原來關(guān)系中元組個數(shù)的是()。
A.選擇B.投影C.連接D.并
四、選擇題(20題)61.下列敘述中正確的是()。
A.線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)與順序存儲結(jié)構(gòu)所需要的存儲空間是相同的
B.線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)所需要的存儲空間一般要多于順序存儲結(jié)構(gòu)
C.線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)所需要的存儲空間一般要少于順序存儲結(jié)構(gòu)
D.線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)所需要的存儲空間與順序存儲結(jié)構(gòu)沒有任何關(guān)系
62.有以下程序
#include"stdio.h"
main()
{charstr[]="tomeetme",str1[]="toseeyou";
char*p=str,*p1=str1;
inti;
for(i=0;i<7;i++)
if(*(p+i)==*(p1+i))
putchar(*(p+i));
printf("\n");
}
程序的運(yùn)行結(jié)果是
A.to
B.tomeet
C.toee
D.程序段不能通過編譯
63.在軟件開發(fā)中,需求分析階段可以使用的工具是()。A.N—s圖B.DFD圖C.PAD圖D.程序流程圖
64.
有以下程序:
main()
{intk=5,n=0;
do
{switch(k)
{case1:
case3:n+=l;k--;break;
defalut:n=0;k--;
case2:
case4:n+=2;k--;break:
}
printf("%d",n);
}while(k>0&&n<5);
}
程序運(yùn)行后的輸出結(jié)果是()。
A.235B.0235C.02356D.2356
65.
66.有以下程序:#include<stdio.h>main(){charcl=1,c2=2;cl=getchar();c2=getchar();putchar(c1);putcha:(c2);}當(dāng)程序運(yùn)行時輸入a<回車>后,下列敘述中正確的是()。A.變量c1被賦予字符a,c2被賦予回車符
B.程序?qū)⒌却脩糨斎氲?個字符
C.變量c1被賦予字符a,c2中仍是原有字符2
D.變量c1被賦予字符a,c2中將無確定值
67.第
42
題
下面說明不正確的是
A.chara[10]="china";
B.chara[10],*p=a;p="china"
C.char*a;a="china";
D.chara[10],*p;p=a="china"
68.有以下程序:
程序運(yùn)行后的輸出結(jié)果是()。
A.61B.70C.63D.71
69.
70.下面不屬于需求分析階段任務(wù)的是()。
A.確定軟件系統(tǒng)的功能需求B.確定軟件系統(tǒng)的性能需求C.制定軟件集成測試計劃D.需求規(guī)格說明書評審
71.有以下程序:
程序運(yùn)行后的輸出結(jié)果是()。.
A.3,3B.1,1C.2,3D.1,2
72.對下列二叉樹
進(jìn)行中序遍歷的結(jié)果是()。
A.ACBDFEGB.ACBDFGEC.ABDCGEFD.FCADBEG
73.設(shè)有定義:,以下不能將一行(不超過80個字符)帶有空格的字符串正確讀入的語句或語句組是()。
74.設(shè)有下列二叉樹:
對此二叉樹中序遍歷的結(jié)果為()。
A.ACBDEFB.DEBFCAC.ABDECFD.DBEAFC
75.有以下程序:
程序運(yùn)行后的輸出結(jié)果是()。
A.b,B"b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B
76.
77.有以下程序:
若想通過鍵盤輸入,使得al的值為12,a2的值為34,cl的值為字符a,c2的值為字符b,程序運(yùn)行后的輸出結(jié)果是:l2,a,34,b。則正確的輸入格式是(以下-代表空格,<;CR>;代表回車)()。
A.12-a34-b<CR>
B.12-a-34-b<CR>
C.12,a,34,b<CR>
D.12a34b<CR>
78.下列關(guān)于二叉樹的敘述中,正確的是()。
A.葉子結(jié)點(diǎn)總是比度為2的結(jié)點(diǎn)少一個
B.葉子結(jié)點(diǎn)總是比度為2的結(jié)點(diǎn)多一個
C.葉子結(jié)點(diǎn)數(shù)是度為2的結(jié)點(diǎn)數(shù)的兩倍
D.度為2的結(jié)點(diǎn)數(shù)是度為1的結(jié)點(diǎn)數(shù)的兩倍
79.若有定義:inta,h;通過語句:scanf(”%d;%d”,&a,&B.;,能把整數(shù)3賦給變量a,5賦給變量b的輸入數(shù)據(jù)是()。
A.35B.3,5C.3;5D.35
80.(55)在設(shè)計程序時,應(yīng)采納的原則之一是()
A.程序結(jié)構(gòu)應(yīng)有助于讀者理解
B.不限制goto語句的使用
C.減少或取消注解行
D.程序越短越好
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:判斷一個整數(shù)m是否是素數(shù),若是返回1,否則返回0。在main()函數(shù)中,若proc()返回1,則輸出″YES″;若proc()返回0,則輸出″NO″!
請修改程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main)函數(shù),不得增行或刪行,也不得,t更改程序的結(jié)構(gòu)。
試題程序:
六、程序設(shè)計題(1題)82.編寫函數(shù)fun,其功能是:求ss所指字符串中指定字符的個數(shù),并返回此值。例如,若輸入字符串123412132,輸入字符為1,則輸出3。
注意:部分源程序在文件PROCl.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填人你編寫的若干語句。
參考答案
1.C
2.B
3.A本題考查按位與運(yùn)算,按位與就是相同為1,不同為0,把x=011050化成二進(jìn)制為0001001000101000,把01252化成二進(jìn)制為0000001010101010,兩者相與得0000001000101000。
4.A關(guān)鍵字typedet的作用只是將C語言中的已有的數(shù)據(jù)類型作了置換,并不是增加新的類型,所以A)錯誤。
5.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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度培訓(xùn)協(xié)議與勞動合同協(xié)同執(zhí)行框架4篇
- 2025年度電視劇配角聘用合同2篇
- 二零二五年度特種車輛租賃及維修服務(wù)合同19篇
- 2025年度純凈水電商平臺廣告投放及效果評估合同4篇
- 二零二五年度倉儲物流園區(qū)租賃合同范本4篇
- 2025年度車輛安全協(xié)議書示范文本匯編4篇
- 二零二五年度國際客運(yùn)航班合作協(xié)議3篇
- 徐州站改造施工方案
- 二零二五版網(wǎng)絡(luò)安全貸款合同:網(wǎng)絡(luò)安全防護(hù)項目民間借貸協(xié)議3篇
- 二零二五版電子商務(wù)第三方代支付結(jié)算合同3篇
- 《色彩基礎(chǔ)》課程標(biāo)準(zhǔn)
- 人力資源 -人效評估指導(dǎo)手冊
- 大疆80分鐘在線測評題
- 2023年成都市青白江區(qū)村(社區(qū))“兩委”后備人才考試真題
- 2024中考復(fù)習(xí)必背初中英語單詞詞匯表(蘇教譯林版)
- 《現(xiàn)代根管治療術(shù)》課件
- 肩袖損傷的護(hù)理查房課件
- 2023屆北京市順義區(qū)高三二模數(shù)學(xué)試卷
- 公司差旅費(fèi)報銷單
- 2021年上海市楊浦區(qū)初三一模語文試卷及參考答案(精校word打印版)
- 八年級上冊英語完形填空、閱讀理解100題含參考答案
評論
0/150
提交評論