




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2021年河南省三門峽市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.若有定義“inta=0,b=1,c=1;”,關于邏輯表達式“a++||b++&&c++”中各個部分的執行順序,以下說法正確的是()。
A.先執行“b++”,再執行“c++”,最后執行“a++”
B.先執行“a++”,再執行“b++”,最后執行“c++”
C.先執行“c++”,再執行“b++”,最后執行“a++”
D.先執行“b++”,再執行“a++”,最后執行“c++”
2.設有如下定義語句:intm[]={2,4,6,8,10},*k=m;以下選項中,表達式的值為6的是()。
A.*(k+2)B.k+2C.*k+2D.*k+=2
3.
4.設有如下定義:int(*ptr);則以下敘述中正確的是()。
A.ptr是指向一維組數的指針變量
B.ptr是指向int型數據的指針變量
C.ptr是指向函數的指針,該函數返回一個int型數據
D.ptr是一個函數名,該函數的返回值是指int型數據的指針
5.有以下程序:#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);}程序運行后的輸出結果是()。A.k=6a=11B.k=3a=14C.k=4a=12D.k=5a=15
6.有下列程序:程序執行后的輸出結果是()。A.Zhao,m,85,Zhao,m,85
B.Sun,f,90,Zhao,m,85
C.Zhao,m,85,Sun,f,90
D.Sun,f,90,Sun,f,90
7.以下關于C語言的敘述中正確的是()。
A.C語言中的注釋不可以夾在變量名或關鍵字的中間
B.C語言中的變量可以在使用之前的任何位置進行定義
C.在C語言算術表達式的書寫中,運算符兩側的運算數類型必須一致
D.C語言的數值常量中夾帶空格不影響常量值的正確表示
8.數據流圖(DFD)的作用是()。
A.描述軟件系統的控制流B.支持軟件系統的功能建模C.支持軟件系統的面向對象分析D.描述軟件系統的數據結構
9.設有100個元素,用折半查找法進行查找時,最大比較次數是_____。
A.25B.50C.10D.7
10.有以下程序:
程序運行后的輸出結果是()。
A.4B.34C.31D.32
11.鏈表不具有的特點是()。
A.插入、刪除不需要移動元素B.可隨機訪問任一元素C.不必事先估計存儲空間D.所需空間與線性長度成正比
12.數據結構主要研究的是數據的邏輯結構、數據的運算和()。A.數據的方法B.數據的存儲結構C.數據的對象D.數據的邏輯存儲
13.如有inta=11;則表達式(a/1)的值是()。
A.0B.3C.4D.11
14.有以下程序:#include<stdio.h>#definePT3.5;#defineS(x)PT*x*x;main(){inta=1,b=2;printf(“%4.1f\n”,S(a+b));}程序的運行結果是()。
A.7.5B.31.5C.程序有錯,無輸出結果D.14.0
15.設有定義:inta,*pa=&a;以下scanf語句中能正確為變量a讀入數據的是()
A.scanf(“%d”,pa);
B.scanf(“%d”,a);
C.scanf(“%d”,&pa);
D.scanf(“%d”,*pa);
16.設有6個結點的無向圖,該圖至少應有()條邊才能確保是一個連通圖。
A.5B.6C.7D.8
17.有以下程序:main{chara=a,b;printf("%c,",++a);printf("%c\n",b=a++):)程序運行后的輸出結果是()。A.b,bB.b,cC.a,bD.a,c
18.算法是指為解決某個特定問題而采取的確定且有限的步驟,下面不屬于算法的五個特性的是A.A.有零個輸入或多個輸入B.高效性C.有窮性D.確定性
19.數據結構在計算機內存中的表示是指()。A.數據的存儲結構B.數據結構C.數據的邏輯結構D.數據元素之間的關系
20.若變量a、i已正確定義,且i已正確賦值,合法的語句是()。
A.a==lB.++iC.a=a++=5D.a=int(i)
二、2.填空題(20題)21.某二叉樹中度為2的節點有18個,則該二叉樹中有()個葉子節點。
22.當運行以下程序時,輸入abed,程序的輸出結果是:【】。
insert(charstr[])
{inti
i=strlen(str);
while(i>0)
{str[2*i]=str[i];str[2*-1]='*';i--;}
printf("%s\n",str);
}
main()
{charstr[40];
scanf("%s",sB);insert(str);
}
23.以下程序段的輸出結果是【】。
main()
{inta=2,b=3,c=4;
a*=16+(b++)-(++c);
printf("%d",a);
}
24.以下程序運行后的輸出結果是______。
main()
{
inta[4]]4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};
inti=0.j=0,s=0;
while(i++<4}
if(i==2||i==4)continue;
j=0;
do
{
s+=a[i][j]:
j++;
}while(j<4);
}
printf("%d\n",s);
}
voidfun(intx,inty)
}
25.一個模塊直接調用的其他模塊的模塊個數稱為______。
26.軟件測試是保證軟件質量的重要手段,而軟件測試的主要和重要的測試方法是通過測試數據和【】的設計來實現。
27.若有如下程序:
voidsub()
{staticintx=6;
x/=2;printf("%d",x);}
main()
{intm;
for(m=0;m<=2;m++)sub();}
則程序運行后的輸出結果是【】。
28.下面程序輸出的結果是()。intm=17;intfun(intx,inty){intm=3;return(x*y-m);}main(){inta=5,b=7;printf("%d\n”,fun(a,B)/m);}
29.一棵二叉樹第6層(根結點為第一層)的結點最多為______個。
30.以下程序通過函數指針p調用函數fun,請在填空欄內寫出定義變量p的語句。
voidfun(int*x,int*y)
{……}
main()
{inta=10,b=20;
【】:
p=fun;p(&a,&b);
……
}
31.軟件工程的出現是由于【】。
32.下列程序的功能是將字符串s中所有的字符c刪除。請填空。
#include<stdio.h>
main()
{chars[80];
inti,j;
gets(S);
for(i=j0;s[i]!'\0';i++)
if(s[i]!='c')______;
s[j]='\0;
puts(S);
}
33.數據庫管理系統是位于用戶與______之間的軟件系統。
34.以下程序的功能是從名為filea.dat的文本文件中逐個讀入字符并顯示在屏幕上。請填空。
majn()
{FILE*fp;charch;
fp=fopen(______);
ch=fgetc(fp);
whle(!feof(fp)){putchar(ch);ch=f8etc(fp);}
putchar('\n');fclose(fp);
}
35.下面程序的運行結果是【】。
main()
{unsigneda=0112,x;
x=a>>3;
printf("x=%o",x);
}
36.診斷和改正程序中錯誤的工作通常稱為【】。
37.在樹形結構中,樹根結點沒有______。
38.下列程序的功能是輸入一個整數,判斷其是否是素數,若為素數則輸出1,否則輸出0。請填空。
#include<stdio.h>
main()
{inti,x,y=1;
scanf("%d",&x);
for(i=2;i<=x/2;i++)
if【】{y=0;break;}
printf("%d\n",y);
}
39.以下程序運行后的輸出結果是()。
#include
char*ss(char*s)
{char*p,t;
P=s+1;t=*s;
while(*p){*(P-1)=*P;P++;}
*(P-1)=t;
returns;
}
main()
{char*p,str[10]="abcdefgh";
p=ss(str);
printf("%s\n",p);
}
40.請在以下程序第一行的下劃線處填寫適當內容,使程序能正確運行。
【】(double,double);
main()
{doublex,y;
scanf("%lf%lf",&x,&y);
printf("%1f\n",max(x,y));
}
doublemax(doublea,doubleb)
{return(a>b?a:b);}
三、1.選擇題(20題)41.有以下程序#include<stdio.h>main(){FILE*fp;inti=20,j=30,k,n;fp=fopen(“d1.dat”,“w”);fprintf(fp,“%d\n”,i);fprintf(fp,“%d\n”,j);fclose(fp);fp=fopen(“d1.dat”,“r”);fscanf(fp,“%d%d”,&k,&n);printf(“%d%d\n”,k,n);fclose(fp);}程序運行后的輸出結果是
A.2030B.2050C.3050D.3020
42.在執行完下列的C語句段之后,則B的值是()。Chara="A";intb;B=((34&&56)&&(a<'b'));
A.int類型B.float類型C.void類型D.函數無類型說明,定義有錯
43.算法的時間復雜度是指______。
A.執行算法程序所需要的時間B.算法程序的長度C.算法執行過程中所需要的基本運算次數D.算法程序中的指令條數
44.下面程序運行后的輸出結果是______。fut(int,*s,intP[2][3]){**s=p[1][1];}main(){inta[2][3]={1,3,5,7,9,11},*p;p=(int*)malloc(sizeof(int));fut(&p,a);printf("%d\n",*p);}
A.1B.7C.9D.11
45.以下程序中函數sort的功能是對a數組中的數據進行由大到小的排序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(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(&aa[3],5);for(i=0;i<10;i++)printf("%d,",aa[i]);printf("\n");}程序運行后的輸出結果是
A.1,2,3,4,5,6,7,8,9,10,
B.10,9,8,7,6,5,4,3,2,1,
C.1,2,3,8,7,6,5,4,9,10,
D.1,2,10,9,8,7,6,5,4,3,
46.有以下程序段:main(){inta=5,*b,**c;c=&b;b=&a;}程序在執行了c=&b;b=&a;語句后,表達式**c的值是______。
A.變量a的地址B.變量b中的地址C.變量a中的值D.變量b的地址
47.下列程序的輸出結果是()。#include<stdio.h>f(intA){intb=0;staticintc=4;a=c++;b++;return(A);}main(){inta=2,i,c;for(i=0;i<2;i++)c=f(a++);printf("%d\n",C);}
A.4B.7C.6D.5
48.一個數據元素第一個元素的存儲地址是100,每個元素的長度為2,則第5個元素的地址是()。
A.110B.108C.100D.120
49.下列程序段的輸出結果為()。#include<stdio.h>main(){staticchara[]="language";char*p;p=a;for(p=a;p<a+8;p+=2)putchar(*p);}
A.languageB.lnugC.有語法錯誤D.lang
50.若變量已正確說明為float類型,要通過語句scanf("%f%f%f",&a,&b,&c);給a賦于19.0,b賦予22.0,c賦予33.0,不正確的輸入形式是______。
A.10<回車>22<回車>33<回車>
B.19.0,22.0,33.0<回車>
C.19.0<回車>22.033.0<同車>
D.1022<回車>33<回車>
51.視圖設計一般有3種設計次序,下列不屬于視圖設計的是______。
A.自頂向下B.由外向內C.由內向外D.自底向上
52.已知一個文件中存放若干工人檔案記錄,其數據結構如下:structa{charnumber[100];intage;floatp[6];};定義一個數組:structanumber[10];假定文件已正確打開,不能正確地從文件中讀入10名工人數據到數組b中的是()。
A.fread(b,sizeof(structA),10,fp);
B.for(i=0;i<10;i++)fread(b[i],sizeof(structA),1,fp);
C.for(i=0;i<10;i++)fread(b+i,sizeof(structA),1,fp);
D.for(i=0;i<5;i+=2)fread(b+i,sezeof(structA),2,fp);
53.若要用函數fopen打開一個新的二進制文件,該文件要既能讀也能寫,則應以哪種方式打開文件()。
A.wbB.wb+C.rb+D.rb
54.有以下程序:main(){chars[]="Yes\n/No",*ps=s;puts(ps+4);*(ps+4)=0;puts(s);}程序運行后的輸出結果是(選項D中的第一行是空行)()。
A.n/NoYes/NoB./NoYesC./NoYes/NoD./NoYes
55.在關系數據庫中,用來表示實體之間聯系的是
A.樹形結構B.網狀結構C.線性表D.二維表
56.在結構化程序設計中,模塊劃分的原則是()。
A.各模塊應包括盡量多的功能
B.各模塊的規模應盡量大
C.各模塊之間的聯系應盡量緊密
D.模塊內具有高內聚度,模塊間具有低耦合度
57.下列程序的輸出結果是()。
main()
{inti=1,j=2,k=3;
if(i++==1&&(++j=3‖k++==3))printf("%d%d%d\n",i,j,k);
}
A.123B.234C.223D.233
58.請選出下面正確的程序段()。
A.int*s;scanf("%d",s);┆
B.int*s,k;*s=100;┆
C.int*s,k;char*p,c;s=&k;p=&c;*p='a';┆
D.int*s,k;char*p,c;s=&k;p=&c;s=p;*s=1;┆
59.設有程序段:intk=12:while(k=1)k=k-1:則下列描述中正確的是()。
A.while循環執行10次B.循環是無限循環C.循環體語句一次也不執行D.循環體語句執行一次
60.若有定義:inta=4,b=5;floatx=3.4,y=2.1;,則下列表達式的值為()。(float)(a+B)/2+(int)x%(int)y
A.5.5B.55C.5.5D.55
四、選擇題(20題)61.若有定義floatX=1.5;inta=1,b=3,C=2;,則正確的switch語句是()。
A.
B.
C.
D.
62.在軟件設計中不使用的工具是()。A.系統結構圖B.PAD圖C.數據流圖D.程序流程圖
63.若變量a、b、x、i都已正確定義并賦值,則以下符合C語言語法的表達式是()。
A.a+=a-=(b=4)*(a=3)B.x%(-3);C.a=a*3=2D.y=float(i)
64.設變量均已正確定義,若要通過
scaIIf(”%d%c%d%c”,&;al,&;el,&;a2,&;c2);
語句為變量al和a2賦數值l0和20,為變量cl和c2賦字符x和Y。以下所示的輸入形式中正確的是()。(注:口代表空格字符)
65.有以下程序(注:字符a的ASCIl碼值為97):
程序運行后的輸出結果是()。
A.789B.abeC.7890D.979899
66.
67.
68.已定義以下函數:
fun函數的返回值是()。
A.一個整數B.不確定的值C.形參P中存放的值D.形參P的地址值
69.現有以下結構體說明和變量定義,如圖所示,指針P、q、r分別指定一個鏈表中連續的3個結點。
structnode
{hardata;
structnode*next;)*P,*q,*r;
現要將q和r所指結點交換前后位置,同時要保持鏈表的結構,下列不能完成此操作的語句是()。A.q-:>next=r->next;p--:>next=r;rm:>next=q;
B.q-:>next=r;q->next=r->next;r->next=q;
C.q-:>next=r->next;r->next=q;p->next=r;
D.q-:>next=q;p->next=r;q->next=r->next;
70.以下選項中表示一個合法的常量是(說明:符號口表示空格)()。
A.9口9口9B.0XabC.123E0.2D.2.7e
71.
72.有下列程序: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);}程序執行后的輸出結果是()。A.45B.50C.60D.55
73.
74.有以下程序:
程序執行后的輸出結果是()。
A.357B.753C.369D.751
75.
76.
77.若變量a、i已正確定義,且i已正確賦值,合法的語句是()。A.A.a==1B.++iC.a=a++=5D.a=int(i)
78.
79.
80.有下列程序:
main()
{inti,j,x=0;
for(i=0,i<2;i++)
{x++;
for(j=0;j<=3;j++)
{if(j%2)continue;
x++:
}
x++:
}
printf("x=%d\n"x);
}
程序執行后的輸出結果是()。
A.x=4B.x=8C.x=6D.x=12
五、程序改錯題(1題)81.下列給定程序中,函數proc的功能是計算正整數m
各位上數字的平方和。例如,輸入498,則輸出應該是161。請修改程序中的錯誤,使它能得到正確結果。注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。試題程序:#include<stdlib.h>#include<stdio.h>#include<conio.h>longproc(10ngm){//****found****longsum=1;do{sum+=(m%10)*(m%10);m/=l0;//****found****}while(m)return(sum);}voidmain{longn;system("CLS");printf("Pleaseenteranumber:");scanf("%1d",&n);printf("\n%ld\n",proc(n));}
六、程序設計題(1題)82.請編寫一個函數proc,它的功能是:求出1~m(含m)能被7或11整除的所有整數放在數組a中,通過n返回這些數的個數。
例如,若傳給m的值為70,則程序輸出:
7111421222833354244495556636670
注意:部分源程序給出如下。
請勿改動main函數和其他函數中的任何內容,僅在函數proc的花括號中填人所編寫的若干語句。
試題程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#defineN100
voidproc(intm,int*a,int*n)
{}
voidmain
{
intarr[N],n,k;
system("CLS");
proc(70,arr,&n);
for(k=0;k<n;k++)
if((k+1)%20==0)//每行輸出20個數
{printf("%4d",arr[k]);
printf("\n");
}
else
printf("%4d",arr[k]);
printf("\n");
}
參考答案
1.BC語言中運算符有優先級和結合性。自增、自減運算符的優先級高于邏輯運算符,邏輯運算符中邏輯與“&&”的優先級比邏輯或“||”高,邏輯運算符的結合性自左向右。所以題干中表達式等價于“(a++)||((b++)&&(c++))”。運算順序為:首先執行“a++”,再執行“b++”,最后執行“C++”。故本題答案為B選項。
2.A本題考查數組和指針,*k指針是指向rn數組的首地址,所以要使表達武的值為6,只需要指針指向第m[2],所以答案選擇A。-
3.B
4.C本題中int(*ptr)的含義是指向函數的指針變量,其為指向函數的指針變量,該函數返回一個int型數據,故選擇C選項。
5.C輸出結果:k=1a=2\r\nk=2a=4\r\nk=3a=7\r\nk=4a=12
6.D程序定義結構體類型STU,main函數定義結構體STU變量b,并將b的地址賦給指針變量a。調用函數f,傳入a。在函數f中,定義了STU變量c,并將c的地址賦給d,再用d指向的值賦給a指向的地址,接著輸出a指向的值,也就是c的值:Sun,f,90。由于函數f的調用通過指針參數a修改了變量b的值,因此a指向的值也就是b的值等價于c:Sun,f,90。本題答案為D選項。
7.B解析:C語言中注釋可以放在任何位置,選項A錯誤;C語言中的變量只要在使用之前定義即可,位置可以是使用前的任何位置,故選項B正確;C語言中兩側數據類型可以不一致,系統可進行強制類型轉換,選項C錯誤;C語言數值常量中不允許存在空格,選項D錯誤。
8.B數據流圖是系統邏輯模型的圖形表示,從數據傳遞和加工的角度,來刻畫數據流從輸入到輸出的移動變化過程,它直接支持系統的功能建模。本題答案為B選項。
9.D
10.C本題重點考察二維數組名作為實參進行參數傳遞,在主函數中調用了fun函數,實參為二維數組名a和兩個整數4.0,這樣對應定義fun函數首部有三種形式,這里采用了第一種形式——行指針,這樣在fun函數對s[i][j]進行操作實際上就是對主函數中的a[i][j]進行操作,再分析fun函數的作用便可知,是求二維數組第0列中最大的那個元素。因此C選項正確。
11.BB選項的特點是順序存儲結構的特點,即數組的特點。
12.B詳細解答:
數據結構是研究數據元素及其之間的相互關系和數據運算的一門學科,它包含3個方面的內容,即數據的邏輯結構、存儲結構和數據的運算。
13.D
14.C宏定義不是C語句,末尾不需要有分號。語句“printf(“%4.1f\\n”,S(a+b));”展開后為“printf(“%4.1f\\n”,3.5;*a+b*a+b;);”,所以程序會出現語法錯誤。故本題答案為C選項。
15.A
16.A:在一個無向圖G中,若從頂點Vi到頂點Vj有路徑相連,則稱Vi和Vj是連通的。連通圖是指任意兩個結點之間都有一個路徑相連。6個節點的無向圖,至少要5個邊才能確保是任意兩個節點之間都有路徑相連。下圖是一種可能的連接方式:故本題選A。
17.A++a與a++的區別是前者先自加再運算,后者是先運算后自加。
18.B
19.A數據結構在計算機內存中的表示指的是數據的存儲結構。數據的存儲結構是指數據的邏輯結構在計算機中的表示。數據元素之間的關系有兩種不同的表示方法:順序映象和非順序映象,并由此得到兩種不同的存儲結構:順序存儲結構和鏈式存儲結構。
20.B選項A為表達式,因此不正確,選項C中a++本身就是表達式,無需再賦值,選項D中,在強制類型轉換時,類型名應用括號括起來,故選擇8選項。
21.19
22.a*b*c*da*b*c*d,解析:在insert()函數,因為題目要求輸入的字符串為abed,所以執行完“i=strlen(str);”后,i中存放的是字符串abcd的長度值4。所以接F來的while循環會循環4次,每次讓i減1,故4次循環中i的值依次為4、3、2、1。每次循環會執行兩條語句str[2*i]=str[i];str[2*i-1]='*',當i=4時為:str[8]=str[4];str[7=='*';。執行結果是將字符串abed末尾的結束符'\\0'復制到其下標值2倍的位置,并在其前1位插入—個'*'哼符。接下來i=3,執行str[6]=str[3];str[5]='*'。執行后會將字符串abcd最后一個字符,d復制到其下標值2倍的位置,并在其前1位插入一個'*'字符。依次類推,直到i=1,執行str[2]=str[1];str[1]='*',將字符tb,往后移動了1位,并在原位置插入'*'字符。所以,循環結束后,字符串str會變為a*b*c*d*。這就是程序的輸出結果。
23.2828解析:a*=16+(b++)-(++c)等價于a=a*(16+(b++)-(++c)),b++的值為3;++c的值為5,請注意前綴++和后綴++的用法。
24.9292解析:本主函數中首先定義了一個4行4列的二維數組,然后執行一個while循環,該循環中又嵌套了一個do-while循環。現看while循環,該循環通過i++的值來判斷是否結束循環當i++的值為4的時候結束循環,當i=0時,執行while的循環體,顯然if語句條件不滿足不執行,接著讓j=4,然后執行do-while循環體,我們不難看出do-while循環的功能是將笫i+1行的所有元素加起來,所以這時s的值為s=a[1][0]+a[1][1]+a[1][2]+a[1][3]26,當i=1時,i+1=2,if后面括號里的表達式的值為真執行后面的continue語句,結束該次循環;當i=2時,i加1變為3,把笫3+1行的所有元素的加到s上,此時s=s+a[2][0]+a[2][1]a[2][2]+a[2][3]=92,當i=3時,3+1=4,if后面括號里的表達式的值為真執行后面的continue語句,結束該次循環,當i=3時,if后面括號里的表達式的值為真執行后面的confulue語句,結束該次循環當i=4時while循環結束,所以最后輸出的s的值為92。
25.扇出扇出解析:在結構圖中,調用一個給定模塊的模塊個數稱為扇入,一個模塊直接調用的其他模塊個數稱為扇出。
26.測試實例測試實例解析:進行軟件測試時,應精心設計測試實例和選擇測試數據,以對系統進行全面測試。
27.310
28.11解析:本題考查局部變量和全局變量的區別:局部變量是指作甩域在函數級和塊級的變量,全局變量是指作用域在程序級和文件級的變量。
29.3232解析:二叉樹第k層上,最多有2k-1(k≥1)個結點。第6層的結點數最多是26-1=32。注意區別“二叉樹的結點最多數”和“某一層的結點最多數”。前者的計算是深度為m的二叉樹最多有2m-1個結點。
30.void(*p)();void(*p)();解析:要定義p為指向函數的指針變量,需寫成void(*p)();,注意*p兩側的括弧不可以省略,表示P先與*結合,是指針變量,再與后面的()結合,表示此指針變量指向函數,這個函數無返回值(同fun()函數)。
31.軟件危機的出現軟件危機的出現
32.s[j++]=s[i]s[j++]=s[i]解析:循環開始后如果數組s中儲存值與字符c相同,則i++直接跳過當前值;如果不相同,則將當前值賦予數組指定位置,并通過.j++將下標加1,指向下一元素要存儲的位置。
33.操作系統操作系統解析:數據庫管理系統是幫助用戶創建和管理數據庫的應用程序的集合。因此,數據庫管理系統需要操作系統的支持,為用戶提供服務。
34.
35.x=11x=11解析:在對無符號數的右移是高位補0。
36.程序調試程序調試解析:程序調試的任務是診斷和改正程序中的錯誤。程序調試與軟件測試不同,軟件測試是盡可能多地發現軟件中的錯誤。先要發現軟件的錯誤,然后借助于調試工具找出軟件錯誤的具體位置。軟件測試貫穿整個軟件生命期,而調試主要在開發階段。
37.前件前件
38.(x%i==0)(x%i==0)解析:為判數x是否是素數,預置變量y的值為1(x可能是素數),然后用2至x/2的整數i測試對x的整除性,若x能被其中的某個整數整除,則x是合數,置y的值為0(即x不是素數),結束循環測試;若循環中i都不能整除x,則x為素數。一般可用求余運算x%i是否等于0來判定i能否整除x,所以程序中的空格處可填(x%i==0)。
39.bcdefgha
40.doublemaxdoublemax解析:本題考查函數的聲明。C語言中函數聲明的一般形式為:
(1)函數類型函數名(參數類型1,參數類型2,…)
(2)函數類型函數名(參數類型1參數名1,參數類型2參數名2,…)
題目中函數類型是double。函數名是max。故答案是doublemax。
41.A解析:本題首先以創建方式打開文件“d1.dar”,兩次調用fprintf()把i和j的值寫到文件“d1.dat”中,文件“d1.dar的內容為20〈回車〉30〈回車〉后把該文件關閉再以讀的方式打開,文件位置指針指向文件頭,在通過fscard()函數從中讀取兩個整數到k和n中,由于格式符無間隔,因此輸入數據可以用回車隔開,故輸入的k值為20,n的值為30。
42.A解析:本題考查默認函數的函數值的類型。在函數定義時,由于函數沒有說明其類型,系統默認一律自動按整型處理,因此,函數的類型為int類型。
43.C解析:算法的時間復雜度實際上就是執行算法程序所需要的計算工作量。為了客觀地反映算法性能,在度量算法的時間復雜度時,應該與編寫算法程序所使用的程序設計語言、執行算法程序時所使用的計算的工具以及程序員的水平無關。選項A錯誤,因為同一算法程序在運行速度不同的計算機上運行時,其計算時間是不同的。選項B錯誤,因為算法所編寫的程序長度往往與程序設計語言以及程序員的水平有關,同一個算法,用不同的程序設計語言或者不同的程序員所編寫出的程序其長度可能會大不相同。選項D錯誤,因為根據一個算法所編制出的程序之中,其指令條數往往與程序設計語言以及程序員的水平有關,不能用算法程序中的指令條數來度量算法的時間復雜度。所以,本題正確答案為C。
44.C解析:本題a[2][3]定義為一個具有兩面行三列的元素的數組,malloc()函數的作用是開辟了一個長度為sizeof(int)的內存區,p為指向整型數據的指針變量,程序調用fut()函數,將第一行第一列對應的元素值賦給**s,由于數組中第一行第一列對應的元素為9,所以本題輸出值9。
45.C解析:C語言中,實參變量和形參變量之間的數據傳遞是單向的“值傳遞”方式。指針變量作函數參也要遵循這一規則,調用函數不可能改變實參指針變量的值,但可以改變實參指針變量所指變量的值。
46.C解析:指針變量是用來存放地址的。&:取地址運算符。*:指針運算符。**c為指針變量*c所指向的存儲單元,*c為指針指針變量c所指向的存儲單元,而c=&b表示c為變量b的地址,b=&a表示b為變量a的地址。表邊式**c的值就是變量a中的值。
47.D解析:本題考查靜態變量的使用方法和for循環。在函數調用時,static變量在函數調用結束后所作的所有變化均不保持,所以當i=1時,第2次進入f函數時c=5,所以最終main函數中c的值為5。
48.B解析:數據元素的存儲位置均取決于第一個數據元素的存儲位置,即:
LOC(aj)=LOC(a)1+(i-1)C
↑↑
基地址一個數據元素所占的字節數
所以第5個元素的地址=100+2×(5-1)=108。
49.B解析:本程序首先定義了靜態字符數組a,然后將指針p指向數組a的首地址。
第1次for循環,p=a,p指向數組的第1個元素,*p是取指針p所指地址的內容,輸出1;第2次for循環,p=p+2,則p指向數組的第3個元素,*p是取指針p所指地址的內容,輸出n;第3次for循環,p=p+2,則p指向數組的第5個元素,*p是取指針p所指地址的內容,輸出u;第4次for循環,p=p+2,則p指向數組的第7個元素,*p是取指針p所指地址的內容,輸出g,結束循環。
50.B解析:用scanf函數輸入多個數據時,數據間的分隔符可以是空格、回車符或制表符,本題中選項A、C和D的輸入方法都是正確的。因scanf函數中的控制字符中沒有非格式字符“,”,因此選項B中以“,”作為分隔符是錯誤的。
51.B解析:視圖設汁一般有3種設計次序,它們分別是自頂向下、自底向上和由內
向外,它們又為視圖設計提供了具體的操作方法,設計者可根據實際情況靈活掌握,可以
單獨使用也可混合使用。
注意:數據庫概念設計的過程:首先選擇局部應用,再進行局部視圖設計,最后
對局部視圖進行集成得到概念模式。
52.B
53.B解析:本題考查文件使用方式標識符。方式“wb”為輸出打開一個二進制文件;方式“wb+”為讀寫建立一個新的二進制文件;方式“rb+”為讀寫打開一個二進制文件:方式“rb”為輸入打開一個二進制文件。
54.B解析:主函數中定義了一個字符數組s并賦初值,一個字符串指針變量ps并讓它指向s。程序中p+4的地址為數組第5個元素的地址,而調用put(stradr)函數時,將從stradr這一地址開始,依次輸出存儲單元中的字符,遇到第一個“\\0”時結束輸出,并自動輸出一個換行符ad。r所以put(p+4)將輸出n/No,put(s)將從s第一個元素開始輸出到第3個元素結束(因為執行*(p+4)=0語句后s中的第5個元素的值為0,而s中的第4個元素為“\\”,puts將遇到“\\0”,結束輸出),即輸出yes。所以,4個選項中選項B符合題意。
55.D解析:數據庫中的關系模型是采用二維表來表示實體與實體之間的聯系。
56.D解析:本題考查軟件工程中軟件設計的概念和原理。人們在開發計算機軟件的長期實踐中積累了豐富的經驗,總結這些經驗得到如下的啟發式規則:
(1)改進軟件結構,提高模塊獨立性;通過模塊的分解或合并,力求降低耦合提高內聚。低耦合也就是降低不同模塊間相互依賴的緊密程度,高內聚是提高一個模塊內各元素彼此結合的緊密程度。
(2)模塊的規模應適中。一個模塊的規模不應過大,過大的模塊往往是由于分解不夠充分:過小的模塊開銷大于有益操作,而且模塊過多將使系統接口復雜。因此過小的模塊有時不值得單獨存在。
(3)模塊的功能應該可以預測,但也要防止模塊功能過分局限。如果模塊包含的功能太多,則不能體現模塊化設計的特點:如果模塊的功能過分的局限,使用范圍就過分狹窄。
經過上述分析,本題的正確答案是選項D。
57.D解析:本題考查自增運算符“++”、邏輯與運算符“&&”和邏輯或運算符“‖”。自增運算符“++”,出現在變量之前(如題中的++n),表示先使變量的值加1,再使用變量的值進行運算;出現在變量之后(如題中的n++),表示先使用變量的值進行運算,再使變量的值加1。當邏輯與運算符'&&'兩邊的運算對象都為真時,邏輯表達式的值才為真;當邏輯或運算符'‖'左邊的運算對象為真時,其值就為真,不用計算其右邊的運算對象的值。所以根據運算符的優先級,題中應先計算內層括號中的值。++j是先自加后運算,因此運算時,i的值等于3,所以表達式++j==3成立,即表達式的值為¨由于1與任何數都為進行或(‖)運算,結果都為1,因此k=3;最后計算“&&”之前的表達式,i++是先運算后自加,因此運算時i為1,所以i+==1成立,自加1后i=2。if語句的條件為真即'1',所以輸出i、j、k的值分別是2,3,3。
58.C解析:本題的選項A)和B)犯了一個同樣的錯誤,即指針變量s定義后并沒有指向具體的變量。也就是說,s中沒有確定的地址值,它的值是不可預見的,所指向的單元也是不可預見的,因此不能進行賦值操作。另外,在選項D)中,s是int型指針變量,p是char型指針變量,指向的內存單元所占用的字節數是不同的,因而不能將字符指針變量p的值賦給整型指針變量s。
59.C本題考查while,while循環表達式k-1是個賦值表達式而不是邏輯表達式,k的初值為l2不符合循環條件,所以循環體語句一次也不執行。
60.C解析:在計算(float)(a+b)/2時,由于通過強制類型轉換將(a+b)轉換成了float型,所以應先將2轉換成float型,再進行計算,得4.500000。
在計算(int)x%(int)y時,先將x和y通過強制類型轉換成int型,再進行求余運算,得1。
又因為4.500000是float型,所以將1和它相加時,先將1換成float型,再計算,得到5.500000。
注意:類型轉換的一般規則是:低級類型服從高級類型,并進行相應的轉換。數據類型的級別由低到高的排序表示為:char→int→unsigned→long→float→double。
61.Bc語言中,switch語句專用于實現多分支結構程序,其特點是各分支清晰且直觀。switch后面括號中可以是任何表達式,取其整數部分與各常量表達式進行比較。常量表達式中不能出現變量,且類型必須是整型、字符型或枚舉型,各常量表達式各不相同。
62.C系統結構圖是對軟件系統結構的總體設計的圖形顯示。在需求分析階段。已經從系統開發的角度出發,把系統按功能逐次分割成層次結構,是在概要設計階段用到的。PAD圖是在詳細設計階段用到的。程序流程圖是對程序流程的圖形表示,在詳細設計過程中用到。數據流圖(DFD圖)是結構化分析方法中使用的工具,它以圖形的方式描繪數據在系統中流動和處理的過程,由于它只反映系統必須完成的邏輯功能,因此它是一種功能模型,是在可行性研究階段用到的而非軟件設計時用到,所以本題答案為C)。
63.A取余運算符%兩邊都應是正數,賦值語句左邊必須是變量,不能是表達式,強制轉換語句強制類型應加括號,而非加在變量上。
64.C輸入數據的格式必須與scanf()的格式控制串完全匹配,如果A、B、Cc選項中在數字l0后面均輸入了空格,則會將空格賦給變量cl,而不是把x賦給cl,所以選擇C選項。
65.A因為小寫字符a,b,c的ASCIl碼值分別為97,98,99,而在dowhile循環語句中,每次對字符的ASCII碼值取余數并輸出,所以分別輸出7,8,9。
66.A
67.D
68.A返回值為指針變量指向的數據,該數據已被定義為整型。因此A選項正確。
69.D由題目中線性鏈表的定義可知,要將q和r所指的結點交換前后位置,只要使q指向r的后一個結點,P指向r結點,r指向q結點即可。而在選項D中,r->next=q,這時r指向的節點為q;p->next=r,這時P指向的節點為r;q->next:r->next,因為r節點已經指向q,所以執行這個語句后q又指向q,所以選項D不正確。
70.B當用指數形式表示浮點數據時,E的前后都要有數據,并且E的后面數要為整數。
71.C
72.C在函數intfun(intx[],intn)的定義中,變量sum為一個靜態局部變量。由于在整個程序運行期間,靜態局部變量在內存中的靜態存儲中占據著永久的存儲單元。函數intfun(intx[],intn)的功能是求出數組x[]各個元素的和,所以在主函數中,調用函數fun(a,5)后,變量sum=1+2+3+4+5=15,當再次調用fun(b,4)后,變量sum=15+6+7+8+9=45,所以s=15+45=60。
73.A
74.A本題考查的是for循環與二維數組的定義和引用。當定義二維數組的初始化列表只使用一重花括號時,其中的每個值依次代表從第l行的第1個元素起,直到第l行滿,接著代表第2行、第3行……的每一個元素。程序中的循環將循環3次,循環變量i的值分別是0、1、2,所以3次循環中輸出的數分別是:t[2一O][D]、t[2-1][1]、t[2~2]121,即t[2][0]、t[1][l]、t[0][2],所以最后輸出的結果為357。故應該選擇A)。
75.D
76.D
77.B本題主要考查C語言合法語句的定義。
在選項A中,a==1不是一個合法的語句,因為它沒有語句結束標識符“;”,不能說是一條語句,如果作為一個表達式,它是正確的。
在選項B中,由于變量i已被正確定義并有初值,“++i;”是正確的語句。
在選項C中,由于正確的賦值語句中,賦值符號的左邊不能為常量或表達式,而右邊不能為變量或表達式,很明顯,“a=a++=5;”違背了賦值語句的原則。
在選項D中,“a=int(i);”語句是不正確的,在C語言中沒有這種表示形式,如果是想將變量i強制轉換為整型的操作,應該為“a=(int)i;”。
78.B
79.C
80.B\n在第1次外層for循環中,首先x++得到x=1。進入到內層for循環,只有循環j的值為奇數時,變量x的值才自加1,所以在內層for循環執行過程中,變量x的值自加兩次,當退出內層for循環時,x=3,然后執行x++,得到x=4。在進入執行第2次外層for循環中,首先x++得到x=5。進入到內層for循環,只有循環變量J的值為奇數時,變量X的值才自加1,所以在內層for循環執行過程中,變量X的值自加l兩次,當退出內層for循環時,x=7,然后執行x++,得到x=8,所以打印輸出變量x的值為8。
\n
81.\n\t(1)錯誤:longsum=1;
\n正確:longsum=0;
\n(2)錯誤:while(m)
\n正確:while(m);
\n【解析】由函數proc可知,變量sum中存放正整數m的各位上數字的平方和,其初始化為0。因此,“longsum=1;”應改為“longsum=0;”。按照C語言的語法規則,語句都以分號結束,應在do-while語句最后加上分號。因此,“while(m)”應改為“while(m);”。\n
82.\n\tvoidproc(intm,int*a,int*n)
\n{
\ninti,j=0;
\nfor(i=1;i<=m;i++)//進行m次循環
\nif(i%7==0||i%11==0)//能被7或11整除的所有整數
\na[j++]=i;//符合條件的數放在數組a中
\n*n=j;//返回這些數的個數
\n}
\n【解析】本題需要先判斷1~m每一個整數能否被7或11整除,然后將符合條件的整數放在數組a中,最后將符合條件的數的個數通過形參n返回主函數。\n2021年河南省三門峽市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.若有定義“inta=0,b=1,c=1;”,關于邏輯表達式“a++||b++&&c++”中各個部分的執行順序,以下說法正確的是()。
A.先執行“b++”,再執行“c++”,最后執行“a++”
B.先執行“a++”,再執行“b++”,最后執行“c++”
C.先執行“c++”,再執行“b++”,最后執行“a++”
D.先執行“b++”,再執行“a++”,最后執行“c++”
2.設有如下定義語句:intm[]={2,4,6,8,10},*k=m;以下選項中,表達式的值為6的是()。
A.*(k+2)B.k+2C.*k+2D.*k+=2
3.
4.設有如下定義:int(*ptr);則以下敘述中正確的是()。
A.ptr是指向一維組數的指針變量
B.ptr是指向int型數據的指針變量
C.ptr是指向函數的指針,該函數返回一個int型數據
D.ptr是一個函數名,該函數的返回值是指int型數據的指針
5.有以下程序:#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);}程序運行后的輸出結果是()。A.k=6a=11B.k=3a=14C.k=4a=12D.k=5a=15
6.有下列程序:程序執行后的輸出結果是()。A.Zhao,m,85,Zhao,m,85
B.Sun,f,90,Zhao,m,85
C.Zhao,m,85,Sun,f,90
D.Sun,f,90,Sun,f,90
7.以下關于C語言的敘述中正確的是()。
A.C語言中的注釋不可以夾在變量名或關鍵字的中間
B.C語言中的變量可以在使用之前的任何位置進行定義
C.在C語言算術表達式的書寫中,運算符兩側的運算數類型必須一致
D.C語言的數值常量中夾帶空格不影響常量值的正確表示
8.數據流圖(DFD)的作用是()。
A.描述軟件系統的控制流B.支持軟件系統的功能建模C.支持軟件系統的面向對象分析D.描述軟件系統的數據結構
9.設有100個元素,用折半查找法進行查找時,最大比較次數是_____。
A.25B.50C.10D.7
10.有以下程序:
程序運行后的輸出結果是()。
A.4B.34C.31D.32
11.鏈表不具有的特點是()。
A.插入、刪除不需要移動元素B.可隨機訪問任一元素C.不必事先估計存儲空間D.所需空間與線性長度成正比
12.數據結構主要研究的是數據的邏輯結構、數據的運算和()。A.數據的方法B.數據的存儲結構C.數據的對象D.數據的邏輯存儲
13.如有inta=11;則表達式(a/1)的值是()。
A.0B.3C.4D.11
14.有以下程序:#include<stdio.h>#definePT3.5;#defineS(x)PT*x*x;main(){inta=1,b=2;printf(“%4.1f\n”,S(a+b));}程序的運行結果是()。
A.7.5B.31.5C.程序有錯,無輸出結果D.14.0
15.設有定義:inta,*pa=&a;以下scanf語句中能正確為變量a讀入數據的是()
A.scanf(“%d”,pa);
B.scanf(“%d”,a);
C.scanf(“%d”,&pa);
D.scanf(“%d”,*pa);
16.設有6個結點的無向圖,該圖至少應有()條邊才能確保是一個連通圖。
A.5B.6C.7D.8
17.有以下程序:main{chara=a,b;printf("%c,",++a);printf("%c\n",b=a++):)程序運行后的輸出結果是()。A.b,bB.b,cC.a,bD.a,c
18.算法是指為解決某個特定問題而采取的確定且有限的步驟,下面不屬于算法的五個特性的是A.A.有零個輸入或多個輸入B.高效性C.有窮性D.確定性
19.數據結構在計算機內存中的表示是指()。A.數據的存儲結構B.數據結構C.數據的邏輯結構D.數據元素之間的關系
20.若變量a、i已正確定義,且i已正確賦值,合法的語句是()。
A.a==lB.++iC.a=a++=5D.a=int(i)
二、2.填空題(20題)21.某二叉樹中度為2的節點有18個,則該二叉樹中有()個葉子節點。
22.當運行以下程序時,輸入abed,程序的輸出結果是:【】。
insert(charstr[])
{inti
i=strlen(str);
while(i>0)
{str[2*i]=str[i];str[2*-1]='*';i--;}
printf("%s\n",str);
}
main()
{charstr[40];
scanf("%s",sB);insert(str);
}
23.以下程序段的輸出結果是【】。
main()
{inta=2,b=3,c=4;
a*=16+(b++)-(++c);
printf("%d",a);
}
24.以下程序運行后的輸出結果是______。
main()
{
inta[4]]4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};
inti=0.j=0,s=0;
while(i++<4}
if(i==2||i==4)continue;
j=0;
do
{
s+=a[i][j]:
j++;
}while(j<4);
}
printf("%d\n",s);
}
voidfun(intx,inty)
}
25.一個模塊直接調用的其他模塊的模塊個數稱為______。
26.軟件測試是保證軟件質量的重要手段,而軟件測試的主要和重要的測試方法是通過測試數據和【】的設計來實現。
27.若有如下程序:
voidsub()
{staticintx=6;
x/=2;printf("%d",x);}
main()
{intm;
for(m=0;m<=2;m++)sub();}
則程序運行后的輸出結果是【】。
28.下面程序輸出的結果是()。intm=17;intfun(intx,inty){intm=3;return(x*y-m);}main(){inta=5,b=7;printf("%d\n”,fun(a,B)/m);}
29.一棵二叉樹第6層(根結點為第一層)的結點最多為______個。
30.以下程序通過函數指針p調用函數fun,請在填空欄內寫出定義變量p的語句。
voidfun(int*x,int*y)
{……}
main()
{inta=10,b=20;
【】:
p=fun;p(&a,&b);
……
}
31.軟件工程的出現是由于【】。
32.下列程序的功能是將字符串s中所有的字符c刪除。請填空。
#include<stdio.h>
main()
{chars[80];
inti,j;
gets(S);
for(i=j0;s[i]!'\0';i++)
if(s[i]!='c')______;
s[j]='\0;
puts(S);
}
33.數據庫管理系統是位于用戶與______之間的軟件系統。
34.以下程序的功能是從名為filea.dat的文本文件中逐個讀入字符并顯示在屏幕上。請填空。
majn()
{FILE*fp;charch;
fp=fopen(______);
ch=fgetc(fp);
whle(!feof(fp)){putchar(ch);ch=f8etc(fp);}
putchar('\n');fclose(fp);
}
35.下面程序的運行結果是【】。
main()
{unsigneda=0112,x;
x=a>>3;
printf("x=%o",x);
}
36.診斷和改正程序中錯誤的工作通常稱為【】。
37.在樹形結構中,樹根結點沒有______。
38.下列程序的功能是輸入一個整數,判斷其是否是素數,若為素數則輸出1,否則輸出0。請填空。
#include<stdio.h>
main()
{inti,x,y=1;
scanf("%d",&x);
for(i=2;i<=x/2;i++)
if【】{y=0;break;}
printf("%d\n",y);
}
39.以下程序運行后的輸出結果是()。
#include
char*ss(char*s)
{char*p,t;
P=s+1;t=*s;
while(*p){*(P-1)=*P;P++;}
*(P-1)=t;
returns;
}
main()
{char*p,str[10]="abcdefgh";
p=ss(str);
printf("%s\n",p);
}
40.請在以下程序第一行的下劃線處填寫適當內容,使程序能正確運行。
【】(double,double);
main()
{doublex,y;
scanf("%lf%lf",&x,&y);
printf("%1f\n",max(x,y));
}
doublemax(doublea,doubleb)
{return(a>b?a:b);}
三、1.選擇題(20題)41.有以下程序#include<stdio.h>main(){FILE*fp;inti=20,j=30,k,n;fp=fopen(“d1.dat”,“w”);fprintf(fp,“%d\n”,i);fprintf(fp,“%d\n”,j);fclose(fp);fp=fopen(“d1.dat”,“r”);fscanf(fp,“%d%d”,&k,&n);printf(“%d%d\n”,k,n);fclose(fp);}程序運行后的輸出結果是
A.2030B.2050C.3050D.3020
42.在執行完下列的C語句段之后,則B的值是()。Chara="A";intb;B=((34&&56)&&(a<'b'));
A.int類型B.float類型C.void類型D.函數無類型說明,定義有錯
43.算法的時間復雜度是指______。
A.執行算法程序所需要的時間B.算法程序的長度C.算法執行過程中所需要的基本運算次數D.算法程序中的指令條數
44.下面程序運行后的輸出結果是______。fut(int,*s,intP[2][3]){**s=p[1][1];}main(){inta[2][3]={1,3,5,7,9,11},*p;p=(int*)malloc(sizeof(int));fut(&p,a);printf("%d\n",*p);}
A.1B.7C.9D.11
45.以下程序中函數sort的功能是對a數組中的數據進行由大到小的排序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(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(&aa[3],5);for(i=0;i<10;i++)printf("%d,",aa[i]);printf("\n");}程序運行后的輸出結果是
A.1,2,3,4,5,6,7,8,9,10,
B.10,9,8,7,6,5,4,3,2,1,
C.1,2,3,8,7,6,5,4,9,10,
D.1,2,10,9,8,7,6,5,4,3,
46.有以下程序段:main(){inta=5,*b,**c;c=&b;b=&a;}程序在執行了c=&b;b=&a;語句后,表達式**c的值是______。
A.變量a的地址B.變量b中的地址C.變量a中的值D.變量b的地址
47.下列程序的輸出結果是()。#include<stdio.h>f(intA){intb=0;staticintc=4;a=c++;b++;return(A);}main(){inta=2,i,c;for(i=0;i<2;i++)c=f(a++);printf("%d\n",C);}
A.4B.7C.6D.5
48.一個數據元素第一個元素的存儲地址是100,每個元素的長度為2,則第5個元素的地址是()。
A.110B.108C.100D.120
49.下列程序段的輸出結果為()。#include<stdio.h>main(){staticchara[]="language";char*p;p=a;for(p=a;p<a+8;p+=2)putchar(*p);}
A.languageB.lnugC.有語法錯誤D.lang
50.若變量已正確說明為float類型,要通過語句scanf("%f%f%f",&a,&b,&c);給a賦于19.0,b賦予22.0,c賦予33.0,不正確的輸入形式是______。
A.10<回車>22<回車>33<回車>
B.19.0,22.0,33.0<回車>
C.19.0<回車>22.033.0<同車>
D.1022<回車>33<回車>
51.視圖設計一般有3種設計次序,下列不屬于視圖設計的是______。
A.自頂向下B.由外向內C.由內向外D.自底向上
52.已知一個文件中存放若干工人檔案記錄,其數據結構如下:structa{charnumber[100];intage;floatp[6];};定義一個數組:structanumber[10];假定文件已正確打開,不能正確地從文件中讀入10名工人數據到數組b中的是()。
A.fread(b,sizeof(structA),10,fp);
B.for(i=0;i<10;i++)fread(b[i],sizeof(structA),1,fp);
C.for(i=0;i<10;i++)fread(b+i,sizeof(structA),1,fp);
D.for(i=0;i<5;i+=2)fread(b+i,sezeof(structA),2,fp);
53.若要用函數fopen打開一個新的二進制文件,該文件要既能讀也能寫,則應以哪種方式打開文件()。
A.wbB.wb+C.rb+D.rb
54.有以下程序:main(){chars[]="Yes\n/No",*ps=s;puts(ps+4);*(ps+4)=0;puts(s);}程序運行后的輸出結果是(選項D中的第一行是空行)()。
A.n/NoYes/NoB./NoYesC./NoYes/NoD./NoYes
55.在關系數據庫中,用來表示實體之間聯系的是
A.樹形結構B.網狀結構C.線性表D.二維表
56.在結構化程序設計中,模塊劃分的原則是()。
A.各模塊應包括盡量多的功能
B.各模塊的規模應盡量大
C.各模塊之間的聯系應盡量緊密
D.模塊內具有高內聚度,模塊間具有低耦合度
57.下列程序的輸出結果是()。
main()
{inti=1,j=2,k=3;
if(i++==1&&(++j=3‖k++==3))printf("%d%d%d\n",i,j,k);
}
A.123B.234C.223D.233
58.請選出下面正確的程序段()。
A.int*s;scanf("%d",s);┆
B.int*s,k;*s=100;┆
C.int*s,k;char*p,c;s=&k;p=&c;*p='a';┆
D.int*s,k;char*p,c;s=&k;p=&c;s=p;*s=1;┆
59.設有程序段:intk=12:while(k=1)k=k-1:則下列描述中正確的是()。
A.while循環執行10次B.循環是無限循環C.循環體語句一次也不執行D.循環體語句執行一次
60.若有定義:inta=4,b=5;floatx=3.4,y=2.1;,則下列表達式的值為()。(float)(a+B)/2+(int)x%(int)y
A.5.5B.55C.5.5D.55
四、選擇題(20題)61.若有定義floatX=1.5;inta=1,b=3,C=2;,則正確的switch語句是()。
A.
B.
C.
D.
62.在軟件設計中不使用的工具是()。A.系統結構圖B.PAD圖C.數據流圖D.程序流程圖
63.若變量a、b、x、i都已正確定義并賦值,則以下符合C語言語法的表達式是()。
A.a+=a-=(b=4)*(a=3)B.x%(-3);C.a=a*3=2D.y=float(i)
64.設變量均已正確定義,若要通過
scaIIf(”%d%c%d%c”,&;al,&;el,&;a2,&;c2);
語句為變量al和a2賦數值l0和20,為變量cl和c2賦字符x和Y。以下所示的輸入形式中正確的是()。(注:口代表空格字符)
65.有以下程序(注:字符a的ASCIl碼值為97):
程序運行后的輸出結果是()。
A.789B.abeC.7890D.979899
66.
67.
68.已定義以下函數:
fun函數的返回值是()。
A.一個整數B.不確定的值C.形參P中存放的值D.形參P的地址值
69.現有以下結構體說明和變量定義,如圖所示,指針P、q、r分別指定一個鏈表中連續的3個結點。
structnode
{hardata;
structnode*next;)*P,*q,*r;
現要將q和r所指結
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江蘇省常熟市重點名校2024-2025學年初三一診模擬數學試題含解析
- 忻州市保德縣2025屆三年級數學第二學期期末調研試題含解析
- 西安財經大學《中國古代文學作品選與中學語文(三)》2023-2024學年第一學期期末試卷
- 湖南醫藥學院《檢測儀表與過程控制》2023-2024學年第二學期期末試卷
- 萬科物業保潔培訓計劃
- 湛江市高三測試題(一)文綜地理試卷
- 化學產品開發流程的8個關鍵步驟
- 化學實驗室原始記錄規范
- 2025版權轉讓協議合同范本
- 雙腎囊腫護理查房
- 醫院廉潔行醫廉政教育專題課件
- 醫務人員職業健康安全健康-課件
- 安全組織機構圖
- 舊石器時代考古-基礎知識課件
- 江蘇省建設工程現場安全文明施工措施費計價管理辦法
- 病區藥品規范化管理與問題對策黃池桃
- 螺紋塞規操作規程
- 2023年北京天文館招聘筆試備考題庫及答案解析
- 應急救援隊伍單兵體能訓練項目要求
- 車輛辦理ETC委托書范文
- 成都市重污染天氣應急預案(2020年修訂)
評論
0/150
提交評論