![2021年福建省三明市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)_第1頁](http://file4.renrendoc.com/view/01dd8edbb061d55dbf3b950a4585b436/01dd8edbb061d55dbf3b950a4585b4361.gif)
![2021年福建省三明市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)_第2頁](http://file4.renrendoc.com/view/01dd8edbb061d55dbf3b950a4585b436/01dd8edbb061d55dbf3b950a4585b4362.gif)
![2021年福建省三明市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)_第3頁](http://file4.renrendoc.com/view/01dd8edbb061d55dbf3b950a4585b436/01dd8edbb061d55dbf3b950a4585b4363.gif)
![2021年福建省三明市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)_第4頁](http://file4.renrendoc.com/view/01dd8edbb061d55dbf3b950a4585b436/01dd8edbb061d55dbf3b950a4585b4364.gif)
![2021年福建省三明市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)_第5頁](http://file4.renrendoc.com/view/01dd8edbb061d55dbf3b950a4585b436/01dd8edbb061d55dbf3b950a4585b4365.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2021年福建省三明市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.以下關(guān)于C語言的敘述中正確的是()。
A.C語言的數(shù)值常量中夾帶空格不影響常量值的正確表示
B.C語言中的變量可以在使用之前的任何位置進(jìn)行定義
C.在C語言算術(shù)表達(dá)式的書寫中,運(yùn)算符兩側(cè)的運(yùn)算數(shù)據(jù)類型必須一致
D.C語言中的注釋不可以夾在變量名或關(guān)鍵字的中間
2.如下程序的時(shí)間復(fù)雜度為(其中m>1,e>0)A.logmB.m的平方C.m的1/2方D.m的1/3方
3.表達(dá)式a*(b+c)-d的后綴表達(dá)式是()。
A.abcdd+-B.abc+*d-C.abc*+d-D.-+*abcd
4.有以下程序
intfun1(doublea){returna*=a;}
intfun2(doublex,doubley)
{doublea=0,b=0;
a=fun1(x);b=fun1(y);return(int)(a+b);
}
main()
{doublew;w=fun2(1.1,2.0);……}
程序執(zhí)行后變量w中的值是A.5.21B.5C.5.0D.0.0
5.依次讀入數(shù)據(jù)元素序列{a,b,c,d,e,f,g}進(jìn)棧,元素進(jìn)棧或出棧順序是未知的,下列序列中,不可能成為??諘r(shí)彈出的元素構(gòu)成序列的有()
A.{d,e,c,f,b,g,a}
B.{f,e,g,d,a,c,b}
C.{e,f,d,g,c,b,a}
D.{c,d,b,e,f,a,g}
6.對于C語言的函數(shù),下列敘述中正確的是()。
A.函數(shù)的定義不能嵌套,但函數(shù)調(diào)用可以嵌套
B.函數(shù)的定義可以嵌套,但函數(shù)調(diào)用不能嵌套
C.函數(shù)的定義和調(diào)用都不能嵌套
D.函數(shù)的定義和調(diào)用都可以嵌套
7.有以下程序:#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6},k;fp=fopen(“data,dat”,“w+”);for(i=0;i<6;i++)fprintf(fp,“%d\n”,a[5-i]);rewind(fp);for(i=0;i<6;i++){fscanf(fp,“%d”,&k);printf(“%d,”,k);}fclose(fp);}程序運(yùn)行后的輸出結(jié)果是()。
A.6,5,4,3,2,1,B.1,2,3,4,5,6,C.1,1,1,1,1,1,D.6,6,6,6,6,6,
8.下列程序的輸出結(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
9.
10.若變量已正確定義,有以下程序段
A.0,0B.0,1C.1,1D.程序進(jìn)入無限循環(huán)
11.樹最適合用來表示()。
A.有序數(shù)據(jù)元素B.無序數(shù)據(jù)元素C.元素之間具有分支層次關(guān)系的數(shù)據(jù)D.元素之間無聯(lián)系的數(shù)據(jù)
12.下述程序執(zhí)行的輸出結(jié)果是()。#includemain{chara[2][4];strcpy(a,"are");strcpy(a[1],"you");a[0][3]='&';printf("%s\n",a);}A.A.are&youB.youC.areD.&13.有以下程序:#include<stdio.h>main(){char*s="[2]34";intk=0,a=0;whil(s[k+1]!=\0){k++;if(k%2=o){a=a+(s[k]-0+1);continue;}a=a+(s[k]-0);printf("k=%da=%d\n",k,a);}程序運(yùn)行后的輸出結(jié)果是()。A.k=6a=11B.k=3a=14C.k=4a=12D.k=5a=15
14.有下列程序:main{charp[]={a,h,c},q[]="a";printf("%d%d\n".sizeof(P),sizeof(q));}程序運(yùn)行后的輸出結(jié)果是()。A.44B.33C.34D.43
15.數(shù)據(jù)庫的故障恢復(fù)一般是由()來執(zhí)行恢復(fù)
A.電腦用戶B.數(shù)據(jù)庫恢復(fù)機(jī)制C.數(shù)據(jù)庫管理員D.系統(tǒng)普通用戶
16.字符串"\\"ABCDEF\"\\”的長度是()。
A.11B.10C.5D.3
17.已知inta=2,b=3;則執(zhí)行表達(dá)式a=a<b后,變量a的值為()。
A.0B.1C.2D.3
18.向一個(gè)棧頂指針為H的鏈棧中執(zhí)行出棧運(yùn)算時(shí),需執(zhí)行()。
A.p=H;H=H->link;free(p);
B.H=H->link;free(H);
C.p=H;H->link=H->link->link;free(p);
D.p=H;H=H->link;
19.從一個(gè)長度為100的順序表中刪除第30個(gè)元素時(shí)需向前移動(dòng)()個(gè)元素
A.70B.71C.69D.30
20.有以下程序:voidsum(inta[]){a[0]=a[-1]+a[1];}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};sum(&a[2]);printf("%d\n",a[2]);}程序運(yùn)行后的輸出結(jié)果是()。
A.6B.7C.5D.8
二、2.填空題(20題)21.注釋一般分為序言性注釋和______注釋。
22.按照邏輯結(jié)構(gòu)分類,結(jié)構(gòu)可以分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),棧屬于______。
23.排序是計(jì)算機(jī)程序設(shè)計(jì)中的一種重要操作,常見的排序方法有插入排序、______和選擇排序。
24.函數(shù)sstrcmp的功能是對兩個(gè)字符串進(jìn)行比較。當(dāng)s所指字符串和t所指字符串相等時(shí),返回值為0;當(dāng)s所指字符串大于t所指字符串時(shí),返回值大于0;當(dāng)s所指字符串小于t所指字符串時(shí),返回值小于0(功能等同于庫函數(shù)strcmp)。請?zhí)羁铡?/p>
#include<stdio.h>
intsstrcmp(char*s,char*t)
{while(*s&&*t&&*s==【】)
{s++;t++;}
return【】;
}
25.隊(duì)列是限定在表的一端進(jìn)行插入和在另一端進(jìn)行刪除操作的線性表。允許插入的一端稱作______。
26.在C語言中,可以利用【】,將一個(gè)表達(dá)式的值轉(zhuǎn)換成指定的類型。
27.以下程序運(yùn)行后的輸出結(jié)果是【】。
main()
{intX=10,y=20,t=0;
if(X==y)t=x;x=y;y=t;
printf("%d,%d\n",x,y);
}
28.函數(shù)my_cmp()的功能是比較字符串s和t的大小,當(dāng)s等于t時(shí)返回0,否則返回s和t的第一個(gè)不同字符的ASCII碼差值,即s>t時(shí)返回正值,s<t時(shí)返回負(fù)值。請?zhí)羁铡?/p>
My_cmp(char*s,char*t)
{while(*s==*t)
{if(*s==′\0)return0;
++s;++t;
}return【】;
}
29.用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有11個(gè)字節(jié)的動(dòng)態(tài)存儲空間,請?zhí)羁?。st=(char*)【】;
30.有以下程序:
#include<stdio.h>
voidf(inty,int*x)
{y=y+*x;*x=*x+y;}
main()
{intx=2,y=4;
f(y,&x);
printf("%d%d\n",x,Y);
}
執(zhí)行后的輸出結(jié)果【】。
31.設(shè)有定義“struct{inta;floatb;charc;}abc,*p_abc=&abc;”,則對結(jié)構(gòu)體成員a的引用方法可以是abc.a和p_abc【】a。
32.若下面程序的輸出結(jié)果是4,請?zhí)羁铡?/p>
main()
{inti,j,k;
k=0;i=j=【】;
k+=-(i+j);printf("%d\n",k);
}
33.以下函數(shù)的功能是求x的y次方,請?zhí)羁?/p>
doublefun(doublex,inty)
{inti;
doublez;
for(i=1,z=x;i<y;i++)z=z*【】;
}
34.結(jié)構(gòu)化分析方法是面向______進(jìn)行分析的方法。
35.在運(yùn)算過程中,能夠使空表與非空表的運(yùn)算統(tǒng)一的結(jié)構(gòu)是【】。
36.【】(黑箱或白箱)測試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征。
37.以上程序運(yùn)行后的輸出結(jié)果是【】。
main()
{inti=10,j=0;
do
{j=j+i;i-;}
while(i>2);
printf("%d\n",j);
}
38.下列程序的輸出結(jié)果是______。
#include<stdio.h>
intt(intx,inty,intcp,intdp)
{cp=x*x+y*y;
dp=x*x-y*y;
}
main()
{inta=1,b=8,c=7,d=9;
t(a,b,c,D);
primf("%d,%d%d\n",c,D);
}
39.以下程序的輸出結(jié)果是【】。
main()
{intx=0;
sub(&x,8,1);
printf(“%d\n”,x);
}
sub(int*a,intn,intk)
{if(k<=n)sub(a,n/2,2*k);
*a+=k;
}
40.以下程序運(yùn)行后的輸出結(jié)果是【】。
#include<stdio,h>
main()
{inta=3,b=4,c=5,t=99;
if(b<a&&a<c)t=a;a=c;c=t;
if(a<e&&b<c)t=b;b=a;a=t;
printf("%d%d%d\n",a,b,e);
}
三、1.選擇題(20題)41.已定義以下函數(shù):fun(Char*p2,char*p1){while((*p2=*p1)!='\0'){p1++;p2++;}}函數(shù)的功能是()。
A.將p1所指字符串復(fù)制到p2所指內(nèi)存空間
B.將p1所指字符串的地址賦給指針p2
C.對p1和p2兩個(gè)指針?biāo)缸址M(jìn)行比較
D.檢查p1和p2兩個(gè)指針?biāo)缸址惺欠裼?\0',
42.有以下程序:main(){inti=1,j=2,k=3;if(i++==1&&(++j==3||k++==3))printf("%d%d%d\n",i,j,k);}程序運(yùn)行后的輸出結(jié)果是()。
A.123B.234C.223D.233
43.若有下面的說明和定義,則sizeof(structaa)的值是______。structaa{intr1;doubler2;floatr3;unionuu{charu1[5];longu2[2]}ua;}mya;
A.30B.29C.24D.22
44.模塊獨(dú)立性是軟件模塊化所提出的要求,衡量模塊獨(dú)立性的度量標(biāo)準(zhǔn)是模塊的()
A.抽象和信息隱蔽B.局部化和封裝化C.內(nèi)聚性和耦合性D.激活機(jī)制和控制方法
45.有以下程序#include<stdio.h>sub1(chara,charB){charc;c=a;a=b;b=c;}sub2(char*a,charB){charc;c=*a;*a=b;b=c;}sub3(char*a,char*B){charc;c=*a;*a=*b;*b=c;}main(){cha,a,b;a='A';b='B';sub3(&a,&b)putchar(a);putchar(b);a='A';b='B';sub2(&a,b);putchar(a);putchar(b);a='A';b='B';sub1(a,b);putchar(a);putchar(b);}程序運(yùn)行后的輸出結(jié)果是()
A.BABBABB.ABBBBAC.BABABAD.BAABBA
46.如果一個(gè)算法顯式地調(diào)用自己則稱為()
A.直接遞歸B.自用遞歸C.間接遞歸D.外用遞歸
47.設(shè)有定義:#defineSTR"12345";,則以下敘述中正確的是()
A.宏名STR代替的是數(shù)值常量12345
B.宏定義以分號結(jié)束,編譯時(shí)一定會產(chǎn)生錯(cuò)誤信息
C.宏名STR代替的是字符串"12345";
D.宏名STR代替的是字符串常量"12345"
48.下列程序中函數(shù)sort()的功能是對數(shù)組a中的數(shù)據(jù)進(jìn)行由大到小的排序。
#include<stdio.h>
voidsort(inta[],intn)
{inti,j,t;
for(i=0;i<n-1;i++)
for(j=i+1;<n;j++)
if(a[i]<a[j])
{t=a[i];a[i]=a[j];a[j]=t;
}
}
main()
{inta[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(&a[1],7);
for(i=0;i<10;i++)printf("
A.1,2,3,4,5,6,7,8,9,10,
B.10,9,8,7,6,5,4,3,2,1,
C.1,8,7,6,5,4,3,2,9,10,
D.1,2,10,9,8,7,6,5,4,3,
49.對于長度為n的線性表,在最壞情況下,下列各排序法所對應(yīng)的比較次數(shù)中正確的是()
A.冒泡排序?yàn)閚(n-1)/2B.簡單插入排序?yàn)閚C.希爾排序?yàn)閚D.快速排序?yàn)閚/2
50.有下面程序段
#include"stdio.h"
#include"string.h"
main()
{chara[3][20]={{"china"},{"isa"},{"bigcountry!"}};
chark[100]={0},*p=k;
inti;
for(i=0;i<3;i++)
{p=strcat(p,a[i]);}
i=strlen(p);
printf("%d\n",i);}
則程序段的輸出結(jié)果是
A.18B.19C.20D.21
51.運(yùn)行下面程序,若從鍵盤輸入字母“b”,則輸出結(jié)果是charc;c=getchar();if(c>='a'&&c<='u')c=c+4;elseif(c>='v'&&c<='z')c=c-21;elseprintf("inputerror!\n");putchar(c);
A.gB.wC.fD.d
52.在標(biāo)準(zhǔn)C語言中,下列程序的輸出結(jié)果為______。main(){printf("%e",123.456);}
A.123.456B.123.4560C.1.23456e2D.1.234560e+002
53.調(diào)用函數(shù)時(shí),如果實(shí)參是簡單變量,它與對應(yīng)形參之間的數(shù)據(jù)傳遞方式是()。
A.地址傳遞B.單向值傳遞C.由實(shí)參傳形參,再由形參傳實(shí)參D.傳遞方式由用戶指定
54.在說明語句:int*f();中,標(biāo)識符f代表的是
A.一個(gè)用于指向整型數(shù)據(jù)的指針變量
B.一個(gè)用于指向一維數(shù)組的行指針
C.一個(gè)用于指向函數(shù)的指針變量
D.一個(gè)返回值為指針型的函數(shù)名
55.在下列字符序列中,合法的標(biāo)識符是()
A.P12&.aB.stud_100C.$water.12D.88sum
56.下面的程序執(zhí)行后,文件test.t中內(nèi)容是______。#include<stdio.h>voidfun(char*fname,char*st){FILE*myf;inti;myf=fopen(fname,"w");for(i=0;i<strlen(st);i++)fputc(st[i],myf);fclose(myf);}main(){fun("test.t","newworld");fun("test.t","hello,");}
A.hello,B.newworldhelloC.newworldD.hello,rld
57.在printf的格式字符中,e格式字符的作用是()。
A.以十六進(jìn)制無符號形式輸出整數(shù)
B.以帶符號的十進(jìn)制形式輸出整數(shù)
C.以指數(shù)形式輸出實(shí)數(shù)
D.以字符形式輸出,且只輸出一個(gè)字符
58.在“文件包含”預(yù)處理語句的使用形式中,當(dāng)#include后面的文件名用"",(雙撇號)括起時(shí),尋找被包含文件的方式是()。
A.直接按系統(tǒng)設(shè)定的標(biāo)準(zhǔn)方式搜索目錄
B.先在源程序所在的目錄搜索,如沒找到,再按系統(tǒng)設(shè)定的標(biāo)準(zhǔn)方式搜索
C.僅僅搜索源程序所在目錄
D.僅僅搜索當(dāng)前目錄
59.有以下程序:#include<stdio,h>voidsum(inta[]){a[0]=a[-1]+a[1];}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};sum(&a[2]);prinff("%d\n",a[2]);}程序運(yùn)行后的輸出結(jié)果是()。
A.6B.7C.5D.8
60.以下敘述中錯(cuò)誤的是()。
A.C語句必須以分號結(jié)束
B.復(fù)合語句在語法上被看做一條語句
C.空語句出現(xiàn)在任何位置都不會影響程序運(yùn)行
D.賦值表達(dá)式末尾加分號就構(gòu)成賦值語句
四、選擇題(20題)61.
62.若變量已確定義,則以下語句的輸出結(jié)果是()。
63.已定義以下函數(shù):
fun(char*p2,char*p1)
{while((*p2=*p1)!=’\0’){p1++;p2++;}}
函數(shù)的功能是()。
A.將p1所指字符串復(fù)制到p2所指向內(nèi)存空間
B.將p1所指字符串的地址賦給指針p2
C.對p1和p2兩個(gè)指針?biāo)缸址M(jìn)行比較
D.檢查p1和p2兩個(gè)指針?biāo)缸址惺欠裼小痋0’
64.
65.若有函數(shù)voidfun(doublea[]。int*n){…}以下敘述中正確的是()。A.調(diào)用fun函數(shù)時(shí)只有數(shù)組執(zhí)行按值傳送,其他實(shí)參和形參之間執(zhí)行按地址傳送
B.形參a和n都是指針變量
C.形參a是一個(gè)數(shù)組名,n是指針變量
D.調(diào)用fun函數(shù)時(shí)將把double型參數(shù)組元素一一對應(yīng)地傳送給形參a數(shù)組
66.右兩個(gè)關(guān)系R和S如下:
則由關(guān)系R得到關(guān)系S的操作是()。A.自然連接B.并C.選擇D.投影
67.設(shè)x、y和z是int型變量,且x=4,y=6,z=8,則下列表達(dá)式中值為0的是()。
A.x&&yB.x<=yC.x||++y&&y-zD.!(x<y&&!z||1
68.以下定義語句中正確的是()。
69.有以下程序:
程序執(zhí)行后的輸出結(jié)果是()。
A.y=一1B.Y=0C.y=1D.while構(gòu)成無限循環(huán)
70.若文件指針fp已正確指向文件,ch為字符型變量,以下不能把字符輸出到文件中的語句是()。
A.fget(f0,ch);
B.foutc(ch,fo);
C.fprinff(fp,”%c”,ch);
D.fwrite(&ch,sizeof(ch),1,fp);
71.
72.以下程序的輸出結(jié)果是()。
main()
{inta[3][3]={{1,2},{3,4),{5,6}},i,j,s=0;
for(i=1;i<3;i++)
for(j=0;j<=i;j++)s+=a[i][j];
printf("%d\n",s);
}
A.18
B.19
C.20
D.21
73.若有以下的定義:‘intt[3][2];”,能正確表示t數(shù)組元素地址的表達(dá)式是()。
A.&t[3][2]B.t[3]C.t[l]D.t[2][2]
74.
以下程序的輸出結(jié)果是()。
main
{charw[][10]={"ABCD","EFGH","IJKL","
MNOP"),K;
for(k=1;k<3;k++)printf("%s\n",w[k]);
A.ABCDFGHKLB.ABCDEFGUC.EFGJKOD.EFGHUKL
75.有以下程序:
main
{
unsignedchara=2,b=4,c=5,d;
d=a|b;d&=c;printf("%d\n",d);
}
程序運(yùn)行后的輸出結(jié)果是()。
A.3B.4C.5D.6
76.
下列程序的輸出結(jié)果是()。
main
{intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;
while(i++<7)
if(p[i]%2)j+=p[i];
printf("%d\n",j);
}
A.42B.45C.56D.60
77.有以下說明和定義語句
structstudent
{
intage;charnum[8];
};
structstudentstu[3]={{20,"200401"},{21,"200402"},{10\9,"200403"}};
structstudent*p=stu;
以下選項(xiàng)中引用結(jié)構(gòu)體變量成員的表達(dá)式錯(cuò)誤的是
A.(p++)->numB.p->numC.(*p).numD.stu[3].age
78.在軟件生產(chǎn)過程中,需求信息的給出是______。A.A.程序員B.項(xiàng)目管理者C.軟件分析設(shè)計(jì)人員D.軟件用戶
79.有以下程序:
程序運(yùn)行后的結(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
80.有以下程序:
程序運(yùn)行后的輸出結(jié)果是()。
A.10B.11C.20D.21
五、程序改錯(cuò)題(1題)81.下列給定程序中,函數(shù)proc()的功能是:用遞歸算法計(jì)算斐波拉契級數(shù)列中第n項(xiàng)的值。從第一項(xiàng)起,斐波拉契級數(shù)序列為1,1,2,3,5,8,13,21,…例如,若給n輸入8,該項(xiàng)的斐波拉契級數(shù)值為21。請修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計(jì)題(1題)82.學(xué)生的記錄由學(xué)號和成績組成,M名學(xué)生的數(shù)據(jù)已在主函數(shù)中放人結(jié)構(gòu)體數(shù)組stu中,請編寫函數(shù)proc(),它的功能是:把指定分?jǐn)?shù)范圍之外的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,分?jǐn)?shù)范圍之外的學(xué)生人數(shù)由函數(shù)值返回。
例如,輸入的分?jǐn)?shù)是70和79,則應(yīng)當(dāng)把分?jǐn)?shù)低于70和高于79的學(xué)生數(shù)據(jù)輸出,不包含70分和79分的學(xué)生數(shù)據(jù)。主函數(shù)中把70放在low中,把79放在heigh中。
注意:部分源程序給出如下。
請勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填人所編寫的若干語句。
試題程序:
參考答案
1.DC語言的數(shù)值常量中不能夾帶空格,所以A選項(xiàng)錯(cuò)誤。C語言中的變量都必須先定義再使用,變量的定義通常放在函數(shù)體的前部,也可以放在函數(shù)外部或復(fù)合語句的開頭,不能隨便放置,所以B選項(xiàng)錯(cuò)誤。在C語言中,運(yùn)算符兩側(cè)的運(yùn)算數(shù)據(jù)類型可以不一致,且結(jié)果與精度較高的數(shù)據(jù)類型保持一致,所以C選項(xiàng)錯(cuò)誤。故本題答案為D選項(xiàng)。
2.A
3.B
4.C(33)C)解析:題中變量w的定義為double型,函數(shù)fun2()的定義為int型,按照各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算,整型數(shù)據(jù)被轉(zhuǎn)換為實(shí)型數(shù)據(jù)。
5.B
6.A
7.A函數(shù)fopen(“data.dat”,“w+”)中的“w+”表示打開可讀寫文件,若文件存在則文件長度清為零,即該文件內(nèi)容會消失;若文件不存在則建立該文件?!皉ewind(fp);”使文件fp的位置指針指向文件開始。函數(shù)“fprintf(fp,“%d\\n”,a[5-i]);”將a[i]輸出到fp指向的文件中。函數(shù)“fscanf(fp,“%d”,&k);”將fp讀入變量k中。第1個(gè)for循環(huán)將數(shù)組中元素倒著輸入fp指向的文件中。rewind則指向文件開始,因此輸出的是數(shù)組a的倒敘:6,5,4,3,2,1,。故本題答案為A選項(xiàng)。
8.B解析:本題主要考查結(jié)構(gòu)體和聯(lián)合內(nèi)存使用的區(qū)別:結(jié)構(gòu)中不同的成員分別使用不同的內(nèi)存空間,一個(gè)結(jié)構(gòu)所占內(nèi)存空間的大小是結(jié)構(gòu)中每個(gè)成員所占內(nèi)存空間大小的總和,結(jié)構(gòu)中每個(gè)成員相互獨(dú)立;聯(lián)合所占用的內(nèi)存空間為最長的成員所占用的空間。
9.D
10.Bdo…while循環(huán)的執(zhí)行過程如下:①執(zhí)行do后面的循環(huán)體中的語句。②計(jì)算while后一對圓括號中表達(dá)式的值。當(dāng)值為非0時(shí),轉(zhuǎn)去執(zhí)行步驟①;當(dāng)值為0時(shí),執(zhí)行步驟③。③退出do…while循環(huán)。對于本題變量i的初始值等于“0”,接著執(zhí)行do后面的循環(huán)體中的語句,輸出變量i的值0。再判斷while后面括號中表達(dá)式i十的值,其值為0,所以循環(huán)結(jié)束。.此時(shí)變量i的值經(jīng)過自加已經(jīng)變?yōu)?,所以再次輸出i的值“1”。
11.C樹最適合用來表示元素之間具有分支層次關(guān)系的數(shù)據(jù),故本題選C。
12.Astrcpy實(shí)現(xiàn)的功能是復(fù)制,該操作把a(bǔ)re復(fù)制到a中,a[0][3]='&',且strcpy(a[1],"you")把you復(fù)制到a[1]中,故輸出a為“are&you”。
13.C輸出結(jié)果:k=1a=2\r\nk=2a=4\r\nk=3a=7\r\nk=4a=12
14.C語句charp[]={a,b,c);定義了一個(gè)一維字符數(shù)組p[],并用3個(gè)字符a,b,c進(jìn)行了初始化;而語句q[]="abe"表示定義了一個(gè)一維字符數(shù)組,并用一個(gè)字符串常量"abc"進(jìn)行了初始化。在C語言中,系統(tǒng)在每個(gè)字符串常量的最后自動(dòng)加入一個(gè)字符\0作為字符串的結(jié)束符。所以函數(shù)sizeof(q)=4,而sizeof(p)=3,因而選項(xiàng)C為正確答案。
15.CC)【解析】數(shù)據(jù)庫一旦發(fā)生故障,需要及時(shí)進(jìn)行故障恢復(fù),并由數(shù)據(jù)庫管理員負(fù)責(zé)執(zhí)行故障恢復(fù)。
16.B解析:本題涉及字符串的兩個(gè)最基本的概念。①字符串的長度是指字符串中字符的個(gè)數(shù),但不包含字符串結(jié)束符;②以反斜線“\\”開頭的特殊字符序列,意思是把反斜線后面的字符序列轉(zhuǎn)換成特定的含義,而不是原來的含義,不包含在字符串長度之內(nèi),“\\”連同后面的字符為一個(gè)長度。
17.B解析:先計(jì)算關(guān)系表達(dá)式a<b=2<3為真(表達(dá)式為真時(shí),如果變量為int型變量則真用1表示,假用0表示),即a=1。
18.A
19.A
20.A解析:在主函數(shù)main()中,語句“sum(&a[2]);”把數(shù)組元素a[0]的地址傳遞給了sun函數(shù)的形參a[],使得sum函數(shù)中的“(a+0)”為主函數(shù)中a[2]的地址,所以a[-1]的值為主函數(shù)中a[1]的值;a[1]的值為主函數(shù)中a[3]的伉,故函數(shù)sum中a[0]=2+4=6,由于此函數(shù)中的a是指向主函數(shù)中的a[2],所以a[2]的值為6。
21.功能性功能性解析:注釋一般分為序言性注釋和功能性注釋。序言性注釋通常位于每個(gè)程序的開頭部分,給出程序的整體說明;功能性注釋一般嵌在源程序體之中,主要描述其后的語句或程序做什么,
22.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)元素之間的邏輯關(guān)系,分為線性結(jié)構(gòu)和非線性結(jié)構(gòu)。常見的線性結(jié)構(gòu)有線性表、棧和隊(duì)列等,常見的非線性結(jié)構(gòu)有樹、二叉樹等。
23.交換排序交換排序解析:所謂排序是指將一個(gè)無序序列整理成按值非遞減順序排列成的有序序列,常用的排序方法有:交換排序、插入排序和選擇排序。其中交換排序包括冒泡排序和快速排序,插入排序包括簡單插入排序和希爾排序,選擇排序包括直接選擇排序和堆排序。
24.*t或t[0]*s-*t或*s-t[0]或s[0]-*t或s[0]-t[0]*t或t[0]\r\n*s-*t或*s-t[0]或s[0]-*t或s[0]-t[0]解析:函數(shù)sstrcmp()有兩個(gè)字符型指針變量,用來指向兩個(gè)字符串。比較兩個(gè)字符串的大小方法是:從第一個(gè)字符開始依次向后比較,若對應(yīng)的字符相等則接著比較下一個(gè)字符,一直到兩個(gè)字符串中對應(yīng)字符不等,或者有一個(gè)為\\0,此時(shí)字符的ASCII碼大的字符串就大。故循環(huán)條件是*s和*t不為\\0,且*s和*t相同,第一處應(yīng)填“*t”或其他等價(jià)形式。根據(jù)題意可知第二處應(yīng)填*s-*t或其等價(jià)形式。
25.隊(duì)尾隊(duì)尾解析:在隊(duì)列中,允許插入的一端叫做“隊(duì)尾”,允許刪除的一端叫做“隊(duì)頭”。
26.強(qiáng)制類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換
27.20020,0解析:在主函數(shù)中首先定義了3個(gè)整型變量x、y、t,并分別給它們賦初值為10、20、0,接著執(zhí)行汀語句,在if后面括號內(nèi)的條件表達(dá)式中,條件x==y即10==20不成立,則不執(zhí)行其后的語句t=x,然后退出if語句,順序執(zhí)行語句x=y;y=t;。執(zhí)行完這兩條語句后x的值變?yōu)?0,y的值變?yōu)?,所以最后輸出x、y的值為20和0。
28.*s-*t*s-*t解析:兩字符串大小比較必須從它們的首字符開始,在對應(yīng)字符相等情況下循環(huán),直至不相等結(jié)束。相等時(shí),若字符串已到了字符串的結(jié)束標(biāo)記符,則兩字符串相同,函數(shù)返回0值;如還有后繼字符,則準(zhǔn)備比較下一對字符。對應(yīng)字符不相同,循環(huán)結(jié)束。循環(huán)結(jié)束時(shí),就以兩個(gè)當(dāng)前字符的差返回,所以在空框處應(yīng)填入*s-*t,保證在s>t時(shí),返回正值,當(dāng)s<t時(shí),返回負(fù)值。
29.malloc(11)malloc函數(shù)的格式是void*(或char*)malloc(size),size表示應(yīng)分配的存儲區(qū),此題要分配11字節(jié)的單元,把11代入即可。
30.8484解析:f函數(shù)中變量x傳的是變量的地址,而變量y是傳的值,調(diào)用函數(shù)f后,雖然f函數(shù)中的。x變?yōu)?,y值也變了,但main函數(shù)中的y未變,仍然為4。
31.->->解析:若結(jié)構(gòu)體變量abc有成員a,并有指針p_abc指向結(jié)構(gòu)變量abc,則引用變量abc成員a的標(biāo)記形式有abc.a和p_abc->a。
32.-2-2解析:題目中定義并初始化了變量k為0,最后輸出k的值,要求為4,而在此期間只有k+=-(i+j);這條語句改變了k的值,即要求表達(dá)式-(i+j)的值為4。所以,答案應(yīng)該為-2,因?yàn)橹挥衖=j=-2時(shí),表達(dá)式-(i+j)的值才為4。
33.xx解析:函數(shù)的定義形式為:
函數(shù)類型函數(shù)名(形參表)
{
類型說明語句;
執(zhí)行語句;
}
本題中函數(shù)的功能是:累積變量以求捐變量的Y次方。
34.數(shù)據(jù)流數(shù)據(jù)流解析:結(jié)構(gòu)化分析方法的實(shí)質(zhì)是著眼于數(shù)據(jù)流,自頂向下,逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模型。
35.循環(huán)鏈表循環(huán)鏈表解析:在鏈表的運(yùn)算過程中,采用鏈接方式即循環(huán)鏈表的結(jié)構(gòu)把空表與非空表的運(yùn)算統(tǒng)一起來。循環(huán)鏈表具有兩個(gè)特點(diǎn):①在循環(huán)鏈表中增加了一個(gè)表頭結(jié)點(diǎn),其數(shù)據(jù)域?yàn)槿我饣蚋鶕?jù)需要來設(shè)置,指針域指向線性表的第一個(gè)元素的結(jié)點(diǎn)。循環(huán)鏈表的頭指針指向表頭結(jié)點(diǎn)。②循環(huán)鏈表中最后一個(gè)結(jié)點(diǎn)的指針不是空,而是指向表頭結(jié)點(diǎn)。
36.黑箱黑箱解析:本題考查了軟件測試中的黑箱測試。黑箱測試是根據(jù)程序規(guī)格說明所規(guī)定的功能來設(shè)計(jì)測試用例,它不考慮程序的內(nèi)部結(jié)構(gòu)和處理過程。常用的黑箱測試技術(shù)分為等價(jià)類劃分、邊界分析、錯(cuò)誤猜測以及因果圖等。
37.5252解析:do...while語句的形式為:
do
{
語句;
}while(條件表達(dá)式)
當(dāng)條件表達(dá)式為非零時(shí),繼續(xù)執(zhí)行循環(huán)體,直到條件表達(dá)式為零時(shí)退出循環(huán)。
38.7979解析:因?yàn)樵谡{(diào)用子函數(shù)時(shí)進(jìn)行的是數(shù)值傳遞,調(diào)用子函數(shù)并不能改變實(shí)參的值,所以經(jīng)過調(diào)用子函數(shù),c、d的值并沒有發(fā)生變化還是原來的值。
39.77解析:在主函數(shù)中定義了一個(gè)變量x并賦初值0,然后執(zhí)行函數(shù)調(diào)用語句,該語句的執(zhí)行過程為sub(&x,8,1)調(diào)用sub(&a,4,2),sub(&a,4,2)調(diào)用sub(&a,2,4),sub(&a,2,4)中由于2<4,所以if后面括號里的判斷為假,遞歸結(jié)束,執(zhí)行其后的*a+=k;語句此時(shí)x=x+k=0+4=4,回退到上一層調(diào)用函數(shù)sub(&x,4,2)中,執(zhí)行后面的語句,x=x+k=4+2=6,再回推到最上一層調(diào)用函數(shù)sub(&x,8,1)執(zhí)行后面的語句,x=x+k=6+1=7,所以最后輸出7。
40.45994599解析:要注意每條證語句后面是三條語句,而不是一條語句。執(zhí)行第一條if語句時(shí),條件表達(dá)式不成立,執(zhí)行a=c;c=t;,此時(shí)a=5,c=99;執(zhí)行第二條if語句時(shí),條件表達(dá)式成立,執(zhí)行t=b;b=a;a=t;交換a,b的值,輸出結(jié)果為4,5和99。
41.A解析:fun()函數(shù)中聲明了兩個(gè)字符串指針作為形參,在其函數(shù)體中用了一個(gè)while循環(huán),首先while括號內(nèi)表達(dá)式*p2=*p1是將p1所指的內(nèi)容賦值到p2所指的存儲空間中,然后在判斷是否為'\\0',表達(dá)式的值為真時(shí),執(zhí)行循環(huán)體,指針p1和p2分別下移一位,當(dāng)p1指向字符'\\n'時(shí),表達(dá)式的值為假,循環(huán)結(jié)束,故此函數(shù)的功能是將p1所指字符串復(fù)制到p2所指內(nèi)存空間中。所以,4個(gè)選項(xiàng)中選項(xiàng)A符合題意。
42.D
43.D解析:結(jié)構(gòu)伸變量所占內(nèi)存長度是各成員占的內(nèi)存長度之和,每個(gè)成員分別占有自己的內(nèi)存單元;共用體變量所占的內(nèi)存長度等于最長的成員的長度。結(jié)構(gòu)體變量aa中,成員r1占2個(gè)字節(jié),r2占8個(gè)字節(jié),r3占4個(gè)字節(jié),共用體ua占8個(gè)字節(jié),所以共占用2+8+4+8=22個(gè)字節(jié)。
44.C解析:模塊的獨(dú)立程度是評價(jià)軟件設(shè)計(jì)好壞的重要度量標(biāo)準(zhǔn)。衡量軟件的模塊獨(dú)立性經(jīng)常使用耦合性和內(nèi)聚性兩個(gè)定性的度量標(biāo)準(zhǔn)。故選項(xiàng)C正確。
45.A
46.A
47.C
48.C解析:本程序中的函數(shù)sort(inta[],intn)實(shí)現(xiàn)的功能是將數(shù)組a中的前n個(gè)數(shù)進(jìn)行從大到小排序。sort(&a[1],7)是將數(shù)組中從a[1]到a[7]這7個(gè)數(shù)進(jìn)行從大到小排序,其他數(shù)不變。
49.AA)【解析】在最壞情況下,冒泡排序所需要的比較次數(shù)為n(n-1)/2;簡單插入排序所需要的比較次數(shù)為n(n-1)/2;希爾排序所需要的比較次數(shù)為O(n1.5);堆排序所需要的比較次數(shù)為O(nlog2n)。
50.B解析:字符串連接函數(shù)streat的調(diào)用形式如下:strcat(s1,s2)。此函數(shù)將s2所指字符串的內(nèi)容連接到s1所指的字符串后面,并自動(dòng)覆蓋s1串末尾的尾標(biāo),函數(shù)返回s1的地址值。
51.C解析:本題考查了對字符的輸入、輸出操作及算術(shù)和關(guān)系運(yùn)算。因?yàn)閎>='a'并且b<='u',所以執(zhí)行第一個(gè)if語句,c=c+4,c的值為字符'f'。
52.D
53.B解析:如果實(shí)參是簡單變量,它與對應(yīng)形參之間的數(shù)據(jù)傳遞方式是由實(shí)參傳給形參,而形參值的改變不能改變實(shí)參的值。
54.D解析:帶回指針值的函數(shù),其一般定義形式為:
類型標(biāo)識符*函數(shù)名(參數(shù)表);
例如;int*f(x,y);
其中,f是函數(shù)名,調(diào)用它以后能得到一個(gè)指向整型數(shù)據(jù)的指針(地址),x,y是函數(shù)f的形參。在f的兩側(cè)分別為*運(yùn)算符和()運(yùn)算符,而()優(yōu)先級高于*,因此f先與()結(jié)合,顯然是函數(shù)形式。這個(gè)函數(shù)前面有一個(gè)*,表示此函數(shù)是指針型函數(shù)(函數(shù)值是指針)。前面的int表示返回的指針指向整型變量。
55.B
56.A解析:C語言中文件有文本文件與二進(jìn)制文件,對文件的使用前必須先打開,打開方式有只讀、寫入、讀寫等方式。
57.C本題考查printf函數(shù)的格式。格式字符“e”或者“E”都表示以指數(shù)形式輸出單精度或雙精度數(shù)。
58.B解析:本題考查庫函數(shù)調(diào)用的知識點(diǎn)。格式1:#include<文件名>,預(yù)處理程序在標(biāo)準(zhǔn)目錄下查找指定的文件;格式2:#include'文件名',預(yù)處理程序首先在引用被包含文件的源文件所在的目錄下搜索指定的文件,如沒找到,再按系統(tǒng)指定的標(biāo)準(zhǔn)目錄搜索。
59.A解析:本題將主函數(shù)中a[2]的地址傳遞給了sum函數(shù)中的形參a[],使得sum函數(shù)中的(a+0)為主函數(shù)中a[2]的地址,所以a[-1]即*(a-1)的值為主函數(shù)中a[1]的值,故函數(shù)sum中a[0]=2+4。由于此函數(shù)中的a是指向主函數(shù)中的a[2],所以主函數(shù)中的a[2]的值即為6。
60.C解析:C程序中所有語句都必須由一個(gè)分號“;”作為結(jié)束符。如果只有一個(gè)分號,這個(gè)分號也是一條語句,稱為“空語句”,程序執(zhí)行時(shí)不產(chǎn)生任何動(dòng)作。程序設(shè)計(jì)中有時(shí)需要加一個(gè)空語句來表示存在一條語句,但隨意加分號也會導(dǎo)致邏輯上的錯(cuò)誤,影響程序的運(yùn)行。所以選項(xiàng)C的說法是錯(cuò)誤的。
61.C\r\n
62.As=32^32值為0。
63.A將p1指向的字符賦給p2,然后再移向下一個(gè)字符,直到結(jié)束字符0為止,因此這是將p1所指的字符串復(fù)制到p2所指的內(nèi)存空間。
64.D
65.B\n本題考查函數(shù)中數(shù)組和指針的傳值,數(shù)組a[]在參數(shù)傳遞時(shí),是傳遞的數(shù)組a的首地址,所以形參a和n都是指針變量。。
\n
66.C選擇:是在數(shù)據(jù)表中給予一定的條件進(jìn)行篩選數(shù)據(jù)。投影:是把表中的某幾個(gè)屬性的數(shù)據(jù)選擇出來。連接:有自然連接、外連接,內(nèi)連接等,連接主要用于多表之間的數(shù)據(jù)查詢。并:與數(shù)學(xué)中的并是一樣的。兩張表進(jìn)行并操作,要求它們的屬性個(gè)數(shù)相同并且需要相容。
67.D本題考查邏輯運(yùn)算符的使用。當(dāng)“&&”的兩個(gè)運(yùn)算對象都是邏輯1時(shí),表達(dá)式返回值才是1;“||”的兩個(gè)運(yùn)算對象至少有一個(gè)是邏輯1時(shí),表達(dá)式返回值也是1,x<y為1,!z為0,1&&0為1,0||為1,因此,!1為0。
68.A定義變量時(shí)不能連等,所以B)錯(cuò)誤,c)選項(xiàng)中,b是指針,c定義為指向指針的指針才可以接受&b,所以c)錯(cuò)誤,D)選項(xiàng),b=1.1前沒有類型名,所以錯(cuò)誤。
69.Ay一一表示Y使用后再自減l。所以最后一次Y的值為0,條件不成立但仍要執(zhí)行自減操作,Y的值為一1,跳出循環(huán)。打印Y的值一1。
70.A函數(shù)fgete()從文件讀入一個(gè)字符到指定變量。函數(shù)fputc()將指定字符寫入審文件中,函數(shù)fprinff(),fwrite()均是寫入文件操作函數(shù)。因此選項(xiàng)B,c。D錯(cuò)誤。答案為A選項(xiàng)。
</y&&!z||1>
71.C
72.A\n循環(huán)的作用是求行下標(biāo)從l到2列下標(biāo)從0到i的元素之和,即s=a[1][0]+a[1][1]+a[2][o]+a[2][1]+a[2][2]=3+4+5+6+0一18。
\n
73.C數(shù)組的下標(biāo)是從0開始的,A中越界,行下標(biāo)和列下標(biāo)都不能越界;B中,雖然是個(gè)地址,但是也同樣越界了;選項(xiàng)C中表示的是第一個(gè)的首地址;選項(xiàng)D表示的為其元素的值,并不是地址。
74.D
\n當(dāng)k=1時(shí),循環(huán)成立,輸出w[l]的數(shù)組即EFGH,接著執(zhí)行k++后k為2;當(dāng)k=2時(shí),循環(huán)成立,輸出w[2]的數(shù)組即IJKL,接著執(zhí)行k++后,k為3;當(dāng)k=3時(shí),循環(huán)不成立,退出。
\n
75.B本題考查的是邏輯運(yùn)算。本題中主要是進(jìn)行位的邏輯運(yùn)算。將a的值轉(zhuǎn)換成二進(jìn)制為:00000010,b的值轉(zhuǎn)換成二進(jìn)制為:00000100,將a、b進(jìn)行按位或運(yùn)算(參加計(jì)算的兩個(gè)位只要有一個(gè)為1,那么運(yùn)算結(jié)果為l),因此此時(shí)d的二進(jìn)制為:00000110,C的值轉(zhuǎn)換成二進(jìn)制為:00000101,接下來將d和C進(jìn)行按位與運(yùn)算(參加計(jì)算的兩個(gè)位都為1,則結(jié)果為1,否則為0),結(jié)果為:00000100,轉(zhuǎn)換成十進(jìn)制數(shù)結(jié)果為4。
76.B
\nC語言中,數(shù)組的下標(biāo)默認(rèn)為0,因此數(shù)組P的下標(biāo)從0開始,所以p[8]的范圍為0~7。第l次循環(huán)i=0,執(zhí)行循環(huán),得出i=1,因此p[i]為p[1]=12,12%2=0,不執(zhí)行后面的語句;接著進(jìn)行第2次循環(huán),此時(shí)i=1,小于7執(zhí)行循環(huán),并且i自加,得i=2,因此p[i]為p[2]=13,13%2=1,執(zhí)行后面的語句;依此類推最后退出循環(huán)。最后j的值為:j=13+15+17=45。
\n
77.D引用形式有以下三種:①結(jié)構(gòu)體變量.成員名;②(*p).成員名;③p→成員名。所以A、B、C答案都是正確的。故本題答案為D。
78.D本題主要考查軟件開發(fā)過程中,各角色的任務(wù)。在軟件開發(fā)過程中,需要參與過程的角色主要有用戶、軟件分析人員、軟件設(shè)計(jì)人員、項(xiàng)目管理人員和程序員等。其中為系統(tǒng)提供需求信息的是用戶的事情。
79.D表達(dá)式(*q)++先取出q所指對象的值,再對該值遞增,計(jì)算中q的值不變。所以f函數(shù)的功能是將指針q所指的數(shù)加5。函數(shù)調(diào)用f(a);相當(dāng)于將數(shù)組a的第一個(gè)元素加5,操作后a[5]={10,4,3,2,1}。
80.D聲明data是結(jié)構(gòu)S數(shù)組。初始化data『0].a(chǎn)=10;data[0].b=100;data[1].a(chǎn)=20;data[1].b=200。主函數(shù)中P=data[1];即P.a(chǎn)=data[1].a(chǎn);P.b=data[1].b;執(zhí)行語句prinff(”%d\n”,++(P.a(chǎn)));打印輸出時(shí)p.a(chǎn)先增l再打印。P.a(chǎn)=data[1].a(chǎn)=20,先增1等于21。
81.(1)錯(cuò)誤:switch(g);
正確:switch(g)
(2)錯(cuò)誤:case1;case2:return1;
正確:case1:return1;case2:return1;
【解析】由C語言的語法規(guī)則可知,switch語句后面是沒有分號的,因此,“switch(g);”要把后面的分號去掉;在C語言中,case語句后面是冒號而不是分號,因此,“case1;case2:return1;”應(yīng)改為“case1:return1;case2:return1;”。
82.
【解析】題目要求把指定范圍之外的數(shù)放到h中,將每一個(gè)學(xué)生的成績與指定的成績相比較,將符合條件的學(xué)生成績放在數(shù)組b中,并將符合要求的學(xué)生個(gè)數(shù)返回給主函數(shù)。
2021年福建省三明市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.以下關(guān)于C語言的敘述中正確的是()。
A.C語言的數(shù)值常量中夾帶空格不影響常量值的正確表示
B.C語言中的變量可以在使用之前的任何位置進(jìn)行定義
C.在C語言算術(shù)表達(dá)式的書寫中,運(yùn)算符兩側(cè)的運(yùn)算數(shù)據(jù)類型必須一致
D.C語言中的注釋不可以夾在變量名或關(guān)鍵字的中間
2.如下程序的時(shí)間復(fù)雜度為(其中m>1,e>0)A.logmB.m的平方C.m的1/2方D.m的1/3方
3.表達(dá)式a*(b+c)-d的后綴表達(dá)式是()。
A.abcdd+-B.abc+*d-C.abc*+d-D.-+*abcd
4.有以下程序
intfun1(doublea){returna*=a;}
intfun2(doublex,doubley)
{doublea=0,b=0;
a=fun1(x);b=fun1(y);return(int)(a+b);
}
main()
{doublew;w=fun2(1.1,2.0);……}
程序執(zhí)行后變量w中的值是A.5.21B.5C.5.0D.0.0
5.依次讀入數(shù)據(jù)元素序列{a,b,c,d,e,f,g}進(jìn)棧,元素進(jìn)棧或出棧順序是未知的,下列序列中,不可能成為??諘r(shí)彈出的元素構(gòu)成序列的有()
A.{d,e,c,f,b,g,a}
B.{f,e,g,d,a,c,b}
C.{e,f,d,g,c,b,a}
D.{c,d,b,e,f,a,g}
6.對于C語言的函數(shù),下列敘述中正確的是()。
A.函數(shù)的定義不能嵌套,但函數(shù)調(diào)用可以嵌套
B.函數(shù)的定義可以嵌套,但函數(shù)調(diào)用不能嵌套
C.函數(shù)的定義和調(diào)用都不能嵌套
D.函數(shù)的定義和調(diào)用都可以嵌套
7.有以下程序:#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6},k;fp=fopen(“data,dat”,“w+”);for(i=0;i<6;i++)fprintf(fp,“%d\n”,a[5-i]);rewind(fp);for(i=0;i<6;i++){fscanf(fp,“%d”,&k);printf(“%d,”,k);}fclose(fp);}程序運(yùn)行后的輸出結(jié)果是()。
A.6,5,4,3,2,1,B.1,2,3,4,5,6,C.1,1,1,1,1,1,D.6,6,6,6,6,6,
8.下列程序的輸出結(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
9.
10.若變量已正確定義,有以下程序段
A.0,0B.0,1C.1,1D.程序進(jìn)入無限循環(huán)
11.樹最適合用來表示()。
A.有序數(shù)據(jù)元素B.無序數(shù)據(jù)元素C.元素之間具有分支層次關(guān)系的數(shù)據(jù)D.元素之間無聯(lián)系的數(shù)據(jù)
12.下述程序執(zhí)行的輸出結(jié)果是()。#includemain{chara[2][4];strcpy(a,"are");strcpy(a[1],"you");a[0][3]='&';printf("%s\n",a);}A.A.are&youB.youC.areD.&13.有以下程序:#include<stdio.h>main(){char*s="[2]34";intk=0,a=0;whil(s[k+1]!=\0){k++;if(k%2=o){a=a+(s[k]-0+1);continue;}a=a+(s[k]-0);printf("k=%da=%d\n",k,a);}程序運(yùn)行后的輸出結(jié)果是()。A.k=6a=11B.k=3a=14C.k=4a=12D.k=5a=15
14.有下列程序:main{charp[]={a,h,c},q[]="a";printf("%d%d\n".sizeof(P),sizeof(q));}程序運(yùn)行后的輸出結(jié)果是()。A.44B.33C.34D.43
15.數(shù)據(jù)庫的故障恢復(fù)一般是由()來執(zhí)行恢復(fù)
A.電腦用戶B.數(shù)據(jù)庫恢復(fù)機(jī)制C.數(shù)據(jù)庫管理員D.系統(tǒng)普通用戶
16.字符串"\\"ABCDEF\"\\”的長度是()。
A.11B.10C.5D.3
17.已知inta=2,b=3;則執(zhí)行表達(dá)式a=a<b后,變量a的值為()。
A.0B.1C.2D.3
18.向一個(gè)棧頂指針為H的鏈棧中執(zhí)行出棧運(yùn)算時(shí),需執(zhí)行()。
A.p=H;H=H->link;free(p);
B.H=H->link;free(H);
C.p=H;H->link=H->link->link;free(p);
D.p=H;H=H->link;
19.從一個(gè)長度為100的順序表中刪除第30個(gè)元素時(shí)需向前移動(dòng)()個(gè)元素
A.70B.71C.69D.30
20.有以下程序:voidsum(inta[]){a[0]=a[-1]+a[1];}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};sum(&a[2]);printf("%d\n",a[2]);}程序運(yùn)行后的輸出結(jié)果是()。
A.6B.7C.5D.8
二、2.填空題(20題)21.注釋一般分為序言性注釋和______注釋。
22.按照邏輯結(jié)構(gòu)分類,結(jié)構(gòu)可以分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),棧屬于______。
23.排序是計(jì)算機(jī)程序設(shè)計(jì)中的一種重要操作,常見的排序方法有插入排序、______和選擇排序。
24.函數(shù)sstrcmp的功能是對兩個(gè)字符串進(jìn)行比較。當(dāng)s所指字符串和t所指字符串相等時(shí),返回值為0;當(dāng)s所指字符串大于t所指字符串時(shí),返回值大于0;當(dāng)s所指字符串小于t所指字符串時(shí),返回值小于0(功能等同于庫函數(shù)strcmp)。請?zhí)羁铡?/p>
#include<stdio.h>
intsstrcmp(char*s,char*t)
{while(*s&&*t&&*s==【】)
{s++;t++;}
return【】;
}
25.隊(duì)列是限定在表的一端進(jìn)行插入和在另一端進(jìn)行刪除操作的線性表。允許插入的一端稱作______。
26.在C語言中,可以利用【】,將一個(gè)表達(dá)式的值轉(zhuǎn)換成指定的類型。
27.以下程序運(yùn)行后的輸出結(jié)果是【】。
main()
{intX=10,y=20,t=0;
if(X==y)t=x;x=y;y=t;
printf("%d,%d\n",x,y);
}
28.函數(shù)my_cmp()的功能是比較字符串s和t的大小,當(dāng)s等于t時(shí)返回0,否則返回s和t的第一個(gè)不同字符的ASCII碼差值,即s>t時(shí)返回正值,s<t時(shí)返回負(fù)值。請?zhí)羁铡?/p>
My_cmp(char*s,char*t)
{while(*s==*t)
{if(*s==′\0)return0;
++s;++t;
}return【】;
}
29.用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有11個(gè)字節(jié)的動(dòng)態(tài)存儲空間,請?zhí)羁铡t=(char*)【】;
30.有以下程序:
#include<stdio.h>
voidf(inty,int*x)
{y=y+*x;*x=*x+y;}
main()
{intx=2,y=4;
f(y,&x);
printf("%d%d\n",x,Y);
}
執(zhí)行后的輸出結(jié)果【】。
31.設(shè)有定義“struct{inta;floatb;charc;}abc,*p_abc=&abc;”,則對結(jié)構(gòu)體成員a的引用方法可以是abc.a和p_abc【】a。
32.若下面程序的輸出結(jié)果是4,請?zhí)羁铡?/p>
main()
{inti,j,k;
k=0;i=j=【】;
k+=-(i+j);printf("%d\n",k);
}
33.以下函數(shù)的功能是求x的y次方,請?zhí)羁?/p>
doublefun(doublex,inty)
{inti;
doublez;
for(i=1,z=x;i<y;i++)z=z*【】;
}
34.結(jié)構(gòu)化分析方法是面向______進(jìn)行分析的方法。
35.在運(yùn)算過程中,能夠使空表與非空表的運(yùn)算統(tǒng)一的結(jié)構(gòu)是【】。
36.【】(黑箱或白箱)測試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征。
37.以上程序運(yùn)行后的輸出結(jié)果是【】。
main()
{inti=10,j=0;
do
{j=j+i;i-;}
while(i>2);
printf("%d\n",j);
}
38.下列程序的輸出結(jié)果是______。
#include<stdio.h>
intt(intx,inty,intcp,intdp)
{cp=x*x+y*y;
dp=x*x-y*y;
}
main()
{inta=1,b=8,c=7,d=9;
t(a,b,c,D);
primf("%d,%d%d\n",c,D);
}
39.以下程序的輸出結(jié)果是【】。
main()
{intx=0;
sub(&x,8,1);
printf(“%d\n”,x);
}
sub(int*a,intn,intk)
{if(k<=n)sub(a,n/2,2*k);
*a+=k;
}
40.以下程序運(yùn)行后的輸出結(jié)果是【】。
#include<stdio,h>
main()
{inta=3,b=4,c=5,t=99;
if(b<a&&a<c)t=a;a=c;c=t;
if(a<e&&b<c)t=b;b=a;a=t;
printf("%d%d%d\n",a,b,e);
}
三、1.選擇題(20題)41.已定義以下函數(shù):fun(Char*p2,char*p1){while((*p2=*p1)!='\0'){p1++;p2++;}}函數(shù)的功能是()。
A.將p1所指字符串復(fù)制到p2所指內(nèi)存空間
B.將p1所指字符串的地址賦給指針p2
C.對p1和p2兩個(gè)指針?biāo)缸址M(jìn)行比較
D.檢查p1和p2兩個(gè)指針?biāo)缸址惺欠裼?\0',
42.有以下程序:main(){inti=1,j=2,k=3;if(i++==1&&(++j==3||k++==3))printf("%d%d%d\n",i,j,k);}程序運(yùn)行后的輸出結(jié)果是()。
A.123B.234C.223D.233
43.若有下面的說明和定義,則sizeof(structaa)的值是______。structaa{intr1;doubler2;floatr3;unionuu{charu1[5];longu2[2]}ua;}mya;
A.30B.29C.24D.22
44.模塊獨(dú)立性是軟件模塊化所提出的要求,衡量模塊獨(dú)立性的度量標(biāo)準(zhǔn)是模塊的()
A.抽象和信息隱蔽B.局部化和封裝化C.內(nèi)聚性和耦合性D.激活機(jī)制和控制方法
45.有以下程序#include<stdio.h>sub1(chara,charB){charc;c=a;a=b;b=c;}sub2(char*a,charB){charc;c=*a;*a=b;b=c;}sub3(char*a,char*B){charc;c=*a;*a=*b;*b=c;}main(){cha,a,b;a='A';b='B';sub3(&a,&b)putchar(a);putchar(b);a='A';b='B';sub2(&a,b);putchar(a);putchar(b);a='A';b='B';sub1(a,b);putchar(a);putchar(b);}程序運(yùn)行后的輸出結(jié)果是()
A.BABBABB.ABBBBAC.BABABAD.BAABBA
46.如果一個(gè)算法顯式地調(diào)用自己則稱為()
A.直接遞歸B.自用遞歸C.間接遞歸D.外用遞歸
47.設(shè)有定義:#defineSTR"12345";,則以下敘述中正確的是()
A.宏名STR代替的是數(shù)值常量12345
B.宏定義以分號結(jié)束,編譯時(shí)一定會產(chǎn)生錯(cuò)誤信息
C.宏名STR代替的是字符串"12345";
D.宏名STR代替的是字符串常量"12345"
48.下列程序中函數(shù)sort()的功能是對數(shù)組a中的數(shù)據(jù)進(jìn)行由大到小的排序。
#include<stdio.h>
voidsort(inta[],intn)
{inti,j,t;
for(i=0;i<n-1;i++)
for(j=i+1;<n;j++)
if(a[i]<a[j])
{t=a[i];a[i]=a[j];a[j]=t;
}
}
main()
{inta[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(&a[1],7);
for(i=0;i<10;i++)printf("
A.1,2,3,4,5,6,7,8,9,10,
B.10,9,8,7,6,5,4,3,2,1,
C.1,8,7,6,5,4,3,2,9,10,
D.1,2,10,9,8,7,6,5,4,3,
49.對于長度為n的線性表,在最壞情況下,下列各排序法所對應(yīng)的比較次數(shù)中正確的是()
A.冒泡排序?yàn)閚(n-1)/2B.簡單插入排序?yàn)閚C.希爾排序?yàn)閚D.快速排序?yàn)閚/2
50.有下面程序段
#include"stdio.h"
#include"string.h"
main()
{chara[3][20]={{"china"},{"isa"},{"bigcountry!"}};
chark[100]={0},*p=k;
inti;
for(i=0;i<3;i++)
{p=strcat(p,a[i]);}
i=strlen(p);
printf("%d\n",i);}
則程序段的輸出結(jié)果是
A.18B.19C.20D.21
51.運(yùn)行下面程序,若從鍵盤輸入字母“b”,則輸出結(jié)果是charc;c=getchar();if(c>='a'&&c<='u')c=c+4;elseif(c>='v'&&c<='z')c=c-21;elseprintf("inputerror!\n");putchar(c);
A.gB.wC.fD.d
52.在標(biāo)準(zhǔn)C語言中,下列程序的輸出結(jié)果為______。main(){printf("%e",123.456);}
A.123.456B.123.4560C.1.23456e2D.1.234560e+002
53.調(diào)用函數(shù)時(shí),如果實(shí)參是簡單變量,它與對應(yīng)形參之間的數(shù)據(jù)傳遞方式是()。
A.地址傳遞B.單向值傳遞C.由實(shí)參傳形參,再由形參傳實(shí)參D.傳遞方式由用戶指定
54.在說明語句:int*f();中,標(biāo)識符f代表的是
A.一個(gè)用于指向整型數(shù)據(jù)的指針變量
B.一個(gè)用于指向一維數(shù)組的行指針
C.一個(gè)用于指向函數(shù)的指針變量
D.一個(gè)返回值為指針型的函數(shù)名
55.在下列字符序列中,合法的標(biāo)識符是()
A.P12&.aB.stud_100C.$water.12D.88sum
56.下面的程序執(zhí)行后,文件test.t中內(nèi)容是______。#include<stdio.h>voidfun(char*fname,char*st){FILE*myf;inti;myf=fopen(fname,"w");for(i=0;i<strlen(st);i++)fputc(st[i],myf);fclose(myf);}main(){fun("test.t","newworld");fun("test.t","hello,");}
A.hello,B.newworldhelloC.newworldD.hello,rld
57.在printf的格式字符中,e格式字符的作用是()。
A.以十六進(jìn)制無符號形式輸出整數(shù)
B.以帶符號的十進(jìn)制形式輸出整數(shù)
C.以指數(shù)形式輸出實(shí)數(shù)
D.以字符形式輸出,且只輸出一個(gè)字符
58.在“文件包含”預(yù)處理語句的使用形式中,當(dāng)#include后面的文件名用"",(雙撇號)括起時(shí),尋找被包含文件的方式是()。
A.直接按系統(tǒng)設(shè)定的標(biāo)準(zhǔn)方式搜索目錄
B.先在源程序所在的目錄搜索,如沒找到,再按系統(tǒng)設(shè)定的標(biāo)準(zhǔn)方式搜索
C.僅僅搜索源程序所在目錄
D.僅僅搜索當(dāng)前目錄
59.有以下程序:#include<stdio,h>voidsum(inta[]){a[0]=a[-1]+a[1];}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};sum(&a[2]);prinff("%d\n",a[2]);}程序運(yùn)行后的輸出結(jié)果是()。
A.6B.7C.5D.8
60.以下敘述中錯(cuò)誤的是()。
A.C語句必須以分號結(jié)束
B.復(fù)合語句在語法上被看做一條語句
C.空語句出現(xiàn)在任何位置都不會影響程序運(yùn)行
D.賦值表達(dá)式末尾加分號就構(gòu)成賦值語句
四、選擇題(20題)61.
62.若變量已確定義,則以下語句的輸出結(jié)果是()。
63.已定義以下函數(shù):
fun(char*p2,char*p1)
{while((*p2=*p1)!=’\0’){p1++;p2++;}}
函數(shù)的功能是()。
A.將p1所指字符串復(fù)制到p2所指向內(nèi)存空間
B.將p1所指字符串的地址賦給指針p2
C.對p1和p2兩個(gè)指針?biāo)缸址M(jìn)行比較
D.檢查p1和p2兩個(gè)指針?biāo)缸址惺欠裼小痋0’
64.
65.若有函數(shù)voidfun(doublea[]。int*n){…}以下敘述中正確的是()。A.調(diào)用fun函數(shù)時(shí)只有數(shù)組執(zhí)行按值傳送,其他實(shí)參和形參之間執(zhí)行按地址傳送
B.形參a和n都是指針變量
C.形參a是一個(gè)數(shù)組名,n是指針變量
D.調(diào)用fun函數(shù)時(shí)將把double型參數(shù)組元素一一對應(yīng)地傳送給形參a數(shù)組
66.右兩個(gè)關(guān)系R和S如下:
則由關(guān)系R得到關(guān)系S的操作是()。A.自然連接B.并C.選擇D.投影
67.設(shè)x、y和z是int型變量,且x=4,y=6,z=8,則下列表達(dá)式中值為0的是()。
A.x&&yB.x<=yC.x||++y&&y-zD.!(x<y&&!z||1
68.以下定義語句中正確的是()。
69.有以下程序:
程序執(zhí)行后的輸出結(jié)果是()。
A.y=一1B.Y=0C.y=1D.while構(gòu)成無限循環(huán)
70.若文件指針fp已正確指向文件,ch為字符型變量,以下不能把字符輸出到文件中的語句是()。
A.fget(f0,ch);
B.foutc(ch,fo);
C.fprinff(fp,”%c”,ch);
D.fwrite(&ch,sizeof(ch),1,fp);
71.
72.以下程序的輸出結(jié)果是()。
main()
{inta[3][3]={{1,2},{3,4),{5,6}},i,j,s=0;
for(i=1;i<3;i++)
for(j=0;j<=i;j++)s+=a[i][j];
printf("%d\n",s);
}
A.18
B.19
C.20
D.21
73.若有以下的定義:‘intt[3][2];”,能正確表示t數(shù)組元素地址的表達(dá)式是()。
A.&t[3][2]B.t[3]C.t[l]D.t[2][2]
74.
以下程序的輸出結(jié)果是()。
main
{charw[][10]={"ABCD","EFGH","IJKL","
MNOP"),K;
for(k=1;k<3;k++)printf("%s\n",w[k]);
A.ABCDFGHKLB.ABCDEFGUC.EFGJKOD.EFGHUKL
75.有以下程序:
main
{
unsignedchara=2,b=4,c=5,d;
d=a|b;d&=c;printf("%d\n",d);
}
程序運(yùn)行后的輸出結(jié)果是()。
A.3B.4C.5D.6
76.
下列程序的輸出結(jié)果是()。
main
{intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;
while(i++<7)
if(p[i]%2)j+=p[i];
printf("%d\n",j);
}
A.42B.45C.56D.60
77.有以下說明和定義語句
structstudent
{
intage;charnum[8];
};
structstudentstu[3]={{20,"200401"},{21,"200402"},{10\9,"200403"}};
structstudent*p=stu;
以下選項(xiàng)中引用結(jié)構(gòu)體變量成員的表達(dá)式錯(cuò)誤的是
A.(p++)->numB.p->numC.(*p).numD.stu[3].age
78.在軟件生產(chǎn)過程中,需求信息的給出是______。A.A.程序員B.項(xiàng)目管理者C.軟件分析設(shè)計(jì)人員D.軟件用戶
79.有以下程序:
程序運(yùn)行后的結(jié)果是()。
A.6,4,3,2
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代辦公環(huán)境中大數(shù)據(jù)的應(yīng)用案例
- 膀胱沖洗器行業(yè)深度研究報(bào)告
- 2025年服裝帽項(xiàng)目可行性研究報(bào)告
- 2024-2030年中國自動(dòng)控制閥行業(yè)發(fā)展監(jiān)測及投資戰(zhàn)略研究報(bào)告
- 2025年中國船用離心泵行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報(bào)告
- 高效余熱回收裝置項(xiàng)目可行性研究報(bào)告申請建議書案例
- 聚氨脂密封圈行業(yè)深度研究報(bào)告
- 退學(xué)生會的申請書100字
- 2025年離婚協(xié)議紙質(zhì)模板電子版
- 2025年墊資購車合同模板
- 漢聲數(shù)學(xué)圖畫電子版4冊含媽媽手冊文本不加密可版本-29.統(tǒng)計(jì)2500g早教
- 初中化學(xué)方程式匯總(魯教版)
- 企業(yè)組織架構(gòu)表
- 中國監(jiān)察制度史
- 民俗學(xué)概論 第一章 概述課件
- 衛(wèi)生院基本藥物采購供應(yīng)管理制度
- 搬家公司簡介(15個(gè)范本)
- 典范英語-2備課材料2a課件
- 抽水蓄能輔助洞室施工方案
- 數(shù)據(jù)結(jié)構(gòu)英文教學(xué)課件:chapter7 Searching
- 幼兒園中班體育活動(dòng)動(dòng)作目標(biāo)及指導(dǎo)要點(diǎn)
評論
0/150
提交評論