




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2022-2023年貴州省安順市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.
2.
3.有以下程序段intj;floaty;charname[50];scanf("%2d%f%s",&i,&y,name);當執(zhí)行上述程序段,從鍵盤上輸入555667777abc后,y的值為()。A.55566.0B.566.0C.7777.0D.566777.0
4.有以下程序:程序運行后的輸出結果是()。A.13442B.13431C.01234D.02431
5.以下敘述中正確的是A.A.C程序中的注釋只能出現(xiàn)在程序的開始位置和語句的后面
B.C程序書寫格式嚴格,要求一行內只能寫一個語句
C.C程序書寫格式自由,一個語句可以寫在多行上
D.用C語言編寫的程序只能放在一個程序文件中
6.數(shù)據(jù)庫是______的集合,它具有統(tǒng)一的結構形式并存放于統(tǒng)一的存儲介質內,可被各個應用程序所共享。
A.視圖B.消息C.數(shù)據(jù)D.關系
7.以下程序的輸出結果是()main(){staticchara[10]={"Chinese"};printf("%d",strlen(a));}
A.7B.2C.9D.10
8.有以下程序:#include<stdio.h>main(){FILE*fp;inta[10]={1,2,3},i,n;fp=fopen(“d1.dat”,“w”);for(i=0;i<3;i++)fprintf(fp,“%d”,a[i]);fprintf(fp,“\n”);fclose(fp);fp=fopen(“d1.dat”,“r”);fscanf(fp,“%d”,&n);fclose(fp);printf(“%d\n”,n);}程序的運行結果是()。
A.321B.12300C.1D.123
9.
10.在學生管理的關系數(shù)據(jù)庫中,存取一個學生信息的數(shù)據(jù)單位是()。
A.文件B.數(shù)據(jù)庫C.字段D.記錄
11.下列程序的運行結果為()。#include<stdio.h>main{structdate{intyear,month,day;}today;printf("%d\n",sizeof(structdate));}A.8B.6C.10D.12
12.下列敘述中正確的是:()A.C語言程序中,main()函數(shù)必須在其它函數(shù)之前,函數(shù)內可以嵌套定義函數(shù)
B.C語言程序中,main()函數(shù)的位置沒有限制,函數(shù)內不可以嵌套定義函數(shù)
C.C語言程序中,main()函數(shù)必須在其它函數(shù)之前,函數(shù)內不可以嵌套定義函數(shù)
D.C語言程序中,main()函數(shù)必須在其它函數(shù)之后,函數(shù)內可以嵌套定義函數(shù)
13.若有以下程序
則程序的輸出結果是
A.3B.7C.6D.10
14.以下敘述中不正確的是
A.預處理命令行都必須以#號開始
B.在程序中凡是以#號開始的語句行都是預處理命令行
C.宏替換不占用運行時間,只占編譯時間
D.在以下定義是正確的:#definePI3.1415926;
15.以下有關宏替換的敘述不正確的是()。
A.雙引號中出現(xiàn)的宏名不替換B.使用宏定義可以嵌套C.宏定義儀儀是符號替換D.宏名必須用大寫字母表示
16.有以下程序:#include<stdio.h>#include<string.h>main(){charv[4][10]={“efg”,“abcd”,“mnopq”,“hijkl”},*p[4],*t;inti,j;for(i=0;i<4;i++)p[i]=v[i];for(i=0;i<3;i++) for(j=i+1;j<4;j++) if(strcmp(p[i],p[j])>0) {t=p[i];p[i]=p[j];p[j]=t}for(i=0;i<4;i++) printf(“%s”,p[i]);}程序運行后的輸出結果是()。
A.efgabcdhijklmnopq
B.abcdefghijklmnopq
C.mnopqhijklefgabcd
D.efgabcdmnopqhijkl
17.若運行以下程序時,從鍵盤輸入ADescriptor<CR>(<CR>表示回車),則下面程序的運行結果是
#include<stdio.h>
main()
{charc;
intv0=1,v1=0,v2=0;
do{switch(c=getchar())
{case′a′:case′A′:
case′e′:case′E′:
case′i′:case′I′:
case′o′:case′O′:
case′u′:case′U′:v1+=1;
default:v0+=1;v2+=1;}}while(c!='\n');
printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);}
A.v0=7,v1=4,v2=7
B.v0=8,v1=4,v2=8
C.v0=11,v1=4,v2=11
D.v0=13,v1=4,v2=12
18.以下程序的輸出結果是()。main{charch[3][4]={"123","456","78"),*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++)printf("%s",p[i]);}A.123456780B.123456780C.12345678D.147
19.在一個具有n個結點的有序單鏈表中插入一個新結點并仍然保持有序的時間復雜度是()。
A.O(1)B.O(n)C.O(n2)D.O(nlog2n)
20.下列敘述中正確的是______。
A.線性表是線性結構B.棧與隊列是非線性結構C.線性列表是非線性性結構D.二叉樹是線性結構
二、2.填空題(20題)21.順序存儲方法是把邏輯上相鄰的結點存儲在物理位置______的存儲單元中。
22.以下程序運行后的輸出結果是【】。
main()
{inti,m=0,n=0,k=0;
for(i=9;i<=11;i++)
switch(i/10)
{case0:m++;n++;break;
case1:n++;break;
default:k++;n++;
}
printf("%d%d%d\n",m,n,k);
}
23.若fp已正確定義為一個文件指針,d1.dat為二進制文件,請?zhí)羁眨员銥椤白x”而打開此文件:
fp=fopen(【】);。
24.下面程序由兩個源程序文件:t4.h和t4.c組成,程序編譯運行的結果是:【】。
t4.h的源程序為:
#defineN10
#dennef2(x)(x*N)
t4.c的源程序為:
#include<stdio.h>
#defineM8
#definef(x)((x)*M)
#include"t4.h"
#main()
{inti,j;
i=f(1+1);j=f2(1+1);
printf(%d%d\n",i,j);
}
25.下列程序的輸出結果【】。
#definePR(ar)printf("ar=%d",ar)
main()
{intj,a[]={1,3,5,7,9,1l,13,1},*p=a+5;
for(j=3;j;j--)
switch(j)
{case1:
case2:PR(*p++);break;
case3:PR(*(--p));}}
26.數(shù)據(jù)結構分為邏輯結構與存儲結構,線性鏈表屬于【】。
27.以下程序的功能是求下列算式中A、B、C的值,請?zhí)羁铡?/p>
#include<stdio.h>
main()
{inta,b,c,k,t=348;
for(a=0;a<10;a++)
for(b=0;b<10;b++)
for(c=0;【】;c++)
{k=【】;
if(k==t)
printf("A=%dB=%dC=%d\n",a,b,c);
}
}
28.以下程序的輸出結果是【】。
main()
{char*p[]={"BOOL","OPK","H","SP"};
inti;
for(i=3,i>=0;i--,i--)printf("%c",*p[i]);
printf("\n");
}
29.下列程序的輸出結果是【】。
main()
{
inta[]={2,4,6},*ptr=&a[0],x=8,y,z;
for(y=0;y<3;y++)
z=(*(ptr+y)<x)?*(ptr+y):x;
printf("%d\n",z);
}
30.下面rotate函數(shù)的功能是:將n行n列的矩陣A轉置未AT,例如:
請?zhí)羁?/p>
#defineN4
voidrotate(inta[][])
{inti,j,t;
for(i=0;i<N;i++)
for(j=0;【】;j++)
{t=a[i][j];【】;a[j][i]=t;}
}
31.以下程序運行后的輸出結果是______。
#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);
}
32.下面程序的運行結果是______。
#include<stdio.h>
main()
{inty,a;
y=2,a=1;
while(y--!=-1)
{do{a*=y;a++;}while(y--);}
printf("%d,%d",a,y);}
33.若有如下結構體說明:
structSTRU
{inta,b;charc:doubled;
stmctSTRU*p1,*p2;
};
請?zhí)羁眨酝瓿蓪數(shù)組的定義,t數(shù)組的每個元素為該結構體類型。【】t[20]
34.設在主函數(shù)中有以下定義和函數(shù)調用語句,且fun函數(shù)為void類型,請寫出fun函數(shù)的首部【】。要求形參名為b。
main()
{doubles[10][22];
intn;
┆
fun(s);
┆
}
35.有以下定義和語句,則sizeof(a)的值是【】,而sizeof(a.share)的值是【】。
structdate
{intday;
intmouth;
intyear;
union{intshare1;
floatshare2;
}share;
}a;
36.下列程序用來輸出結構體變量ex所占存儲單元的字節(jié)數(shù)。
structst
{charname[20];doublescore;};
main()
{structstex;
printf("exsize:%d\n",sizeof(【】));
}
37.函數(shù)voidfun(float*sn,intn)的功能是:根據(jù)以下公式計算S,計算結果通過形參指針sn傳回;n通過形參傳入,n的值大于等于0。請補全程序。
S=1-1/3+1/5-1/7+…+1/(2n+1)
voidfun(float*sn,intn)
{floats=0.0,w,f=-1.0;
inti=0;
for(i=0;i<=n;i++)
{f=【】*f;
w=f/(2*i+1);
s+=w;
}
【】=s;
}
38.若有程序
main()
{inti,j;
scanf("i=%d,j=%d",&i,&j);
pfintf("i=%d,j=%d\n",i,j);
}
要求給i賦10,給j賦20,則應該從鍵盤輸入【】。
39.若有定義doublea[5];,則a數(shù)組元素下標的上限為______。
40.下列程序的運行結果是【】。
#include<stdio.h>
voidmain()
{ints=0,k;
for(k=7;k>4;k--)
{switch(k)
{case1:
case4:
case7:s++;break;
case2:
case3:
case6:break;
case0:
case5:s+=2;break;}}
printf("s=%d",s);}
三、1.選擇題(20題)41.在設計程序時,應采納的原則之一是()。
A.不限制goto語句的使用B.減少或取消注解行C.程序越短越好D.程序結構應有助于讀者理解
42.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結點訪問順序是()。
A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca
43.若函數(shù)調用時的實參為變量時,以下關于函數(shù)形參和實參的敘述中正確的是()。
A.函數(shù)的實參和其對應的形參共占同一存儲單元
B.形參只是形式上的存在,不占用具體存儲單元
C.同名的實參和形參占同一存儲單元
D.函數(shù)的形參和實參分別占用不同的存儲單元
44.以下不能正確定義二維數(shù)組的選項是
A.inta[2][2]={{1},{2}};
B.inta[][2]={1,2,3,4};
C.inta[2][2]={{1},{2,3}};
D.inta[2][]={1,2},{3,4}};
45.如果進棧序列為e1,e2,e3,e4,則可能的出棧序列是
A.快速排序B.冒泡排序C.直接插入排序D.堆排序
46.設有定義:intn1=0,n2,*p=&n2,*q=&n1;,下列賦值語句中與n2=n1;語句等價的是()。
A.*p=*q;B.p=q;C.*p=&n1;D.p=*q;
47.下列程序voidfunc1(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;funcl(i);}}main(){inti=0;funcl(i);printf("\n");}執(zhí)行后的輸出結果是()
A.helloB.helC.hloD.hlrn
48.下述語句中,在字符串s1和s2相等時顯示"theyareEqual"的是()。
A.if(*s1=*s2)puts("theyareEqual");
B.if(!strcmp(s1,s2))puts("theyareEqual");
C.if(s1==s2)puts("theyareEqual");
D.if(strcmp(s1,s2))puts("theyareEqual");
49.有下列二叉樹,對此二叉樹前序遍歷的結果為()。
A.XZCYABB.XYZABCC.XYABCZD.XYAZBC
50.下列選項中錯誤的說明語句是
A.chara[]={'t','o','y','o','u','\0'};
B.chara[]={"toyou\0"};
C.chara[]="toyou\0";
D.chara[]='toyou\0';
51.有以下程序:voidf(intb[]){inti;for(i=2;i<6;i++)b[i]*=2;}main(){inta[10]={1,2,3,4,5,6,7,8,9,10},i;f(A);for(i=0;i<10;i++)printf("%d,",a[i]);}程序運行后的輸出結果是()。
A.1,2,3,4,5,6,7,8,9,10,
B.1,2,6,8,10,12,7,8,9,10,
C.1,2,3,4,10,12,14,16,9,10,
D.1,2,6,8,10,12,14,16,9,10,
52.有以下程序:intf(intb[][4]){inti,j,s=0;for(j=0j<4;j++){i=j;if(i>2)i=3-j;s+=b[i][j];}returns;}main(){inta[4][4]={{1,2,3,4},{0,2,4,6},{3,6,9,12},{3,2,1,0}};printf("%d\n",f(a));}執(zhí)行后的輸出結果是()。
A.12B.11C.18D.16
53.在C語言中,引用數(shù)組元素時,其數(shù)組下標的數(shù)據(jù)類型允許是()。
A.整型表達式B.整型常量C.整型常量或整型表達式D.任何類型的表達式
54.數(shù)據(jù)的存儲結構是指()。
A.數(shù)據(jù)所占的存儲空間
B.數(shù)據(jù)的邏輯結構在計算機中的存放形式
C.數(shù)據(jù)在計算機中的順序存儲方式
D.存儲在計算機外存中的數(shù)據(jù)
55.在位運算中,操作數(shù)每左移兩位,其結果相當于()。
A.操作數(shù)乘以2B.操作數(shù)除以2C.操作數(shù)除以4D.操作數(shù)乘以4
56.軟件設計包括軟件的結構、數(shù)據(jù)接口和過程設計,其中軟件的過程設計是指()
A.模塊間的關系B.系統(tǒng)結構部件轉換成軟件的過程描述C.軟件層次結構D.軟件開發(fā)過程
57.下列所述中,是軟件調試技術的是()。
A.錯誤推斷B.集成測試C.回溯法D.邊界值分析
58.有以下語句,則對a數(shù)組元素的引用不正確的是inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;
A.a[p-a]B.*(&a[i])C.p[i]D.*(*(a+i))
59.在數(shù)據(jù)庫設計中,將E-R圖轉換成關系數(shù)據(jù)模型的過程屬于()。A.需求分析階段B.概念設計階段C.邏輯設計階段D.物理設計階段
60.若有以下定義和語句:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;則不能表示a數(shù)組元素的表達式是______。
A.*pB.a[10]C.*aD.a[p-a]
四、選擇題(20題)61.在長度為n的有序線性表中進行順序查找,最壞情況下需要比較的次數(shù)是
A.O(n)B.O(n2)C.O(log2n)D.O(nlog2n)
62.有以下程序
#include<stdio.h>
#defineN4
voidfun(inta[][N],intb[])
{inti;
for(i=0;i<N;i++)
b[i]=a[i][i];
}
main()
{intx[][N]={{1,2,3},{4},{5,6,7,8},{9,10}},y[N],i;
fun(x,y);
for(i=0;i<N;i++)printf("%d,",y[i]);
printf("\n");
}
程序的運行結果是
A.l,2,3,4,
B.1,0,7,0,
C.1,4,5,9,
D.3,4,8,10,
63.軟件生命周期是指()。A.軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程
B.軟件從需求分析、設計、實現(xiàn)到測試完成的過程
C.軟件的開發(fā)過程
D.軟件的運行維護過程
64.有以下程序:
注意:字母a的ASCIl碼值為97,程序運行后的輸出結果是()。
A.dB.goC.godD.good
65.程序調試的目的是
A.發(fā)現(xiàn)程序中的錯誤B.改正程序中的錯誤C.驗證程序的正確性D.改善軟件的性能
66.有以下程序段以下關于程序段執(zhí)行情況的敘述,正確的是()。
A.當產(chǎn)生的隨機數(shù)n為0時結束程序運行
B.當產(chǎn)生的隨機數(shù)n為4時結束循環(huán)操作
C.當產(chǎn)生的隨機數(shù)n為1和2時不做任何操作
D.for循環(huán)語句固定執(zhí)行8次
67.有如下程序段
#include"stdio.h"
#include"string.h"
#defineN10
#defineM10
char*find(char(*a)[M],intn)
{char*q;inti;
q=a[0];
for(i=0;i<n;i++)
if(strcmp(a[i],q)<0)q=a[i];
returnq;}
main()
{chars[N][M]={"tomeetme","you","and","he","china"};
char*p;
intn=5;
p=find(s,n);
puts(p);}
則執(zhí)行后輸出的結果為A.A.heB.andC.youD.tomeetme
68.軟件詳細設計產(chǎn)生的圖如圖所示。該圖是()。A.N—S圖B.PAD圖C.程序流程圖D.E—R圖
69.
70.
有以下程序
#include<stdi0.h>
voidfun(intn,int*p)
(intf1,f2;
if(n==1||n==2)*p=1;
else
{fun(n-1,&f1);fun(n-2,&f2);
*p=f1+f2;
}
}
main
{ints;
fun(3,&s);printf("%d",s);
}
程序的運行結果是()。
A.2B.3C.4D.5
71.
72.表示關系M<=N<=P的C語言表達式為()。
A.(M<=N.AND(N<=P.
B.(M<=N.&&(N<=P.
C.(M<=N<=P.
D.(M<=N.&(N<=P.
73.
74.
75.用鏈表表示線性表的優(yōu)點是()。
A.便于隨機存取B.花費的存儲空間較順序存儲少C.便于插入和刪除操作D.數(shù)據(jù)元素的物理順序與邏輯順序相同
76.有以下函數(shù)該函數(shù)的功能是()。
A.計算s所指字符串占用內存字節(jié)的個數(shù)
B.比較兩個字符串的大小
C.計算s所指字符串的長度
D.將s所指字符串復制到字符串t中
77.執(zhí)行下列程序后,變量a,b,C的值分別是()。intx=5,y=4;inta,b,c;a=(--x==y++)?X:++y;b=++x:c=y:A.a=5,b=5,c=5B.a=4,b=5,c=5C.a=5,b=6,c=5D.a=1,b=5,c=6
78.
79.下列程序的輸出結果是()。#include<stdio.h>main{inta=3,b=2,c=1;if(a<b)if(b<0)c=0;elsec++:printf("%d\n",c);}A.2B.0C.1D.不確定的值
80.下列數(shù)據(jù)結構中,能用二分法進行查找的是()。
A.順序存儲的有序線性表B.結性鏈表C.二叉鏈表D.有序線性鏈表
五、程序改錯題(1題)81.下列給定程序中,函數(shù)fun的功能是:從整數(shù)l0-55,查找能被3整除且有一位上的數(shù)值是5的數(shù),把這些:故放在b所指的數(shù)組中,這些數(shù)的個數(shù)作為函數(shù)值返回。規(guī)定函數(shù)中al放位數(shù),a2放十位數(shù)。請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!試題程序:
六、程序設計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,規(guī)定輸入的字符串中只包含字母和*號。請編寫函數(shù)其功能是使字符串的前導*號不得多于n個,若多于n個,則刪除多余的*號;若少于或等于n個,則不做處理。字符串中間和尾部的*號不刪除。例如,字符串中的內容為“*******A*BC*DEF*G****”,若n的值為4,刪除后,字符串中的內容應當是“****A*BC*DEF*G****”;若n的值為8,則字符串中的內容仍為“*******A*BC*DEF*G****”。n的值在主函數(shù)中輸入。在編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#include<conio.h>voidfun(char*a,intn){}voidmain(){ chars[81];intn; printf(“Enterastring:\n”); gets(s); printf(“Entern:”); scanf(“%d”,&n); fun(s,n); printf(“Thestringafterdeleted:\n”); puts(s);}
參考答案
1.C
2.C
3.B變量J只接收輸入數(shù)據(jù)的前兩位,從第三位開始直到空格之間的輸入整數(shù)都會被保存到浮點型變量Y中。
4.Bmain函數(shù)中定義包含5個元素的數(shù)組m,每個元素都是NODE類型。指針p指向數(shù)組第1個元素,指針q指向數(shù)組最后一個元素。while循環(huán)使用p、q從首尾向中間遍歷,遍歷的同時為各個元素賦值。所以第1輪循環(huán),i的值為0,先執(zhí)行的值為++i,后執(zhí)行i++的值也為1,m[0].k和m[4].k的值都為1;接著第2輪循環(huán),i的值為2,先執(zhí)行的值為3,后執(zhí)行i++的值也為3,m[l].k和m[3].k的值都為3;第3輪循環(huán),p和q指向的都是m[2]元素,指針相同,循環(huán)結束,此時i的值為4,即m[2].k賦值為4。綜上,程序輸出:13431。本題答案為B選項。
5.C
6.C解析:數(shù)據(jù)庫是數(shù)據(jù)的集合,其中的數(shù)據(jù)是按數(shù)據(jù)所提供的數(shù)據(jù)模式存放的,它能構造復雜的數(shù)據(jù)結構,以建立數(shù)據(jù)之間的內在聯(lián)系與復雜的關系-故答案為C。
7.A
8.D程序首先將數(shù)組a中的元素1、2、3分別寫入了d1.dat文件中,再將d1.dat文件中的數(shù)據(jù)“123”整體寫到變量n的空間中,所以輸出的數(shù)據(jù)為123。故本題答案為D選項。
9.B
10.D解析:在關系數(shù)據(jù)表中,行稱為元組,對應存儲文件中的記錄,列稱為屬性,對應存儲文件中的字段,所以本題答案為D。
11.Bstructdate中包含year、month、day這3個整型變量,一個整型變量占2個字節(jié);sizeof是求所占字節(jié)數(shù)的運算符。
12.B每個C程序有且只有一個主函數(shù)main,C程序總是從main函數(shù)開始執(zhí)行,main函數(shù)后面的一對圓括號不能省略,main函數(shù)可以位于程序的任意位置。函數(shù)不可以嵌套定義,但函數(shù)可以嵌套調用。
13.D第—個if語句a!=1條件為假,所以執(zhí)行dse后的語句r=1。第二個if語句b==2條件成立,執(zhí)行r+=2,r的值變?yōu)?,第三個if語句c!=3條件為假,所以不做任何操作。執(zhí)行下面的r+=3操作,r的值變?yōu)?。判斷第四個訌條件,d==4條件成立,執(zhí)行r+=4操作,結果為10。
14.D解析:帶參數(shù)的宏定義如下:#define宏名(參數(shù))字符串。本題中,宏定義的作用是指定用標識符PI來代替“3.1415926”這個字符串,但宏定義不是C語句,不必在行末加分號。
15.D解析:本題考查宏替換的規(guī)則。宏替換分為簡單的字符替換和帶參數(shù)的宏替換兩類。使用宏時應注意以下幾點:①定義僅僅是符號替換,不是賦值語句,因此不做語法檢查;②為了區(qū)別程序中其他的標識符,宏名的定義通常用大寫字母,但不是必須用大寫;③雙引號中出現(xiàn)的宏名不替換;④使用宏定義可以嵌套,即后定義的宏中可以使用先定義的宏。
16.Bmain函數(shù)中定義一個二維數(shù)組v,另外還定義一個指針數(shù)組p。通過for循環(huán),將v的各個行(字符串的首地址)賦給P的對應下標的元素。然后通過嵌套的for循環(huán),為該二維數(shù)組中存放的各個字符串進行排序。strcmp函數(shù)返回值大于0時(p[i]>p[j])交換兩個字符串,所以每一輪內嵌的for循環(huán),都將下標為i的字符串放在最終的排序位置上,即排序規(guī)則是按字符串升序排列。字符串排序時,是將兩個字符串自左向右逐個字符比較(按字符的ASCII值大小),直到出現(xiàn)不同的字符或遇到‘\\0’為止。排序后,再將v中各個排序后的字符串輸出。所以程序輸出結果為:abcdefghijklmnopq。故本題答案為B選項。
17.D解析:本題考查switch語句的掌握。必須撐握以下內容:首先應該明白switch語句的語法格式:
switch語句的語法格式為:
switch(表達式)
{
case常量表達式1:語句組1;
case常量表達式2:語句組2;
case常量表達式n:語句組n;
default:語句組n+1;
}
另外,以下幾點關于switch語句的重點:
①系統(tǒng)在執(zhí)行時計算開關表達式的值;②根據(jù)所得的值在各個case標號表達式中尋找匹配,直到發(fā)現(xiàn)與表達式匹配的標號(本例中匹配的是case\'B\':);\ue008③找\ue009到匹配后執(zhí)行后面相應的語句表,順序往下執(zhí)行;④如果無相匹配的標號,若存在default標號,則執(zhí)行該語句標號后面的語句表n+1;當不存在default標號時,不執(zhí)行switch中的任何一個語句表。
一般而言,在多分支結構中總會出現(xiàn)'意外'的情況,這時均可歸入default程序段,作統(tǒng)一的處理。default標號是可選性的,不必每次都有,視需要而定。switch語句中還可以包含switch語句,形成switch的嵌套。
18.B第一個for循環(huán)的作用是讓p指向每行的首地址,第二個for循環(huán)的作用是把它指向的字符串輸出,故選擇B選項。
19.B
20.A解析:一般將數(shù)據(jù)結構分為兩大類型:線性結構與非線性結構。線性表、棧與隊列、線性鏈表都是線性結構,而二叉樹是非線性結構。
21.相鄰相鄰
22.130130解析:本題主函數(shù)中用了一個for循環(huán),循環(huán)了3次:當i=9時,i/10=0,執(zhí)行switch語句中case0分支,m和n的值各增1,變?yōu)?和1,然后遇到break語句,退出switch語句;當i=10和11時,i/10都等于1,執(zhí)行switch語句中的case1分支,兩次使n增1,變?yōu)?,退出switch語句。故該空格處應該填130。
23.d1.dat"rb"d1.dat,'rb'解析:打開文件的函數(shù)為fopen('文件名','mode'),其中'mode'表示文件的打開方式。如果打開的是二進制文件,其mode字符串可以是:'rb'、'wb'、'ab'、'rb+'、'wb+'、'ab+'。'r'表示以只讀方式打開。'w'表示以寫方式打開,如果已存在該文件名的文件,文件中的內容將被清空。若文件名不存在,則將創(chuàng)建該文件。'a'為追加方式打開。若文件存在時,將打開這個文件并且在文件的末尾進行追加。當文件不存在,將創(chuàng)建新文件。'r+'打開一個已存在文件用于更新(可讀可寫)。\'w+'創(chuàng)建一個新文件用于更新,如果文件存在,文件被重寫(可讀可寫)。'a+'打開用于追加,當文件不存在時,創(chuàng)建新文件,并在文件末尾進行追加(可讀可寫)。根據(jù)題意,應該填'd1.dat','rb'。
24.16111611解析:題目中第1條要替換的語句i=f(1+1);展開后是i=((1+1)*M);繼續(xù)展開為i((1+1*8),結果使i=16。而第2條語句j=f2(1+1)”;展開后為j=(1+1*N);繼續(xù)展開為j=(1+1*10),結果使j=11。故程序運行的結果是輸出1611。
25.ar=9ar=9ar=11ar=9ar=9ar=11解析:本題綜合考查了for循環(huán),switch語句及宏替換等幾個知識點。j=3時,執(zhí)行PR(*(--p));輸出數(shù)組元素a[4]的值;j=2時,執(zhí)行PR(*p++);取出p所指位置的元素a[4],然后p++;當j=1時,執(zhí)行PR(*p++);取得是數(shù)組元素a[6]的值11。
26.存儲結構
27.c<10或c<=9(a*100+b*10+c)+(a*100+b*10+a)c<10或c<=9\r\n(a*100+b*10+c)+(a*100+b*10+a)解析:本題使用窮舉法,用一個3重循環(huán)窮舉A、B、C可以組合成的所有三位數(shù),對每種情況來判斷是否滿足題目要求,滿足則輸出3個值。因為A、B、C分別代表一位數(shù),所以C的取值范圍是0~9,故第一空應該填c<10或c<=9。根據(jù)下面輸出的判斷條件k==t可知,k應該為每種情況下ABC+ABA的值,故應該填寫(a*100+b*10+c)+(a*100+b*10+a)或者其他等價表達式。
28.SO
29.66解析:條件運算符的優(yōu)先級高于賦值運算符,因此本題先計算關系表達式(*ptr+y)<x)?*(ptr+y):x的值,再賦給變量z。當y=0時,*(ptr+y)=2,而x=8,(*(ptr+y)<x)條件為真,則整個條件表達式的值為*(ptr+y)=2,所以z=2;當y-1時,*(ptr+y)=4,(*(ptr+y)<x)條件為真,則整個條件表達式的值為*(ptr+y)=4,所以z=4;當y=2時,*(ptr+y)=6,(*(ptr+y)<x)條件為真,則整個條件表達式的值為*(ptr+y)=6,所以z=6;循環(huán)結束。因此輸出z的結果為6。
30.j<=ia[i][j]=a[j][i]j<=i\r\na[i][j]=a[j][i]解析:將矩陣轉置就是將行列互換,所以第一處應填j<=i,第二處應填a[i][j]=a[j][i]。
31.abcfgabcfg解析:本題考查的是字符數(shù)組用作函數(shù)參數(shù)。C語言中數(shù)組名可以看作該數(shù)組首地址的常量指針、因此可以直接傳遞給指針類型的參數(shù)。本題的主函數(shù)調用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下標為p+2~k范圍的字符整體復制到字符串s下標為p~k-2的位置上。在本題中strlen(s)返回s的長度7,所以復制的字符為s[5]~s[7],即'f'、'g','\\0'三個字符,復制到s[3]~s[5],故最終輸出的字符串為abcfg(因為s[5]為'\\0',所以后面的字符不會輸出)。
32.
33.structSTRUstructSTRU解析:結構體類型是構造數(shù)據(jù)類型,是用戶自己定義的一種類型。
結構體類型的定義:
struct結構體類型名
{
成員項表;
};
定義結構體變量的的形式為:
struct結構體類型名變量1,變量2,……
其中變量包括:一般變量、指針變量、數(shù)組變量等。
34.voidfun(doubleb[][22])voidfun(doubleb[][22])解析:程序中為了表示函數(shù)調用“不帶回值”,可以用“void”定義函數(shù)為“無類型”(或稱“空類型”),這樣系統(tǒng)就保證不使函數(shù)帶回任何值。當二維數(shù)組作為形參時,二維數(shù)組的第一維可以省略。
35.10410\r\n4解析:結構體變量所占內存長度是各成員占的內存長度之和。每個成員分別占有其自己的內存單元。int占2個字節(jié),float占4個字節(jié),共用體變量所占的內存長度等于最長的成員的長度。所以,sizeof(a.share)的值是4,sizeof(a)的值是2+2+2+4=10。
36.ex或structstex或structst
37.-1或-1.0*sn-1或-1.0\r\n*sn解析:由于在對S求和時,相鄰兩項的符號剛好相反,而在函數(shù)fun中沒有對數(shù)據(jù)進行取反的操作,故第—空的目的是對數(shù)據(jù)進行取反,以保證序列中相鄰兩項的符號不同。故第—個應填-1或-1.0。在執(zhí)行完循環(huán)體后,要將求和結果通過指針參數(shù)的形式傳遞紿調用fun的函數(shù),故第二空應填*sn。
38.i=0j=20i=0,j=20解析:scanf()函數(shù)的使用,該函數(shù)的第一個參數(shù)是格式字符串,主要由兩類字符組成,一類是非格式符要求原樣輸入,一類是格式符對應要輸入的變量,所以說本題中應該原樣輸入i=,j=,后面分別給變量0和20,所以說空格處應該填入i=0,j=20。
39.44解析:一維數(shù)組元素的定義形式為:數(shù)組名[N],則該數(shù)組中元素的下限是0,上限是N-1。
40.s=3s=3解析:當k=7時,執(zhí)行case7,s++,s的值為1。當k=6時,直接break出switch結構;當k=5時,執(zhí)行case5,s+=2,s的值為3;當k=4時由于不滿足for循環(huán)的條件,所以結束循環(huán),所以輸出的s的值為3。注意:循環(huán)語句和條件的嵌套使用。
41.D解析:濫用goto語句將使程序流程無規(guī)律,可讀性差,因此選項A)不選;注解行有利于對程序的理解,不應減少或取消,選項B)也不選;程序的長短要依照實際情況而論,而不是越短越好,選項C)也不選。
42.D解析:中序遍歷的遞歸算法定義:①遍歷左子樹;②訪問根結點;③遍歷右子樹。前序遍歷的遞歸算法定義:①訪問根結點;②遍歷左子樹;③遍歷右子樹。后序遍歷的遞歸算法定義:①遍歷左子樹;②遍歷右子樹;③訪問根結點。根據(jù)前序遍歷的結果可知,a是根結點。由中序遍歷的結果dgbaechf可知,d、g、b是左子樹的結點,e、c、h、f是右子樹的結點。再由前序遍歷的結果bdg可知,b是a左邊子樹的根,由cefh可知,c是a右邊子樹的根。再由中序遍歷的結果dgb可知,d、g是b左邊子樹的結點,b右邊子樹無結點。再由前序遍歷結果dg可知,d為b左子樹的根,g是以d為根的子樹的右結點。至此,a的左子樹已完全弄清楚了。同樣的道理,可以弄清楚以c為根的子樹的結點位置。所以可知后序遍歷的結果是D。
43.D解析:在定義函數(shù)時函數(shù)名后面括弧中的變量名稱為“形式參數(shù)”(簡稱形參),在主調函數(shù)中調用一個函數(shù)時,函數(shù)名后面括弧中的參數(shù)(可以是一個表達式)稱為“實際參數(shù)”(簡稱實參)。C語言規(guī)定,實參變量對形參變量的數(shù)據(jù)傳遞是“值傳遞”,即單向傳遞,只由實參傳給形參,而不能由形參傳回來給實參。在內存中,實參單元與形參單元是不同的單元。故本題應該選擇D。
44.D解析:二維數(shù)組的定義和初始化在定義中如果對所有元素賦初值,其第一維的長度可以省略;二維數(shù)組初始化也可以只對每行或前若干行的前若干個元素賦初值;在二維數(shù)組定義時不能省略第二維的長度。
45.D解析:在最壞情況下,快速排序、冒泡排序和直接插入排序需要的比較次數(shù)都為n(n-1)/2,堆排序需要的比較次數(shù)為nlogn2。
46.A解析:在定義指針變量p和q時,分別把變量n2和n1的地址賦給了指針變量p和q,所以*p和*q中內容就分別是變量n2和n1的值,所以語句*p=*q與語句n2=n1等價。因此選項A)正確。
47.C
48.B
49.D解析:對二叉樹的前序遍歷是指先訪問根結點,然后訪問左于樹,最后訪問右子樹,并且在訪問左、右子樹時,先訪問根結點,再依次訪問其左、右于樹。
50.D解析:通過賦初值的方式給一維數(shù)組賦字符串,可以用給一般數(shù)組賦初值的相同方式給一維字符數(shù)組賦字符串,也可以在賦值時直接賦字符串常量。選項B)和C)后面的'\\0'是多余的,不過也不錯,在C語言中,系統(tǒng)會自動在字符串的結尾處加上一個字符'\\0'作為串的結束標記。
51.B解析:本題在調用函數(shù)時,實參是數(shù)組名也是把數(shù)組a的首地址傳遞給形參,由條件i=2且i<6得出函數(shù)將列以a[2]開始的4個元素(3、4、5、6)進行乘2操作,結果分別是a[2]=6、a[3]=8、a[4]=10、a[5]=12。a[0]、a[1]、a[6]、a[7]、a[8]、a[9]的值沒有發(fā)生變化。
52.D解析:分析程序可知,函數(shù)f()中的for循環(huán)作用,是將數(shù)組前三行中的對角線上的元素,即b[0][0]、b[1][1]、b[2][2]和第一行的第四列元素即b[0][3]累加到變量s中,然后將s的值返回。在主函數(shù)中首先定義了一個4行4列的二維數(shù)組,接著通過輸出語句輸出函數(shù)f(a)的返回值。調用f(a)的返回值為a[0][0]+a[1][1]+a[2][2]+a[0][3]=1+2+9+4=16。所以,4個選項中選項D符合題意。
53.C解析:在C語言中,引用數(shù)組元素時,其數(shù)組下標的數(shù)據(jù)類型可以是整型常量,也可以是整型表達式。
54.B解析:數(shù)據(jù)的存儲結構,又稱為數(shù)據(jù)的物理結構,是數(shù)據(jù)的邏輯結構在計算機中的存放形式,數(shù)據(jù)的存儲結構有順序結構、鏈式結構、散列結構和索引結構等。
55.D解析:本題主要考查左移、右移對數(shù)據(jù)值的影響,左移n位相當于乘以2的n次冪,右移n位相當于除以2的n次冪。
56.B軟件設計包括軟件的結構設計、數(shù)據(jù)接口設計和過程設計。其中軟件結構設計主要包括系統(tǒng)由哪些子系統(tǒng)構成,以及這些子系統(tǒng)之間的關系是怎樣的,并將這些內容編寫成文檔;數(shù)據(jù)接口設計的任務是為每個子系統(tǒng)設計其與其他子系統(tǒng)間的接口,并編寫成文檔,這個接口要是一個無二義的接口,不需要子系統(tǒng)的操作知識就可以使用;過程設計是指系統(tǒng)結構部件轉換成軟件的過程描述。
57.C解析:軟件調試技術包括強行排錯法、回溯法和原因排除法。邊界值分析、錯誤推斷都是黑盒測試的方法。
58.D解析:本題考查數(shù)組指針的應用。選項D)第一層括號中為數(shù)組a中第i項元素的值,外面再加指針運算符沒有意義。
59.CE-R圖轉換成關系模型數(shù)據(jù)則是把圖形分析出來的聯(lián)系反映到數(shù)據(jù)庫中,即設計出表,所以屬于邏輯設計階段。
60.B解析:程序中定義了數(shù)組a[10],則其元素的下標范圍為0~9,而B選項中的a[10]所表示的元素已經(jīng)超出a數(shù)組元素的范圍,故應該選擇B。
61.A在有序的線性表中進行查找,最差的情況為從表頭查找到表尾都沒有所需要的值。長度為n的線性表從表頭開始每次取出一個值比較,若不符合,再取下一個值,依次比較,一直到最后一個,需要比較n次。
62.B本題考查二維數(shù)組的相關操作。程序主要包括兩個部分:主函數(shù)部分和fun函數(shù)。主函數(shù)初始給出了一個4×4的二維矩陣,并對每一行賦初值,可以看出每一行都要有4個元素,而對于給出的初值個數(shù)不滿足4個的,要先從第一列開始將各個值賦給各列,不足的部分用0補齊。函數(shù)fun的作用是將二維矩陣a中行號與列號相同的數(shù)據(jù)賦值給一維矩陣y,y的下標與該數(shù)據(jù)在a中的行號相同。題目所要求解的即通過printf函數(shù)將矩陣y中的元素按照順序輸出。本題中二維矩陣a初始化后為{{1,2,3,0},{4,0,0,0},{5,6,7,8},{9,10,0,0}}。將行號與列號相同的元素賦給y,則y矩陣的數(shù)據(jù)為{1,0,7,0},輸出即可得到結果。
63.A通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為軟件生命周期。也就是說,軟件產(chǎn)品從考慮其概念開始,到該軟件產(chǎn)品不能使用為止的整個時期都屬于軟件生命周期。
64.Afun函數(shù)的功能是輸出字符串中ASCII碼能被2整除的字符,g的ASCIl碼為l03,0的ASCIl碼為111,d的ASCIl碼為l00,只有d滿足。因此,本題答案為A)。
65.B調試也稱排錯或糾錯。它與成功的測試形影相隨,測試成功的標志是發(fā)現(xiàn)錯誤。根據(jù)錯誤跡象,診斷錯誤的原因和位置,進而改正程序中的錯誤,這就是調試的任務。
調試分為靜態(tài)調試和動態(tài)調試,靜態(tài)調試就是指對源程序進行分析,然后確定可能出錯的地方并進行排錯。動態(tài)調試是指對程序的運行進行跟蹤并觀察其出錯點,然后進行排錯。
靜態(tài)調試通常可以采用如下兩種方法。
(1)輸出寄存器的內容
在測試中出現(xiàn)問題,設法保留現(xiàn)場信息。把所有的寄存器和主存中有關部分的內容打印出來(通常以八進制或十六進制的形式打印),進行分析研究。用這種方法調試,輸出的是程序的靜止狀態(tài)(程序在某一時刻的狀態(tài)),效率非常低,不得已才采用。
(2)為取得關鍵變量的動態(tài)值,在程序中插入打印語句。這是取得動態(tài)信息的簡單方法,并可檢驗在某事件后某個變量是否按預期要求發(fā)生了變化。此方法的缺點是可能輸出大量需要分析的信息,必須修改源程序才能插入打印語句,這可能改變關鍵的時序關系,引入新的錯誤。
動態(tài)調試通常利用程序語言提供的調試功能或專門的調試工具來分析程序的動態(tài)行為。一般程序語言和工具提供的調試功能有檢查主存和寄存器;設置斷點,即當執(zhí)行到特定語句或改變特定變量的值時,程序停止執(zhí)行,以便分析程序此時的狀態(tài)。
66.An為。時執(zhí)行exit(0);函數(shù)結束,所以產(chǎn)生的隨機數(shù)為0時,函數(shù)結束。答案選擇A)。
67.B在本題中,首先定義了兩個宏N和M,大小都為10,然后定義了一個返回指針的函數(shù)find,該函數(shù)帶有兩個形參,第一個為字符型的指針數(shù)組,第二個為整型變量,在函數(shù)體中,首先定義了一個指針變量q,并將形參中指針數(shù)組的第一個元素賦值給q,然后執(zhí)行for循環(huán),在循環(huán)體中,首先執(zhí)行條件判斷語句,其條件為strcmp(a[i],q)<0(strcmp函數(shù)的作用是比較兩字符串的大小,如果相等,則返回0值,如果參數(shù)中的第一個字符串大,則返回正值,否則返回負值),如果結果為真,說明指針數(shù)組當前元素所指向的字符串比q所指向的字符串小,此時,程序執(zhí)行將當前指針數(shù)組元素賦值給p,最后返回p,通過上面的分析我們可以看出,find函數(shù)的作用是找出指針數(shù)組中各元素所指向字符串的最小字符串。
在主函數(shù)中,定義了一個二維數(shù)組s,并賦了初值,然后定義一個指針變量p,用來存放函數(shù)find的返回值。調用函數(shù)find的參數(shù)分別為s和5,結合形參看find函數(shù),不難知道調用find函數(shù)就是找出二維數(shù)組s中各字符串中最小的字符串,那么應該為and。此時,指針變量p指向字符串“and”的首地址,然后執(zhí)行puts(p),完成該字符串的輸出。因此,本題正確的答案是B。
68.CN-S圖(也被稱為盒圖或CHAPIN圖)、PAD(問題分析圖)及PFD(程序流程圖)是詳細設計階段的常用工具。E—R圖即實體一聯(lián)系圖,是數(shù)據(jù)庫設計的常用工具。從題中圖可以看出該圖屬于程序流程圖。
69.A
70.A
\n在函數(shù)fun中對參數(shù)n的值進行判斷,如果其值等于1或2,則*p=1,否則,函數(shù)fun進行遞歸調用fun(n.1,&f1);fun(13.2,&f2);*p=n+f2;在主函數(shù)調用fun函數(shù)時傳遞給參數(shù)n的值為3,fun函數(shù)又遞歸用了兩次自身fun(2,&n);fun(1,&f1);所以n和f2的值都為1,通過指針P的引用,變量S的值為2。
\n
71.C
72.BM<=N和N<=P是邏輯與的關系,應使用運算符&&。
73.A
74.A
75.CC。【解析】數(shù)據(jù)結構是相互之間存在一種或多種特定關系的數(shù)據(jù)元素的集合。”關系”描述的是數(shù)據(jù)元素之間的邏輯關系,因此又稱數(shù)據(jù)的邏輯結構。數(shù)據(jù)的存儲結構是指數(shù)據(jù)結構(數(shù)據(jù)的邏輯結構)在計算機中的表示,又稱物理結構。數(shù)據(jù)的存儲結構有順序存儲結構和鏈式存儲結構兩種。不同存儲結構的數(shù)據(jù)處理效率不同。由于鏈表采用鏈式存儲結構,元素的物理順序并不連續(xù),對于插入和刪除無需移動元素,很方便,當查找元素時就需要逐個元素查找,因此查找的時間相對更長。
76.C首先char*s接受一個字符型數(shù)組的首地址并將這個首地址賦給另一個字符型指針char*t,while(*t++)不斷循環(huán),直到*t為‘\\o’,再將t一1,這時字符指針t指向字符串的最后一個字符,又因為s指向字符數(shù)組的首地址即字符串的首地址,所以return(t--s)便是返回字符數(shù)組中字符串的長度。故本題答案為C)。
77.B本題考查自加(++)、自減(--)運算符的使用。“++x,--x”,在變量x前使用,先使X的值加1或者減1,再使用此時的表達式的值參與運算;“x++,x--”,先把使用X的值參與運算,在使用X之后,再使x的值加1或者減1。對于表達式--x=4,y++=4,兩者相等,--x=y++為真,所以a=x=4,執(zhí)行完此語句后y的值是5。第2個表達式b=++x,x的值先加1,然后賦給b,即b=x+1=5;第一個表達式c=y=5。故B正確。
78.B
79.C第一個if語句,先判斷條件,發(fā)現(xiàn)a<b不成立,不再執(zhí)行下列的語句,直接執(zhí)行最后的printf輸出語句,然后結束程序,整個過程c的值沒有發(fā)生變化。
80.A\nA。【解析】二分法查找只適用于順序存儲的有序線性表,對于順序存儲的非有序線性表和線性鏈表,都只能采用順序查找。
\n
81.
82.voidfun(char*a,intn){ inti=0,k=0; char*p,*t; p=t=a; /*開始時,p與t同時指向數(shù)組的首地址*/ while(*t==‘*’) /*用k來統(tǒng)計前導星號的個數(shù)*/ {k++;t++;} if(k>n) /*如果k大于n,則使p的前導保留n個星號,其后的字符依次存入數(shù)組a中*/ { while(*p) { a[i]=*(p+k-n); i++; p++; } a[i]=‘\0’; /*在字符串最后加上字符串結束標志*/ }}字符串中前導*號不能多于n個,多余的應刪除。首先需要通過while循環(huán)統(tǒng)計字符串前導*號的個數(shù),然后通過if條件語句完成前導*號的個數(shù)和n的比較,如果前導*號多于n個,則需要把n個*號和其余字符重新保留。2022-2023年貴州省安順市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.
2.
3.有以下程序段intj;floaty;charname[50];scanf("%2d%f%s",&i,&y,name);當執(zhí)行上述程序段,從鍵盤上輸入555667777abc后,y的值為()。A.55566.0B.566.0C.7777.0D.566777.0
4.有以下程序:程序運行后的輸出結果是()。A.13442B.13431C.01234D.02431
5.以下敘述中正確的是A.A.C程序中的注釋只能出現(xiàn)在程序的開始位置和語句的后面
B.C程序書寫格式嚴格,要求一行內只能寫一個語句
C.C程序書寫格式自由,一個語句可以寫在多行上
D.用C語言編寫的程序只能放在一個程序文件中
6.數(shù)據(jù)庫是______的集合,它具有統(tǒng)一的結構形式并存放于統(tǒng)一的存儲介質內,可被各個應用程序所共享。
A.視圖B.消息C.數(shù)據(jù)D.關系
7.以下程序的輸出結果是()main(){staticchara[10]={"Chinese"};printf("%d",strlen(a));}
A.7B.2C.9D.10
8.有以下程序:#include<stdio.h>main(){FILE*fp;inta[10]={1,2,3},i,n;fp=fopen(“d1.dat”,“w”);for(i=0;i<3;i++)fprintf(fp,“%d”,a[i]);fprintf(fp,“\n”);fclose(fp);fp=fopen(“d1.dat”,“r”);fscanf(fp,“%d”,&n);fclose(fp);printf(“%d\n”,n);}程序的運行結果是()。
A.321B.12300C.1D.123
9.
10.在學生管理的關系數(shù)據(jù)庫中,存取一個學生信息的數(shù)據(jù)單位是()。
A.文件B.數(shù)據(jù)庫C.字段D.記錄
11.下列程序的運行結果為()。#include<stdio.h>main{structdate{intyear,month,day;}today;printf("%d\n",sizeof(structdate));}A.8B.6C.10D.12
12.下列敘述中正確的是:()A.C語言程序中,main()函數(shù)必須在其它函數(shù)之前,函數(shù)內可以嵌套定義函數(shù)
B.C語言程序中,main()函數(shù)的位置沒有限制,函數(shù)內不可以嵌套定義函數(shù)
C.C語言程序中,main()函數(shù)必須在其它函數(shù)之前,函數(shù)內不可以嵌套定義函數(shù)
D.C語言程序中,main()函數(shù)必須在其它函數(shù)之后,函數(shù)內可以嵌套定義函數(shù)
13.若有以下程序
則程序的輸出結果是
A.3B.7C.6D.10
14.以下敘述中不正確的是
A.預處理命令行都必須以#號開始
B.在程序中凡是以#號開始的語句行都是預處理命令行
C.宏替換不占用運行時間,只占編譯時間
D.在以下定義是正確的:#definePI3.1415926;
15.以下有關宏替換的敘述不正確的是()。
A.雙引號中出現(xiàn)的宏名不替換B.使用宏定義可以嵌套C.宏定義儀儀是符號替換D.宏名必須用大寫字母表示
16.有以下程序:#include<stdio.h>#include<string.h>main(){charv[4][10]={“efg”,“abcd”,“mnopq”,“hijkl”},*p[4],*t;inti,j;for(i=0;i<4;i++)p[i]=v[i];for(i=0;i<3;i++) for(j=i+1;j<4;j++) if(strcmp(p[i],p[j])>0) {t=p[i];p[i]=p[j];p[j]=t}for(i=0;i<4;i++) printf(“%s”,p[i]);}程序運行后的輸出結果是()。
A.efgabcdhijklmnopq
B.abcdefghijklmnopq
C.mnopqhijklefgabcd
D.efgabcdmnopqhijkl
17.若運行以下程序時,從鍵盤輸入ADescriptor<CR>(<CR>表示回車),則下面程序的運行結果是
#include<stdio.h>
main()
{charc;
intv0=1,v1=0,v2=0;
do{switch(c=getchar())
{case′a′:case′A′:
case′e′:case′E′:
case′i′:case′I′:
case′o′:case′O′:
case′u′:case′U′:v1+=1;
default:v0+=1;v2+=1;}}while(c!='\n');
printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);}
A.v0=7,v1=4,v2=7
B.v0=8,v1=4,v2=8
C.v0=11,v1=4,v2=11
D.v0=13,v1=4,v2=12
18.以下程序的輸出結果是()。main{charch[3][4]={"123","456","78"),*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++)printf("%s",p[i]);}A.123456780B.123456780C.12345678D.147
19.在一個具有n個結點的有序單鏈表中插入一個新結點并仍然保持有序的時間復雜度是()。
A.O(1)B.O(n)C.O(n2)D.O(nlog2n)
20.下列敘述中正確的是______。
A.線性表是線性結構B.棧與隊列是非線性結構C.線性列表是非線性性結構D.二叉樹是線性結構
二、2.填空題(20題)21.順序存儲方法是把邏輯上相鄰的結點存儲在物理位置______的存儲單元中。
22.以下程序運行后的輸出結果是【】。
main()
{inti,m=0,n=0,k=0;
for(i=9;i<=11;i++)
switch(i/10)
{case0:m++;n++;break;
case1:n++;break;
default:k++;n++;
}
printf("%d%d%d\n",m,n,k);
}
23.若fp已正確定義為一個文件指針,d1.dat為二進制文件,請?zhí)羁眨员銥椤白x”而打開此文件:
fp=fopen(【】);。
24.下面程序由兩個源程序文件:t4.h和t4.c組成,程序編譯運行的結果是:【】。
t4.h的源程序為:
#defineN10
#dennef2(x)(x*N)
t4.c的源程序為:
#include<stdio.h>
#defineM8
#definef(x)((x)*M)
#include"t4.h"
#main()
{inti,j;
i=f(1+1);j=f2(1+1);
printf(%d%d\n",i,j);
}
25.下列程序的輸出結果【】。
#definePR(ar)printf("ar=%d",ar)
main()
{intj,a[]={1,3,5,7,9,1l,13,1},*p=a+5;
for(j=3;j;j--)
switch(j)
{case1:
case2:PR(*p++);break;
case3:PR(*(--p));}}
26.數(shù)據(jù)結構分為邏輯結構與存儲結構,線性鏈表屬于【】。
27.以下程序的功能是求下列算式中A、B、C的值,請?zhí)羁铡?/p>
#include<stdio.h>
main()
{inta,b,c,k,t=348;
for(a=0;a<10;a++)
for(b=0;b<10;b++)
for(c=0;【】;c++)
{k=【】;
if(k==t)
printf("A=%dB=%dC=%d\n",a,b,c);
}
}
28.以下程序的輸出結果是【】。
main()
{char*p[]={"BOOL","OPK","H","SP"};
inti;
for(i=3,i>=0;i--,i--)printf("%c",*p[i]);
printf("\n");
}
29.下列程序的輸出結果是【】。
main()
{
inta[]={2,4,6},*ptr=&a[0],x=8,y,z;
for(y=0;y<3;y++)
z=(*(ptr+y)<x)?*(ptr+y):x;
printf("%d\n",z);
}
30.下面rotate函數(shù)的功能是:將n行n列的矩陣A轉置未AT,例如:
請?zhí)羁?/p>
#defineN4
voidrotate(inta[][])
{inti,j,t;
for(i=0;i<N;i++)
for(j=0;【】;j++)
{t=a[i][j];【】;a[j][i]=t;}
}
31.以下程序運行后的輸出結果是______。
#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);
}
32.下面程序的運行結果是______。
#include<stdio.h>
main()
{inty,a;
y=2,a=1;
while(y--!=-1)
{do{a*=y;a++;}while(y--);}
printf("%d,%d",a,y);}
33.若有如下結構體說明:
structSTRU
{inta,b;charc:doubled;
stmctSTRU*p1,*p2;
};
請?zhí)羁眨酝瓿蓪數(shù)組的定義,t數(shù)組的每個元素為該結構體類型。【】t[20]
34.設在主函數(shù)中有以下定義和函數(shù)調用語句,且fun函數(shù)為void類型,請寫出fun函數(shù)的首部【】。要求形參名為b。
main()
{doubles[10][22];
intn;
┆
fun(s);
┆
}
35.有以下定義和語句,則sizeof(a)的值是【】,而sizeof(a.share)的值是【】。
structdate
{intday;
intmouth;
intyear;
union{intshare1;
floatshare2;
}share;
}a;
36.下列程序用來輸出結構體變量ex所占存儲單元的字節(jié)數(shù)。
structst
{charname[20];doublescore;};
main()
{structstex;
printf("exsize:%d\n",sizeof(【】));
}
37.函數(shù)voidfun(float*sn,intn)的功能是:根據(jù)以下公式計算S,計算結果通過形參指針sn傳回;n通過形參傳入,n的值大于等于0。請補全程序。
S=1-1/3+1/5-1/7+…+1/(2n+1)
voidfun(float*sn,intn)
{floats=0.0,w,f=-1.0;
inti=0;
for(i=0;i<=n;i++)
{f=【】*f;
w=f/(2*i+1);
s+=w;
}
【】=s;
}
38.若有程序
main()
{inti,j;
scanf("i=%d,j=%d",&i,&j);
pfintf("i=%d,j=%d\n",i,j);
}
要求給i賦10,給j賦20,則應該從鍵盤輸入【】。
39.若有定義doublea[5];,則a數(shù)組元素下標的上限為______。
40.下列程序的運行結果是【】。
#include<stdio.h>
voidmain()
{ints=0,k;
for(k=7;k>4;k--)
{switch(k)
{case1:
case4:
case7:s++;break;
case2:
case3:
case6:break;
case0:
case5:s+=2;break;}}
printf("s=%d",s);}
三、1.選擇題(20題)41.在設計程序時,應采納的原則之一是()。
A.不限制goto語句的使用B.減少或取消注解行C.程序越短越好D.程序結構應有助于讀者理解
42.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結點訪問順序是()。
A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca
43.若函數(shù)調用時的實參為變量時,以下關于函數(shù)形參和實參的敘述中正確的是()。
A.函數(shù)的實參和其對應的形參共占同一存儲單元
B.形參只是形式上的存在,不占用具體存儲單元
C.同名的實參和形參占同一存儲單元
D.函數(shù)的形參和實參分別占用不同的存儲單元
44.以下不能正確定義二維數(shù)組的選項是
A.inta[2][2]={{1},{2}};
B.inta[][2]={1,2,3,4};
C.inta[2][2]={{1},{2,3}};
D.inta[2][]={1,2},{3,4}};
45.如果進棧序列為e1,e2,e3,e4,則可能的出棧序列是
A.快速排序B.冒泡排序C.直接插入排序D.堆排序
46.設有定義:intn1=0,n2,*p=&n2,*q=&n1;,下列賦值語句中與n2=n1;語句等價的是()。
A.*p=*q;B.p=q;C.*p=&n1;D.p=*q;
47.下列程序voidfunc1(inti);voidfunc2(inti)charst[]="hello,friend!";voidfuncl(inti){printf
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年LED電子顯示屏制作及安裝合同
- 2025企業(yè)合同保障女性職工孕期權益為她們在工作中提供堅強后盾
- 2025蘇州市家庭居室裝飾裝修工程委托監(jiān)理合同
- 電動車配件購銷合同協(xié)議
- 電纜買賣合同違約協(xié)議
- 申通快遞發(fā)貨合同協(xié)議
- 電商加盟抽成合同協(xié)議
- 《文化傳統(tǒng)與現(xiàn)代文明》(首都師范大學)章節(jié)測試答案
- 瓷磚廠拆除合同協(xié)議
- 男女朋友房內合同協(xié)議
- HSE管理體系與保證措施
- GB/T 30663-2024人才測評服務規(guī)范
- 《文化學概論》第三章-文化的起源及其發(fā)展-38
- 2024年高考新課標全國卷政治試題分析及2025屆高考復習備考建議
- 公立醫(yī)院醫(yī)療服務價格制度
- 突發(fā)環(huán)境事件應急預案評審會匯報課件-(模板)
- JGJ+196-2010建筑施工塔式起重機安裝、使用、拆卸安全技術規(guī)程
- 跌倒不良事件分析匯報課件
- 一氧化碳檢測報警器標準裝置技術報告
- 交通事故賠償起訴狀范例合集
- JT∕T1180.4-2018交通運輸企業(yè)安全生產(chǎn)標準化建設基本規(guī)范第4部分:道路普貨運輸
評論
0/150
提交評論