版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2021年陜西省寶雞市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.下列關(guān)于C語言文件的敘述中正確的是()。
A.文件由一系列數(shù)據(jù)依次排列組成,只能構(gòu)成二進(jìn)制文件
B.文件由結(jié)構(gòu)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件
C.文件由數(shù)據(jù)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件
D.文件由字符序列組成,其類型只能是文本文件
2.下列關(guān)于線性鏈表的敘述中,正確的是()A.各數(shù)據(jù)結(jié)點的存儲空間可以不連續(xù),但它們的存儲順序與邏輯順序必須一致
B.各數(shù)據(jù)結(jié)點的存儲順序與邏輯順序可以不一致,但它們的存儲空間必須連續(xù)
C.進(jìn)行出入與刪除時,不需要移動表中的元素
D.以上三種說法都不催
3.帶有頭節(jié)點的單向鏈表head,其3個數(shù)據(jù)節(jié)點A、B、C的連接關(guān)系如下圖所示:節(jié)點類型的定義為structlink{doubledt;structlink*next;};若指針P指向A節(jié)點,在不改變P指向的前提下,以下選項中不能訪問C節(jié)點數(shù)據(jù)成員dt的表達(dá)式是()。A.*(*p).next->next->dt
B.p->next->next->dt
C.(*(*(*p).next).next).dt
D.(*(p->next->next)).dt
4.
5.
6.設(shè)有定義:intk=1,m=2;noatf=7;則下列選項中錯誤的表達(dá)式是()。
A.k=k>=kB.-k++C.k%int(f)D.k>=f>=m
7.
有以下結(jié)構(gòu)體說明和變量的定義,且指針P指向變量a,指針q指向變量b,則不能把結(jié)點b連接到結(jié)點a之后的語句是()。
structnode
{chardata;
structnode*next:
}a,b,*p=&a,*q=&b;
A.a.next=q;B.P.next=&b;C.p->next=&b;D.(*p).next=q;
8.插入和刪除只能在一端進(jìn)行線性表,稱為()。
A.隊列B.循環(huán)隊列C.棧D.循環(huán)棧
9.串是一種特殊的線性表,其特殊性體現(xiàn)在()。
A.可以順序存儲B.數(shù)據(jù)元素是一個字符C.可以鏈接存儲D.數(shù)據(jù)元素可以是多個字符
10.
11.若程序中有宏定義行“#defineN100”,則下列敘述中正確的是()。
A.宏定義行中定義了標(biāo)識符N的值為整數(shù)100
B.在編譯程序?qū)語言源程序進(jìn)行預(yù)處理時用100替換標(biāo)識符N
C.上述宏定義行實現(xiàn)將100賦給標(biāo)識符N
D.在運行時用100替換標(biāo)識符N
12.以下敘述中錯誤的是()。
A.將函數(shù)內(nèi)的局部變量說明為static存儲類是為了限制其他編譯單位的引用
B.—個變量作用域的開始位置完全取決于變量定義語句的位置
C.全局變量可以在函數(shù)以外的任何部位進(jìn)行定義
D.局部變量的“生存期”只限于本次函數(shù)調(diào)用,因此不能將局部變量的運算結(jié)果保存至下一次調(diào)用
13.下列程序的輸出結(jié)果是()。#include<stdio.h>voidp(int*x){printf("%d¨,++*x);}voidmain(){inty=3;p(&y);}A.3B.4C.2D.5
14.#define能作簡單的替代,用宏來替代計算多項式5*x*x+5*x+5的值的函數(shù)f,正確的宏定義語句為()。
A.#definef(x)5*x*x+5*x+5
B.#definef5*X*x+5*x+5
C.#definef(a)(5*a*a+5*a+5)
D.#define(5*x*x+5*x+5)f(x)
15.設(shè)x為int型變量,則執(zhí)行以下語句后,x的值為()。x=10;x=x-=x-x;
A.10B.20C.40D.30
16.
17.以下不合法的數(shù)值常量是()。
A.8.0E0.5B.1e1C.011D.0xabcd
18.有以下函數(shù)char*fun(char*p){returnp;}該函數(shù)的返回值是______。
A.無確切的值B.形參p中存放的地址值C.一個臨時存儲單元的地址D.形參p自身的地址值
19.
20.在具有n個結(jié)點的有序單鏈表中插入一個新結(jié)點并使鏈表仍然有序的時間復(fù)雜度是________
A.O(1)B.O(n)C.O(nlogn)D.O(n2)
二、2.填空題(20題)21.關(guān)系模型的數(shù)據(jù)操縱即是建立在關(guān)系上的數(shù)據(jù)操縱,一般有______、增加、刪除和修改四種操作。
22.數(shù)據(jù)的邏輯結(jié)構(gòu)有線性結(jié)構(gòu)和______兩大類。
23.下列程序的輸出結(jié)果是【】。
voidfun(int*n)
{
while((*n)--);
printf("%d",++(*n));
}
main()
{inta=100;
fun(&a);
}
24.下面的程序?qū)崿F(xiàn)的是從指針p所指向的地址的n個數(shù)中,找出最大的和最小的數(shù)據(jù),請?zhí)羁铡?/p>
fun(int*p,intn)
{int*q;
intmax,min;
max=min=*p;
for(q=p;______;q++)
if(*q>max)max=*q;
elseif(*q<min)min=*q;}
25.設(shè)有下列宏定義:
#defineA2
#defineB(A+3)
則執(zhí)行賦值語句"k=B*20;"(k為int型變量)后,k的值是______。
26.以下程序中,for循環(huán)體執(zhí)行的次數(shù)是______。
#defineN2
#defineMN+1
#defineKM+1*M/2
main()
{
inti;
for(i-1;i<K;i++)
{...}
...
}
27.以下程序段打開文件后,先利用fseek函數(shù)將文件位置指針定位在文件末尾,然后調(diào)用ftell函數(shù)返回當(dāng)前文件位置指針的具體位置,從而確定文件長度,請?zhí)羁铡?/p>
FILE*myf;longfl;
myf=【】("test.t","rb");
fseek(myf,(),SEEK_END)fl+ftell(myf);
fclose(myf);
printf("%ld\n",fl);
28.以下程序運行后的輸出結(jié)果是______。
main()
charc;intn=100;
floatf=10;doublex;
x=f*=n/=(c=50);
printf("%d%f\n",n,x);
29.以下程序運行后的輸出結(jié)果是______。
#include<string.h>
voidfun(char*s,intp,intk)
{inti;
for(i=p;i<k-1;i++)s[i]=s[i+2];
}
main()
{chars[]="abcdefg";
fun(s,3,strlen(s));puts(s);
}
30.有以下程序
intfa(intx){returnx*x;}
intfb(intx){returnx*x*x;}
intf(ing(*f1)(),int(*f2)(),intx)
{returnf2(x)-f1(x);}
main()
{inti;i=f(fa,fb,2),printf("%d\n",i);}
程序運行后,輸出結(jié)果是【】。
31.下列程序的輸出結(jié)果是______。
main()
{inti=0,a=0;
while(i<20)
{for(;;)
{if((i%10)==0)break;
elsei--;}
i+=11;
a+=i;
}
printf("%d\n",A);
}
32.軟件工程研究的內(nèi)容主要包括:【】技術(shù)和軟件工程管理。
33.【】是數(shù)據(jù)庫設(shè)計的核心。
34.數(shù)據(jù)管理技術(shù)發(fā)展過程經(jīng)過人工管理、文件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)三個階段,其中數(shù)據(jù)獨立性最高的階段是______。
35.程序的運行結(jié)果為【】。
main()
{intx,y,z;
x=24;
y=024;
z=0x24;
printf("%d,%d,%d\n",x,y,z);
}
36.以下程序運行后的輸出結(jié)果是【】。
fun(ihtx)
{if(x/2>0)fun(x/2);
printf("%d",x);
}
main()
{fun(6);}
37.以下程序的輸出是【】。
main()
{
charstr1[]="Howdoyoudo",*p1=str1;
strcpy(str1+strlen(str1)/2,"esshe");
printf("%s\n",p1);
}
38.下列循環(huán)的循環(huán)次數(shù)是______。
intk=2;
while(k=0)
printf["%d",k);
k--;
printf("\n");
39.下面程序把從終端讀入的文本(用#作為文本結(jié)束標(biāo)志)復(fù)制到一個名為file.txt的新文件中。補足所缺語句。
main()
{charch;
FILE*fp;
if((fp=fopen(______))=NULL)exit(0);
while((ch=getchar())!='#')
fputc(ch,fp);
______;
}
40.以下程序的輸出結(jié)果是______。
main()
{ints,i;
for(s=0,i=1;i<3;i++,s+=i);
printf("%d\n".s);
}
三、1.選擇題(20題)41.有以下程序段:intk=Owhile(k=1)k++;while循環(huán)執(zhí)行的次數(shù)是()。
A.無限次B.有語法錯,不能執(zhí)行C.一次也不執(zhí)行D.執(zhí)行1次
42.以下程序的輸出結(jié)果是______。#include<stdio.h>main(){inta=200;#definea100printf("%d",a);#undefaprintf("%d",a);}
A.200100B.100100C.100200D.200200
43.若有下面的程序片段:int[12]={0},*p[3],**pp,i;for(i=0;i<3;i)p[i]=&a[i*4];pp=p則對數(shù)組元素的錯誤引用是
A.pp[0][1]B.a[10]C.p[3][1]D.*(*(p+2)+2)
44.結(jié)構(gòu)化程序設(shè)計主要強調(diào)的是
A.程序的規(guī)模B.程序的效率C.程序設(shè)計語言的先進(jìn)性D.程序易讀性
45.設(shè)有如下定義:structsk{intm;floatx;}data,*q;若要使q指向data中的m域,正確的賦值語句是()。
A.q=&data.m;
B.*q=data.m;
C.q=(structsk*)&data.m;
D.q=(structsk*)data.m;
46.有以下語句,則對a數(shù)組元素的引用不正確的是(0≤i≤9)inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;
A.a[p-B.C.*(&a[i])D.p[i]*(*(a+i))
47.以下程序有語法錯誤,有關(guān)錯誤原因的正確說法是main(){intG=5,k;voidprt_char();…k=prt_char(G);…}
A.語句voidprt_char();有錯,它是函數(shù)調(diào)用語句,不能用void說明
B.變量名不能使用大寫字母
C.函數(shù)說明和函數(shù)調(diào)用語句之間有矛盾
D.函數(shù)名不能使用下劃線
48.以下能正確定義數(shù)組并正確賦初值的語句是
A.intN=5,b[N][N];
B.inta[1][2]={{1},{3}};
C.intc[2][1]={{1,2},3,4}};
D.intd[3][2]={{1,2},{34}};
49.當(dāng)把以下4個表達(dá)式用作if語句的控制表達(dá)式時,有一個選項與其他3個選項含義不同,這個選項是
A.k%2B.k%2==1C.(k%2)!=0D.!k%2==1
50.數(shù)據(jù)的存儲結(jié)構(gòu)是指()。
A.數(shù)據(jù)所占的存儲空間
B.數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機中的存放形式
C.數(shù)據(jù)在計算機中的順序存儲方式
D.存儲在計算機外存中的數(shù)據(jù)
51.有如下程序main(){chars[][5]={"abc","de","fgh"};printf("%c",s[2][6]);}其輸出為______。
A.不確定B.編譯錯誤C.gD.輸出null字符
52.若執(zhí)行下列程序時從鍵盤上輸入2,則輸出結(jié)果是()。#include<stdio.h>main(){inta;scanf("%d",&a);if(a++<3)printf("%d\n",a);elseprintf("%d\n",a--);}
A.1B.3C.2D.4
53.下面程序的輸出結(jié)果是()#include"stdio.h"fun(x)intx;{inty=0;staticintz=5;z=x++,y++;return(z);}main()inta=4,i,j;for(i=0;i<2;i++)j=fun(a++);printf("%d",j);}
A.0B.3C.4D.5
54.下列程序的輸出結(jié)果是#include"stdio.h"#defineN3#defineM3voidfun(inta[M][N]){printf("%d\n",*(a[1]+2));}main(){inta[M][N];inti,j;for(i=0;i<M;i++)for(j=0;j<N;j++)a[i][j]=i+j-(i-j);fun(a);}
A.3B.4C.5D.6
55.下列選項中屬于C語言構(gòu)造類型的是()
A.指針類型B.空類型C.枚舉類型D.數(shù)組類型
56.下列字符串是合法的標(biāo)識符的是()。
A._HJB.9_studentC.longD.LINE1
57.以下敘述中,正確的是______。
A.輸入項可以是一個實型常量,例如:scanf("%f",3.5);
B.只有格式控制,沒有輸入項,也能正確輸入數(shù)據(jù)到內(nèi)存,例如:scanf("a=%d,b=%d");
C.當(dāng)輸入一個實型數(shù)據(jù)時,格式控制部分可以規(guī)定小數(shù)點后的位數(shù),例如:scanf("%4.2f",&d);
D.當(dāng)輸入數(shù)據(jù)時,必須指明變量地址,例如:scanf("%f",&f);
58.數(shù)據(jù)存儲和數(shù)據(jù)流都是______,僅僅是所處的狀態(tài)不同。
A.分析結(jié)果B.事件C.動作D.數(shù)據(jù)
59.有以下程序main(){charp[]={'a','b','c},q[]="abc";printf("%d%d\n",sizeof(p),sizeof(q));}程序運行后輸出結(jié)果是
A.44B.33C.34D.43
60.若變量已正確定義,下列正確的程序段是()。
A.while(ch=getchar()=='\N')putchar(ch);
B.while((ch=getchar())=='\n')putchar(ch);
C.while((ch=getchar())!='\N')putchar(ch);
D.while((ch=getchar())!='\n')putchar(ch);
四、選擇題(20題)61.已定義以下函數(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兩個指針?biāo)缸址M(jìn)行比較
D.檢查p1和p2兩個指針?biāo)缸址惺欠裼小痋0’
62.
若希望下列的程序運行后輸出25,程序空白處的正確選項是()。
main
{intid=50,a[]=(7,4,10,5,8};
for()
j+=a[i];
printf("%d",j-40);
}
A.i=1;i<4;++i
B.i=l;i<3;++i
C.i=4;i>2;i--
D.i=2;i<4;++i
63.以下選項中可用做C程序合法實數(shù)的是()。
A..leOB.3.0e0.2C.E9D.9.12E
64.
65.下列選項中不符合良好程序設(shè)計風(fēng)格的是()。
A.數(shù)據(jù)說明的次序要規(guī)范化
B.程序中要有必要的注釋
C.對所有輸入的數(shù)據(jù)都要進(jìn)行檢查,確保數(shù)據(jù)的合法性
D.程序的效率第一,清晰第二
66.
67.x,y,z被定義為int型變量,若從鍵盤給x,y,z輸入數(shù)據(jù),正確的輸入語句是()。
A.INPUTx,y、z;
B.scanf(”%d%d%d”,&x,&y,&z.);
C.sCanf(”%d%d%d”,x,y,z.);
D.read(”%d%d%d”,&x,&y,&z.);
68.
69.(60)視圖設(shè)計一般有3種設(shè)計次序,下列不屬于視圖設(shè)計的是()
A.自頂向下
B.由外向內(nèi)
C.由內(nèi)向外
D.自底向上
70.有以下程序#includemain{inty=9;for(;y>0;y--)if(y%3==0)printf("%d",--y);}程序的運行結(jié)果是()。A.741B.963C.852D.875421
71.有以下程序:
#include<stdio.h>
main()
{inta=0,b=0,c=0;
c=(a=a=5);(a=b,b+=4);
printf("%d,%d,%d\n",a,bc);
}
程序運行后的輸出結(jié)果是()。
A.0,4,5B.4,4,5C.4,4,4D.0,0,0
72.下面結(jié)構(gòu)體的定義語句中,錯誤的是()。
A.structord{intx;intY;intz;}structorda;
B.structord{intx;imY;imz;};structorda;
C.structord{intx;intY;intZ;}a;
D.struct{intx;intY;intz;}a;
73.若有定義:“int*P,x=0,*p,p=&x;”,則語句“printf("%d\n",*p);”的輸出結(jié)果是()。
A.隨機值B.0C.x的地址D.P的地址
74.從循環(huán)體內(nèi)某一層跳出,繼續(xù)執(zhí)行循環(huán)外的語句是:___________。
A.break語句B.return語句C.continue語句D.空語句。
75.
76.設(shè)有定義:intx-2;,以下表達(dá)式中,值不為6的是()。A.2*x,X+=2B.x++,2*xC.x*=(1+x)D.x*=x+1
77.
78.
79.
80.
五、程序改錯題(1題)81.下列給定程序中,fun()函數(shù)的功能是:求3個數(shù)的最小公倍數(shù),例如,給變量a、b、c、分別輸入15、11、2,則輸出結(jié)果應(yīng)當(dāng)是330。請修改函數(shù)中的錯誤,得出正確的結(jié)果。注意:不要改動main()函數(shù),不能增行或減行,也不能更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),它的功能是求小于形參n同時能被3與7整除的所有自然數(shù)之和的平方根,并將其作為函數(shù)值返回。例如,若n為1000時,程序輸出應(yīng)為s=153.909064。注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:
參考答案
1.C文件由數(shù)據(jù)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件。故本題答案為C選項。
2.C
試題2分析
結(jié)點的存儲順序和邏輯順序不一定一致,存儲空間也不一定連續(xù)。插入和刪除元素的時候,不需要移動表中的元素。
試題2答案
C
3.Alink結(jié)構(gòu)體中的next是鏈表中下一個節(jié)點的地址。由于p當(dāng)前指向節(jié)點A,因此p->next是B的地址。p->next->next是C的地址,訪問C的節(jié)點數(shù)據(jù)成員dt可以使用C的地址訪問,即p->next->next->dt,選項B正確?;蛘呤褂媒庖谩?”運算符:(*p)表示節(jié)點A,(*p).next表示B的地址,*((*p).next)表示節(jié)點B,(*((*p).next)).next表示C的地址,*((*((*p).next)).next)表示節(jié)點C,所以C的數(shù)據(jù)成員dt可以表示為(*((*(*p).next).next)).dt,因為“.”運算符優(yōu)先級高于“*”運算符,所以也可以寫為(*(*(*p).next).next).dt,選項C正確。同理,也可以既使用指針運算符,又使用解引用運算符來訪問C的節(jié)點數(shù)據(jù)成員dt,即(*(p->next->next)).dt,選項D正確。選項A中,*p表示A節(jié)點,(*p).next表示節(jié)點B的地址,由于“->”運算符的優(yōu)先級高于“*”運算符,因此先執(zhí)行“->”,即表達(dá)式(*p).next->next->dt引用了C節(jié)點的數(shù)據(jù)成員dt,然后再執(zhí)行解引用運算“*”,這是錯誤的。故本題答案為A選項。
4.D
5.C
6.C解析:在C語言中,求余運算符“%”兩邊的運算對象都應(yīng)為整型數(shù)據(jù),所以需要對變量f進(jìn)行強制類型轉(zhuǎn)換,正確的寫法為k%(int)f。在C語言中,邏輯運算符與賦值運算符、算術(shù)運算符、關(guān)系運算符之間從高到低的運算優(yōu)先次序是:!(邏輯“非”)、算術(shù)運算符、關(guān)系運算符、&&(邏輯“與”)、‖(邏輯“或”)、賦值運算符。根據(jù)運算符的優(yōu)先級與結(jié)合性,對于選項A),先計算k>=k的值(為真,即1),再用1對k進(jìn)行賦值。對于選取項B),先計算k什的值,再對其取負(fù)數(shù)。對于選項D),先計算k>=f的值(為假,即0),再用0與m進(jìn)行比較,故最終結(jié)果為0。
7.B
\n本題考查結(jié)構(gòu)體指針變量的賦值方法,要把結(jié)點b連接到結(jié)點;l的后面,必須把b的地址給a的next指針。故8正確。
\n
8.C
9.B
10.B
11.B宏定義在編譯程序時做了一個簡單的替換,所以B選項正確。故本題答案為B選項。
12.A將函數(shù)內(nèi)的局部變量說明為static存儲類,第1次調(diào)用該函數(shù)時才對其初始化,后續(xù)調(diào)用時使用上一次調(diào)用結(jié)束后的值;函數(shù)體內(nèi)的局部變量無論是否聲明為stat\x1fic,外部編譯單位都不能引用,選項A錯誤,其他選項正確。本題答案為A選項。
13.B本題考查函數(shù)調(diào)用時的參數(shù)傳遞。在函數(shù)調(diào)用時,形參是指向?qū)崊⒌闹羔樧兞浚瑒tprintf的執(zhí)行結(jié)果為++x;x=3,則3+1=4。
14.C解析:帶參數(shù)宏的格式為:#define標(biāo)識符(形參表)形參表達(dá)式。其功能是:在預(yù)處理程序中將程序中出現(xiàn)的所有帶實參的宏名,展開成由實參組成的表達(dá)式。
15.A執(zhí)行x=x-=x-x語句可寫成x=x-(x-x),可看出結(jié)果為10,故八選項正確。
16.B
17.AA選項中E后面的指數(shù)必須為整數(shù),所以不合法。C選項中的011表示的是八進(jìn)制常量,D選項中的0xabcd表示的是十六進(jìn)制常量。故本題答案為A選項。
18.B解析:p本身就是一個字符型指針變量,返回p也就是返回變量p中存放的地址值。
19.B
20.B
21.查詢查詢
22.非線性結(jié)構(gòu)非線性結(jié)構(gòu)
23.00解析:在函數(shù)fun()中,while((*n)-)是先引用*n的值,再做(*n)--運算,所以循環(huán)結(jié)束時*n的值為0,再做(*n)--運算后,*n的值為-1;執(zhí)行++(*n)后,*n的值是0。
24.
25.100100解析:本題考查帶參數(shù)的宏定義及相關(guān)運算。運算過程為:k=B*20=(A+3)*20=(2+3)*20=100。
26.44解析:將程序中所有的宏替換掉可得:M=2+1,K=2+1*2+1/2=4,所以for循環(huán)共循環(huán)了K-1+1次,即4-1+1共4次。
27.fopenfopen解析:C語言中的文件分為:ASCII文件與二進(jìn)制文件。文件在使用前打開,使用后要關(guān)閉。打開文件的函數(shù)為:fopen(),調(diào)用形式為:fp=fopen('文件名','使用文件方式');關(guān)閉文件的函數(shù)為:fclose(),調(diào)用形式為:fclose(fp),其中fp為文件指針。
28.220.0或220或220.或220.000000220.0或220或220.或220.000000解析:所有的賦值運算符的優(yōu)先級都相同,它們的結(jié)合性為從右至左,它們返回的表達(dá)式值為賦給變量的值.所以,語句x=f*=n/=(c=50):→x=f*=n/=50;→x=f*=2;(n的值變成2)→x=20;。故最終輸出的結(jié)果應(yīng)該是:220.000000
29.abcfgabcfg解析:本題考查的是字符數(shù)組用作函數(shù)參數(shù)。C語言中數(shù)組名可以看作該數(shù)組首地址的常量指針、因此可以直接傳遞給指針類型的參數(shù)。本題的主函數(shù)調(diào)用fun(s,3,strlen(s));后,函數(shù)中for循環(huán)就是for(i=3;i<strlen(s)-1;i++),即i從3遞增到字符數(shù)組s的長度-2位置,循環(huán)中讓s[i]=s[i+2],所以函數(shù)fun()實現(xiàn)的功能簡單來說就是將字符串s下標(biāo)為p+2~k范圍的字符整體復(fù)制到字符串s下標(biāo)為p~k-2的位置上。在本題中strlen(s)返回s的長度7,所以復(fù)制的字符為s[5]~s[7],即'f'、'g','\\0'三個字符,復(fù)制到s[3]~s[5],故最終輸出的字符串為abcfg(因為s[5]為'\\0',所以后面的字符不會輸出)。
30.44解析:在主函數(shù)中調(diào)用函數(shù)f,函數(shù)f有三個參數(shù),形參f1與f2分別是兩個指向函數(shù)的指針。在f中執(zhí)行f2(x)-f1(x),實際上是執(zhí)行了fb()2)-fa(2),故執(zhí)行i=(fa,fb,2)卮i的值為23-22=4。
31.3232解析:while(表達(dá)式)的功能是:首先計算表達(dá)式的值,若為真,則執(zhí)行循環(huán)體語句,執(zhí)行完畢,再計算表達(dá)式的值,若仍為真,則重復(fù)執(zhí)行循環(huán)體語句,直到表達(dá)式的值為假時,結(jié)束while語句的執(zhí)行,繼續(xù)執(zhí)行while語句后面的語句:i=0時滿足循環(huán)條件,也滿足if的條件,執(zhí)行語句得i=11,a=11,第2次循環(huán)不滿足if的條件,執(zhí)行i--,i=10,執(zhí)行i+=11;a+=i后,得i=21,a=32,不滿足i<20,循環(huán)結(jié)束。
32.軟件開發(fā)
33.數(shù)據(jù)模型數(shù)據(jù)模型
34.數(shù)據(jù)庫系統(tǒng)或數(shù)據(jù)庫系統(tǒng)階段或數(shù)據(jù)庫或數(shù)據(jù)庫階段或數(shù)據(jù)庫管理技術(shù)階段數(shù)據(jù)庫系統(tǒng)或數(shù)據(jù)庫系統(tǒng)階段或數(shù)據(jù)庫或數(shù)據(jù)庫階段或數(shù)據(jù)庫管理技術(shù)階段解析:在數(shù)據(jù)庫系統(tǒng)管理階段,數(shù)據(jù)是結(jié)構(gòu)化的,是面向系統(tǒng)的,數(shù)據(jù)的冗余度小,從而節(jié)省了數(shù)據(jù)的存儲空間,也減少了對數(shù)據(jù)的存取時間,提高了訪問效率,避免了數(shù)據(jù)的不一致性,同時提高了數(shù)據(jù)的可擴充性和數(shù)據(jù)應(yīng)用的靈活性;數(shù)據(jù)具有獨立性,通過系統(tǒng)提供的映象功能,使數(shù)據(jù)具有兩方面的獨立性:一是物理獨立性,二是邏輯獨立性;保證了數(shù)據(jù)的完整性、安全性和并發(fā)性-綜上所述,數(shù)據(jù)獨立性最高的階段是數(shù)據(jù)庫系統(tǒng)管理階段。
35.242036
36.136136解析:本題考查函數(shù)的遞歸調(diào)用。函數(shù)fun是遞歸函數(shù),語句fun(6)的調(diào)用過程如下:
第1次:調(diào)用fun(6),6/2=3>0成立,調(diào)用fun(3);
第2次:調(diào)用fun(3),3/2=1>0成立,調(diào)用fun(1);
第3次:調(diào)用fun(1),1/2=0>0不成立,執(zhí)行語句printf('%d',x);,輸出1。
推出fun(3)輸出3,fun(6)輸出為6。
37.HowdoessheHowdoesshe解析:strcpy(str1,s1);字符串拷貝函數(shù),作用是將字符串s1拷貝到字符數(shù)組strl中去。strlen(str):測試字符串str的長度,函數(shù)的值為字符串中實際長度,不包括\'\\0\'在內(nèi)。本題中strlen(str1)的值為13,則strcpy(strl+strlen(strl)/2,'esshe');相當(dāng)于strcpy(strl+6,'esshe');,因此可得答案為Howdoesshe
38.00解析:解答本題需要注意表達(dá)式“k=0”,它是賦值表達(dá)式而不是關(guān)系表達(dá)式,不論k為何值,表達(dá)式k=0總會使k為0,所以不能進(jìn)入循環(huán)。
39.file.txt"w"fclose(fp)。file.txt,'w'fclose(fp)。解析:向文件中寫數(shù)據(jù),并且該文件是新文件,應(yīng)當(dāng)使用文件打開方式'w',文件操作結(jié)束時要用函數(shù)fclose關(guān)閉文件,以防數(shù)據(jù)丟失。
40.55解析:此程序中,for循環(huán)語句后面直接跟了一個“;”,表明循環(huán)體為空.輸出語句不在for循環(huán)體內(nèi),所以在循環(huán)執(zhí)行完畢后才輸出s的值.s、i的初值分別為0和1,判斷循環(huán)條件,表達(dá)式“1<3”成立,執(zhí)行“i++,s+=i”后,i和s的值分別為2和1,繼續(xù)判斷循環(huán)條件,表達(dá)式“2<3”成立,執(zhí)行“i++,s+=i”后,i和s的值分別為3,再次判斷循環(huán)條件,表達(dá)式“3<3”不成立,循環(huán)結(jié)束。
41.A解析:程序中,k的初值為0。執(zhí)行while后面小括號中的賦值表達(dá)式k=1,則k的值為1,即整個表達(dá)式的值為真。所以執(zhí)行循環(huán)體,執(zhí)行語句“k++;”。因為k進(jìn)行自加,不再減小,沒有值為0的可能,即while后面小括號中的賦值表達(dá)式的值一直為真,不能退出循環(huán),因此while循環(huán)將無限次地執(zhí)行下去,所以,選項A正確。
42.C解析:#define宏名的有效范圍為定義命令之后到本源文件結(jié)束,可以在程序中使用#undef命令終止宏定義的作用域。本題由于#undef的作用,使a的作用范圍在#definea100到#undefa之間,故答案為C。
43.C解析:本題綜合考查一維數(shù)組和多維數(shù)組指針變量的表示方法。在C語言中,引用數(shù)組元素的方法有兩種,即:下標(biāo)法和指針法。下標(biāo)法如a[i]形式;指針法如*(a+i)或*(p+1)。其中a是數(shù)組名,p是指向數(shù)組的指針變量,其初值p=a。再如*(*(p+2)+2)是a[2][2]的值,注意語句中指針型數(shù)組的書寫格式,不能寫成“(*數(shù)組名)[長度]”,因為這是定義指向含有“長度”個元素的一維數(shù)組的指針變量。例如有定義語句“inta,b,c,c,*P[3]={&a,&b,&c};”,它定義了一個名為p的指針型數(shù)組,其3個元素p[0],p[1],p[2]分別指向B個整型變量a,b,c。注意:數(shù)組元素的引用方法。
44.D結(jié)構(gòu)化程序設(shè)計由迪杰斯特拉(E.W.dijkstra)在1969年提出,他主張“清晰第一,效率第二”,以模塊化設(shè)計為中心,將待開發(fā)的軟件系統(tǒng)劃分為若干個相互獨立的模塊,這樣使完成每一個模塊的工作變得單純而明確,為設(shè)計一些較大的軟件打下了良好的基礎(chǔ)。
由于模塊相互獨立,因此,在設(shè)計其中一個模塊時,不會受到其他模塊的牽連,因而可將原來較為復(fù)雜的問題化簡為一系列簡單模塊的設(shè)計。模塊的獨立性還為擴充已有的系統(tǒng)、建立新系統(tǒng)帶來了不少的方便,因為可以充分利用現(xiàn)有的模塊作為積木式的擴展。
結(jié)構(gòu)化程序設(shè)計的基本思想是采用“自頂向下,逐步求精”的程序設(shè)計方法和“單入口單出口”的控制結(jié)構(gòu)。自頂向下、逐步求精的程序設(shè)計方法從問題本身開始,經(jīng)過逐步細(xì)化,將解決問題的步驟分解為由基本程序結(jié)構(gòu)模塊組成的結(jié)構(gòu)化程序框圖;“單入口單出口”的思想認(rèn)為一個復(fù)雜的程序,如果它僅是由順序、選擇和循環(huán)三種基本程序結(jié)構(gòu)通過組合、嵌套構(gòu)成,那么這個新構(gòu)造的程序一定是一個單入口單出口的程序。據(jù)此就很容易編寫出結(jié)構(gòu)良好、易于調(diào)試的程序。
45.C利用強制類型轉(zhuǎn)換(structsk*)把整數(shù)型地址&data.m轉(zhuǎn)換成結(jié)構(gòu)體變量指針賦給結(jié)構(gòu)體指針變量q。
46.D解析:本題考查數(shù)組指針的應(yīng)用。選項D)第一層括號中為數(shù)組a中第i項元素的值,外面再加指針運算符沒有意義。
47.C解析:在C語言中,對于返回值是其他類型的函數(shù),若把函數(shù)定義放在調(diào)用之后,應(yīng)該在調(diào)用之前對函數(shù)進(jìn)行說明,或稱為函數(shù)原型說明。函數(shù)說明句中的類型必須與函數(shù)返回類型一致,函數(shù)說明可以是一條獨立的語句,也可以與普通變量一起出現(xiàn)在同一個語句中。對于函數(shù)值為整型的函數(shù)的說明,prt_char中定義時是void類型,那天返回值與k=prt_char();矛盾。所以本題的錯誤之處在于“函數(shù)說明和函數(shù)調(diào)用語句之間有矛盾?!?/p>
48.D解析:選項A中,數(shù)組的長度使用了變量N,而在C中是不能用變量來定義數(shù)組的的長度的。在C語言中,給二維數(shù)組賦初值時,行數(shù)不能超過定義的行數(shù),每行的初值個數(shù)不能超過定義時的列數(shù)。選項C數(shù)組的第二維下標(biāo)缺省,而在C語言中,數(shù)組的第二維下標(biāo)不能缺省。
49.D解析:非常明顯,選項A)與選項C)含義相同,表示k除以2的余數(shù)非零,但要注意的是,任何整數(shù)除以2的余數(shù)只有兩個結(jié)果,0和1。選項A)與選項C)的含義表示k除以2的余數(shù)為1,也與選項B)的含義相同,所以答案為選項D)。
50.B解析:數(shù)據(jù)的存儲結(jié)構(gòu),又稱為數(shù)據(jù)的物理結(jié)構(gòu),是數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機中的存放形式,數(shù)據(jù)的存儲結(jié)構(gòu)有順序結(jié)構(gòu)、鏈?zhǔn)浇Y(jié)構(gòu)、散列結(jié)構(gòu)和索引結(jié)構(gòu)等。
51.A解析:由于s[2][6]表示字符串已超出了數(shù)組s的表示范圍,在C中不會劉數(shù)組越界進(jìn)行檢查,當(dāng)數(shù)組越界時,會得到一個不確定的值。
52.B解析:本題考查ifelse語句。程序中首先使用函數(shù)scanf()通過鍵盤讀入a的值,并通過第1個if語句,先判斷條件,取a的值2和3比較,然后將a的值加1,發(fā)現(xiàn)條件成立,執(zhí)行下列的printf語句,輸出a的值3。
53.D
54.B解析:若有以下定義:inta[3][4],i,j;且當(dāng)0<=i<3,0<=j<4,則可以有以下幾種方式來引用數(shù)組中的第i行,第j列的元素:
a[a][j],*(a[i]+j),*(*(a+i)+j),(*(a+i)[j],*(&a[0][0]+4*i+j)”。
55.D解析:構(gòu)造類型數(shù)據(jù)是由基本類型數(shù)據(jù)按一定規(guī)則組成的。C語言中的構(gòu)造類型數(shù)據(jù)只有3種,它們是數(shù)組類型、結(jié)構(gòu)體類型和共用體類型。故應(yīng)該選擇D。
56.A解析:標(biāo)識符是以字母、數(shù)字和下劃線組成的字符串,且只能是字符或下劃線開頭,且C語言的關(guān)鍵字不能用作用戶自定義的標(biāo)識符。注意:熟記C語言中常用的關(guān)鍵字。
57.D
58.D解析:數(shù)據(jù)流圖有4種成分:源點或終點、處理、數(shù)據(jù)存儲和哦數(shù)據(jù)流。數(shù)據(jù)存儲是處于靜止?fàn)顟B(tài)的數(shù)據(jù),數(shù)據(jù)流是處于運動中的數(shù)據(jù)。
59.C解析:本題考查的是字符數(shù)組的初始化。字符數(shù)組即可以用{初始化列裹}來初始化,也可以用一個字符串常量來初始化。但字符串常量系統(tǒng)會自動為其添加結(jié)束標(biāo)記'\\0',故比實際長度要多一位,所以本題輸出為34,應(yīng)該選擇C。
60.D解析:本題考查兩個知識點:①C語言用'\\n'這個字符常量表示換行;②函數(shù)getchar()的作用是從終端輸入一個字符,當(dāng)遇到換行時結(jié)束輸入。
61.A將p1指向的字符賦給p2,然后再移向下一個字符,直到結(jié)束字符0為止,因此這是將p1所指的字符串復(fù)制到p2所指的內(nèi)存空間。
62.D
\n要想使程序輸出25,則j-40=25,j=65,而j初值是50,所以填入for循環(huán)的語句,使引用的數(shù)組元素累加65-50=15即可,D選項中,i下標(biāo)從0開始,i=2指向第3個數(shù)50+a[2]=50+10=60,繼續(xù)循環(huán)60+a[3]=60+5=65,此時i=4跳出,循環(huán)結(jié)束。
\n
63.AC語言中實數(shù)的指數(shù)計數(shù)表示格式為字母e或者E之前必須有數(shù)字,且e或E后面的指數(shù)必須為整數(shù)。所以選項A正確。
64.A
65.D當(dāng)今占主導(dǎo)地位的程序設(shè)計觀點是“清晰第一,效率第二”。在結(jié)構(gòu)化程序設(shè)計思想提出之前,程序設(shè)計曾強調(diào)程序的效率,但如今實際應(yīng)用中,人們更重視程序的可理解性。
66.A
67.B考查格式輸入函數(shù)scanf的使用。scanf函數(shù)的一般格式是:scanf(格式控制,地址表列)該格式中,地址表列中應(yīng)是變量地址,而不是變量名。
68.A
69.B
70.C在for循環(huán)中,當(dāng)y的值為9、6或3時,執(zhí)行輸出語句,輸出表達(dá)式--Y的值。Y先自減l,然后再輸出y的值。
71.A\n本題考查簡單的賦值運算,在程序中c=(a-=am5),先算括號中的a-=a-5=5,所以c=5,再計算(a=b,b+=4);,a=b=0,b+=4=0+4=4,所以b=4,所以a=0,b=4,c=5,答案選擇A。
\n
72.AA選項stnletonl{intx;inty;int2;struetoraa;錯誤,不能在定義結(jié)構(gòu)體的同時,又用結(jié)構(gòu)體類型名定義變量。應(yīng)該寫成B選項或者D選項的格式。
73.A*P的意思是取其指向地址的內(nèi)容,P是指向x地址的指針,因此輸出*p也就是輸出x的內(nèi)容,即0,故選擇B選項。
74.A
75.D
76.A選項A中,2*x對x的值沒有影響,x仍為2,“x+=2”執(zhí)行后,表達(dá)式值為4。故本題答案為A。
77.A
78.A
79.C
80.A
81.(1)錯誤:j=1;
正確:i=0;
(2)錯誤:while(temp!=0&&m!=0&&n!=0)
正確:while(temp!=0||m!=0I{n!=0)
【解析】其中while循環(huán)是判斷能否除盡x、y、z,循環(huán)中“i=i+1;”進(jìn)行了加1操作,i應(yīng)該從1開始進(jìn)行循環(huán),所以i的初始值應(yīng)該是0,這樣第一個錯誤標(biāo)識下的“i=1;”就改為“i=0;”。
第二個標(biāo)識下while循環(huán)邏輯關(guān)系應(yīng)該是或的關(guān)系,因為最小公倍數(shù)成立的條件是同時除盡,所以只要不是同時除盡,循環(huán)就繼續(xù),這樣“while(temp!=0&&m!=0&&n!=0)”應(yīng)該是“while(temp!=0||m!=0||n!=0)”。
82.1doublefun(intn)doublesum=0.0;inti;for(i=21;i<=n;i++)if((i%3==0)&&(i%7==0))sum+=i;returnsqrt(sum);本題考查算術(shù)運算的算法。首先利用一個for循環(huán)判斷小于n且能同時被3和7整除的整數(shù),并將滿足條件的整數(shù)累加到sum。之后調(diào)用Sqrt()函數(shù)計算sum的平方根,并將其作為函數(shù)的返回值返回。2021年陜西省寶雞市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.下列關(guān)于C語言文件的敘述中正確的是()。
A.文件由一系列數(shù)據(jù)依次排列組成,只能構(gòu)成二進(jìn)制文件
B.文件由結(jié)構(gòu)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件
C.文件由數(shù)據(jù)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件
D.文件由字符序列組成,其類型只能是文本文件
2.下列關(guān)于線性鏈表的敘述中,正確的是()A.各數(shù)據(jù)結(jié)點的存儲空間可以不連續(xù),但它們的存儲順序與邏輯順序必須一致
B.各數(shù)據(jù)結(jié)點的存儲順序與邏輯順序可以不一致,但它們的存儲空間必須連續(xù)
C.進(jìn)行出入與刪除時,不需要移動表中的元素
D.以上三種說法都不催
3.帶有頭節(jié)點的單向鏈表head,其3個數(shù)據(jù)節(jié)點A、B、C的連接關(guān)系如下圖所示:節(jié)點類型的定義為structlink{doubledt;structlink*next;};若指針P指向A節(jié)點,在不改變P指向的前提下,以下選項中不能訪問C節(jié)點數(shù)據(jù)成員dt的表達(dá)式是()。A.*(*p).next->next->dt
B.p->next->next->dt
C.(*(*(*p).next).next).dt
D.(*(p->next->next)).dt
4.
5.
6.設(shè)有定義:intk=1,m=2;noatf=7;則下列選項中錯誤的表達(dá)式是()。
A.k=k>=kB.-k++C.k%int(f)D.k>=f>=m
7.
有以下結(jié)構(gòu)體說明和變量的定義,且指針P指向變量a,指針q指向變量b,則不能把結(jié)點b連接到結(jié)點a之后的語句是()。
structnode
{chardata;
structnode*next:
}a,b,*p=&a,*q=&b;
A.a.next=q;B.P.next=&b;C.p->next=&b;D.(*p).next=q;
8.插入和刪除只能在一端進(jìn)行線性表,稱為()。
A.隊列B.循環(huán)隊列C.棧D.循環(huán)棧
9.串是一種特殊的線性表,其特殊性體現(xiàn)在()。
A.可以順序存儲B.數(shù)據(jù)元素是一個字符C.可以鏈接存儲D.數(shù)據(jù)元素可以是多個字符
10.
11.若程序中有宏定義行“#defineN100”,則下列敘述中正確的是()。
A.宏定義行中定義了標(biāo)識符N的值為整數(shù)100
B.在編譯程序?qū)語言源程序進(jìn)行預(yù)處理時用100替換標(biāo)識符N
C.上述宏定義行實現(xiàn)將100賦給標(biāo)識符N
D.在運行時用100替換標(biāo)識符N
12.以下敘述中錯誤的是()。
A.將函數(shù)內(nèi)的局部變量說明為static存儲類是為了限制其他編譯單位的引用
B.—個變量作用域的開始位置完全取決于變量定義語句的位置
C.全局變量可以在函數(shù)以外的任何部位進(jìn)行定義
D.局部變量的“生存期”只限于本次函數(shù)調(diào)用,因此不能將局部變量的運算結(jié)果保存至下一次調(diào)用
13.下列程序的輸出結(jié)果是()。#include<stdio.h>voidp(int*x){printf("%d¨,++*x);}voidmain(){inty=3;p(&y);}A.3B.4C.2D.5
14.#define能作簡單的替代,用宏來替代計算多項式5*x*x+5*x+5的值的函數(shù)f,正確的宏定義語句為()。
A.#definef(x)5*x*x+5*x+5
B.#definef5*X*x+5*x+5
C.#definef(a)(5*a*a+5*a+5)
D.#define(5*x*x+5*x+5)f(x)
15.設(shè)x為int型變量,則執(zhí)行以下語句后,x的值為()。x=10;x=x-=x-x;
A.10B.20C.40D.30
16.
17.以下不合法的數(shù)值常量是()。
A.8.0E0.5B.1e1C.011D.0xabcd
18.有以下函數(shù)char*fun(char*p){returnp;}該函數(shù)的返回值是______。
A.無確切的值B.形參p中存放的地址值C.一個臨時存儲單元的地址D.形參p自身的地址值
19.
20.在具有n個結(jié)點的有序單鏈表中插入一個新結(jié)點并使鏈表仍然有序的時間復(fù)雜度是________
A.O(1)B.O(n)C.O(nlogn)D.O(n2)
二、2.填空題(20題)21.關(guān)系模型的數(shù)據(jù)操縱即是建立在關(guān)系上的數(shù)據(jù)操縱,一般有______、增加、刪除和修改四種操作。
22.數(shù)據(jù)的邏輯結(jié)構(gòu)有線性結(jié)構(gòu)和______兩大類。
23.下列程序的輸出結(jié)果是【】。
voidfun(int*n)
{
while((*n)--);
printf("%d",++(*n));
}
main()
{inta=100;
fun(&a);
}
24.下面的程序?qū)崿F(xiàn)的是從指針p所指向的地址的n個數(shù)中,找出最大的和最小的數(shù)據(jù),請?zhí)羁铡?/p>
fun(int*p,intn)
{int*q;
intmax,min;
max=min=*p;
for(q=p;______;q++)
if(*q>max)max=*q;
elseif(*q<min)min=*q;}
25.設(shè)有下列宏定義:
#defineA2
#defineB(A+3)
則執(zhí)行賦值語句"k=B*20;"(k為int型變量)后,k的值是______。
26.以下程序中,for循環(huán)體執(zhí)行的次數(shù)是______。
#defineN2
#defineMN+1
#defineKM+1*M/2
main()
{
inti;
for(i-1;i<K;i++)
{...}
...
}
27.以下程序段打開文件后,先利用fseek函數(shù)將文件位置指針定位在文件末尾,然后調(diào)用ftell函數(shù)返回當(dāng)前文件位置指針的具體位置,從而確定文件長度,請?zhí)羁铡?/p>
FILE*myf;longfl;
myf=【】("test.t","rb");
fseek(myf,(),SEEK_END)fl+ftell(myf);
fclose(myf);
printf("%ld\n",fl);
28.以下程序運行后的輸出結(jié)果是______。
main()
charc;intn=100;
floatf=10;doublex;
x=f*=n/=(c=50);
printf("%d%f\n",n,x);
29.以下程序運行后的輸出結(jié)果是______。
#include<string.h>
voidfun(char*s,intp,intk)
{inti;
for(i=p;i<k-1;i++)s[i]=s[i+2];
}
main()
{chars[]="abcdefg";
fun(s,3,strlen(s));puts(s);
}
30.有以下程序
intfa(intx){returnx*x;}
intfb(intx){returnx*x*x;}
intf(ing(*f1)(),int(*f2)(),intx)
{returnf2(x)-f1(x);}
main()
{inti;i=f(fa,fb,2),printf("%d\n",i);}
程序運行后,輸出結(jié)果是【】。
31.下列程序的輸出結(jié)果是______。
main()
{inti=0,a=0;
while(i<20)
{for(;;)
{if((i%10)==0)break;
elsei--;}
i+=11;
a+=i;
}
printf("%d\n",A);
}
32.軟件工程研究的內(nèi)容主要包括:【】技術(shù)和軟件工程管理。
33.【】是數(shù)據(jù)庫設(shè)計的核心。
34.數(shù)據(jù)管理技術(shù)發(fā)展過程經(jīng)過人工管理、文件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)三個階段,其中數(shù)據(jù)獨立性最高的階段是______。
35.程序的運行結(jié)果為【】。
main()
{intx,y,z;
x=24;
y=024;
z=0x24;
printf("%d,%d,%d\n",x,y,z);
}
36.以下程序運行后的輸出結(jié)果是【】。
fun(ihtx)
{if(x/2>0)fun(x/2);
printf("%d",x);
}
main()
{fun(6);}
37.以下程序的輸出是【】。
main()
{
charstr1[]="Howdoyoudo",*p1=str1;
strcpy(str1+strlen(str1)/2,"esshe");
printf("%s\n",p1);
}
38.下列循環(huán)的循環(huán)次數(shù)是______。
intk=2;
while(k=0)
printf["%d",k);
k--;
printf("\n");
39.下面程序把從終端讀入的文本(用#作為文本結(jié)束標(biāo)志)復(fù)制到一個名為file.txt的新文件中。補足所缺語句。
main()
{charch;
FILE*fp;
if((fp=fopen(______))=NULL)exit(0);
while((ch=getchar())!='#')
fputc(ch,fp);
______;
}
40.以下程序的輸出結(jié)果是______。
main()
{ints,i;
for(s=0,i=1;i<3;i++,s+=i);
printf("%d\n".s);
}
三、1.選擇題(20題)41.有以下程序段:intk=Owhile(k=1)k++;while循環(huán)執(zhí)行的次數(shù)是()。
A.無限次B.有語法錯,不能執(zhí)行C.一次也不執(zhí)行D.執(zhí)行1次
42.以下程序的輸出結(jié)果是______。#include<stdio.h>main(){inta=200;#definea100printf("%d",a);#undefaprintf("%d",a);}
A.200100B.100100C.100200D.200200
43.若有下面的程序片段:int[12]={0},*p[3],**pp,i;for(i=0;i<3;i)p[i]=&a[i*4];pp=p則對數(shù)組元素的錯誤引用是
A.pp[0][1]B.a[10]C.p[3][1]D.*(*(p+2)+2)
44.結(jié)構(gòu)化程序設(shè)計主要強調(diào)的是
A.程序的規(guī)模B.程序的效率C.程序設(shè)計語言的先進(jìn)性D.程序易讀性
45.設(shè)有如下定義:structsk{intm;floatx;}data,*q;若要使q指向data中的m域,正確的賦值語句是()。
A.q=&data.m;
B.*q=data.m;
C.q=(structsk*)&data.m;
D.q=(structsk*)data.m;
46.有以下語句,則對a數(shù)組元素的引用不正確的是(0≤i≤9)inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;
A.a[p-B.C.*(&a[i])D.p[i]*(*(a+i))
47.以下程序有語法錯誤,有關(guān)錯誤原因的正確說法是main(){intG=5,k;voidprt_char();…k=prt_char(G);…}
A.語句voidprt_char();有錯,它是函數(shù)調(diào)用語句,不能用void說明
B.變量名不能使用大寫字母
C.函數(shù)說明和函數(shù)調(diào)用語句之間有矛盾
D.函數(shù)名不能使用下劃線
48.以下能正確定義數(shù)組并正確賦初值的語句是
A.intN=5,b[N][N];
B.inta[1][2]={{1},{3}};
C.intc[2][1]={{1,2},3,4}};
D.intd[3][2]={{1,2},{34}};
49.當(dāng)把以下4個表達(dá)式用作if語句的控制表達(dá)式時,有一個選項與其他3個選項含義不同,這個選項是
A.k%2B.k%2==1C.(k%2)!=0D.!k%2==1
50.數(shù)據(jù)的存儲結(jié)構(gòu)是指()。
A.數(shù)據(jù)所占的存儲空間
B.數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機中的存放形式
C.數(shù)據(jù)在計算機中的順序存儲方式
D.存儲在計算機外存中的數(shù)據(jù)
51.有如下程序main(){chars[][5]={"abc","de","fgh"};printf("%c",s[2][6]);}其輸出為______。
A.不確定B.編譯錯誤C.gD.輸出null字符
52.若執(zhí)行下列程序時從鍵盤上輸入2,則輸出結(jié)果是()。#include<stdio.h>main(){inta;scanf("%d",&a);if(a++<3)printf("%d\n",a);elseprintf("%d\n",a--);}
A.1B.3C.2D.4
53.下面程序的輸出結(jié)果是()#include"stdio.h"fun(x)intx;{inty=0;staticintz=5;z=x++,y++;return(z);}main()inta=4,i,j;for(i=0;i<2;i++)j=fun(a++);printf("%d",j);}
A.0B.3C.4D.5
54.下列程序的輸出結(jié)果是#include"stdio.h"#defineN3#defineM3voidfun(inta[M][N]){printf("%d\n",*(a[1]+2));}main(){inta[M][N];inti,j;for(i=0;i<M;i++)for(j=0;j<N;j++)a[i][j]=i+j-(i-j);fun(a);}
A.3B.4C.5D.6
55.下列選項中屬于C語言構(gòu)造類型的是()
A.指針類型B.空類型C.枚舉類型D.數(shù)組類型
56.下列字符串是合法的標(biāo)識符的是()。
A._HJB.9_studentC.longD.LINE1
57.以下敘述中,正確的是______。
A.輸入項可以是一個實型常量,例如:scanf("%f",3.5);
B.只有格式控制,沒有輸入項,也能正確輸入數(shù)據(jù)到內(nèi)存,例如:scanf("a=%d,b=%d");
C.當(dāng)輸入一個實型數(shù)據(jù)時,格式控制部分可以規(guī)定小數(shù)點后的位數(shù),例如:scanf("%4.2f",&d);
D.當(dāng)輸入數(shù)據(jù)時,必須指明變量地址,例如:scanf("%f",&f);
58.數(shù)據(jù)存儲和數(shù)據(jù)流都是______,僅僅是所處的狀態(tài)不同。
A.分析結(jié)果B.事件C.動作D.數(shù)據(jù)
59.有以下程序main(){charp[]={'a','b','c},q[]="abc";printf("%d%d\n",sizeof(p),sizeof(q));}程序運行后輸出結(jié)果是
A.44B.33C.34D.43
60.若變量已正確定義,下列正確的程序段是()。
A.while(ch=getchar()=='\N')putchar(ch);
B.while((ch=getchar())=='\n')putchar(ch);
C.while((ch=getchar())!='\N')putchar(ch);
D.while((ch=getchar())!='\n')putchar(ch);
四、選擇題(20題)61.已定義以下函數(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兩個指針?biāo)缸址M(jìn)行比較
D.檢查p1和p2兩個指針?biāo)缸址惺欠裼小痋0’
62.
若希望下列的程序運行后輸出25,程序空白處的正確選項是()。
main
{intid=50,a[]=(7,4,10,5,8};
for()
j+=a[i];
printf("%d",j-40);
}
A.i=1;i<4;++i
B.i=l;i<3;++i
C.i=4;i>2;i--
D.i=2;i<4;++i
63.以下選項中可用做C程序合法實數(shù)的是()。
A..leOB.3.0e0.2C.E9D.9.12E
64.
65.下列選項中不符合良好程序設(shè)計風(fēng)格的是()。
A.數(shù)據(jù)說明的次序要規(guī)范化
B.程序中要有必要的注釋
C.對所有輸入的數(shù)據(jù)都要進(jìn)行檢查,確保數(shù)據(jù)的合法性
D.程序的效率第一,清晰第二
66.
67.x,y,z被定義為int型變量,若從鍵盤給x,y,z輸入數(shù)據(jù),正確的輸入語句是()。
A.INPUTx,y、z;
B.scanf(”%d%d%d”,&x,&y,&z.);
C.sCanf(”%d%d%d”,x,y,z.);
D.read(”%d%d%d”,&x,&y,&z.);
68.
69.(60)視圖設(shè)計一般有3種設(shè)計次序,下列不屬于視圖設(shè)計的是()
A.自頂向下
B.由外向內(nèi)
C.由內(nèi)向外
D.自底向上
70.有以下程序#includemain{inty=9;for(;y>0;y--)if(y%3==0)printf("%d",--y);}程序的運行結(jié)果是()。A.741B.963C.852D.875421
71.有以下程序:
#include<stdio.h>
main()
{inta=0,b=0,c=0;
c=(a=a=5);(a=b,b+=4);
printf("%d,%d,%d\n",a,bc);
}
程序運行后的輸出結(jié)果是()。
A.0,4,5B.4,4,5C.4,4,4D.0,0,0
72.下面結(jié)構(gòu)體的定義語句中,錯誤的是()。
A.structord{intx;intY;intz;}structorda;
B.structord{intx;imY;imz;};structorda;
C.structord{intx;intY;intZ;}a;
D.struct{intx;intY;intz;}a;
73.若有定義:“int*P,x=0,*p,p=&x;”,則語句“printf("%d\n",*p);”的輸出結(jié)果是()。
A.隨機值B.0C.x的地址D.P的地址
74.從循環(huán)體內(nèi)某一層跳出,繼續(xù)執(zhí)行循環(huán)外的語句是:___________。
A.break語句B.return語句C.continue語句D.空語句。
75.
76.設(shè)有定義:intx-2;,以下表達(dá)式中,值不為6的是()。A.2*x,X+=2B.x++,2*xC.x*=(1+x)D.x*=x+1
77.
78.
79.
80.
五、程序改錯題(1題)81.下列給定程序中,fun()函數(shù)的功能是:求3個數(shù)的最小公倍數(shù),例如,給變量a、b、c、分別輸入15、11、2,則輸出結(jié)果應(yīng)當(dāng)是330。請修改函數(shù)中的錯誤,得出正確的結(jié)果。注意:不要改動main()函數(shù),不能增行或減行,也不能更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),它的功能是求小于形參n同時能被3與7整除的所有自然數(shù)之和的平方根,并將其作為函數(shù)值返回。例如,若n為1000時,程序輸出應(yīng)為s=153.909064。注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:
參考答案
1.C文件由數(shù)據(jù)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件。故本題答案為C選項。
2.C
試題2分析
結(jié)點的存儲順序和邏輯順序不一定一致,存儲空間也不一定連續(xù)。插入和刪除元素的時候,不需要移動表中的元素。
試題2答案
C
3.Alink結(jié)構(gòu)體中的next是鏈表中下一個節(jié)點的地址。由于p當(dāng)前指向節(jié)點A,因此p->next是B的地址。p->next->next是C的地址,訪問C的節(jié)點數(shù)據(jù)成員dt可以使用C的地址訪問,即p->next->next->dt,選項B正確?;蛘呤褂媒庖谩?”運算符:(*p)表示節(jié)點A,(*p).next表示B的地址,*((*p).next)表示節(jié)點B,(*((*p).next)).next表示C的地址,*((*((*p).next)).next)表示節(jié)點C,所以C的數(shù)據(jù)成員dt可以表示為(*((*(*p).next).next)).dt,因為“.”運算符優(yōu)先級高于“*”運算符,所以也可以寫為(*(*(*p).next).next).dt,選項C正確。同理,也可以既使用指針運算符,又使用解引用運算符來訪問C的節(jié)點數(shù)據(jù)成員dt,即(*(p->next->next)).dt,選項D正確。選項A中,*p表示A節(jié)點,(*p).next表示節(jié)點B的地址,由于“->”運算符的優(yōu)先級高于“*”運算符,因此先執(zhí)行“->”,即表達(dá)式(*p).next->next->dt引用了C節(jié)點的數(shù)據(jù)成員dt,然后再執(zhí)行解引用運算“*”,這是錯誤的。故本題答案為A選項。
4.D
5.C
6.C解析:在C語言中,求余運算符“%”兩邊的運算對象都應(yīng)為整型數(shù)據(jù),所以需要對變量f進(jìn)行強制類型轉(zhuǎn)換,正確的寫法為k%(int)f。在C語言中,邏輯運算符與賦值運算符、算術(shù)運算符、關(guān)系運算符之間從高到低的運算優(yōu)先次序是:!(邏輯“非”)、算術(shù)運算符、關(guān)系運算符、&&(邏輯“與”)、‖(邏輯“或”)、賦值運算符。根據(jù)運算符的優(yōu)先級與結(jié)合性,對于選項A),先計算k>=k的值(為真,即1),再用1對k進(jìn)行賦值。對于選取項B),先計算k什的值,再對其取負(fù)數(shù)。對于選項D),先計算k>=f的值(為假,即0),再用0與m進(jìn)行比較,故最終結(jié)果為0。
7.B
\n本題考查結(jié)構(gòu)體指針變量的賦值方法,要把結(jié)點b連接到結(jié)點;l的后面,必須把b的地址給a的next指針。故8正確。
\n
8.C
9.B
10.B
11.B宏定義在編譯程序時做了一個簡單的替換,所以B選項正確。故本題答案為B選項。
12.A將函數(shù)內(nèi)的局部變量說明為static存儲類,第1次調(diào)用該函數(shù)時才對其初始化,后續(xù)調(diào)用時使用上一次調(diào)用結(jié)束后的值;函數(shù)體內(nèi)的局部變量無論是否聲明為stat\x1fic,外部編譯單位都不能引用,選項A錯誤,其他選項正確。本題答案為A選項。
13.B本題考查函數(shù)調(diào)用時的參數(shù)傳遞。在函數(shù)調(diào)用時,形參是指向?qū)崊⒌闹羔樧兞浚瑒tprintf的執(zhí)行結(jié)果為++x;x=3,則3+1=4。
14.C解析:帶參數(shù)宏的格式為:#define標(biāo)識符(形參表)形參表達(dá)式。其功能是:在預(yù)處理程序中將程序中出現(xiàn)的所有帶實參的宏名,展開成由實參組成的表達(dá)式。
15.A執(zhí)行x=x-=x-x語句可寫成x=x-(x-x),可看出結(jié)果為10,故八選項正確。
16.B
17.AA選項中E后面的指數(shù)必須為整數(shù),所以不合法。C選項中的011表示的是八進(jìn)制常量,D選項中的0xabcd表示的是十六進(jìn)制常量。故本題答案為A選項。
18.B解析:p本身就是一個字符型指針變量,返回p也就是返回變量p中存放的地址值。
19.B
20.B
21.查詢查詢
22.非線性結(jié)構(gòu)非線性結(jié)構(gòu)
23.00解析:在函數(shù)fun()中,while((*n)-)是先引用*n的值,再做(*n)--運算,所以循環(huán)結(jié)束時*n的值為0,再做(*n)--運算后,*n的值為-1;執(zhí)行++(*n)后,*n的值是0。
24.
25.100100解析:本題考查帶參數(shù)的宏定義及相關(guān)運算。運算過程為:k=B*20=(A+3)*20=(2+3)*20=100。
26.44解析:將程序中所有的宏替換掉可得:M=2+1,K=2+1*2+1/2=4,所以for循環(huán)共循環(huán)了K-1+1次,即4-1+1共4次。
27.fopenfopen解析:C語言中的文件分為:ASCII文件與二進(jìn)制文件。文件在使用前打開,使用后要關(guān)閉。打開文件的函數(shù)為:fopen(),調(diào)用形式為:fp=fopen('文件名','使用文件方式');關(guān)閉文件的函數(shù)為:fclose(),調(diào)用形式為:fclose(fp),其中fp為文件指針。
28.220.0或220或220.或220.000000220.0或220或220.或220.000000解析:所有的賦值運算符的優(yōu)先級都相同,它們的結(jié)合性為從右至左,它們返回的表達(dá)式值為賦給變量的值.所以,語句x=f*=n/=(c=50):→x=f*=n/=50;→x=f*=2;(n的值變成2)→x=20;。故最終輸出的結(jié)果應(yīng)該是:220.000000
29.abcfgabcfg解析:本題考查的是字符數(shù)組用作函數(shù)參數(shù)。C語言中數(shù)組名可以看作該數(shù)組首地址的常量指針、因此可以直接傳遞給指針類型的參
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 道德與法治七年級上冊8.1 《生命可以永恒嗎》聽課評課記錄
- 湘教版數(shù)學(xué)七年級上冊《3.2 等式的性質(zhì)》聽評課記錄
- 新北師大版數(shù)學(xué)一年級下冊《誰的紅果多》聽評課記錄
- 獨立住宅買賣協(xié)議書(2篇)
- 【2022年新課標(biāo)】部編版七年級上冊道德與法治7.3 讓家更美好 聽課評課記錄
- 魯教版地理六年級下冊8.3《撒哈拉以南非洲》聽課評課記錄1
- 湘教版數(shù)學(xué)七年級下冊《2.1.4多項式的乘法(2)》聽評課記錄2
- 湘教版數(shù)學(xué)八年級下冊《2.3中心對稱》聽評課記錄
- 商務(wù)星球版地理八年級下冊活動課《區(qū)際聯(lián)系對經(jīng)濟發(fā)展的影響》聽課評課記錄
- 蘇科版數(shù)學(xué)八年級下冊11.3《用反比例函數(shù)解決問題》聽評課記錄2
- 手術(shù)安全管理之手術(shù)部位標(biāo)識安全
- 2022年版煤礦安全規(guī)程
- 高質(zhì)量社區(qū)建設(shè)的路徑與探索
- 數(shù)字化時代的酒店員工培訓(xùn):技能升級
- 足球守門員撲救技巧:撲救結(jié)合守護球門安全
- 《學(xué)術(shù)規(guī)范和論文寫作》課件全套 第1-10章 知:認(rèn)識研究與論文寫作 - 引文規(guī)范
- 帶式輸送機滾筒出廠檢驗規(guī)范
- 起重機更換卷筒施工方案
- 《信息檢索基礎(chǔ)知識》課件
- 具有履行合同所必須的設(shè)備和專業(yè)技術(shù)能力的承諾函-設(shè)備和專業(yè)技術(shù)能力承諾
- 01智慧物流信息技術(shù)概述
評論
0/150
提交評論