




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2021年四川省宜賓市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.有以下程序: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");}}若要按以下形式輸出數組右上半三角1234678111216則在程序下劃線處應填入的是()。A.i-1B.iC.i+1D.4一i
2.有以下程序
#include<stdio.h>
main()
{inty=10
while(y--);
printf(“y=%d\n”,y);
}
程序執行后的輸出結果是()。A.y=0B.y=-1C.y=1D.while構成無限循環
3.有以下程序:#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);}程序的運行結果是()。
A.a=2,b=2B.a=2,b=1C.a=1,b=1D.a=1,b=0
4.若有定義語句“inta,b;doubleX;”,則下列選項中沒有錯誤的是()。
A.switch(X%2){case0:a++;break;casel:b++;break;default:a++;b++;}
B.switch((int)x/2.O){case0:a++;break;casel:b++;break;default:a++;b++;}
C.switch((int)X%2){case0:a++;break;casel:b++;break;default:a++;b++;}
D.switch((int)(x)%2){case0.0:a++;break;casel.0:b++;break;default:a++;b++;}
5.有以下程序:#include<stdio.h>main(){FILE*f;f=fopen(“fllea.txt”,“w”);fprintf(f,“abc”);fclose(f);}若文本文件filea.txt中原有內容為hello,則運行以上程序后,文件filea.txt中的內容為()。
A.abcloB.abcC.helloabcD.abchello
6.以下定義數組的語句錯誤的是()。
A.intnum[]={1,2,3,4,5,6};
B.intnum[][3]={{1,2},3,4,5,6};
C.intnum[2][4]={{1,2},{3,4},{5,6}};
D.intnum[][4]={1,2,3,4,5,6};
7.數據表A中有10000個元素,如果僅要求求出其中最大的10個元素,則采用()最節省時間。
A.堆排序B.希爾排序C.快速排序D.希爾排序
8.已知一個有序表為(15,19,30,33,49,50,65,88,93,126,164),當二分查找值為126的元素時,檢索成功需進行的比較次數為()。
A.1次B.2次C.3次D.4次
9.下面算法的時間復雜度為()A.O(1)B.O(n)C.O(n*n)D.O(n!)
10.以下是一個對數組A(含有n個數值元素)進行排序的算法偽代碼,請問它的平均時間復雜度是多少()
A.O(n)B.O(n^2)C.O(1)D.O(log(n))
11.下列程序的運行結果是()。#include<stdio.h>main(){inta=2,b=3,c=4;if(a<B)if(b<0)c=0;elsec+=1;printf("%d\n",C);}
A.2B.3C.5D.4
12.
13.下列寫法正確的是()。
A.main(){inti=3,j;j=5}
B.main(){inti=3;
C.main()
D.main(){;}
14.若有定義“floatx=1.5;inta=1,b=3,c=2;”,則正確的switch語句是()。
A.switch(a+b){ case1:printf(“*\n”); case2+1:printf(“**\n”);}
B.switch((int)x);{ case1:printf(“**\n”); case2:printf(“**\n”);}
C.switch(x){ case1.0:printf(“*\n”); case2.0:printf(“**\n”);}
D.switch(a+b){ case1:printf(“*\n”); casec:printf(“**\n”);}
15.下面程序的輸出結果是______。main(){inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a+4;printf("%d\n",p[3]);}
A.6B.7C.3D.5
16.
17.程序運行后的輸出結果是()。A.0304.B.2050C.3344D.3040
18.
19.有以下程序
voidswap(char*x,char*y)
{chart;
t=*x;*x=*y;*y=t;
}
main()
{char*s1="abc",*s2="123";
swap(s1,s2);printf("%s,%s\n",s1,s2);
}
程序執行后的輸出結果是A.123,abcB.abc,123C.1bc,a23D.321,cba
20.以下敘述中正確的是()。
A.C語言編譯系統對標識符的長度沒有規定
B.C語言標識符的規定長度因系統而異
C.C語言規定標識符長度最多允許16個字符,超長報錯
D.C語言規定以下劃線開頭的標識符長度必須大于1
二、2.填空題(20題)21.若已知a=10,b=20,則表達式!a<b的值為【】。
22.以下程序中,主函數調用了LineMax函數,實現在N行M列的二維數組中,找出每一行上的最大值。
請填空。
#defineN3
#defineM4
voidLineMax(intx[N][M])
{inti,j,P;
for(i=0;i<N;i++)
{p=0;
for(j=1;j<M;j++)
if(x[i][p]<x[i][j])【】;
printf("Themaxvalueinline%dis%d\n",i,【】);
}
main()
{intx[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};
【】;
}
23.診斷和改正程序中錯誤的工作通常稱為【】。
24.數據庫保護分為安全性、控制性、______、并發性控制和數據恢復。
25.若fp已正確定義為一個文件指針,d1.dat為二進制文件,請填空,以便為“讀”而打開此文件:
fp=fopen(【】);。
26.以下程序中函數f的功能是在數組x的n個數(假定n個數互不相同)小找出最大最小數,將其中最小的數與第一個數對換,把最大的數與最后一個數對換。請填空。
#include<stdio.h>
voidf(intx[],intn)
{intp0,p1,i,j,t,m;
i=j=x[0];p0=p1=0;
for(m=O;m<n;m++)
{if(x[m]>i){i=x[m];p0=m;}
elseif(x[m]<j){j=x[m];p1=m;)
}
t=x[p0];x[p0]=x[n-1];x[n-1]=t;
t=x[pl];x[p1]=【】;【】=t
}
main()
{inta[10],u;
for(u=0;u<10;u++)scamp("%d",&a[u]);
f(a,10);
for(u=0;u<10;u++)printf("%d",a[u]);
ptintf("\n");
}
27.以下函數用以求x的y次方。補足所缺語句。
Doublefun(doublex,inty)
{inti;doublez=1;
for(i=1;i【】;i++)
z=【】;
returnz;
}
28.以下程序的運行結果是【】。
#defineMAX(a,b)(a>b?a:b)+1
main()
{inti=6,j=8,k;
printf("%d\n",MAX(i,j));
}
29.在長度為n的有序線性表中進行二分查找。最壞的情況下,需要的比較次數為【】。
30.若有定義:intx=1,y=2;floata=3.7,b=2.1;則(x+y)%2+(int)a/(int)b表達式的值為()。
31.以下函數的功能是求x的y次方,請填空。
doublefun(doublex,inty)
{inti;
doublez;
for(i=1,z=x;i<y;i++)z=z*【】;
returnz;
}
32.以下程序調用隨機函數得到N個20以內的整數放在s數組中。函數fun的功能是找出s數組中的最大數(不止一個)所在下標傳回主函數進行輸出,并把最大值作為函數值返回,請填空。
#defineN30
man()
{ints[N],d[N],i,k,m;
for(i=0,i<N;i++){s[i]=rand()%20;printf("%3d",s[i]);}
m=fun(【】);
printf("m=%d\n",m);
printf(”Theindex;\n");
for(i=0;i<k;i++)printf("%4d",d[i]);
printf("\n\n");
}
fun(int*w,int*d,int*k)
{inti,j,m=0,v;
for(i=0;i<N;i++)
if(w[i]>w[m])【】;
v=w[m];
for(i=0,j=0;i<N;i++)
if(w[i]==v)【】;
*k=【】;
return【】;
}
33.下面函數用來求出兩個整數之和,并通過形參傳回兩數相加之和值。請填空。
intadd(intx,inty,【】,)
{【】=x+y;}
34.將經過確認測試的軟件與外設、網絡等連接在一次運行的測試叫【】
35.算法的復雜度主要包括時間復雜度和______復雜度。
36.以下isprime函數的功能是判斷形參a是否為素數,是素數,函數返回1,否則返回0。請填空。
intisprime(inta)
for(i=2;i<=a/2;i++)
if(a%i==0)[8];
[9];
37.對二叉排序樹進行查找的方法是:用待查的值與根結點的值相比,若比根小,則繼續在【】子樹中找。
38.對于圖書管理數據庫,將圖書表中“人民郵電出版社”的圖書的單價漲價5%。請對下面的SQL語句填空:UPDATE圖書______WHERE出版單位="人民郵電出版社"
39.一個項目具有一個項目主管,一個項目主管叫‘管理多個項目,則實體“主管”與實體“”的聯系屬于______。
40.若有如下定義,則該數組的第一維大小為【】。
intb[][4]={1,2,3,4,5,6,7,8,9}
三、1.選擇題(20題)41.有以下程序:#include<stdio.h>main(){charcl='1',c2='2';cl=getchar();c2=getchar();putchar(c1);putchar(c2);}當運行時輸入:a<回車>后,以下敘述正確的是()。
A.變量c1被賦予字符a,c2被賦予回車符
B.程序將等待用戶輸入第2個字符
C.變量c1被賦予字符a,c2中仍是原有字符2
D.變量c1被賦予字符a,c2中將無確定值
42.按條件f對關系R進行選擇,其關系代數表達式是()。
A.R||R
B.
C.f(R)
D.f(R)
43.有下列函數定義:fun(floath){printf("%f,%f\n",h,h*h);}該函數的類型是()。
A.27B.6C.25D.30
44.對于長度為n的線性表,在最壞情況下,下列各排序法所對應的比較次數中正確的是()。
A.冒泡排序為n/2B.冒泡排序為nC.快速排序為nD.快速排序為n(n-1)/2
45.若進棧序列為1,2,3,4,進棧過程中可以出棧,則下列不可能的一個出棧序列是______。
A.1,4,3,2B.2,3,4,1C.3,1,4,2D.3,4,2,1
46.在計算機中,算法是指()
A.加工方法B.解題方案的準確而完整的描述C.排序方法D.查詢方法
47.有以下程序main(){intaa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};inti,s=0;for(i=0;i<4;i++)s+=aa[i][1];printf("%d\n",s);}程序運行后的輸出結果是()
A.11B.19C.13D.20
48.請選出正確的程序段
A.int*p;scanf("%d",p);…
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,e;s=&k;p=&c;s=p;*s=1;…
49.數據庫設計包括兩個方面的設計內容,它們是()
A.概念設計和邏輯設計B.模式設計和內模式設計C.內模式設計和物理設計D.結構特性設計和行為特性設計
50.下列程序的輸出結果是______。intb=2;intfunc(int*a){b+=*a;return(b);}main(){inta=2,res=2;res+=func(&b);printf("%d\n,res);}
A.4B.6C.8D.10
51.設有以下聲明語句streetex{intx;floaty;charz;}example;則下面的敘述中不正確的是______。
A.struct是結構體類型的關鍵字
B.example是結構體類型名
C.x,y,z都是結構體成員名
D.structex是結構體類型
52.已知字符′A′的ASCII碼值是65,字符變量cl的值是′A′,c2的值是′D′。執行語句printf("%d,%d",c1,c2-2);后,輸出結果是
A.A,BB.A,68C.65,66D.65,68
53.以下程序的輸出結果是()。#include<stdio.h>main(){inta=21,b=11;printf("%d\n",--a+b,--b+a);}
A.30B.31C.32D.33
54.以下程序中函數reverse的功能是對a所指數組中的內容進行逆置。voidreverse(inta[],intn){inti,t;for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1-1];a[n-1-i]=t;}}main(){intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;reverse(b,8);for(i=6;i<10;i++)s+=b[i];printf("%d\n",s);}程序運行后的輸出結果是______。
A.22B.10C.34D.30
55.有以下程序段charch;intk;ch='a';k=12;printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);已知字符a的ASCII碼值為97,則執行上述程序段后輸出結果是
A.因變量類型與格式描述符的類型不匹配輸出無定值
B.輸出項與格式描述符個數不符,輸出為零值或不定值
C.a,97,12k=12
D.a,97,k=12
56.設有定義語句int(*f)(int);,則以下敘述正確的是()。
A.f是基類型為int的指針變量
B.f是指向函數的指針變量,該函數具有一個int類型的形參
C.f是指向int類型一維數組的指針變量
D.f是函數名,該函數的返回值是基類型為int類型的地址
57.以下選項中非法的字符常量是()。
A.'\\'B.'\0201'C.'\xAA'D.'0'
58.以下選項中,合法的一組C語言數值常量是()。
A.028.5e-3-0xf
B.12.0X0234.5e0
C.1774e1.50abe
D.0x8A10,0003.e5
59.在下列敘述中,錯誤的一條是()
A.關系表達式的值是一個邏輯值,即“真”或“假”,可賦給一個邏輯變量
B.數組必須先定義后使用,且只能逐個引用數組元素,不能一次引用整個數組
C.在C語言中,判斷一個量是否為“真”時,用。代表“假”,1代表“真”
D.將字符串常量賦給字符數組時,必須在字符串后加飛'\0',表示字符結束
60.在數據庫設計的四個階段中,為關系模式選擇存取方法應該是在______階段。
A.需求分析B.概念設計C.邏輯設計D.物理設計
四、選擇題(20題)61.下面敘述正確的是_______。
A.算法的執行效率與數據的存儲結構無關
B.算法的空間復雜度是指算法程序中指令(或語句)的條數
C.算法的有窮性是指算法必須能在執行有限個步驟之后終止
D.算法的時間復雜度是指執行算法程序所需要的時間
62.
若有以下程序段,w和k都是整型變量:
┇
w=k:
LB:if(w==0)gotoLE;
W--:
printf("*")
gotoLB;
LE;
┇
則不能與上面程序段等價的循環語句是()。
A.for(w=k;w!=0;w--)printf("*");
B.for(w=k;w;--w)printf("*");
C.w=k;while(w--!=0)printf("*");
D.w=k:w++;do{w--;printf("*");}while(w!=0);
63.有以下程序:
程序運行后的輸出結果是()。
A.3,3,3B.2,2,3C.1,2,3D.1,l,3
64.若希望下列的程序運行后輸出25,程序空白處的正確選項是()。
main
{inti,j=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;++ic.i="4;i">2;i--
D.i=2;i<4;++i
65.有三個關系R、S和t如下:由關系R和s通過運算得到關系T,則所使用的運算為()。
A.笛卡兒積B.交C.并D.自然連接
66.
67.下列程序的輸出結果是()。
A.a=4,b=4
B.a=4,b=5
C.a=5,b=4
D.a=5,b=5
68.有以下程序:
程序運行后的輸出結果是()。
A.12B.14C.1234D.123456
69.設有以下語句:
TypedefstructTT
{charc;inta[4];}CIN;
則下面敘述中錯誤的是()。
A.不可以用TT定義結構體變量
B.TT是結構體標識名
C.可以用CIN定義結構體變量
D.CIN是structTT類型的變量
70.有以下程序(注:字符a的ASCIl碼值為97)}程序運行后的輸出結果是()。
A.789B.abcC.7890D.979899
71.以下關于宏的敘述中正確的是()。
A.宏替換沒有數據類型限制
B.宏定義必須位于源程序中所有語句之前
C.宏名必須用大寫字母表示
D.宏調用比函數調用耗費時間
72.下列選項中不會引起二義性的宏定義是()。
A.#defineS(x)x*x
B.#defineS(x)(x)*(x)
C.#defineS(x)(x*x)
D.#defineS(x)((x)*(x))
73.若輸入“abcdef”“abdef”,下述程序的輸出結果為()。#include#includemain{intn;chars1[20],s2[20],*p1,*p2;scanf("%s",s1);scanf("%S",s2);p1=s1;p2=s2;n=strcmp(p1,p2);printf("Vood\n",n);}A.A.-1B.0C."abcdef"D."abdef"
74.執行下列程序中的輸出語句后,a的值是()。main{inta;printf(“%d\n”,(a=2*3,a*5,a+7));}A.17B.37C.6D.13
75.下列選項中不屬于軟件生命周期開發階段任務的是()。
A.軟件測試B.概要設計C.軟件維護D.詳細設計
76.有以下程序main(){chara[7]="a0\0a0\0";inti,j;i=sizeof(a);j=strlen(a);printf("%d%d\n",i,j);}程序運行后的輸出結果是______。
A.22B.76C.72D.62
77.
78.假定X和Y為double型,則表達式x=2,y=x+3/2的值是()。
A.3.500000B.3C.2.000000D.3.000000
79.
80.有以下程序:
#include<stdio.h>
main()
{inta=7;
while(a--);
print[("%d\n",a);
}
程序運行后的輸出結果是()。
A.-l
B.0
C.1
D.7
五、程序改錯題(1題)81.下列給定程序中,函數proc的功能是:先將字符串s中的字符按順序存放到t中,然后把S中的字符按正序連接到t的后面。例如,當s中的字符串為WXYZ時,則t中的字符串應為WXYZWXYZ。
請改正程序中的錯誤,使它能得出正確的結果。
注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。
試題程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
voidproc(char*s,char*t)
{
inti,s1;
s1=strlen(s);
for(i=0;i<s1;i++)
//****found****
t[i]=s[s1];
for(i=0;i<s1;i++)
t[s1+i]一s[i];
t[2*s1]=\O0;
}
voidmain
{
chars[100],t[100];
system("CLS");
print{("\nPleaseenterstrings:");
scanf("%s",s);
proc(s,t);
printf("Theresultis:%s\n",t);
}
六、程序設計題(1題)82.請編寫一個函數proc,它的功能是:求出1~m(含m)能被7或11整除的所有整數放在數組a中,通過n返回這些數的個數。例如,若傳給m的值為70,則程序輸出:7111421222833354244495556636670注意:部分源程序給出如下。請勿改動main函數和其他函數中的任何內容,僅在函數proc的花括號中填人所編寫的若干語句。試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#defineN100voidproc(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");}elseprintf("%4d",arr[k]);printf("\n");}
參考答案
1.B本題中要求輸出右上半角的數,對角線上的數的下標相同,所以j=i。
2.B解析:y-的作用是先取其值作為表達式的值,然后y的值減1存入y。當y>0時循環繼續,直到y=0時循環結束,然后y值減1存入y中,所以選B。
3.Bcase常量表達式只是起語句標號作用,并不進行條件判斷。在執行switch語句時,根據switch的表達式,找到與之匹配的case語句,就從此case子句執行下去,不再進行判斷,直到碰到break或函數結束為止。所以執行內層“switch(y)”時只執行了“a++;”,此時a的值為1,然后執行外層case2語句的“a++;b++;”,a值為2,b值為1。故本題答案為B選項。
4.CC語言中,switch語句中的表達式和case表達式都不能是浮點類型。所以選C。
5.B執行“fprintf(f,“abc”);”后,f文件原有內容被“abc”覆蓋。故本題答案為B選項。
6.B二維數組的定義有3種形式,第一種是分行為兩位數組賦值,即intnum[]={{12},{3,4},{5,6}},第二種是按照數組排列順序進行賦值,即intnum[]={1,2,3,4,5,6},第三種為對部分元素賦初值,即intnum[]={{1,2}{},{3,4},{5,6}},所以錯誤的為B。
7.B
8.C
9.B
10.B
11.C解析:本題考查ifelse語句。第一個if語句,先判斷條件,發現a<b條件成立,執行下列的語句;第二個if語句,先判斷條件,發現b<0條件不成立,則執行與其配對的else語句,c+=1,得c=5。
12.D
13.D解析:本題考查語句的基本構成。選項A)中j=5后面少了一個分號:選項B)中少了“}”;選項C)不是一個完整的函數定義格式,一個完整的函數定義格式還包括一對花括號:選項D)正確,是一個空語句。
14.AB選項中“switch((int)x);”語句中不應該有最后的分號。switch(expr1)中的expr1不能用浮點類型或long類型,也不能為一個字符串,所以C選項錯誤。case后面必須為常量表達式,所以D選項錯誤。故本題答案為A選項。
15.B解析:指針變量p指向數組a的第5個元素,p[3]在原指向基礎上移3個單位,指針變量p將指向第8個元素(下標為7的元素),值為7。
16.B
17.D[解析]第一次循環溈0.i%2為0.執行switch(a[0]%62)中的case0語句后內容即a[0]++,a[0]的值變成3;第二次循環的值為1.i%62為1.執行case1:a[]=0;所以a[1]的值變成0;第三次循環的值為2.i%62為0.執行switch([2]%62)中的case1語句后的內容a[2]--,a[2]的值變成4;第四次循環的值為3.i%2為1.執行case1:ai]=0;所以a[3]的值變成0.
18.C
19.C解析:此題考核的知識點是指針變量值的交換。c語言中,字符串常量在內存中是以字符數組的形式進行存放的,因此字符指針x和y指向的是各字符串的首地址,也就是字符串第—個字符的地址,則*x與*y交換的是字符串的第—個字符,即字符“a”與“1”的交換,而字符串中其它字符保持不變,所以答案選C。
20.B對于標識符的長度(即一個標識符允許的字符個數),C語言編譯系統是有規定的,即標識符的前若干個字符有效,超過的字符將不被識別。不同的C語言編譯系統所規定的標識符有效長度是不同的。故本題答案為B選項。
21.11解析:計算表達式!a<b,先計算!a,因a的值為10,!a的值為0,而關系表達式0<20為真,所以表達式!a<b的值為1。
22.p=jx[i][p]LineMax(x)
23.程序調試程序調試解析:程序調試的任務是診斷和改正程序中的錯誤。程序調試與軟件測試不同,軟件測試是盡可能多地發現軟件中的錯誤。先要發現軟件的錯誤,然后借助于調試工具找出軟件錯誤的具體位置。軟件測試貫穿整個軟件生命期,而調試主要在開發階段。
24.
25.d1.dat"rb"d1.dat,'rb'解析:打開文件的函數為fopen('文件名','mode'),其中'mode'表示文件的打開方式。如果打開的是二進制文件,其mode字符串可以是:'rb'、'wb'、'ab'、'rb+'、'wb+'、'ab+'。'r'表示以只讀方式打開。'w'表示以寫方式打開,如果已存在該文件名的文件,文件中的內容將被清空。若文件名不存在,則將創建該文件。'a'為追加方式打開。若文件存在時,將打開這個文件并且在文件的末尾進行追加。當文件不存在,將創建新文件。'r+'打開一個已存在文件用于更新(可讀可寫)。\'w+'創建一個新文件用于更新,如果文件存在,文件被重寫(可讀可寫)。'a+'打開用于追加,當文件不存在時,創建新文件,并在文件末尾進行追加(可讀可寫)。根據題意,應該填'd1.dat','rb'。
26.x[O]x[O]x[O]\r\nx[O]解析:根據題意,f()函數要“將其中最小的數與第一個數對換,把最大的數與最后一個數對換”,而填空處的上一行語句正是使用交換算法,將下標為p0的元素與數組x的最后一個元素(n個元素的數組,其最后一個元素的下標為n-1)交換。所以不難得知,填空所在行的語句是要將下標為p1的元素與數組x的第1個元素交換。故兩個空都應該填x[0]。
27.<y+1z*x
28.99解析:本題考查宏定義與三目運算符的綜合用法,宏定義是原樣替換,本題中,如果a>b成立,則a+1的值為整個表達式的值,否則為b+1的值為整個表達式的值,(應注意后面的加1)。
29.log2n
30.22解析:本題考查表達式的運算。因為x=1,y=2,所以表達式(x+y)%2=3%2=1,(int)a/(int)b=(int)}(3/2)=1,因此整個表達式的結果為(x+y)%2+(int)a/(int)b=1+1=2。
31.xx解析:函數的定義形式為;
函數類型函數名(形參表)
{
類型說明語句;
執行語句;
}
本題中函數的功能是:累積變量以求得變量的Y次方。
32.sd&km=id[j++]=ijv
33.int*p*p或p[0]int*p\r\n*p或p[0]
34.系統測試系統測試
35.空間空間解析:算法的復雜度主要包括時間復雜度和空間復雜度。所謂算法的時間復雜度,是指執行算法所需要的計算工作量。一個算法的空間復雜度,一般是指執行這個算法所需要的內存空間。
36.如果a能被i整除,則a是素數,返回值為0。如果a不能被i整除,則a不是素數,返回值為1。
37.左左解析:對二叉排序樹進行查找,若待查的值與根結點的值相比,若比根小,則繼續在左子樹中找;若比根大,則在右子樹中找。
38.更新表中元組的值,使用UPDATE命令,一次可以更新表中的一個或多個屬性值。UPDATE短語之后指定更新數據所屬的表,將新的屬性值或表達式賦值給對應的屬性名(SET單價=單價*1.05),并置于SET短語之后。要求對人民郵電出版社的圖書漲5%,需要用WHERE短語對元組進行限制,即對符合條件的元組進行更新。\r\n\r\n
39.一對多一對多解析:由于一個項目主管可以管理多個項目,而一個項目只能有一個項目主管,“項目主管”這個實體與“項目”這個實體的管理關系囑于一對多。
40.3
41.A解析:函數getchar()的作用是從終端(或系統隱含的輸入沒備)輸入一個字符,且只能接收一個字符(回車符也算一個字符)。所以本題中c1被賦值字符a,c2被賦予回車符。
42.C解析:選項A表示關系R與關系R進行自然連接;選項B表示關系R與關系R按條件f做連接運算;選項C表示按條件f對關系R做選擇運算;選項D表示在域f上對關系R做投影運算。
43.A解析:本題考查函數調用時的參數傳遞。函數reverse將數組b進行了逆置,此時的b[10]={10,9,8,7,6,5,4,3,2,1},后面for語句的功能是將b中的前3個數累加,將結果放在s中,最后將s輸出,結果s=10+9+8=27。
44.DD。【解析】本題主要考查對排序算法的理解。冒泡排序法首先將第一個記錄的關鍵字與第二個記錄的關鍵字進行比較,若逆序則交換,然后比較第二個與第三個,以此類推,直至第n-1個與第n個記錄的關鍵字進行比較。第一趟冒泡排序使最大的關鍵字元素放到最后。以此類推,進行第2~n次冒泡排序。如果在排序過程中不存在逆序,則排序結束。在最壞情況下,冒泡排序中,若初始序列為“逆序”序列,則需要比較n(D-1)/2次。快速排序是對冒泡排序的一種改進。它的基本思想是:通過一趟排序將待排記錄分割成獨立的兩部分,其中一部分記錄的關鍵字比另一部分記錄的關鍵字小,然后分別對這兩部分記錄繼續進行排序,最終達到整個記錄有序。對于快速排序,當初始記錄序列按關鍵字有序或基本有序時,快速排序退化為冒泡排序,最壞情況下比較次數為n(n-1)/2。
45.C解析:棧是一種后進先出表,選項C中,先出棧的是3,說明此時棧內必然有1,2,由于1先于2進淺,所以1不可能在2之前出棧,故選項C這種出棧序列是不可能的。
46.B在計算機中,算法被定義為對一個問題求解步驟的一種描述,是求解問題的方法,它是指令的有限序列,其中每條指令表示一個或者多個操作。算法具有有窮性、確定性、可行性、輸入和輸出五大特點。
在本題中,選項A、C、D的說法明顯偏離了算法的定義,因此正確答案選B。
47.B解析:C語言規定,數組元素的下標是從零開始的.本題首先定義了一個二維數組aa并按行賦初值,定義了一個變量s用于求和。for循環執行4次分別把數組元素aa[0][1]、aa[1)[1)、oa[2][1]和aa[2][1]的值(2,6,9,2)加到變量s中,s的值為19,所以最后輸出的s的值為19.所以4個選項中B正確。
48.C解析:本題的選項A)和B)犯了同樣的錯誤,即指針變量在定義后并沒有指向具體的變量。也就是說,指針變量中沒有確定的地址值,它的值是不可預見的,所指的單元也是不可預見的,因此不能進行賦值操作。另外,在選項D)中,s是int型指針變量,p是char型指針變量,所指向的內存單元所占用的字節數是不同的,因而不能將字符指針變量p的值賦給整型指針變量s。
49.A解析:模式設計和內模式設計是概念設計的兩種方法。物理設計是根據特定的計算機系統,對數據的存儲結構和存取方法進行設計,從而實現從邏輯結構到物理結構的轉換。從系統開發的角度來看,結構特性設計和行為特性-設計是數據庫應用系統所具有的兩個特性。結構特性的設計,設計各級數據庫模式(靜態特性):行為特性的設計,改變實體及其特性,決定數據庫系統的功能(動態特性)。
50.B解析:實參a按地址傳遞,b是全局變量,函數func中b=b+*a=2+2=4,故主函數中res=res+4=2+4=6。
51.B解析:example是結構體變量名。
52.C解析:在C語言中,字符型數據在內存中的存儲形式是ASCII碼值。當需要以整型格式輸出字符時,輸出的也是ASCII碼值。字符'A'和'D'的ASCII碼值分別為65和68。
53.A解析:該題考查的是C語言中自減運算符和逗號表達式的應用。自減運算符作為前綴時,先使變量的值減1,再進行賦值運算。逗號表達式的形式為:表達式1,表達式2,其求解過程是:先求解表達式1,再求解表達式2,整個逗號表達式的值是表達式2的值。
54.A解析:主函數調用reverse時。實參為b和8,即reverse函數的功能是將數組b中的前8個元素逆置,其余元素不變。因此函數調用結束后數組b的內容為:8、7,6、5、4、3、2、1、9、10。main函數中for循環語句的功能是求b[6]元素到b[9]元素的和,即s=b[6]+b[7]+b[8]+b[9]=2+1+9+10=22,因此printf語句的輸出結果是22。
55.D解析:輸出格式控制符%c表示將變量以字符的形式輸出;輸出格式控制符%d表示將變量以帶符號的十進制整型數輸出,所以第一個輸出語句輸出的結果為a,97;第二個輸出語句輸出的結果為k=12。
56.B本題考查的是指向函數的指針。語句“int(*f)(int);”是對一個函數的聲明,其中f是指向該函數的指針,該函數有一個整型的參數,函數返回值類型為整型。故答案選B)。
57.B
58.B解析:選項A中,028是八進制形式,但后面跟的8不在0~7之內,所以非法;選項C中,4e1.5是指數形式,但e后面所跟的不是整數,所以非法;選項D中,10,000中不能有“,”,所以非法。故本題應該選擇B。
59.B
60.D解析:需求分析階段是分析用戶的需求,顯然不屬于這個階段,由此可以排除選項A.概念設計是將需求分析得到的用戶需求抽象為信息結構及概念模型的過程,涉及不到數據的存取,所以選項D錯誤。邏輯設計是在概念設計的基礎上將E-R圖轉換成數據庫管理系統的邏輯數據模型表示的邏輯模式,也不涉及存取問題,選項C也不對。答案為D。
61.C解析:算法的設計可以避開具體的計算機程序設計語言,但算法的實現必須借助程序設計語言中,提供的數據類型及其算法。數據結構和算法是計算機科學的兩個重要支柱。它們是一個不可分割的整體。算法在運行過程中需輔助存儲空間的大小稱為算法的空間復雜度。算法的有窮性是指一個算法必須在執行有限的步驟以后.結束。算法的時間復雜度是指執行算法所需要的計算工作量,即算法執行過程中所需要的基本運算次數。
62.C
\n當循環結束時,w的值應為-1,而其他選項中w的值為0,故選擇c選項。
\n
63.A根據程序可以分析出系統只分配了一個整型數據的存儲空間,把這個空間的地址分別賦給了指針型變量a,b和c。程序利用指針a把數據1寫入了該空間,然后利用指針b,把數據2寫入該空間,所以原來的1就被覆蓋掉了,最后用指針c把數據3寫入該空間把數據2覆蓋掉了,此空間中最后留有的數據是3。因為3個指針都指向該空間,所以輸出數據均為3。
64.D要想使程序輸出25,則j-40=25,j=65,而j初值是50,所以填入for循環的語句,使引用的數組元素累加65-50=15即可,D選項中,i下標從0開始,i=2指向第3個數50+a[2]=50+10=60,繼續循環60+a[3]=60+5=65,此時i=4跳出,循環結束。
65.D自然連接是一種特殊的等值連接,它要求兩個關系中進行比較的分量必須是相同的屬性組,并且在結果中把重復的屬性列去掉,因此根據關系T中的有序組可知關系R與s進行的是自然連接操作,故本題答案為D)。
66.B
67.Bcontinue語句的作用是跳過本次循環體中余下尚未執行的語句,接著再一次進行循環條件的判定。當能被2整除時,a就會增1,之后執行continue語句,直接執行到for循環體的結尾,進行i++,判斷循環條件。
68.D本題考查的是文件的綜合應用。本題首先以創建方式打開文件”d2.dat”,兩次調用fprintf函數把a[O],a[1],a[2],a[3],a[4],a[5]的值寫到文件”d2.d8t”中,文件”d2.dat”的內容為:1,2,3<回車>4,5,6。然后把該文件關閉再以只讀方式打開,文件位置指針指向文件頭,再通過fs-canf函數從中讀取兩個整數到k和n中,由于格式符之間無間隔,因此輸入數據可以用回車隔開,故輸入的k的值為123,n的值為456。
69.D類型定義;CIN不是structII類型的變量,它是structII類型的代替,即可以用它定義結構體變量。
70.A因為小寫字符a,b,c的ASCIl碼的值分別為97,98,99,而在d0…while循環語句中,每次對字符的ASCIl碼的值取余數并輸出,所以分別輸出7,8,9,選項A)正確。
71.A宏定義寫在函數的花括號外邊,作用域為其后的程序,通常在文件的最開頭,因此B)選項中宏定義必須位于源程序中所有語句之前是錯誤的。宏名一般用大寫,但不是必須用大寫,因此c)選項錯誤。宏展開不占運行時間,只占編譯時間,函數調用占運行時間(分配內存、保留現場、值傳遞、返回值),因此D)選項錯誤。
72.D本題考查參數的宏替換。為避免二義性有些參數表達式必須加括號,否則在實參表達式替換時,會出現錯誤。例如x為(m+n)時替換A:m+n*m+n,所以選項D最符合條件。
73.A本題考查字符串比較函數strcmp(s1,s2),若s1>s2,則返回1;若s1=s2,則返回0;若s1<s2,則返回-1。字符串依次比較的是它們字符的ASCIl碼值。
74.C本題考查逗號表達式。程序輸出時輸出一個%d,所以輸出第一個a的值與后續無關。本題考查逗號表達式。本題的返回值是a+7,a=2*3=6,a+7=13(注意:本題問的是a的值,而不是程序的輸出值)。
75.C解析:軟件生命周期由軟件定義、軟件開發和軟件維護三個時期組成,每個時期又進一步劃分為若干個階段。軟件定義時期的基本任務是確定軟件系統的工程需求。軟件定義可分為軟件系統的可行性研究和需求分析兩個階段。軟件開發時期是具體設計和實現在前一時期定義的軟件,它通常由下面五個階段組成:概要設計、詳細設計、編寫代碼、組裝測試和確認測試。軟件維護時期的主要任務是使軟件持久地滿足用戶的需要。即當軟件在使用過程中發現錯誤時應加以改正;當環境改變時應該修改軟件,以適應新的環境;當用戶有新要求時應該及時改進軟件,以滿足用戶的新要求。根據上述對軟件生命周期的介紹,可知選項C中的軟件維護不是軟件生命周期開發階段的任務。因此,本題的正確答案是C。
76.C題目中需要求出程序的輸出值i,j,其中i的值由sizeof決定,j的值由strlen函數決定。
sizeof是C語言的一種運算符,以字節的形式給出操作數的存儲空間的大小。sizeof的操作對象可以是具體的數據類型,也可以是變量。題目中的操作數為數組名,利用sizeof可計算出數組所占用內存的字節數,題目中數組類型為char,大小為7,故該數組占用的內存數為7。
strlen函數則是計算一段字符串的長度,可以從整個字符串的頭部開始計算,也可以從字符串的中間開始計算,當碰到第一個字符串結束符“\\0”,則停止計算,返回當前的計算值。題目中在前兩個字符之后就出現了結束符“\\0”,故strlen函數的值為2。
77.D
78.D本題考查C語言中變量類型的轉換。
C語言中若參與運算的變量的數據類型不同,則先轉換成同一類型,然后進行運算。轉換數據始終往長度增加的方向進行,以確保精確度,如int和long運算,則將int轉換為long再運算,所有的浮點運算都是以雙精度(double)進行的。
題目中x、y都為double型數據,而表達式3/2為兩個整型變量之間的計算,計算結果只保留整數部分,小數部分省略掉。3/2的結果為1。后面變為計算y=x+1,這時都需要變為double型數據,結果為3.000000。
79.D
80.A\n此題考查a--和--a之間的區別,當while(a--)為真循環執行,a--是執行再減1,所以答案選擇A。
\n
81.\n\t錯誤:t[i]=s[l];
\n正確:t[i]=s[i];
\n【解析】函數proc首先要實現將數組s中的元素順序放在數組t中,即數組t中下標為i的元素在數組S中下標也為i,因此“t[i]=s[s1];”應改為“t[i]=s[i];”。\n
82.voidproc(intm,int*a,int*n){inti,j=0;for(i=1;i<=m;i++)//進行m次循環if(i%7==0||i%11==0)//能被7或11整除的所有整數a[j++]=i;//符合條件的數放在數組a中*n=j;//返回這些數的個數}【解析】本題需要先判斷1~m每一個整數能否被7或11整除,然后將符合條件的整數放在數組a中,最后將符合條件的數的個數通過形參n返回主函數。2021年四川省宜賓市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.有以下程序: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");}}若要按以下形式輸出數組右上半三角1234678111216則在程序下劃線處應填入的是()。A.i-1B.iC.i+1D.4一i
2.有以下程序
#include<stdio.h>
main()
{inty=10
while(y--);
printf(“y=%d\n”,y);
}
程序執行后的輸出結果是()。A.y=0B.y=-1C.y=1D.while構成無限循環
3.有以下程序:#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);}程序的運行結果是()。
A.a=2,b=2B.a=2,b=1C.a=1,b=1D.a=1,b=0
4.若有定義語句“inta,b;doubleX;”,則下列選項中沒有錯誤的是()。
A.switch(X%2){case0:a++;break;casel:b++;break;default:a++;b++;}
B.switch((int)x/2.O){case0:a++;break;casel:b++;break;default:a++;b++;}
C.switch((int)X%2){case0:a++;break;casel:b++;break;default:a++;b++;}
D.switch((int)(x)%2){case0.0:a++;break;casel.0:b++;break;default:a++;b++;}
5.有以下程序:#include<stdio.h>main(){FILE*f;f=fopen(“fllea.txt”,“w”);fprintf(f,“abc”);fclose(f);}若文本文件filea.txt中原有內容為hello,則運行以上程序后,文件filea.txt中的內容為()。
A.abcloB.abcC.helloabcD.abchello
6.以下定義數組的語句錯誤的是()。
A.intnum[]={1,2,3,4,5,6};
B.intnum[][3]={{1,2},3,4,5,6};
C.intnum[2][4]={{1,2},{3,4},{5,6}};
D.intnum[][4]={1,2,3,4,5,6};
7.數據表A中有10000個元素,如果僅要求求出其中最大的10個元素,則采用()最節省時間。
A.堆排序B.希爾排序C.快速排序D.希爾排序
8.已知一個有序表為(15,19,30,33,49,50,65,88,93,126,164),當二分查找值為126的元素時,檢索成功需進行的比較次數為()。
A.1次B.2次C.3次D.4次
9.下面算法的時間復雜度為()A.O(1)B.O(n)C.O(n*n)D.O(n!)
10.以下是一個對數組A(含有n個數值元素)進行排序的算法偽代碼,請問它的平均時間復雜度是多少()
A.O(n)B.O(n^2)C.O(1)D.O(log(n))
11.下列程序的運行結果是()。#include<stdio.h>main(){inta=2,b=3,c=4;if(a<B)if(b<0)c=0;elsec+=1;printf("%d\n",C);}
A.2B.3C.5D.4
12.
13.下列寫法正確的是()。
A.main(){inti=3,j;j=5}
B.main(){inti=3;
C.main()
D.main(){;}
14.若有定義“floatx=1.5;inta=1,b=3,c=2;”,則正確的switch語句是()。
A.switch(a+b){ case1:printf(“*\n”); case2+1:printf(“**\n”);}
B.switch((int)x);{ case1:printf(“**\n”); case2:printf(“**\n”);}
C.switch(x){ case1.0:printf(“*\n”); case2.0:printf(“**\n”);}
D.switch(a+b){ case1:printf(“*\n”); casec:printf(“**\n”);}
15.下面程序的輸出結果是______。main(){inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a+4;printf("%d\n",p[3]);}
A.6B.7C.3D.5
16.
17.程序運行后的輸出結果是()。A.0304.B.2050C.3344D.3040
18.
19.有以下程序
voidswap(char*x,char*y)
{chart;
t=*x;*x=*y;*y=t;
}
main()
{char*s1="abc",*s2="123";
swap(s1,s2);printf("%s,%s\n",s1,s2);
}
程序執行后的輸出結果是A.123,abcB.abc,123C.1bc,a23D.321,cba
20.以下敘述中正確的是()。
A.C語言編譯系統對標識符的長度沒有規定
B.C語言標識符的規定長度因系統而異
C.C語言規定標識符長度最多允許16個字符,超長報錯
D.C語言規定以下劃線開頭的標識符長度必須大于1
二、2.填空題(20題)21.若已知a=10,b=20,則表達式!a<b的值為【】。
22.以下程序中,主函數調用了LineMax函數,實現在N行M列的二維數組中,找出每一行上的最大值。
請填空。
#defineN3
#defineM4
voidLineMax(intx[N][M])
{inti,j,P;
for(i=0;i<N;i++)
{p=0;
for(j=1;j<M;j++)
if(x[i][p]<x[i][j])【】;
printf("Themaxvalueinline%dis%d\n",i,【】);
}
main()
{intx[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};
【】;
}
23.診斷和改正程序中錯誤的工作通常稱為【】。
24.數據庫保護分為安全性、控制性、______、并發性控制和數據恢復。
25.若fp已正確定義為一個文件指針,d1.dat為二進制文件,請填空,以便為“讀”而打開此文件:
fp=fopen(【】);。
26.以下程序中函數f的功能是在數組x的n個數(假定n個數互不相同)小找出最大最小數,將其中最小的數與第一個數對換,把最大的數與最后一個數對換。請填空。
#include<stdio.h>
voidf(intx[],intn)
{intp0,p1,i,j,t,m;
i=j=x[0];p0=p1=0;
for(m=O;m<n;m++)
{if(x[m]>i){i=x[m];p0=m;}
elseif(x[m]<j){j=x[m];p1=m;)
}
t=x[p0];x[p0]=x[n-1];x[n-1]=t;
t=x[pl];x[p1]=【】;【】=t
}
main()
{inta[10],u;
for(u=0;u<10;u++)scamp("%d",&a[u]);
f(a,10);
for(u=0;u<10;u++)printf("%d",a[u]);
ptintf("\n");
}
27.以下函數用以求x的y次方。補足所缺語句。
Doublefun(doublex,inty)
{inti;doublez=1;
for(i=1;i【】;i++)
z=【】;
returnz;
}
28.以下程序的運行結果是【】。
#defineMAX(a,b)(a>b?a:b)+1
main()
{inti=6,j=8,k;
printf("%d\n",MAX(i,j));
}
29.在長度為n的有序線性表中進行二分查找。最壞的情況下,需要的比較次數為【】。
30.若有定義:intx=1,y=2;floata=3.7,b=2.1;則(x+y)%2+(int)a/(int)b表達式的值為()。
31.以下函數的功能是求x的y次方,請填空。
doublefun(doublex,inty)
{inti;
doublez;
for(i=1,z=x;i<y;i++)z=z*【】;
returnz;
}
32.以下程序調用隨機函數得到N個20以內的整數放在s數組中。函數fun的功能是找出s數組中的最大數(不止一個)所在下標傳回主函數進行輸出,并把最大值作為函數值返回,請填空。
#defineN30
man()
{ints[N],d[N],i,k,m;
for(i=0,i<N;i++){s[i]=rand()%20;printf("%3d",s[i]);}
m=fun(【】);
printf("m=%d\n",m);
printf(”Theindex;\n");
for(i=0;i<k;i++)printf("%4d",d[i]);
printf("\n\n");
}
fun(int*w,int*d,int*k)
{inti,j,m=0,v;
for(i=0;i<N;i++)
if(w[i]>w[m])【】;
v=w[m];
for(i=0,j=0;i<N;i++)
if(w[i]==v)【】;
*k=【】;
return【】;
}
33.下面函數用來求出兩個整數之和,并通過形參傳回兩數相加之和值。請填空。
intadd(intx,inty,【】,)
{【】=x+y;}
34.將經過確認測試的軟件與外設、網絡等連接在一次運行的測試叫【】
35.算法的復雜度主要包括時間復雜度和______復雜度。
36.以下isprime函數的功能是判斷形參a是否為素數,是素數,函數返回1,否則返回0。請填空。
intisprime(inta)
for(i=2;i<=a/2;i++)
if(a%i==0)[8];
[9];
37.對二叉排序樹進行查找的方法是:用待查的值與根結點的值相比,若比根小,則繼續在【】子樹中找。
38.對于圖書管理數據庫,將圖書表中“人民郵電出版社”的圖書的單價漲價5%。請對下面的SQL語句填空:UPDATE圖書______WHERE出版單位="人民郵電出版社"
39.一個項目具有一個項目主管,一個項目主管叫‘管理多個項目,則實體“主管”與實體“”的聯系屬于______。
40.若有如下定義,則該數組的第一維大小為【】。
intb[][4]={1,2,3,4,5,6,7,8,9}
三、1.選擇題(20題)41.有以下程序:#include<stdio.h>main(){charcl='1',c2='2';cl=getchar();c2=getchar();putchar(c1);putchar(c2);}當運行時輸入:a<回車>后,以下敘述正確的是()。
A.變量c1被賦予字符a,c2被賦予回車符
B.程序將等待用戶輸入第2個字符
C.變量c1被賦予字符a,c2中仍是原有字符2
D.變量c1被賦予字符a,c2中將無確定值
42.按條件f對關系R進行選擇,其關系代數表達式是()。
A.R||R
B.
C.f(R)
D.f(R)
43.有下列函數定義:fun(floath){printf("%f,%f\n",h,h*h);}該函數的類型是()。
A.27B.6C.25D.30
44.對于長度為n的線性表,在最壞情況下,下列各排序法所對應的比較次數中正確的是()。
A.冒泡排序為n/2B.冒泡排序為nC.快速排序為nD.快速排序為n(n-1)/2
45.若進棧序列為1,2,3,4,進棧過程中可以出棧,則下列不可能的一個出棧序列是______。
A.1,4,3,2B.2,3,4,1C.3,1,4,2D.3,4,2,1
46.在計算機中,算法是指()
A.加工方法B.解題方案的準確而完整的描述C.排序方法D.查詢方法
47.有以下程序main(){intaa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};inti,s=0;for(i=0;i<4;i++)s+=aa[i][1];printf("%d\n",s);}程序運行后的輸出結果是()
A.11B.19C.13D.20
48.請選出正確的程序段
A.int*p;scanf("%d",p);…
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,e;s=&k;p=&c;s=p;*s=1;…
49.數據庫設計包括兩個方面的設計內容,它們是()
A.概念設計和邏輯設計B.模式設計和內模式設計C.內模式設計和物理設計D.結構特性設計和行為特性設計
50.下列程序的輸出結果是______。intb=2;intfunc(int*a){b+=*a;return(b);}main(){inta=2,res=2;res+=func(&b);printf("%d\n,res);}
A.4B.6C.8D.10
51.設有以下聲明語句streetex{intx;floaty;charz;}example;則下面的敘述中不正確的是______。
A.struct是結構體類型的關鍵字
B.example是結構體類型名
C.x,y,z都是結構體成員名
D.structex是結構體類型
52.已知字符′A′的ASCII碼值是65,字符變量cl的值是′A′,c2的值是′D′。執行語句printf("%d,%d",c1,c2-2);后,輸出結果是
A.A,BB.A,68C.65,66D.65,68
53.以下程序的輸出結果是()。#include<stdio.h>main(){inta=21,b=11;printf("%d\n",--a+b,--b+a);}
A.30B.31C.32D.33
54.以下程序中函數reverse的功能是對a所指數組中的內容進行逆置。voidreverse(inta[],intn){inti,t;for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1-1];a[n-1-i]=t;}}main(){intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;reverse(b,8);for(i=6;i<10;i++)s+=b[i];printf("%d\n",s);}程序運行后的輸出結果是______。
A.22B.10C.34D.30
55.有以下程序段charch;intk;ch='a';k=12;printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);已知字符a的ASCII碼值為97,則執行上述程序段后輸出結果是
A.因變量類型與格式描述符的類型不匹配輸出無定值
B.輸出項與格式描述符個數不符,輸出為零值或不定值
C.a,97,12k=12
D.a,97,k=12
56.設有定義語句int(*f)(int);,則以下敘述正確的是()。
A.f是基類型為int的指針變量
B.f是指向函數的指針變量,該函數具有一個int類型的形參
C.f是指向int類型一維數組的指針變量
D.f是函數名,該函數的返回值是基類型為int類型的地址
57.以下選項中非法的字符常量是()。
A.'\\'B.'\0201'C.'\xAA'D.'0'
58.以下選項中,合法的一組C語言數值常量是()。
A.028.5e-3-0xf
B.12.0X0234.5e0
C.1774e1.50abe
D.0x8A10,0003.e5
59.在下列敘述中,錯誤的一條是()
A.關系表達式的值是一個邏輯值,即“真”或“假”,可賦給一個邏輯變量
B.數組必須先定義后使用,且只能逐個引用數組元素,不能一次引用整個數組
C.在C語言中,判斷一個量是否為“真”時,用。代表“假”,1代表“真”
D.將字符串常量賦給字符數組時,必須在字符串后加飛'\0',表示字符結束
60.在數據庫設計的四個階段中,為關系模式選擇存取方法應該是在______階段。
A.需求分析B.概念設計C.邏輯設計D.物理設計
四、選擇題(20題)61.下面敘述正確的是_______。
A.算法的執行效率與數據的存儲結構無關
B.算法的空間復雜度是指算法程序中指令(或語句)的條數
C.算法的有窮性是指算法必須能在執行有限個步驟之后終止
D.算法的時間復
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025【廣告位承包租賃合同書】房屋租賃合同范本
- 2025企業租賃合同范例
- 2025網絡安全保險合同書
- 2025存量房買賣合同示范文本(版)
- 2025年墻壁粉刷工程施工合同
- 安徽省滁州市2024-2025學年高二下學期期中英語試題(含答案)
- 環保招租廠房合同協議
- 環保閥門采購合同協議
- 生存物資采購合同協議
- 電力遷改施工合同協議
- 風生水起博主的投資周記
- 賽艇賽事活動推廣方案
- 易制毒、易制爆化學品安全培訓
- (通用)中考數學總復習 第三章 函數 第4節 反比例函數課件 新人教
- 屋面開洞施工方案,好(全面完整版)
- 涂層厚度檢測記錄(共10頁)
- 水書釋義字表
- 問題請在每個方向上重復延伸下圖
- 天文導航技術發展綜述
- 三甲醫院財務工作流程圖
- 4S店三表一卡標準模板
評論
0/150
提交評論