版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2021-2022年陜西省寶雞市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.下列說法正確的是()。
A.在C語言中,可以使用動(dòng)態(tài)內(nèi)存分配技術(shù)定義元素個(gè)數(shù)可變的數(shù)組
B.在c語言中,數(shù)組元素的個(gè)數(shù)可以不確定,允許隨機(jī)變動(dòng)
C.在C語言中,數(shù)組元素的數(shù)據(jù)類型可以不一致
D.在C語言中,定義一個(gè)數(shù)組后.就確定了它所容納的元素的個(gè)數(shù)
2.有定義語句intb;charc[10];,則正確的輸入語句是______。A.scallf("%d%s",&b,&c);
B.scallf("%d%s",&b,c);
C.scanf("%d%s",b,c)
D.scanf("%d%s",b,&c);
3.有以下程序
#include<stdio.h>
main()
{ints;
scanf(“%d”,&s);
while(s>0)
{switch(s)
{case1;printf(“%d”,s+5);
case2:printf(“%d”,s+4);break;
case3:printf(“%d”。s+3);
default:printf(“%d”,s+1);break;
}
seanf(“%d”,&s);
}
}
運(yùn)行時(shí),若輸入12345O<回車>,則輸出結(jié)果是A.6566456B.66656C.66666D.6666656
4.若變量a、i已正確定義,且i已正確賦值,合法的語句是()。
A.a==lB.++iC.a=a++=5D.a=int(i)
5.判斷char型變量c1是否為小寫字母的正確表達(dá)式為()。
A.'a'<=c1<='Z'
B.(c1>=A)‖c1<=z)
C.('a'=>c1‖("z"<=c1)
D.(c1>='a')&&(c1<='z')
6.設(shè)變量已正確定義并賦值,下列表達(dá)式中正確的是()。
A.x=y+z+5,++yB.int(15.8%5)C.x=y*5=x+zD.x=25%5.0
7.計(jì)算機(jī)算法指的是()。
A.計(jì)算方法B.排序方法C.解決問題的有限運(yùn)算序列D.調(diào)度方法
8.
9.數(shù)據(jù)結(jié)構(gòu)在計(jì)算機(jī)內(nèi)存中的表示是指()。A.數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)B.數(shù)據(jù)結(jié)構(gòu)C.數(shù)據(jù)的邏輯結(jié)構(gòu)D.數(shù)據(jù)元素之間的關(guān)系
10.在一個(gè)C語言源文件中定義的全局變量,其作用域?yàn)椋ǎ?/p>
A.由具體定義位置和extern說明來決定范圍B.所在程序的全部范圍C.所在函數(shù)的全部范圍D.所在文件的全部范圍
11.fseek函數(shù)的正確調(diào)用形式是()。
A.fseek(文件指針,起始點(diǎn),位移量)
B.fseek(文件指針,位移量,起始點(diǎn))
C.fseek(位移量,起始點(diǎn),文件指針)
D.fseek(起始點(diǎn),位移量,文件指針)
12.若有定義;intw[3][5];,則以下不能正確表示該數(shù)組元素的表達(dá)式是()。A.*(*w+3)B.*(w+1)[4]C.*(*(w+1))D.*(&w[0][0]+1)
13.有以下程序:#include<stdio.h>main(){intx=1,y=0,a=0,b=0;switch(x){ case1: switch(y) { case0:a++;break; case1:b++;break; } case2:a++;b++;break; case3:a++;b++;}printf(“a=%d,b=%d\n”,a,b);}程序的運(yùn)行結(jié)果是()。
A.a=2,b=2B.a=2,b=1C.a=1,b=1D.a=1,b=0
14.對初始狀態(tài)為遞增序列的數(shù)組按遞增順序排序,最省時(shí)間的是插入排序算法,最費(fèi)時(shí)間的算法是()
A.堆排序B.快速排序C.插入排序D.歸并排序
15.下面關(guān)于編譯預(yù)處理的命令行中,正確的是()。
A.#defineintINT
B.##defineeps0.001
C.##DEFINETRUE
D.#defineE2.88
16.在一個(gè)C語言源程序文件中所定義的全局變量,其作用域?yàn)?)。
A.所在文件的全部范圍B.所在程序的全部范圍C.所在函數(shù)的全部范圍D.由具體定義位置和extern說明來決定范圍
17.若有以下程序:inta=1,b=2;a=a^b;b=b^a;則執(zhí)行以上語句后a和b的值分別是()。A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2,b=l
18.以下是if語句的基本形式:if
(表達(dá)式)語句,其中表達(dá)式A.A.必須是邏輯表達(dá)式B.必須是關(guān)系表達(dá)式C.必須是邏輯表達(dá)式或關(guān)系表達(dá)式D.可以是任意合法的表達(dá)式
19.
20.
二、2.填空題(20題)21.以下程序從終端讀入數(shù)據(jù)到數(shù)組中,統(tǒng)計(jì)其中正數(shù)的個(gè)數(shù),并計(jì)算它們之和。請?zhí)羁铡?/p>
main()
{inti,a[20],sum,count;
sum=count=0;
for(i=0;i<20;i++)scanf("%d",【】);
for(i=0;i<20;i++)
{if(a[i]>0)
{count++;
sum+=a[i];
}
}
printf("sum=%d,count=%d\n",sum,count);
}
22.下列程序運(yùn)行后的輸出的結(jié)果是______。
#include<stdio.h>
main()
{chars[20];
scanf("%s",s);
printf("%s",s);
}
運(yùn)行程序,輸入HOWAREYOU。
23.以下程序的作用是:從名為filea.dat的文本文件中逐個(gè)讀入字符并顯示在屏幕上。請?zhí)羁铡?/p>
#include<stdio.h>
main()
{FILE*fp;charch;
fp=fopen(______);
ch=fSetc(fp);
while(!feof(fp)){putchar(ch);ch=fSetc(fp);}
putchar('\n');fclose(fp);
}
24.x和y都是double型變量,x的初值為4.0,y的初值為2.0,則表達(dá)式pow(y,fabs(x))的值為______。
25.下列程序的輸出結(jié)果是【】。
intt(intx,inty,intcp,intdp)
{cp=x*x+y*y;
dp=x*x-y*y;
}
main()
{inta=4,b=3,c=5,d=6;
t(a,b,c,d);
printf("%d%d\n",c,d);
}
26.當(dāng)先后輸入1、3、4、12、23時(shí),屏幕上出現(xiàn)【】;再輸入12時(shí),則屏幕上出現(xiàn)【】。
#include<stdio.h>
#defineN5
main()
{inti,j,number,top,bott,min,loca,a[N],flag;
charc;
printf("Pleaseinput5numbers(a[i]>a[i-1])\n");
scanf("%d",&a[0]);
i=1;
while(i<N)
{scanf("%d",&a[i]);
if(a[i]>=a[i-1))i++;
}
printf("\n");
for(i=0;i<N;i++)printf("%d",a[i]);
printf("\n");
flag=1;
while(flag)
{scanf("%d",&number);
loca=0;
top=0;
bott=N-1;
if((number<a[0])||(number>a[N-1]))loca=-1;
while((loca==0)&&(top<=bott))
{min=(bott+top)/2;
if(number==a[min])
{loca=min;
printf("%disthe%dthnumber\n",number,loca+1);
}
elseif(number<a[min])bott=min-1;
elsetop=min+1;
}
if(loca==0||loca==-1)printf("%disnotinthelist.\n",number);
c=getchar();
if(c=='N'||c=='n')flag=0;
}
}
27.下列程序的輸出結(jié)果是16.00,請?zhí)羁眨?/p>
main()
{
inta=9,b=2;
floatx=【】,y=1.1,z;
z=a/2+b*x/y+1/2;
printf("%5.2f\n",z);
}
28.函數(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++;}
rerurn【】;
}
29.設(shè)inta=5,b=6,表達(dá)式(++a==b--)?++a:--b的值是【】。
30.下面的程序?qū)崿F(xiàn)的是從指針p所指向的地址的n個(gè)數(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;}
31.按照邏輯結(jié)構(gòu)分類,數(shù)據(jù)結(jié)構(gòu)可分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),隊(duì)列屬于______。
32.下列程序的運(yùn)行結(jié)果是______。
main()
{inti,a[10];
a[0]=a[1]=1;
for(i=2;i<5;i++)
a[i]=a[i-2]+a[i-1];
for(i=0;i<5;i++)
{if(i%2==0)printf("\n");
printf("%d",a[i]);
}
}
33.有以下程序:
main()
{intnum[4][4]={{1,2,3,4),{5,6,7,8),{9,10,11,12),{13,14,15,16}},i,j;
for(i=0;i<4;i++)
{for(j=0;j<=i;j++)printf("%4c",'');
for(j=______;j<4;j++)printf("%4d",num[i][j]);
printf("\n");
}
}
若要按以下形式輸出數(shù)組右上半三角:
1234
678
1112
16
則在程序下劃線處應(yīng)填入的是【】。
34.下列語句的輸出結(jié)果是______。
chars[20]="aaaa",*sp=s;
puts(strcat(sp,"AAAAA"));
35.數(shù)據(jù)流圖的類型有【】和事務(wù)型。
36.下列程序的輸出結(jié)果是______。
main()
{inta[]={31,27,20,12,6,1},*p=a;
p++;
printf("%d\n",*(p+2));
}
37.若有如下結(jié)構(gòu)體說明:
structSIRU
{inta,b;charc:doubled;
structSTRU*p1,*p2;
};
請?zhí)羁?,以完成對t數(shù)組的定義,t數(shù)組的每個(gè)元素為該結(jié)構(gòu)體類型。
【】t[20]
38.以下程序的輸出結(jié)果是【】。
doublesub(doublex,doubley,doublez)
{y-=1.0;
z=z+x;
returnz;
}
main()
{doublea=2.5,b=9.0;
printf("functionrunningresultis:%6.1f\n",sub(b-a,a,A));
}
39.以下程序的輸出結(jié)果是【】。
main()
{inty=9;
for(;y>0;y--)
if(y%3==0)
{printf("%d",--y);continue;}}
40.若x和n均是int型變量,且x=12,n=5,則執(zhí)行y=x%=(n%=2)表達(dá)式后y的值為()。
三、1.選擇題(20題)41.下列描述中,錯(cuò)誤的一條是______。
A.已知i=3,執(zhí)行語句k=(++i)+(++i)+(++i)后,k的值為15
B.邏輯表達(dá)式!(5>3)&&(2<4)的值為0
C.表達(dá)式'c'&&'d'||!(3+4)的值為1
D.整型、實(shí)型、字符型數(shù)據(jù)可以混合運(yùn)算
42.以下程序的輸出結(jié)果是typedefunion{longx[2]inty[4];charz[8];}MYTYPE;MYTYPEthem;main(){printf("%d\n",sizeof(them));}
A.32B.16C.8D.24
43.若有如下程序段:intn=1O;while(1)n--;printf("%d";n);則while循環(huán)執(zhí)行的次數(shù)是()。
A.0B.1C.10D.無數(shù)
44.有以下程序:main(){inta=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a>b);printf("%d,%d\n"m,k,m);}程序運(yùn)行后的輸出結(jié)果是()。
A.0,0B.O,1C.1,0D.1,1
45.設(shè)有以下說明語句structstu{inta;floatb;}stutype;則下面的敘述不正確的是
A.struct是結(jié)構(gòu)體類型的關(guān)鍵字
B.structstu是用戶定義的結(jié)構(gòu)體類型
C.stutype是用戶定義的結(jié)構(gòu)體類型名
D.a和b都是結(jié)構(gòu)體成員名
46.執(zhí)行下面的程序后,a的值為main(){inta,b;for(a=1,b=1;a<=100;a++){if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;}}
A.7B.8C.9D.10
47.以下4組用戶定義標(biāo)識符中,全部合法的一組是
A._mainencludesin
B.If_maxturbo
C.txtREAL3COM
D.intk_2_001
48.若有定義inta[9],*p=a;則p+5表示
A.數(shù)組元素a[5]的值B.數(shù)組元素a[5]的地址C.數(shù)組元素a[6]的地址D.數(shù)組元素a[0]的值加上5
49.若程序中定義了以下函數(shù):doublemyadd(doublea,doubleb){return(a+b);}并將其放在調(diào)用語句之后,則在調(diào)用之前應(yīng)該對函數(shù)進(jìn)行說明,以下選項(xiàng)中錯(cuò)誤的說明是()。
A.doublemyadd(doublea,b);
B.doublemyadd(double,double);
C.doublemyadd(doubleb,doublea);
D.doublemyadd(doublex,doubley);
50.有以下程序:
#include<stdlib.h>
structNODE{
intnum;
structNODE*next;
}
main()
{structNODE*p,*q,*r;
intsum=0;
p=(structNODE*)malloc(sizeof(structNODE));
q=(StructNODE*)malloc(sizeof(structNODE));
r=(StructNODE*)malloc(sizeof(structNODE));
p->num=1;q->num=2;r->num=3;
p->next=q;q->next=r;r->next=NULL;
sum+=q->next->num;sum+=p->num;
printf("%d\n",sum);
}
執(zhí)行后的輸出結(jié)果是()。
A.3B.4C.5D.6
51.有以下程序main(){chara,b,c,d;scanf("%c,%c,%d,%d",&a,&b,&c,&d);printf("%c,%c,%c,%c\n",a,b,c,d);}若運(yùn)行時(shí)從鍵盤上輸入:6,5,65,66<回車>。則輸出結(jié)果是
A.6,5,A,BB.6,5,65,66C.6,5,6,5D.6,5,6,6
52.下列程序執(zhí)行后的輸出結(jié)果是()。voidfuncl(inti);voidfunc2(inti);charst[]="hello,friend!";voidfuncl(inti){printf("%C",st[i]);if(i<3){i+=2;func2(i);)}voidfunc2(inti){printf("%c",st[i]);if(i<3){i+=2;func1(i);}}main(){inti=0;funcl(i);printf("\n");)
A.hlmB.hloC.helloD.he1
53.有以下程序:#include<stdio.h>#defineN20fun(inta[],intn,intm){inti,j;for(i=m;i>:n;i--)a[i+1]=a[i];}main(){inti,a[N.]=11,2.3,4,5,6,7,8,9,10[;fun(a,2,9)for(i=0;i<5;i++)printf("%d",a[i]);程序運(yùn)行后的輸出結(jié)果是()。
A.10234B.12344C.12334D.12234
54.軟件需求分析階段的工作,可以分為四個(gè)方面需求獲取,需求分析,編寫需求規(guī)格說明書,以及()A.階段性報(bào)告B.需求評審C.總結(jié)D.以上都不正確
55.設(shè)有如下三個(gè)關(guān)系表:
下列操作中正確的是()。
A.T=R∩SB.T=R∪SC.T=R×SD.T=R/S
56.以下程序的輸出結(jié)果是______。main(){printf("%d\n",NULL);}
A.0B.-1C.1D.不確定的值(因變量無定義)
57.設(shè)x、y、z、t均為int型變量,則執(zhí)行以下語句后,t的值是()x=y(tǒng)=z=l;t=++x||++y&&++z;
A.不定值B.2C.1D.0
58.以下程序的輸出結(jié)果是______。#include<stdio.h>#defineFUDGE(y)2.84+y#definePR(a)printf("%d",(int)(a))#definePRINT1(a)PR(a);putchar('\n')main(){intx=2;PRINT1(FUDGE(5)*x);}
A.11B.12C.13D.15
59.已知學(xué)生記錄描述為:structstudent{intno;charname[20],sex;struct{intyear,month,day;}birth;};structstudents;設(shè)變量s中的“生日”是“1984年11月12日”,對“birth”正確賦值的程序段是()。
A.year=1984;month=11;day=12;
B.s.year=1984;s.month=11;s.day=12;
C.birth.year=1984;birth.month=11;birth.day=12;
D.s.birth.year=1984;s.birth.month=11;s.birth.day=12;
60.有下列函數(shù)定義:
fun(floath)
{printf("%f,%f\n”,h,h*h);}
該函數(shù)的類型是()。
A.int類型B.float類型C.void類型D.函數(shù)無類型說明,定義有錯(cuò)
四、選擇題(20題)61.有以下程序
62.
63.耦合性和內(nèi)聚性是對模塊獨(dú)立性度量的兩個(gè)標(biāo)準(zhǔn)。下列敘述中正確的是()。
A.提高耦合性降低內(nèi)聚性有利于提高模塊的獨(dú)立性
B.降低耦合性提高內(nèi)聚性有利于提高模塊的獨(dú)立性
C.耦合性是指一個(gè)模塊內(nèi)部各個(gè)元素間彼此結(jié)合的緊密程度
D.內(nèi)聚性是指模塊間互相連接的緊密程度
64.下列字符串不屬于標(biāo)識符的是()
A.sumB.averageC.day_nightD.M,D.JOHN
65.下面各選項(xiàng)中,均是C語言合法標(biāo)識符的選項(xiàng)組是()。
A.
B.
C.
D.
66.
以下程序的輸出結(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
67.作為信息處理熱點(diǎn)技術(shù)之一的“多媒體技術(shù)”中的媒體,強(qiáng)調(diào)的是()。
A.存儲(chǔ)媒體B.表現(xiàn)媒體C.傳輸媒體D.感覺媒體
68.當(dāng)用戶要求輸入的字符串中含有空格時(shí),應(yīng)使用的輸入函數(shù)是()。
A.scanfB.getcharC.getsD.getc
69.有以下程序
#include<stdio.h>
voidfun(char**p)
{p=p+2;
printf("%s\n",*p);
}
main()
{char*a[]={"Morning","Afternoon","Evening","Night"};
fun(a);
}
程序的運(yùn)行結(jié)果是
A.rning
B.a(chǎn)fternoon
C.ternoon
D.Evening
70.以下函數(shù)返回a所指數(shù)組中最小的值所在的下標(biāo)值:fun(int*a,intn){inti,j=0,P;p=j;for(i=j;i<n;i++)if(a[i]<a[j])____return(p);}在下劃線處應(yīng)填入的是()。A.i=PB.a[p]=a[i]C.p=jD.p=i
71.有如下程序段
#include"stdio.h"
typedefstructaa
{inta;
structaa*next;
}M;
voidset(M*k,inti,int*b)
{intj,d=0;
for(j=1;j<i;j++)
{k[j-1].next=&k[j];
k[j-1].a=b[d++];
}
k[j].a=b[d];
}
main()
{Mk[5],*p;
intd[5]={23,34,45,56,67};
set(k,5,d);
p=k+1;
printf("%d\n",________);
}
要輸出45,則在下畫線處應(yīng)填入的選項(xiàng)是
A.p->next->aB.++p->a
C.(*p).a(chǎn)++D.p++->a
72.計(jì)算機(jī)能直接執(zhí)行的程序是()。
A.源程序B.目標(biāo)程序C.匯編程序D.可執(zhí)行程序
73.若有以下定義:
intx[10],*pt=x;
則對x數(shù)組元素的正確引用是()。
A.pt+3B.}&x[10]C.*(pt+10)D.*(x+3)
74.以下敘述中正確的是
A.自定義的函數(shù)中一定要有return語句
B.自定義的函數(shù)中不可以有多個(gè)return語句
C.自定義的函數(shù)中可以沒有return語句,此時(shí)函數(shù)應(yīng)被定義為void類型
D.函數(shù)的return語句一定要帶有表達(dá)式
75.若有以下程序段輸出結(jié)果:是()。
A.4B.8C.16D.2
76.以下敘述中正確的是()。
A)C程序中的#include和#define行均是C語句,只是語法不同
B)除賦值運(yùn)算符外,逗號運(yùn)算符的優(yōu)先級最低
C)C程序中,j++;是賦值語句
D)C程序中,+、-、*、/、%號是算數(shù)運(yùn)算符,可用于整型和實(shí)型數(shù)的運(yùn)算
77.
78.
下列程序的輸出結(jié)果是()。
main
{inta,b,d=25;
a=d/10%9;
b=a&&(一1);
printf("%d,%d\n",a,b);}
A.6,1B.2,1C.6,0D.2,0
79.有下列程序:intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i]:returnsum;}main(){inta[3]={1,2,3,4,5),b[3]={6,7,8,9),s=0;s=fun(a,5)+fun(b,4);printf(“%d\n”,s);}程序執(zhí)行后的輸出結(jié)果是()。A.45B.50C.60D.55
80.
五、程序改錯(cuò)題(1題)81.下列給定程序中,函數(shù)proc()的功能是:求出以下分?jǐn)?shù)序列的前m項(xiàng)之和。2/1,3/2,5/3,8/5,13/8,21/13,…和值通過函數(shù)值返回main()函數(shù)。例如,若m=6,則應(yīng)輸出10.007051。請修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計(jì)題(1題)82.規(guī)定輸入的字符串中只包含字母和+號。編寫函數(shù)fun,其功能是:除了字符串前導(dǎo)和尾部的母號外,將其他的*號全部刪除。形參h已指向字符串中第一個(gè)字母,形參P指向字符串中最后一個(gè)字母。在編寫函數(shù)時(shí),不得使用c語言提供的字符串函數(shù)。
參考答案
1.D在C語言中,數(shù)組元素的個(gè)數(shù)是確定的,不允許隨機(jī)變動(dòng),數(shù)組定義好后,它所能容納的元素的個(gè)數(shù)也就確定了,并且同一個(gè)數(shù)組中所有元素都是同一類型。
2.B解析:scanf函數(shù)中的“格式控制”后面應(yīng)當(dāng)是地址,而不是變量名。對于變量,通過地址運(yùn)算符“&”求出內(nèi)存中的地址;對于數(shù)組c[10],數(shù)組名c即為數(shù)組在內(nèi)存中的地址。
3.A
4.B選項(xiàng)A為表達(dá)式,因此不正確,選項(xiàng)C中a++本身就是表達(dá)式,無需再賦值,選項(xiàng)D中,在強(qiáng)制類型轉(zhuǎn)換時(shí),類型名應(yīng)用括號括起來,故選擇8選項(xiàng)。
5.D解析:C語言規(guī)定,字符常量在程序中要用單引號括起來。判斷c1是否為小寫字母的充要條件c1>='a'和c1<='z',用邏輯與(&&)來表示。A選項(xiàng)的這種形式在C語言中沒有,所以選項(xiàng)D)正確.
6.A運(yùn)算符“%”的左右兩個(gè)操作數(shù)均應(yīng)為整數(shù),所以B選項(xiàng)與D選項(xiàng)錯(cuò)誤。C選項(xiàng)中不能將“x+z”的值賦給表達(dá)式“y*5”,所以C選項(xiàng)錯(cuò)誤。故本題答案為A選項(xiàng)。
7.C
8.A
9.A數(shù)據(jù)結(jié)構(gòu)在計(jì)算機(jī)內(nèi)存中的表示指的是數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)。數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)中的表示。數(shù)據(jù)元素之間的關(guān)系有兩種不同的表示方法:順序映象和非順序映象,并由此得到兩種不同的存儲(chǔ)結(jié)構(gòu):順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。
10.A全局變量的作用域是從聲明處到文件的結(jié)束。故本題答案為A選項(xiàng)。
11.B解析:本題考查函數(shù)fseek的用法。fseek函數(shù)的調(diào)用形式為:
fseek(文件指針,位移量,起始點(diǎn))
“起始點(diǎn)”用0,1或2代替,0代表“文件開始”,1為“當(dāng)前位置”,2為“文件末尾”。
“位移量”指以“起始點(diǎn)”為基點(diǎn),向前移動(dòng)的字節(jié)數(shù)。ANSIC和大多數(shù)C版本要求位移量是long型數(shù)據(jù),這樣當(dāng)文件長度大于64k時(shí)不致出現(xiàn)問題。ANSIC標(biāo)準(zhǔn)規(guī)定在數(shù)字末尾加一個(gè)字母L表示long型。
12.B通過—維數(shù)組名或指向維數(shù)組元素的指針來引用數(shù)組元素有兩種寫法:a[i]和*(a+i),它們是等價(jià)的。這是一種運(yùn)算符之間的等價(jià)轉(zhuǎn)換,就好像a-(b-C)等價(jià)于a-b+c一樣。知道了這種轉(zhuǎn)換,我們可以將之?dāng)U展到二維數(shù)組甚至任意維數(shù)組上來。因?yàn)閇]運(yùn)算符的結(jié)合性是從左至右的,所以w[i][j]等價(jià)于(w[i][j],此時(shí)可以先將任意一個(gè)[]運(yùn)算符轉(zhuǎn)換為指針形式為:(*(w+i)[j]或*(w[i]+j),或者同時(shí)轉(zhuǎn)換:*(*(w+i)+j)。上述幾種形式都完全等價(jià)于w[i][j]。選項(xiàng)A中,*(*w+3)可以看成*(*(w+0)+3),即w[0][3],是正確的。選項(xiàng)B小,因?yàn)閇]運(yùn)算符的優(yōu)先級高于*運(yùn)算符,所以*(w+1)[4]等價(jià)于*((w+1)[4]等價(jià)于*(*((w+1)+4)),即*(*(w+5)+0),它等價(jià)于w[5][0],很明顯它超過數(shù)組的范圍了,故不正確。選項(xiàng)C等價(jià)于w[1][0],是下確的。選項(xiàng)D中,&w[0][0]是數(shù)組w第1個(gè)元素的地址,它等價(jià)于&*(*(w+0)+0),外面的&和*可以抵消,就好像先乘以個(gè)數(shù),然后再除以這個(gè)數(shù)一樣。所以,&w[0][0]等價(jià)于*(w+0)+0。即*w。所以原式就變?yōu)?(*w+1)等價(jià)于w[0][1],這個(gè)也是合法的。綜上所述,本題應(yīng)該選擇B。
13.Bcase常量表達(dá)式只是起語句標(biāo)號作用,并不進(jìn)行條件判斷。在執(zhí)行switch語句時(shí),根據(jù)switch的表達(dá)式,找到與之匹配的case語句,就從此case子句執(zhí)行下去,不再進(jìn)行判斷,直到碰到break或函數(shù)結(jié)束為止。所以執(zhí)行內(nèi)層“switch(y)”時(shí)只執(zhí)行了“a++;”,此時(shí)a的值為1,然后執(zhí)行外層case2語句的“a++;b++;”,a值為2,b值為1。故本題答案為B選項(xiàng)。
14.B
15.D選項(xiàng)A中,int是關(guān)鍵字,不能作為用戶標(biāo)識符;選項(xiàng)B中,兩個(gè)“#”錯(cuò)誤;選項(xiàng)C中兩個(gè)“#”錯(cuò)誤,另外DEFINE大寫也是錯(cuò)誤的。故本題答案為D選項(xiàng)。
16.D
\n全局變量是在函數(shù)外部任意位置上定義的變量,它的作用域是從變量定義的位置開始,到整個(gè)源文件結(jié)束止。當(dāng)全局變量定義在后,引用它的函數(shù)在前時(shí),應(yīng)該在引用它的函數(shù)中用extern對此全局變量進(jìn)行說明,以便通知編譯程序該變量是一個(gè)已在外部定義了的全局變量,這時(shí)全局變量的作用域從extern說明處起,延伸到該函數(shù)末尾。
\n
17.B本題考查按位異或的用法。按位異或運(yùn)算的規(guī)則是:兩個(gè)運(yùn)算數(shù)的相應(yīng)二進(jìn)制位相同,則結(jié)果為0,相異則結(jié)果為1。b=2的二進(jìn)制為00000010,a=1的二進(jìn)制為00000001,a=a^b一00000011,轉(zhuǎn)化為十進(jìn)制后為3,b=b^a=00000010^00000011=00000001,即1。
18.D
19.A
20.C
21.&a[i]&a[i]解析:主要考查函數(shù)scanf的用法.應(yīng)填數(shù)組a的元素的地址。
22.HOWHOW解析:在scanf()函數(shù)中,使用空格作為分隔符,如果輸入含有空格的字符串,則不能使用scanf()函數(shù),所以本題中輸入空格就返回了'\\0',s數(shù)組也就確定了,后面的輸入就不再讀入數(shù)組s中。
23.解析:fopen函數(shù)的調(diào)用方式通常為fopen(文件名,使用文件方式)。本題中要求程序可以打開filea.dat文件,并且是要讀取文件中的內(nèi)容,所以空白處應(yīng)當(dāng)填入'filea.dat','r'。
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.5656解析:本題中a,b,c,d足實(shí)參,x,y,cp,dp是形參。C語言規(guī)定,實(shí)參變量對形參變量的數(shù)據(jù)傳遞是“值傳遞”,即單向傳遞,只由實(shí)參傳給形參,而不能由形參傳回來給實(shí)參。在內(nèi)存中,實(shí)參單元與形參單元是不同的單元。在調(diào)用函數(shù)時(shí),給形參分配存儲(chǔ)單元,并將實(shí)參對應(yīng)的值傳遞給形參,調(diào)用結(jié)束后,形參單元被釋放,實(shí)參單元仍保留并維持原值。因此,程序的輸出結(jié)果是56。
26.134122312isthe4thnumber.
解析:本題,已知結(jié)果z=16.00,即16.0=a/2+b*x/y+1/2,分別把a(bǔ)、b,代入,得到16.0=9/2+2*x/1.1+1/2。因?yàn)閍=9,a是整型,所以9/2的值在沒有進(jìn)行類型轉(zhuǎn)換時(shí),等于4,1/2同理,等于0。代入求一元一次方程,很容易就可以得出x=6.6。
28.*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]解析:比較兩個(gè)字符串的大小方法是:從第一個(gè)字符開始依次向后比較,若對應(yīng)的字符相等則接著比較下一個(gè)字符,一直到兩個(gè)字符串中對應(yīng)字符不等,或者有一個(gè)為“\\0”,此對應(yīng)字符的ASCII碼大的字符串就大。故循環(huán)條件是*s和*t不為“\\0”,且*s和*t相同,第一處應(yīng)填“*t”或其他等價(jià)形式。根據(jù)題意可知第二處應(yīng)填“*s-*t”或其等價(jià)形式。
29.77解析:此表達(dá)式為三目運(yùn)算符,++a的值為6,b--的值為6,則整個(gè)表達(dá)式的值為++a的值,++a的值為7。請注意前綴++,--和后綴++,--的區(qū)別。
30.q<p+nq<p+n解析:考查對于函數(shù)的地址傳遞的掌握情況。通過地址傳遞可以在被調(diào)函數(shù)中對調(diào)用函數(shù)中的變量進(jìn)行引用。
31.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:隊(duì)列有且只有一個(gè)根結(jié)點(diǎn),而且每一個(gè)結(jié)點(diǎn)最多有一個(gè)前件,也最多有一個(gè)后件,滿足線性結(jié)構(gòu)的條件,所以屬于線性結(jié)構(gòu)。
32.11<CR>23<CR>5(<CR代表換行)11<CR>23<CR>5(<CR,代表換行)解析:本題通過語句“for(i=2;i<5;i++)a[i]=a[i-2]+a[i-];”將數(shù)組中前面兩項(xiàng)的和賦值給數(shù)組當(dāng)前元素,得到a的值應(yīng)為(1,1,2,3,5)。語句if(i%2==0)pfintf('\\n')是要將數(shù)組中的元素以每行2個(gè)的形式輸出。
33.ii解析:上三角的情況是對數(shù)組a[i][j],j≥j的時(shí)候,因此,在j≥i時(shí)應(yīng)輸出所需要的元素,故橫線上應(yīng)填i。
34.aaaaAAAAAaaaaAAAAA解析:函數(shù)strcat(sp,'AAAAA')的作用是將字符中“AAAAA”連接到字符串sp的末尾,并自動(dòng)覆蓋字符數(shù)組sp末尾的\'\\0\'。
35.變換型典型的數(shù)據(jù)流類型有兩種:變換型和事務(wù)型。變換型是指信息沿輸入通路進(jìn)入系統(tǒng),同時(shí)由外部形式變換成內(nèi)部形式,進(jìn)入系統(tǒng)的信息通過變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng);在很多軟件應(yīng)用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一個(gè)或多個(gè)處理,這些處理能夠完成該作業(yè)要求的功能,這種數(shù)據(jù)流就叫做事務(wù)。
36.1212解析:本題簽考查如何用指針引用數(shù)組元素。分析程序,首先定義了一個(gè)指向數(shù)組a的指針p,p指向數(shù)組的首地址,通過p++,將p指向a[1],p+2是將指針后移2位指向a[3],*(p+2)即是取a[3)的值12。
37.structSTRUstructSTRU解析:結(jié)構(gòu)體類型是構(gòu)造數(shù)據(jù)類型,是用戶自己定義的一種類型。
結(jié)構(gòu)體類型的定義:
struct結(jié)構(gòu)體類型名
{
成員項(xiàng)表;
定義結(jié)構(gòu)休變量的的形式為:
struct結(jié)構(gòu)體類型名變量1,變量2,....
其中變量包括:一般變量、指針變量、數(shù)組變量等。
38.functionrunningresultis:9.0
39.852852解析:循環(huán)前,變量y的值為9,其中,循環(huán)語句在y大于0情況下循環(huán),每次循環(huán)后y的值都減1。循環(huán)體是當(dāng)y能被3整除時(shí)輸出表達(dá)式--y,輸出的是減1后的y值。這樣,第一次循環(huán)因y為9,能被3整除,輸出8,y也變成8。又經(jīng)兩次循環(huán),y的值變?yōu)?,又讓y減1變成5,并輸出5;又經(jīng)兩次循環(huán),y的值變成3,讓y減1變成2,輸出2;再經(jīng)兩次循環(huán)后,y的值變成0,結(jié)束循環(huán),所以程序輸出852。
40.00解析:n%=2等價(jià)于n=n%2,結(jié)果為1:x%=1等價(jià)于x=x%1,結(jié)果為0。
41.A
42.C解析:共用體所占存儲(chǔ)空間的大小是所有成員所占存儲(chǔ)單元的和;共用體變量所占存儲(chǔ)單元的大小是所有成員中占據(jù)存儲(chǔ)空間最大的成員所占存儲(chǔ)空間的大小。本題中字符數(shù)組成員z占8個(gè)字節(jié)的長度,長度最長,所以共用體變量them用sizeof計(jì)算長度為8。
43.D解析:本題的while循環(huán)條件為1恒為真,所以是一個(gè)無限循環(huán)。應(yīng)該選擇答案D。
44.C解析:在||運(yùn)算中當(dāng)其左邊的表達(dá)式為真,右邊的表達(dá)式將不再執(zhí)行。主函數(shù)中,||左邊的表達(dá)式k=(n=b>a),2>1為真,所以n被賦值為1,接著k被賦值1,即||運(yùn)算符左邊表達(dá)式為真,此時(shí)不再計(jì)算||右邊的表達(dá)式,因此m的值沒有被改變?nèi)詾?,最后的輸出結(jié)果1,0。所以,4個(gè)選項(xiàng)中選項(xiàng)C符合題意。
45.C解析:定義一個(gè)結(jié)構(gòu)的一般形式為:
struct結(jié)構(gòu)名
{
成員列表
};
本題中,stutype是在聲明類型的同時(shí)定義的structstu類型的變量。而不是用戶定義的結(jié)構(gòu)體類型名。我們需要注意以下幾點(diǎn):①類型與變量是不同的概念;②對結(jié)構(gòu)體中的成員,可以單獨(dú)使用,它的作用與地位相當(dāng)于普通變量;③成員也可以是一個(gè)結(jié)構(gòu)體變量;④成員名可以與程序中的變量名相同,二者不代表同一對象。
46.B解析:本題主要考查了循環(huán)語句中break和continue語句的使用。break語句的作用是結(jié)束本層循環(huán),而continue語句的作用是結(jié)束本次循環(huán)直接進(jìn)入到下次循環(huán)。
47.A解析:標(biāo)識符是以字母或下劃線開頭,由字母、數(shù)字或下劃線組成的字符序列(例如,-max含非法字符-),并且用戶標(biāo)識符不能與C語言中的32個(gè)關(guān)鍵字同名(例如,int是關(guān)鍵字,不是合法的用戶標(biāo)識符)。選項(xiàng)B中-max不是字母、數(shù)字或下劃線組成的字符序列;選項(xiàng)C中3COM不是由字母或下劃線開頭;選項(xiàng)D中int為C語言中的關(guān)鍵字;選項(xiàng)A中全部為合法的標(biāo)識符。
48.B解析:本題考查了通過指針來引用一維數(shù)組元素的方法。題中*p=a;這一賦值語句是指針p指向了數(shù)組a的首地址,p+5是指針p向后移動(dòng)了5個(gè)int類型的存儲(chǔ)單元,所以p+5指向了數(shù)組元素a[5]。
49.A解析:函數(shù)聲明是對所用到的函數(shù)的特征進(jìn)行必要的聲明,編譯系統(tǒng)以函數(shù)聲明中給出的信息為依據(jù),對調(diào)用表達(dá)式進(jìn)行檢測,以保證調(diào)用表達(dá)式與函數(shù)之間的參數(shù)正確傳遞。函數(shù)聲明的一般格式為:
類型標(biāo)識符函數(shù)名(類型標(biāo)識符形參,…);
這些信息就是函數(shù)定義中的第一行的內(nèi)容。這里形參的名字是不重要的,重要的是類型標(biāo)識符,函數(shù)聲明中也可以不寫形參名只寫該形參的聲明類型,但不能只寫形參名而不寫該形參的類型。本題中,選項(xiàng)A中doublemyadd(doublea,b),沒寫出形參b的類型。
50.B解析:本題中定義了一個(gè)結(jié)點(diǎn)結(jié)構(gòu)stmctNODE,在主函數(shù)中定義了3個(gè)結(jié)點(diǎn)指針p、q和r,接著通過malloc函數(shù)分配了3個(gè)結(jié)點(diǎn)并讓p、q和r分別指向他們,再接著給p、q和r所指向的結(jié)點(diǎn)的num域賦值為1、2、3,然后讓結(jié)點(diǎn)p指向q,讓q指向r,r指向NULL。顯然q->next->num的值為指針r所指向結(jié)點(diǎn)的hum域的值為3,p->hum的值為指針p所指向結(jié)點(diǎn)的num域的值為1,故最后輸出s的值為3+1=4。所以,4個(gè)選項(xiàng)中選項(xiàng)B符合題意。
51.A解析:主函數(shù)中首先定義了4個(gè)字符變量a、b、cd,然后通過scanf()函數(shù)輸入a、b、c、d輸入中a和b是按字符格式c輸入的,c和d是按整型符號d輸入的。在看下面的printf()函數(shù)中,要求a、b、c、d都按字符輸出,故a和b原樣輸出為6、5,c和d將把與其ASCII碼對應(yīng)的字符輸出,65和66的ASCII碼對應(yīng)字符A和B,故最后的輸出為6,5,A,B。所以,4個(gè)選項(xiàng)中選項(xiàng)A符合愿意。
52.B解析:本題定義了兩個(gè)很相似的子函數(shù)互相調(diào)用,子函數(shù)首先輸出st[i],然后判斷i是否小于3,是的話就讓i增2后調(diào)用另一個(gè)子函數(shù)。在主函數(shù)中只調(diào)用了一次funcl(0),funcl()輸出st[0],然后調(diào)用func2(2),func2()輸出st[2],又調(diào)用func1(4),此時(shí)i不小于3,所以funcl()只輸出st[4]就返回了。故最終輸結(jié)果為h1o,正確答案為B。
53.C解析:本題函數(shù)fun的作用是將指定的數(shù)組元素(下標(biāo)從n~m)向后移一位。調(diào)用函數(shù)fun(a,2,9)將a[2]到a[9]的各元素依次向后移一位,最后a數(shù)組中各元素的值分別為1,2,3,3,4,5,6,7,8,9,10,程序輸出數(shù)組的前5個(gè)元素:12334。
54.B解析:需求分析階段的工作,可以概括為以下4個(gè)方面:需求獲取、需求分析、編寫需求規(guī)格說明書和需求評審。本題的正確答案為選項(xiàng)B。
55.C解析:本題考查數(shù)據(jù)庫的關(guān)系代數(shù)運(yùn)算。R表中只有一個(gè)域名A,有兩個(gè)記錄(也叫元組),分別是m和n;S表中有兩個(gè)域名,分別是B和C,其所對應(yīng)的記錄分別為1和3。注意觀察表T,它是由R的第一個(gè)記錄依次與S的所有記錄組合,然后再由R的第二個(gè)記錄與S的所有記錄組合,形成的一個(gè)新表。上述運(yùn)算恰恰符合關(guān)系代數(shù)的笛卡兒積運(yùn)算規(guī)則。關(guān)系代數(shù)中,笛卡兒積運(yùn)算用“×”來表示。因此,上述運(yùn)算可以表示為T=R×S。因此,本題的正確答案為C。
56.A解析:NULL表示空,常在定義指針變量時(shí)將其值賦為NULL,表示不指向任何地址。NULL在C語言的頭文件中宏定義為0。
57.C
58.B解析:在程序中如果有帶實(shí)參的宏,則按#define命令行中指定的字符串從左到右進(jìn)行置換,如果串中包含宏中的形參,則將程序語句中相應(yīng)的實(shí)參代替形參。將實(shí)參帶入已經(jīng)定義的宏中,可以得出答案為“12”。
59.D解析:本題考查結(jié)構(gòu)體變量的基本概念。引用結(jié)構(gòu)體成員的方式為:
結(jié)構(gòu)體變量名.成員名
“.”是“成員運(yùn)算符”(分量運(yùn)算符),如果成員本身又是一個(gè)結(jié)構(gòu)體類型,則要用若干個(gè)成員運(yùn)算符,一級一級地找到最低一級的成員。只能對最低級的成員進(jìn)行賦值或存取以及運(yùn)算,所以選項(xiàng)D)正確。
60.A解析:本題考查默認(rèn)函數(shù)的函數(shù)值的類型。在函數(shù)定義時(shí),由于函數(shù)沒有說明其類型,系統(tǒng)默認(rèn)一律自動(dòng)按整型處理,因此,函數(shù)的類型為int類型。
61.A外層循環(huán)i,值分別為l23,內(nèi)層循環(huán)j分別為l23、23和3,所以答案為A)。
62.A
63.B模塊獨(dú)立性是指每個(gè)模塊只完成系統(tǒng)要求的獨(dú)立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。一般較優(yōu)秀的軟件設(shè)計(jì),應(yīng)盡量做到高內(nèi)聚,低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨(dú)立性,所以A錯(cuò)誤,B正確。耦合性是模塊間互相連接的緊密程度的度量而內(nèi)聚性是指一個(gè)模塊內(nèi)部各個(gè)元素間彼此結(jié)合的緊密程度,所以C與D錯(cuò)誤。故答案為B選項(xiàng)。
64.D
65.B合法的標(biāo)識符由字母、數(shù)字和下劃線組成,并且第一個(gè)字符必須為字母或下劃線,用戶定義的標(biāo)識符不能與關(guān)鍵字相同。選項(xiàng)A),數(shù)字不能為第一個(gè)字母,auto為關(guān)鍵字;選項(xiàng)c)中,也是數(shù)字不能為第一個(gè)字母,else為關(guān)鍵字;選項(xiàng)D)中負(fù)號不合法。
66.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
67.D媒體分為感覺媒體、表示媒體、存儲(chǔ)媒體、傳輸媒體和表現(xiàn)媒體五種,“多媒體技術(shù)”中的媒體強(qiáng)調(diào)的是感覺媒體。
68.C解析:C語言提供了許多輸入函數(shù),其中有:getchar(輸入字符)、scanf(格式輸入)和gets\u3000(輸入字符串)等。題目要求輸入的是字符串,所以可以排除getchar,而且要求輸入的字符串中包含空格,而scanf函數(shù)默認(rèn)將輸入的空格字符作為分割符,所以空格不會(huì)被輸入,故可排除scanf。getc的作用是從文件中輸入一個(gè)字符,故也不可取。gets函數(shù)可以輸入一整行作為一個(gè)字符串,其中也包括空格字符,故應(yīng)該選擇C。
69.D本題主要考查指向指針的指針。在程序中,首先定義了一個(gè)fun函數(shù),函數(shù)無返回類型,函數(shù)的形參是一個(gè)指向指針的指針變量p,在該函數(shù)體中,首先將變量p的值加2,并保存在p中,根據(jù)指針變量的特性,這個(gè)加2是使指針變量往后移兩個(gè)單位,如果開始指向第一個(gè)元素,現(xiàn)在則指向第三個(gè)元素(注意:這里并不是指移動(dòng)兩個(gè)字節(jié))。然后輸出*p,由于p是一個(gè)指向指針的變量,那么*p輸出的也不是單個(gè)數(shù)組,而是一個(gè)首地址對應(yīng)的字符串或數(shù)組,在本題中輸出的是字符串。
在主函數(shù)中,定義一個(gè)指針數(shù)組a,并賦初值,然后調(diào)用函數(shù)fun,實(shí)參為a,輸出的應(yīng)該是指針數(shù)組中第3個(gè)指針對應(yīng)的字符串,即Evening。\r\n\r\n\r\n
70.Dp是存放最小下標(biāo)的變量,而if后的表達(dá)就是實(shí)現(xiàn)這個(gè)}j的的,當(dāng)if成立時(shí),就把小的下標(biāo)放到p中,故選擇D選項(xiàng)。
71.A在本題中,程序首先定義了一個(gè)結(jié)構(gòu)體,結(jié)構(gòu)體中有兩個(gè)成員變量,一個(gè)是整型,另一個(gè)是指向該結(jié)構(gòu)體的指針。然后程序定義了一無返回值的函數(shù)set,該函數(shù)帶有三個(gè)參數(shù),第一個(gè)是結(jié)構(gòu)體指針變量k,第二個(gè)是整型變量i,第三個(gè)是整型指針變量b。在函數(shù)體中,首先定義了兩個(gè)整型變量,然后執(zhí)行for循環(huán),從循環(huán)變量的初始值及循環(huán)結(jié)束條件我們可以知道,循環(huán)執(zhí)行的次數(shù)與形參變量i有關(guān),從循環(huán)體中我們可以看出,該循環(huán)是將結(jié)構(gòu)體數(shù)組中的前一個(gè)結(jié)構(gòu)體的指針成員指向后一個(gè)結(jié)構(gòu)體的首地址,并用數(shù)組b中的值給結(jié)構(gòu)體的成員變量a賦值。
在主函數(shù)中,定義了一個(gè)大小為5的結(jié)構(gòu)體數(shù)組k和一個(gè)結(jié)構(gòu)體指針p,然后定義了一個(gè)數(shù)組d,并給數(shù)組d進(jìn)行了初始化操作,然后調(diào)用函數(shù)set,實(shí)參分別為結(jié)構(gòu)體數(shù)組k、5和數(shù)組d,結(jié)合上面我們對set函數(shù)的分析可以知道,此時(shí)執(zhí)行set的for循環(huán),可以是結(jié)構(gòu)體數(shù)組中各結(jié)構(gòu)體變量的指針成員next指向下一個(gè)結(jié)構(gòu)體變量,并將該結(jié)構(gòu)體變量的成員a賦值為數(shù)組d的與之位置相對應(yīng)的值,如結(jié)構(gòu)體數(shù)組中第一個(gè)結(jié)構(gòu)體變量的a被賦值為數(shù)組d中的第一個(gè)元素值,即23。那么函數(shù)調(diào)用后,結(jié)構(gòu)體數(shù)組各元素的成員a的值分別為23、34、45、56、67。
函數(shù)調(diào)用后,運(yùn)行p=k+1;語句,該語句的作用是使結(jié)構(gòu)體指針變量p執(zhí)行結(jié)構(gòu)體數(shù)組k的第二個(gè)元素,然后執(zhí)行輸出語句,本題要填的空就在輸出語句中,根據(jù)題目要求,要輸出一個(gè)45的值,當(dāng)然,用數(shù)組d輸出這么一個(gè)結(jié)果很簡單,為d[2],但選項(xiàng)中并沒有這項(xiàng),而是需要我們從結(jié)構(gòu)體數(shù)組中輸出這個(gè)值,從上面的分析我們知道,該值對應(yīng)結(jié)構(gòu)體數(shù)組第三個(gè)元素的成員,而當(dāng)前的p執(zhí)行第二個(gè)元素,從四個(gè)選項(xiàng)來分析,只有A選項(xiàng)能完成輸出45的任務(wù)。
B選項(xiàng)中的++p->a由于運(yùn)算符優(yōu)先級問題,首先運(yùn)行p->a,輸出的是34,然后加1,即輸出35。
C選項(xiàng)中的(*p).a++等于((*p).a)++,這樣的結(jié)果是34++,最后的輸出結(jié)果是34。
D選項(xiàng)中的p++->a等價(jià)于(p++)->a,顯然是輸出第二個(gè)結(jié)構(gòu)體的a成員值,即34。
72.D計(jì)算機(jī)能直接執(zhí)行的程序是可執(zhí)行程序,其擴(kuò)展名為.exe。故本題答案為D選項(xiàng)。
73.D沒有A選項(xiàng)的引用形式。+與&放在一起作用抵消,所以B選項(xiàng)錯(cuò)誤,最大只能引用到X[9]。+(pt+i)表示引用指針pt所指元素后的第i個(gè)元素,所以c選項(xiàng)錯(cuò)誤,最大只能為+(pt+9)。因此D選項(xiàng)正確。
74.C本題考查自定義函數(shù)的類型。函數(shù)執(zhí)行過程中通過return語句返回的值的類型稱為該函數(shù)的類型。當(dāng)一個(gè)函數(shù)不需要通過return語句返回一個(gè)值時(shí),稱為無返回值函數(shù)或無類型函數(shù),此時(shí)需要使用保留字void作為類型名。對于類型為非void的函數(shù),函數(shù)體中至少必須帶有一條return語句,并且每條return語句必須帶有一個(gè)表達(dá)式,當(dāng)執(zhí)行到任一條return語句時(shí),將計(jì)算出它的表達(dá)式的值,結(jié)束整個(gè)函數(shù)的調(diào)用過程,把這個(gè)值作為所求的函數(shù)值帶回到調(diào)用位置,參與相應(yīng)的運(yùn)算。對于類型為void的函數(shù),它不需要返回任何函數(shù)值,所以,在函數(shù)體中既可以使用return語句,也可以不使用,對于使用的每條return語句不允許也不需要帶有表達(dá)式,當(dāng)執(zhí)行到任一條return語句時(shí),或執(zhí)行到函數(shù)體最后結(jié)束的位置時(shí),將結(jié)束函數(shù)的調(diào)用過程,返回到調(diào)用位置向下繼續(xù)執(zhí)行。
75.Ar右移1位,結(jié)果為4,所以選擇A。
76.C#define行為非C語句,所以沒有“;”號,%的運(yùn)算對象只能為整型,逗號運(yùn)算符的優(yōu)先級最低。
77.C
78.B
\n當(dāng)邏輯運(yùn)算符“&&”兩邊的值是非零時(shí),邏輯表達(dá)式的值為真(即為1)。所以b=2&&(-1)=1,2%9=2,故a=2,故先算a/10=25/10=2。
\n
79.C在函數(shù)intfun(intx[],intn)的定義中,變量sum為一個(gè)靜態(tài)局部變量。由于在整個(gè)程序運(yùn)行期間,靜態(tài)局部變量在內(nèi)存中的靜態(tài)存儲(chǔ)中占據(jù)著永久的存儲(chǔ)單元。函數(shù)intfun(intx[],intn)的功能是求出數(shù)組x[]各個(gè)元素的和,所以在主函數(shù)中,調(diào)用函數(shù)fun(a,5)后,變量sum=1+2+3+4+5=15,當(dāng)再次調(diào)用fun(b,4)后,變量sum=15+6+7+8+9=45,所以s=15+45=60。
80.C
81.(1)錯(cuò)誤:proc(intn)
正確:doubleproc(intn)
(2)錯(cuò)誤:c=a;a+=b;b+=C;
正確:c=a;a+=b;b=c;
【解析】由main()函數(shù)中的proc()函數(shù)調(diào)用可知,函數(shù)proc()的返回值為double型數(shù)據(jù)。因此,“proc(intn)”應(yīng)改為“doubleproc(intn)”。根據(jù)數(shù)列的特點(diǎn)可知,下一項(xiàng)的分子是上一項(xiàng)的分子和分母之和,下一項(xiàng)的分母為上一項(xiàng)的分子。根據(jù)數(shù)列的這個(gè)特點(diǎn),“c=a;a+=b;b+=c;”應(yīng)改為“c=a;a+=b;b=c;”。
82.2021-2022年陜西省寶雞市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.下列說法正確的是()。
A.在C語言中,可以使用動(dòng)態(tài)內(nèi)存分配技術(shù)定義元素個(gè)數(shù)可變的數(shù)組
B.在c語言中,數(shù)組元素的個(gè)數(shù)可以不確定,允許隨機(jī)變動(dòng)
C.在C語言中,數(shù)組元素的數(shù)據(jù)類型可以不一致
D.在C語言中,定義一個(gè)數(shù)組后.就確定了它所容納的元素的個(gè)數(shù)
2.有定義語句intb;charc[10];,則正確的輸入語句是______。A.scallf("%d%s",&b,&c);
B.scallf("%d%s",&b,c);
C.scanf("%d%s",b,c)
D.scanf("%d%s",b,&c);
3.有以下程序
#include<stdio.h>
main()
{ints;
scanf(“%d”,&s);
while(s>0)
{switch(s)
{case1;printf(“%d”,s+5);
case2:printf(“%d”,s+4);break;
case3:printf(“%d”。s+3);
default:printf(“%d”,s+1);break;
}
seanf(“%d”,&s);
}
}
運(yùn)行時(shí),若輸入12345O<回車>,則輸出結(jié)果是A.6566456B.66656C.66666D.6666656
4.若變量a、i已正確定義,且i已正確賦值,合法的語句是()。
A.a==lB.++iC.a=a++=5D.a=int(i)
5.判斷char型變量c1是否為小寫字母的正確表達(dá)式為()。
A.'a'<=c1<='Z'
B.(c1>=A)‖c1<=z)
C.('a'=>c1‖("z"<=c1)
D.(c1>='a')&&(c1<='z')
6.設(shè)變量已正確定義并賦值,下列表達(dá)式中正確的是()。
A.x=y+z+5,++yB.int(15.8%5)C.x=y*5=x+zD.x=25%5.0
7.計(jì)算機(jī)算法指的是()。
A.計(jì)算方法B.排序方法C.解決問題的有限運(yùn)算序列D.調(diào)度方法
8.
9.數(shù)據(jù)結(jié)構(gòu)在計(jì)算機(jī)內(nèi)存中的表示是指()。A.數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)B.數(shù)據(jù)結(jié)構(gòu)C.數(shù)據(jù)的邏輯結(jié)構(gòu)D.數(shù)據(jù)元素之間的關(guān)系
10.在一個(gè)C語言源文件中定義的全局變量,其作用域?yàn)椋ǎ?/p>
A.由具體定義位置和extern說明來決定范圍B.所在程序的全部范圍C.所在函數(shù)的全部范圍D.所在文件的全部范圍
11.fseek函數(shù)的正確調(diào)用形式是()。
A.fseek(文件指針,起始點(diǎn),位移量)
B.fseek(文件指針,位移量,起始點(diǎn))
C.fseek(位移量,起始點(diǎn),文件指針)
D.fseek(起始點(diǎn),位移量,文件指針)
12.若有定義;intw[3][5];,則以下不能正確表示該數(shù)組元素的表達(dá)式是()。A.*(*w+3)B.*(w+1)[4]C.*(*(w+1))D.*(&w[0][0]+1)
13.有以下程序:#include<stdio.h>main(){intx=1,y=0,a=0,b=0;switch(x){ case1: switch(y) { case0:a++;break; case1:b++;break; } case2:a++;b++;break; case3:a++;b++;}printf(“a=%d,b=%d\n”,a,b);}程序的運(yùn)行結(jié)果是()。
A.a=2,b=2B.a=2,b=1C.a=1,b=1D.a=1,b=0
14.對初始狀態(tài)為遞增序列的數(shù)組按遞增順序排序,最省時(shí)間的是插入排序算法,最費(fèi)時(shí)間的算法是()
A.堆排序B.快速排序C.插入排序D.歸并排序
15.下面關(guān)于編譯預(yù)處理的命令行中,正確的是()。
A.#defineintINT
B.##defineeps0.001
C.##DEFINETRUE
D.#defineE2.88
16.在一個(gè)C語言源程序文件中所定義的全局變量,其作用域?yàn)?)。
A.所在文件的全部范圍B.所在程序的全部范圍C.所在函數(shù)的全部范圍D.由具體定義位置和extern說明來決定范圍
17.若有以下程序:inta=1,b=2;a=a^b;b=b^a;則執(zhí)行以上語句后a和b的值分別是()。A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2,b=l
18.以下是if語句的基本形式:if
(表達(dá)式)語句,其中表達(dá)式A.A.必須是邏輯表達(dá)式B.必須是關(guān)系表達(dá)式C.必須是邏輯表達(dá)式或關(guān)系表達(dá)式D.可以是任意合法的表達(dá)式
19.
20.
二、2.填空題(20題)21.以下程序從終端讀入數(shù)據(jù)到數(shù)組中,統(tǒng)計(jì)其中正數(shù)的個(gè)數(shù),并計(jì)算它們之和。請?zhí)羁铡?/p>
main()
{inti,a[20],sum,count;
sum=count=0;
for(i=0;i<20;i++)scanf("%d",【】);
for(i=0;i<20;i++)
{if(a[i]>0)
{count++;
sum+=a[i];
}
}
printf("sum=%d,count=%d\n",sum,count);
}
22.下列程序運(yùn)行后的輸出的結(jié)果是______。
#include<stdio.h>
main()
{chars[20];
scanf("%s",s);
printf("%s",s);
}
運(yùn)行程序,輸入HOWAREYOU。
23.以下程序的作用是:從名為filea.dat的文本文件中逐個(gè)讀入字符并顯示在屏幕上。請?zhí)羁铡?/p>
#include<stdio.h>
main()
{FILE*fp;charch;
fp=fopen(______);
ch=fSetc(fp);
while(!feof(fp)){putchar(ch);ch=fSetc(fp);}
putchar('\n');fclose(fp);
}
24.x和y都是double型變量,x的初值為4.0,y的初值為2.0,則表達(dá)式pow(y,fabs(x))的值為______。
25.下列程序的輸出結(jié)果是【】。
intt(intx,inty,intcp,intdp)
{cp=x*x+y*y;
dp=x*x-y*y;
}
main()
{inta=4,b=3,c=5,d=6;
t(a,b,c,d);
printf("%d%d\n",c,d);
}
26.當(dāng)先后輸入1、3、4、12、23時(shí),屏幕上出現(xiàn)【】;再輸入12時(shí),則屏幕上出現(xiàn)【】。
#include<stdio.h>
#defineN5
main()
{inti,j,number,top,bott,min,loca,a[N],flag;
charc;
printf("Pleaseinput5numbers(a[i]>a[i-1])\n");
scanf("%d",&a[0]);
i=1;
while(i<N)
{scanf("%d",&a[i]);
if(a[i]>=a[i-1))i++;
}
printf("\n");
for(i=0;i<N;i++)printf("%d",a[i]);
printf("\n");
flag=1;
while(flag)
{scanf("%d",&number);
loca=0;
top=0;
bott=N-1;
if((number<a[0])||(number>a[N-1]))loca=-1;
while((loca==0)&&(top<=bott))
{min=(bott+top)/2;
if(number==a[min])
{loca=min;
printf("%disthe%dthnumber\n",number,loca+1);
}
elseif(number<a[min])bott=min-1;
elsetop=min+1;
}
if(loca==0||loca==-1)printf("%disnotinthelist.\n",number);
c=getchar();
if(c=='N'||c=='n')flag=0;
}
}
27.下列程序的輸出結(jié)果是16.00,請?zhí)羁眨?/p>
main()
{
inta=9,b=2;
floatx=【】,y=1.1,z;
z=a/2+b*x/y+1/2;
printf("%5.2f\n",z);
}
28.函數(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++;}
rerurn【】;
}
29.設(shè)inta=5,b=6,表達(dá)式(++a==b--)?++a:--b的值是【】。
30.下面的程序?qū)崿F(xiàn)的是從指針p所指向的地址的n個(gè)數(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;}
31.按照邏輯結(jié)構(gòu)分類,數(shù)據(jù)結(jié)構(gòu)可分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),隊(duì)列屬于______。
32.下列程序的運(yùn)行結(jié)果是______。
main()
{inti,a[10];
a[0]=a[1]=1;
for(i=2;i<5;i++)
a[i]=a[i-2]+a[i-1];
for(i=0;i<5;i++)
{if(i%2==0)printf("\n");
printf("%d",a[i]);
}
}
33.有以下程序:
main()
{intnum[4][4]={{1,2,3,4),{5,6,7,8),{9,10,11,12),{13,14,15,16}},i,j;
for(i=0;i<4;i++)
{for(j=0;j<=i;j++)printf("%4c",'');
for(j=______;j<4;j++)printf("%4d",num[i][j]);
printf("\n");
}
}
若要按以下形式輸出數(shù)組右上半三角:
1234
678
1112
16
則在程序下劃線處應(yīng)填入的是【】。
34.下列語句的輸出結(jié)果是______。
chars[20]="aaaa",*sp=s;
puts(strcat(sp,"AAAAA"));
35.數(shù)據(jù)流圖的類型有【】和事務(wù)型。
36.下列程序的輸出結(jié)果是______。
main()
{inta[]={31,27,20,12,6,1},*p=a;
p++;
printf("%d\n",*(p+2));
}
37.若有如下結(jié)構(gòu)體說明:
structSIRU
{inta,b;charc:doubled;
structSTRU*p1,*p2;
};
請?zhí)羁?,以完成對t數(shù)組的定義,t數(shù)組的每個(gè)元素為該結(jié)構(gòu)體類型。
【】t[20]
38.以下程序的輸出結(jié)果是【】。
doublesub(doublex,doubley,doublez)
{y-=1.0;
z=z+x;
returnz;
}
main()
{doublea=2.5,b=9.0;
printf("functionrunningresultis:%6.1f\n",sub(b-a,a,A));
}
39.以下程序的輸出結(jié)果是【】。
main()
{inty=9;
for(;y>0;y--)
if(y%3==0)
{printf("%d",--y);continue;}}
40.若x和n均是int型變量,且x=12,n=5,則執(zhí)行y=x%=(n%=2)表達(dá)式后y的值為()。
三、1.選擇題(20題)41.下列描述中,錯(cuò)誤的一條是______。
A.已知i=3,執(zhí)行語句k=(++i)+(++i)+(++i)后,k的值為15
B.邏輯表達(dá)式!(5>3)&&(2<4)的值為0
C.表達(dá)式'c'&&'d'||!(3+4)的值為1
D.整型、實(shí)型、字符型數(shù)據(jù)可以混合運(yùn)算
42.以下程序的輸出結(jié)果是typedefunion{longx[2]inty[4];charz[8];}MYTYPE;MYTYPEthem;main(){printf("%d\n",sizeof(them));}
A.32B.16C.8D.24
43.若有如下程序段:intn=1O;while(1)n--;printf("%d";n);則while循環(huán)執(zhí)行的次數(shù)是()。
A.0B.1C.10D.無數(shù)
44.有以下程序:main(){inta=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a>b);printf("%d,%d\n"m,k,m);}程序運(yùn)行后的輸出結(jié)果是()。
A.0,0B.O,1C.1,0D.1,1
45.設(shè)有以下說明語句structstu{inta;floatb;}stutype;則下面的敘述
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 重慶市秀山土家族苗族自治縣新星初級中學(xué)2024-2025學(xué)年九年級上學(xué)期期中考試數(shù)學(xué)試題(無答案)
- 高中歷史 1.2 曠日持久的戰(zhàn)爭教案 新人教版選修3
- 2024年春季九年級歷史下冊 第三單元 第一次世界大戰(zhàn)和戰(zhàn)后初期的世界 第11課 蘇聯(lián)的社會(huì)主義建設(shè)教案 新人教版
- 八年級生物上冊 6.15.1人體內(nèi)物質(zhì)的運(yùn)輸?shù)?課時(shí)教案 (新版)蘇科版
- 2024-2025學(xué)年高中生物 第五章 章末整合提升教案 浙科版必修2
- 2024-2025學(xué)年九年級化學(xué)下冊 第10單元 酸和堿教案 (新版)新人教版
- 八年級地理上冊 4.2 農(nóng)業(yè)參考教案 (新版)新人教版
- 高考地理一輪復(fù)習(xí)第十一章交通運(yùn)輸布局與區(qū)域發(fā)展第二節(jié)交通運(yùn)輸布局對區(qū)域發(fā)展的影響課件
- 高考地理一輪復(fù)習(xí)第十九章環(huán)境安全與國家安全第二節(jié)環(huán)境污染、生態(tài)保護(hù)與國家安全課件
- 租用東西的合同(2篇)
- 校園道路的施工設(shè)計(jì)方案
- 外研版(2019)書面表達(dá) 話題作文歸納12篇(含答案)
- 小學(xué)生個(gè)人簡歷表(空表)【范本模板】
- 地表能量平衡
- 課題結(jié)題專家鑒定意見
- 快樂英語校本課程
- 軍事理論論文——我國周邊安全形勢及應(yīng)對策略
- 安利會(huì)員管理制度
- 中醫(yī)院門診患者就診流程圖
- 外來文件管理規(guī)定
- 閥門涂漆技術(shù)要求內(nèi)容
評論
0/150
提交評論