版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2021年山西省晉中市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.下列選項中,不能用作標識符的是A._1234_B._1_2C.int_2_D.2_int_
2.下面關(guān)于哈希(Hash,雜湊)查找的說法正確的是()
A.哈希函數(shù)構(gòu)造的越復(fù)雜越好,因為這樣隨機性好,沖突小
B.除留余數(shù)法是所有哈希函數(shù)中最好的
C.不存在特別好與壞的哈希函數(shù),要視情況而定
D.若需在哈希表中刪去一個元素,不管用任何方法解決沖突都只要簡單地將該元素刪去即可
3.表達式a+=a-=a=9的值是()。
A.9B.-9C.18D.0
4.有以下程序:#include<stdio.h>voidsub(doublea,double*pb);intmain(){doublex,y;scanf(“%lf%lf”,&x,&y);sub(x,&y);printf(“x=%fy=%f\n”,x,y);}voidsub(doublea,double*pb){a=a-*pb;*pb=*pb-a;}程序運行時輸入10.23.5并按<Enter>鍵,則輸出結(jié)果為()。
A.x=10.200000y=-3.200000
B.x=6.700000y=-13.700000
C.x=7.000000y=-3.500000
D.x=13.400000y=-7.000000
5.以下關(guān)于鏈式存儲結(jié)構(gòu)說法錯誤的是()
A.比順序存儲結(jié)構(gòu)的存儲密度小
B.每個節(jié)點是由數(shù)據(jù)域和指針域組成
C.查找結(jié)點時鏈式存儲比順序存儲快
D.邏輯上不相鄰的節(jié)點物理上可能相鄰
6.下列選項中,不是一個算法的基本特征的是()。
A.完整性B.可行性C.有窮性D.擁有足夠的情報
7.以下程序intaa[3][3]={{2},{4},{6}};main(){inti,*p=&aa[0][0];for(i=0;i<2;i++){if(i==0)aa[i][i+1]=*p+1;else++p;printf("%d",*p);}}的輸出是________。
A.23B.26C.33D.36
8.下列有關(guān)格式輸入函數(shù)scanf的敘述中正確的是()
A.輸入項可以是C語言中規(guī)定的任何變量,并且在任何變量前必須加地址符號“&”
B.可以只有格式控制項,沒有地址列表項
C.在輸入數(shù)據(jù)時,必須規(guī)定精度。如:scanf("%4.2f",&d);
D.當(dāng)輸入數(shù)據(jù)時,必須指明變量地址
9.折半查找法的查找速度一定比順序查找法快()。
A.正確B.錯誤
10.從一個長度為100的順序表中刪除第30個元素時需向前移動()個元素
A.70B.71C.69D.30
11.結(jié)構(gòu)化程序設(shè)計的3種結(jié)構(gòu)是()。
A.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、轉(zhuǎn)移結(jié)構(gòu)
B.分支結(jié)構(gòu)、等價結(jié)構(gòu)、循環(huán)結(jié)構(gòu)
C.多分支結(jié)構(gòu)、賦值結(jié)構(gòu)、等價結(jié)構(gòu)
D.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)
12.有以下程序:#include<stdio.h>main(){FILE*fp;charstr[10];fp=fopen(“myfile.dat”,“w”);fputs(“abc”,fp);fclose(fp);fp=fopen(“myfile.dat”,“a+”);fprintf(fp,“%d”,28);rewind(fp);fscanf(fp,“%s”,str);puts(str);fclose(fp);}程序的運行結(jié)果是()。
A.abcB.28cC.abc28D.因類型不一致而出錯
13.
14.一個棧的進棧序列是a,b,c,d,e,則棧的不可能的輸出序列是()。
A.edcbaB.decbaC.dceabD.abcde
15.在一個元素個數(shù)為N的數(shù)組里,找到升序排在N/5位置的元素的最優(yōu)算法時間復(fù)雜度是()A.O(n)B.O(nlogn)C.O(n(logn)2)D.O(n3/2)
16.執(zhí)行完下列語句段后,i值為()。A.A.2B.4C.8D.無限遞歸
17.下列運算符中優(yōu)先級最低的算符是()。
A.||B.!=C.<;=D.十
18.
19.設(shè)有一個二維數(shù)組A[m][n],假設(shè)A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每個元素占一個空間,問A[3][3](10)存放在什么位置()(腳注(10)表示用10進制表示)。
A.688B.678C.692D.696
20.以下程序的輸出結(jié)果是()。main(){charst[20]="hell0\O\t\\\”;printf("%d%d\n",strlen(st),sizeof(st));}A.99B.520C.1320D.2020
二、2.填空題(20題)21.下列程序的運行結(jié)果是【】。
main()
{inti;
for(i=1;i<=5;i++)
f(i);}
f(j)
{intj;
staticinta=1000;
autointk=1;
++k;
printf("%d+%d+%d=%d\n",a,k,j,a+k+j);
a+=10;}
22.若有如下結(jié)構(gòu)體說明:
structSTRU
{inta,b;charc:doubled;
structSTRU*p1,*p2;
};
請?zhí)羁?,以完成對t數(shù)組的定義,t數(shù)組的每個元素為該結(jié)構(gòu)體類型。
【】t[20]
23.若x和y都是double型變量,且x的初值為3.0,y的初值為2.0,則表達式pow(y,fabs(x))的值為【】。
24.函數(shù)my_cmp()的功能是比較字符串s和t的大小,當(dāng)s等于t時返回0,否則返回s和t的第一個不同字符的ASCII碼差值,即s>t時返回正值,當(dāng)s<t時返回負值。請?zhí)羁铡?/p>
my_cmp(char*s,char*t)
{while(*s==*t)
{if(*s=='\0')return0;
++s;++t;
}return【】;
}
25.語句:x++;++x;x=1/x;執(zhí)行后都使變量x中的值增1,請寫出一條同一功能的賦值語句______。
26.以下程序的輸出結(jié)果是【】。
main()
{char*p[]={"BOOL","OPK","H","SP"};
inti;
for(i=3;i>0;i--,i--)printf("%c",*p[i]);
printf("\n");}
27.表示“整數(shù)x的絕對值大于5”時值為“假”的C語言表達式是______。
28.以下函數(shù)把b字符串連接到a字符串的后面,并返回a中新字符串的長度。
strcen(chara[],charb[])
{intnum=0,n=0;
while(*(a+num)!=【】)num++;
while(b[n]){*(a+num)=b[n];num++;【】;
return(num);
}
29.在面向?qū)ο蠓椒ㄖ?,類之間共享屬性和操作的機制稱為______。
30.有以下程序,其功能是:以二進制“寫”方式打開文件d1.dat,寫入1~100這100個整數(shù)后關(guān)閉文件。再以二進制“讀”方式打開文件d1.dat,將這100個整數(shù)讀入到另一個數(shù)組b中,并打印輸出。請?zhí)羁铡?/p>
#include<stdio.h>
main()
{FILE*fp;
inti,a[100],b[100];
fp=fopen("d1.dat","wb");
for(i=0;i<100;i++)a[i]=i+1;
fwrite(a,sizeof(int),100,fp);
fclose(fp);
fp=fopen("d1.dat",【】);
fread(b,sizeof(int),100,fp);
fclose(fp);
for(i=0;i<100;i++)printf("%d\n",b[i]);
}
31.若a=10,b=20,則表達式!(a<b)的值是【】。
32.下列程序的輸出結(jié)果是______。
10ngfun5(intn)
{longs;
if((n==1)‖(n==2))
s=2;
else
s=n+fun5(n-1);
return(s);
}
main()
{longx;
x=fun5(4);
printf("%1d\n",x);}
33.下面程序的運行結(jié)果是______。
voidswap(int*a,int*B)
{
int*t;
t=a;a=b;b=t;
}
main()
{
intx=3,y=5,*p=&x,*q=&y;
swap(p,q);
printf("%d%d\n",*p,*q);
}
34.以下scanf函數(shù)調(diào)用語句中對結(jié)構(gòu)體變量成員的引用不正確的是{charname[20];}pup[5],*p;
35.以下程序的功能是將字符串s中的數(shù)字字符放入d數(shù)組中,最后輸出d中的字符串。例如,輸入字符串:
abcl23edf456gh,執(zhí)行程序后輸出:123456。請?zhí)羁铡?/p>
#include<stdio.h>
#include<ctype,h>
main()
{chars[80],d[80];inti,j;
gets(s);
for(i=j=0;s[i]!='\0';i++)
if(【】){d[j]=s[i];j++;}
d[j]='\0';
puts(d);
}
36.以下程序中select函數(shù)的功能是:在N行M列的二維數(shù)組中,選出一個最大值作為函數(shù)值返回,并通過形參傳回此最大值所在的行下標。請?zhí)羁铡?/p>
#defineN3
#defineM3
select{inta[N][M],int*n;
{inti,j,row=l,eolum=l;
for(i=0;i<N;i++
forj=0;j<M;j++)
if(a[i][j]>a[row][colum]){row=i;colum=j:}
*n=______;
return______;
}
main()
{inta[N][M]={9,11,23.6,1,15,9,17,20},max,nj
max=select(a,&n);
printf("max=%d,line=%d\n",max.n;
}
37.數(shù)據(jù)庫系統(tǒng)的三級模式分別為______模式、內(nèi)部級模式與外部級模式。
38.下列程序的運行結(jié)果是______。
#include<stdio.h>
main()
{inta,b,c,n;
a=2;b=0;c=1;n=1;
while(n<=3)
{c=c*a;b=b+c;++n;}
printf("b=%d",B);
}
39.樹中度為零的結(jié)點稱為______。
40.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),線性鏈表屬于【】。
三、1.選擇題(20題)41.設(shè)有以下函數(shù)f(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}如果在下面的程序中調(diào)用該函數(shù),則輸出結(jié)果是______。main(){inta=2,i;for(i=0;i<3;i++)printf("%d\n"f(a));}
A.789B.7911C.71013D.777
42.若有定義:“inta[2][3];”,則對a數(shù)組的第i行第j列元素的正確引用為()。
A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j
43.設(shè)有定義:intn1=0,n2,*P=&n2,*q=&n1;,以下賦值語句中與n2=n1;語句等價的是()。
A.*p=*q;B.p=q;C.*p=&n1;D.p=*q;
44.以下程序的輸出結(jié)果是______。main(){inti,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(i+1)];for(i=0;i<3;i++)k+=p[i]*2;printf("%d\n",k);}
A.20B.21C.22D.23
45.下述程序的輸出結(jié)果是#include<stdio.h>voidmain(){inta[5]={2,4,6,8,10};int*p=a,**q=&p;printf("%d,",*(p++));pfintf("%d",**q);}
A.4,4B.2,2C.4,5D.2,4
46.下面程序的輸出結(jié)果是_______。#include<stdio.h>main(){char*p[]={"DOOL","OPK","H","SP"};inti;for(i=3;i>=0;i-,i-)printf("%c",*p[i]);printf("\n");}
A.SOB.SPC.SPOPKD.SHOB
47.下列敘述中正確的是()。
A.接口復(fù)雜的模塊,其耦合程度一定低
B.耦合程度弱的模塊,其內(nèi)聚程度一定低
C.耦合程度弱的模塊,其內(nèi)聚程度一定高
D.上述3種說法都不對
48.下列程序的輸出結(jié)果是()。voidf(int*x,int*y){intt;t=*x,*x=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(p<q){f(p,q);p++;q--;}for(i=0;i<8;i+)printf("%d,",a[i]);}
A.8,2,3,4,5,6,7,1
B.5,6,7,8,1,2,3,4
C.1,2,3,4,5,6,7,8
D.8,7,6,5,4,3,2,1
49.下列敘述中錯誤的是()。
A.一種數(shù)據(jù)的邏輯結(jié)構(gòu)可以有多種存儲結(jié)構(gòu)
B.數(shù)據(jù)的存儲結(jié)構(gòu)與數(shù)據(jù)的處理效率無關(guān)
C.數(shù)據(jù)的存儲結(jié)構(gòu)與數(shù)據(jù)的處理效率密切相關(guān)
D.數(shù)據(jù)的存儲結(jié)構(gòu)在計算機中所占的空間不一定是連續(xù)的
50.閱讀以下程序及對程序功能的描述,其中正確的是
#include<stdio.h>
main()
{FILE*in,*out;
charch,infile[10],outfile[10];
printf("Entertheinfilename:\n");
scanf("%s",infile);
printf("Entertheoutfilename:\n");
scanf("%s",outfile);
if((in=fopen(infile,"r"))==NULL)
{printf("cannotopeninfile\n");
exit(0);}
if((out=fopen(outfile,"w"))==NULL)
{printf("cannotopenoutfile\n");
exit(0);}
while(!feof(in))fputc(fgetc(in),out);
fclose(in);fclose(out);}
A.程序完成將磁盤文件的信息在屏幕上顯示的功能
B.程序完成將兩個磁盤文件合二為一的功能
C.程序完成將一個磁盤文件復(fù)制到另一個磁盤文件中
D.程序完成將兩個磁盤文件合并并在屏幕上輸出
51.下面函數(shù)的功能是______。exchange(int*ptr1,*ptr2){int*ptr;ptr=-ptr1;ptr1=ptr2;ptr2=ptr;}
A.交換*ptr1和*ptr2的值
B.無法改變*ptr1和*ptr2的值
C.可能造成系統(tǒng)故障,因為使用了空指針
D.交換*ptr1和*pb2的地址
52.在長度為64的有序線性表中進行順序查找,最壞情況下需要比較的次數(shù)為A.63B.64C.6D.7
53.變量a所占的內(nèi)存字節(jié)數(shù)是______。unionU{charst[4];inti;long1;};structA{intc;unionUu;}a;
A.4B.5C.6D.8
54.請選出可用作C語言用戶標識符的是()。
A.void,define,WORD
B.a3_b3,_123,IF
C.FOR,-abc,Case
D.2a,Do,$izeof
55.下列敘述中,正確的是
A.用E-R圖能夠表示實體集間一對一的聯(lián)系、一對多的聯(lián)系和多對多的聯(lián)系
B.用E-R圖只能表示實體集之間一對一的聯(lián)系
C.用E-R圖只能表示實體集之間一對多的聯(lián)系
D.用E-R圖表示的概念數(shù)據(jù)模型只能轉(zhuǎn)換為關(guān)系數(shù)據(jù)模型
56.當(dāng)a=1、b=3、c=5、d=4時,執(zhí)行下面一段程序:if(a<B)if(c<D)x=1;elseif(a<C)if(b<D)x=2;elsex=3;elesx=6;elsex=7;程序執(zhí)行后,x的值為()
A.1B.2C.3D.6
57.若要求從鍵盤讀入含有空格字符的字符串,應(yīng)使用函數(shù)A.getc()B.gets()C.getchar()D.scanf()
58.下面程序的輸出結(jié)果是______。#definea121constb=12;enumc{a1,a2};main(){printf("%d,%d,%d",sizeof(a),sizeof(b),sizeof(enumc));}
A.121,0,4B.2,2,2C.0,2,4D.0,2,2
59.若以下選項中的變量已正確定義,則正確的賦值語句是()。
A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3
60.有以下程序:#include<stdio.h>main(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}當(dāng)運行時輸入:a<回車>后,以下敘述正確的是()。
A.變量c1被賦予字符a,c2被賦予回車符
B.程序?qū)⒌却脩糨斎氲?個字符
C.變量c1被賦予字符a,c2中仍是原有字符2
D.變量c1被賦予字符a,c2中將無確定值
四、選擇題(20題)61.在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。A.軟件集成測試計劃B.軟件詳細設(shè)計說明書C.用戶手冊D.軟件需求規(guī)格說明書
62.對于循環(huán)隊列,下列敘述中正確的是()。
A.隊頭指針是固定不變的
B.隊頭指針一定大于隊尾指針
C.隊頭指針一定小于隊尾指針
D.隊頭指針可以大于隊尾指針,也可以小于隊尾指針
63.以下能正確定義一維數(shù)組的選項是()。
A.
B.
C.
D.
64.對于長度為n的線性表,在最壞的情況下,下列各排序法所對應(yīng)的比較次數(shù)中正確的是
A.插入排序為n/2B.插入排序為nC.快速排序為nD.快速排序為n(n-1)/2
65.下列選項中,能正確定義數(shù)組的語句是()。
A.intnum[0..2008];
B.intlllllll[];
C.intN:2008:
D.#defineN2008intnum[N1;intnum[N];
66.
67.
68.結(jié)構(gòu)化分析方法是面向()的自頂向下、逐步求精進行需求分析的方法
A.對象B.數(shù)據(jù)結(jié)構(gòu)C.數(shù)據(jù)流D.目標
69.
70.設(shè)有定義:intx,Y,z;,且各變量已賦正整數(shù)值,則以下能正確表示代數(shù)式‘的C語言表達式是()。
A.…1.…0/x。/y,/z
B.1/x*Y*z
C.1/(x*Y*z)
D.1/x/y/(double)z
71.設(shè)有:
inta=1,b=2,c=3,d=4,m=2,n=2;
執(zhí)行(m=a>b)&&(n=c>d)后,n的值是
A.1B.2C.3D.4
72.程序中已構(gòu)成如下圖所示的不帶頭結(jié)點的單向鏈表結(jié)構(gòu),指針變量s、p、q均已正確定義,并用于指向鏈表結(jié)點,指針變量s總是作為指針指向鏈表的第一個結(jié)點。
若有以下程序段:
該程序段實現(xiàn)的功能是()。
A.刪除尾結(jié)點B.尾結(jié)點成為首結(jié)點C.刪除首結(jié)點D.首結(jié)點成為尾結(jié)點
73.設(shè)有定義:intx=3;,以下表達式中,值不為l2的是()。
A.x*=x+1B.x++,3*xC.x*=(1+x)D.2*x.x+=6
74.
75.有以下程序程序的運行結(jié)果是()。
A.20B.10C.0D.出錯
76.一間工廠可有多個工人,則實體工廠和工人之間的聯(lián)系是
A.一對一B.一對多C.多對一D.多對多
77.有以下程序:
若要按以下形式輸出數(shù)組右上半三角:
則在程序下劃線處應(yīng)填人的語句是()。
A.i-1B.i+1C.iD.4-i
78.數(shù)據(jù)庫管理系統(tǒng)中負責(zé)數(shù)據(jù)模式定義和數(shù)據(jù)的物理存取構(gòu)建的語言是()。
A.數(shù)據(jù)定義語言B.數(shù)據(jù)管理語言C.數(shù)據(jù)操縱語言D.數(shù)據(jù)控制語言
79.設(shè)“intx=2,y=1;”,則表達式(!x||Y--)的值是()。
A.0B.1C.2D.-1
80.以下只有在使用時才為該類型變量分配內(nèi)存的存儲類型說明是()。
A.auto和static
B.auto和register
C.register和static
D.extern和register
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:利用插入排序法對字符串中的字符按從小到大的順序進行排序。插入法的基本方法是:先對字符串中的頭2個元素進行排序,然后把第3個字符插入到前2個字符中,插入后前3個字符依然有序;再把第4個字符插人到前3個字符中,待排序的字符串已在主函數(shù)中賦予。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.從鍵盤上輸出10個整數(shù)存入一維數(shù)組中,按由大到小的順序輸出。
參考答案
1.D解析:本題考核的知識點是用戶的標識符。在C語言中,合法的標識符由字母、數(shù)字和下劃線組成,并且第一個字符必須為字母或者下劃線,如:acd,d_ad、_adf124,_124等都是合法的標識符號.而2asdf、_sd/=都不是合法的標識符.在C語言中大寫字母和小寫字母被認為是兩個不同的字符,如:ACD和acd是兩個不同的標識符號。選項D中用下劃線作為第一個字符,這是不合法的,故選項D不正確,所以,4個選項中選項D符合題意。
2.C
3.D解析:+=、-=、=等符號優(yōu)先級相同結(jié)合性是由右至左,所以選D。
4.Asub函數(shù)接收兩個參數(shù):double類型變量a,double指針變量pb。首先將a與pb指向的變量值相減,結(jié)果存放在a中;然后再將pb指向的變量值與a的新值相減,結(jié)果存放在pb指向的內(nèi)存空間中。sub函數(shù)不會修改實參x的值,但會修改實參y的值。當(dāng)輸入10.23.5時,實參x的值為10.2,y的值為3.5,執(zhí)行sub函數(shù)后,x的值不變,y的值變成-3.2。故本題答案為A選項。
5.C
6.A解析:作為一個算法,一般應(yīng)該具有下列4個特征:(1)可行性,即考慮到實際的條件能夠達到一個滿意的結(jié)果;(2)確定性,算法中的每一個步驟都必須是有明確定義的,(3)有窮性,一個算法必須在有限的時間內(nèi)做完;(4)擁有足夠的情報。
7.A解析:觀察題目,可以發(fā)現(xiàn),*p=&aa[0][0]語句實際是將數(shù)組aa的首地址賦給了指針變量p,將i的值帶入for循環(huán)中,i=0時,aa[0][1]=3,*p=2;*p輸出的是指針所指向的數(shù)組值,此時p所指向的是aa[O][0],輸出2,而i=1時執(zhí)行了++p操作使指針向后移動指向了aa[0][1],所以在輸出*p時應(yīng)為3。
8.D解析:如果是指針型變量或數(shù)組名,則變量前不加地址符號&,所以選項A的說法有誤。必須有地址列表項才能實現(xiàn)正確輸入,所以選項B的說法有誤。在輸入數(shù)據(jù)時,不可以指定實型數(shù)據(jù)的精度,所以選項C的說法有誤。只有選項D的說法正確。
9.B
10.A
11.D結(jié)構(gòu)化程序設(shè)計的基本要點:①采用自頂向下、逐步求精的程序設(shè)計方法;②任何程序都可由順序、選擇和循環(huán)3種基本控制結(jié)構(gòu)構(gòu)造。
12.Cfprintf函數(shù)將內(nèi)容寫入硬盤的文件,fputs函數(shù)將字符串寫入文件,最終文件的內(nèi)容為abc28。故本題答案為C選項。
13.B
14.C
15.A
16.B
17.AC語言中規(guī)定運算符的優(yōu)先順序:一元算術(shù)運算符一>二元算術(shù)運算符一>關(guān)系運算符一>邏輯運算符一>賦值運算符,A項中為邏輯運算符,B項和c項都為關(guān)系運算符,D項為一元運算符。因此最低的是A項。
18.B
19.C
20.B從題目中可知,\O、\t、\\分別為一個字符,而sizeof是求字節(jié)個數(shù)的函數(shù),其中包括\O占的字節(jié),strlen函數(shù)是求數(shù)組長度的函數(shù);其以\0結(jié)束,因此strlen的值為5,sizeof的值為20。
21.100+2+1=103110+2+2=114120+2+3=125130+2+4=136140+2+5=147100+2+1=103\r\n110+2+2=114\r\n120+2+3=125\r\n130+2+4=136\r\n140+2+5=147解析:靜態(tài)局部變量的生存期為整個程序的運行期間,而作用域為定義該變量的函數(shù)或局部范圍。自動變量的建立和撤銷都是由系統(tǒng)自動進行的,所以稱為自動變量。自動變量的作用域和生存期都為定義它的局部范圍內(nèi)。對同一函數(shù)的兩次調(diào)用之間,自動變量的值是不保留的。而靜態(tài)變量則保留。注意:局部變量和全局變量的定義及其作用范圍。
22.strudctSTRUstrudctSTRU解析:結(jié)構(gòu)件類型是構(gòu)造數(shù)據(jù)類型,是用戶自己定義的一種類型。
結(jié)構(gòu)體類型的定義:
struct結(jié)構(gòu)體類型名
{
成員項表;
};
定義結(jié)構(gòu)體變量的的形式為:
struct結(jié)構(gòu)體類型名變量1,變量2,...?
其中變量包括;一般變量、指針變量、數(shù)組變量等。
23.88解析:fabs函數(shù)功能是求x的絕對值,計算結(jié)果為double型。pow功能是計算x的y次方的值,計算結(jié)果同樣為double型。所以本題表達式相當(dāng)于2.0的3.0次方,結(jié)果為8.000000。
24.*s-*t*s-*t解析:兩字符串大小比較必須從它們的首字符開始,在對應(yīng)字符相等情況下循環(huán),直至不相等結(jié)束。相等時,若字符串已到了字符串的結(jié)束標記符,則兩字符串相同,函數(shù)返回0值;如還有后繼字符,則準備比較下一對字符。對應(yīng)字符不相同,循環(huán)結(jié)束。循環(huán)結(jié)束時,就以兩個當(dāng)前字符的差返回。所以在空框處應(yīng)填入*s-*t,保證在e>t時返回正值,當(dāng)s<t時返回負值。
25.x+=1x+=1解析:本題考查'++'、'--'運算符。'++'、'--'只能作用于變量,不能用于表達式或常量;前綴形式是在使用變量之前先將其值增1或減1,后綴形式是先使用變量原來的值,使用完后再使其增1或減1。
26.SOSO解析:考查用指針引用字符串?dāng)?shù)組中元素的方法。題中需要注意兩個問題:一是for循環(huán)的修正表達式共執(zhí)行兩次'i--'操作;二是*p[i]是對某個字符的引用。
27.(x>-5)&&(x<5)(x>-5)&&(x<5)解析:本題考查基本邏輯表達,“整數(shù)x的絕對值大于5”時值為“假”,即整數(shù)x的絕對值小于等于5,也就是整數(shù)x要大于等于-5且要小于等于5。這里“且”用“與(&&)”表示,所以C語言表達式為:(x>-5)&&(x<5)。
28.\0'n++\\0'\r\nn++解析:第1個循環(huán)是求字符串a(chǎn)的長度,并存儲在變量num中,循環(huán)條件要控制是否取到字符串末尾的'\\0'。第2個循環(huán)通過兩個變量num和n的改變,將b字符串連接到a字符串后面,并將新的字符串長度記錄到num中。
29.繼承繼承
30.rb或"r+b"或"rb+"rb或'r+b'或'rb+'解析:根據(jù)題目要求,在下劃線位置應(yīng)該填入一個能實現(xiàn)二進制讀的使用文件方式的參數(shù)即可。所以,可以填'rb'或'r+b'或'rb+'。
31.00解析:已知a=10,b=20,所以邏輯表達式a<b的值為true,即為1,在這個表達式前面有一個邏輯運算符!,表示反操作,所以整個語句的值應(yīng)當(dāng)為false,即為0。
32.99解析:考查ifelse語句,n==4不滿足條件,所以fun5(4)=4+fun5(3),n==3也不滿足條件,fun5(3)=3+fun5(2),n==2滿足條件fun5(2)=2,故x=4+3+2=9。
33.3535解析:在主函數(shù)中通過定義和賦初值使p和q分別指向了x和y,執(zhí)行函數(shù)調(diào)用“swap(p,q)”,把p和q中的地址值傳給了形參指針變量a和b,a和b分別指向7實參x和y。在函數(shù)swap()中交換了指針變量a和b的值,并沒有交換a和b指向的實參的值,所以函數(shù)調(diào)用返回后x和y依舊是原來的值。
34.D
35.s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]解析:字符數(shù)組的初始化,字符串的輸入和輸出的應(yīng)用。C語言沒有字符串變量,字符串不是存放在一個變量中而是存放在一個字符型數(shù)組中,因此為了存放字符串,常常在程序中定義字符型數(shù)組;字符串存放在字符數(shù)組中,但字符數(shù)組與字符串可以不等長,C語言規(guī)定以“\\0”字符作為字符串結(jié)束標志。
本題中,chars[80],d[80];定義了兩個字符型數(shù)組,可以放入80個字符。gets函數(shù)是c語言提供的一個專門用于讀字符串的函數(shù),它讀入全部字符(包括空格),直到遇到回車為止。本題中,讀入字符串s后,開始比較s中的每個字符是否為數(shù)字字符,因為字符數(shù)據(jù)在內(nèi)存中以相應(yīng)的ASCII碼存放,所以只需比較相應(yīng)的ASCII碼值是否在48('0'的ASCII代碼)與57('9'的ASCII代碼)之間,或者直接與'0','9'進行比較,如果是數(shù)字字符則將此字符存入d數(shù)組中,不是則繼續(xù)進行下一字符的比較,直至s結(jié)束(即'0'的出現(xiàn))。將“'\\0'”字符作為字符串d結(jié)束標志,最后調(diào)用puts函數(shù)輸出d。所以在空格處應(yīng)填入比較語句s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或&&48<=s[i]或57>=s[i]。
36.rowa[row][colum]row\r\na[row][colum]解析:通過對題意的分析,在select()函數(shù)中,變量row的作用是用來記錄最大元素的行下標,column的作用是用來記錄最大元素的列下標。程序中通過一個循環(huán)求得數(shù)組元素中最大值的行列下標,分別存放在變量row和colmnn中,根據(jù)題意,應(yīng)該把行下標賦值給形參指針變量n指向的變量,把最大值a[row][columa]作為函數(shù)值返回。
37.概念(或概念級)概念(或概念級)
38.b=14b=14解析:分析程序可知,n的初始值為1,因此,while(n<=3)循環(huán)3次。第1次:c=c*a=2:b=b+c=2;n=2。第2次:c=c*a=4;b=-b+c=6;n=3。第3次;c=c*a=8:b=b+c=14。當(dāng)n=4時,判斷條件不滿足,退出循環(huán)。
39.葉子結(jié)點葉子結(jié)點解析:樹中度為零的結(jié)點,也就是沒有后件的結(jié)點,稱為葉子結(jié)點。
40.存儲結(jié)構(gòu)
41.A解析:本題考查靜態(tài)變量的問題。函數(shù)f中c是靜態(tài)變量存放在靜態(tài)存儲區(qū),在程序的整個運行期間都不釋放占據(jù)的存儲單元。函數(shù)f被調(diào)用3次,調(diào)用過程如下。
第1次調(diào)用;a=2、b=0、c=3,執(zhí)行b++和c++后b=1、c=4,f(a)=a+b+c=2+1+4=7
第2次調(diào)用:a=2、b=0、c=4.執(zhí)行b++和c++后b=1、c=5,f(a)=a+b+c=2+1+5=8
第3次調(diào)用:a=2、b=0、c=5,執(zhí)行b++和c++后b=1、c=6,f(a)=a+b+c=2+1+6=9
所以輸出結(jié)果為選項A。
42.A解析:本題考查如何通過地址來引用數(shù)組元素。通過地址來引用數(shù)組元素的方法有下列5種:
①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i])[j];⑤*(&a[0][0]+3*i+j)。
43.A解析:根據(jù)題意,p和q為整型指針,分別指向整型變量n2和n1,選項B是將q賦給p,即p指向n1,選項C是將n1的地址賦給n2,選項D是將n2的值賦給p,均與n2=n1不等價。只有選項A中,*p即n2,*q即n1,*p=*q即等價于n2=n1。
44.B解析:第1個循環(huán)對數(shù)組a進行賦值:第2個循環(huán)對數(shù)組p進行賦值;第3個循環(huán)對k進行累加,k的初值等于5,第1次循環(huán),k=k+p[0]*2=5+0*2=5,第2次循環(huán),k=k+p[1]*2=5+2*2=9,第3次循環(huán),k=k+p[2]*2=9+6*2=21并輸出。
45.D
46.A解析:p[0]存放的是“BOOL\\0”的首地址;p[1]存放的是“OPK\\0”的首址等。在printf語句中輸出的*p[i]表示p[i]字符串的第一個字符。在for循環(huán)中,i的初值為3,那么輸出的第一個字符為“S”,接著兩次i-,則輸出的值為*p[1],即字符“0”,所以本題的輸出為SO。
47.C解析:影響模塊之間耦合的主要因素有兩個:模塊之間的連接形式,模塊接口的復(fù)雜性。一般來說,接口復(fù)雜的模塊,其耦合程度要比接口簡單的的模塊強,所以選項A的說法錯誤;耦合程度弱的模塊,其內(nèi)聚程度一定高,選項B錯誤;選項C正確。
48.D解析:函數(shù)f()的功能是對兩個數(shù)據(jù)互換。在主函數(shù)中指針變量p和q分別指向數(shù)組a[8)的首和尾,在while循環(huán)中實現(xiàn)從首尾開始數(shù)組元素的互換操作。
49.BB?!窘馕觥繑?shù)據(jù)的存儲結(jié)構(gòu)分為順序結(jié)構(gòu)和鏈式結(jié)構(gòu),一個數(shù)據(jù)的邏輯結(jié)構(gòu)可以有多種存儲結(jié)構(gòu)。順序結(jié)構(gòu)中數(shù)據(jù)元素所占的存儲空間是連續(xù)的,而鏈式存儲結(jié)構(gòu)中,數(shù)據(jù)元素所占的存儲空間不一定是連續(xù)的。數(shù)據(jù)的存儲結(jié)構(gòu)與數(shù)據(jù)的處理效率密切相關(guān)。
50.C解析:本題中,最主要的是掌握幾個有關(guān)文件的函數(shù)的應(yīng)用。
函數(shù)名:fopen
功能:打開一個文件
調(diào)用方式FILE*fp;fp=fopen(文件名,使用文件方式);
函數(shù)名:feof
功能:檢查文件是否結(jié)束
調(diào)用方式:feof(FILE*fp);
函數(shù)名:fputc
功能:把一個字符寫到磁盤文件上去
調(diào)用方式:fputc(ch,fp)(ch是要輸出的字符,fp是從指定的文件讀入一個字符,該文件必須是以讀或讀寫方式打開的調(diào)用方式:ch=fgetc(fp)(ch是字符變量,fp是文件指針變量);
函數(shù)名:fclose
功能:關(guān)閉一個文件
調(diào)用方式:fclose(文件指針)。
51.B解析:函數(shù)中將指針變量ptr1和ptr2中的值交換,而不是交換指針ptr1和ptr2所指變量中的值。
52.B解析:在長度為64的有序線性表中,其中的64個數(shù)據(jù)元素是按照從大到小或從小到大的順序排列有序的。在這樣的線性表中進行順序查找,最壞的情況就是查找的數(shù)據(jù)元素不性表中或位于線性表的最后。按照線性表的順序查找算法,首先用被查找的數(shù)據(jù)和線性表的第一個數(shù)據(jù)元素進行比較,若相等,則查找成功,否則,繼續(xù)進行比較,即和線性表的第二個數(shù)據(jù)元素進行比較。同樣,若相等,則查找成功,否則,繼續(xù)進行比較。依次類推,直到性表中查找到該數(shù)據(jù)或查找到線性表的最后一個元素,算法才結(jié)束。因此,在長度為64的有序線性表十進行順序查找,最壞的情況下需要比較64次。因此,本題的正確答案為選項B。
53.C解析:結(jié)構(gòu)體變量所占內(nèi)存長度是各成員占內(nèi)存長度之和,而共用體變量所占的內(nèi)存長度等于最長的成員的長度。本題結(jié)構(gòu)體變量a中成員c為整型占2個字節(jié),共用體變量u最大長度為4個字節(jié),故選C。
54.B解析:C語言規(guī)定用戶標識符由字母、數(shù)字和下劃線組成,且第一個字符必須是字母或下劃線,可見選項C),D)是錯誤的;此外,C語言不允許用戶將關(guān)鍵字作為標識符,而選項A)中的void是C語言的關(guān)鍵字。
55.A解析:兩個實體之間的聯(lián)系實際上是實體集間的函數(shù)關(guān)系,這種函數(shù)關(guān)系可以有下面幾種,即一對一的聯(lián)系、一對多(或多對一)的聯(lián)系和多對多的聯(lián)系;概念模型便于向各種模型轉(zhuǎn)換。由于概念模型不依賴于具體的數(shù)據(jù)庫管理系統(tǒng),因此,容易向關(guān)系模型、網(wǎng)狀模型和層次模型等各種模型轉(zhuǎn)換。
56.B
57.Bscanf(\u3000)語句中用“空格”間隔不同的字符串,空格將被全部忽略掉,所以用scanf(\u3000)函數(shù)不能輸入空格;getehar(\u3000)函數(shù)用于輸入字符,其調(diào)用形式為:ch=getelaar(\u3000),getehar(\u3000)函數(shù)從終端讀入一個字符作為函數(shù)值,把讀入的字符賦給變量ch。在輸入時,空格、回車符都將作為字符讀入,而且只有在用戶敲入Enter鍵時,讀入才開始執(zhí)行。gets(\u3000)函數(shù)的凋用形式為:gets(str_adr),其中stradr是存放輸入字符串的起始地址,可以是字符數(shù)組名、字符數(shù)組元素的地址或字符指針變量。9ets函數(shù)用來從終端鍵盤讀入字符串(包括空格符),直到讀入一個換行符為止。getc(\u3000)函數(shù)的調(diào)用形式為:ch=getc(pf)其中pf是文件指針。函數(shù)的功能是從pf指定的文件中讀入一個字符,并把它作為函數(shù)值返回。
58.B解析:sizeof函數(shù)是取變量所占的存儲空間的字節(jié)數(shù),標識a代表常量121;constb=12;,其中數(shù)據(jù)類型可以缺省,默認為整型;enumc{a1,a2};定義了—個枚舉類型enumc,a1,a2為枚舉元素,在C編譯時,對枚舉元素按常量處理,它們的值按定義順序依次為0,1。因此它們的字節(jié)數(shù)均為2,2,2。
59.C解析:賦值的一般形式為:變量名:表達式;,賦值的方向為由右向左,即將:右側(cè)表達式的值賦給:左側(cè)的變量,執(zhí)行步驟是先計算再賦值。選項A中運算符%的運算對象必須為整數(shù),而選項A中26.8不為整數(shù),故選項A不正確;選項B將一個變量賦值給一個常量,這在C語言中是不允許的,故選項B不正確;選項D中也是將一個常量3賦值給一個常量,故選項D不正確;所以,4個選項中選項C符合題意。
60.A解析:本題考查的是getchar()函數(shù)。getchar()函數(shù)執(zhí)行時將從鍵盤緩沖區(qū)中讀取用戶的輸入,而不管輸入的是否可打印字符,所以當(dāng)輸入a<回車>后,鍵盤緩沖區(qū)被輸入的實際上是兩個字符:'a'和'\\n'。故選項A的說法是正確的。
61.D需求分析階段的工作可以概括為:需求獲取、需求分析、編寫需求規(guī)格說明書、需求評審四個方面。所以選擇D。
62.D循環(huán)隊列的隊頭指針與隊尾指針都不是固定的,隨著入隊與出隊操作要進行變化。因為是循環(huán)利用的隊列結(jié)構(gòu),所以隊頭指針有時可能大于隊尾指針,有時也可能小于隊尾指針。
63.B解析:選項A中定義的是5個數(shù)組元素,但賦值的時候賦的是6個元素,所以出錯;選項C不符合數(shù)組定義形式,數(shù)組名后應(yīng)加上“[]”;選項D的類型說明符錯誤,如果用char定義就對了;選項B中的0,1,2,3,4,5分別表示對應(yīng)字符的\u3000ASCII碼,所以選項B是正確的。
64.D插入排序是指將無序子序列中的一個或幾個記錄插入到有序序列中,從而增加記錄的有序子序列的長度。在最壞的情況下,當(dāng)插入第一個元素時,需要比較的次數(shù)為0,插入第二個元素時,需要比較一次,插入第n個元素時,需要比較n-1次。那么直到將n個元素都插入序列中,需要比較次數(shù)的總和為0+1+2+…+n-1。因此,在最壞情況下,插入排序需要比較的次數(shù)為n(n-1)/2。
快速排序的基本思想是通過一趟排序?qū)⒋庞涗浄指畛瑟毩⒌膬刹糠?,其中一部分記錄的關(guān)鍵字均比另一部分記錄的關(guān)鍵字小,則可以分別對這兩部分記錄繼續(xù)進行排序,以達到整個序列有序。它在最壞情況下,需要比較的次數(shù)也為n(n-1)/2。因此,本題的正確答案選D。
65.DC語言不允許定義動態(tài)數(shù)組,定義數(shù)組的大小必須為常量表達式。A選項錯誤,C語言中數(shù)組沒有此類型的定義方法;B選項錯誤,定義數(shù)組應(yīng)指明數(shù)組大小,如果不指明數(shù)組大小,需要給定初值的個數(shù);c選項錯誤,N為變量,不能用來定義數(shù)組大小。因此D選項正確。
66.A
67.A
68.CC?!窘馕觥拷Y(jié)構(gòu)化分析方法是面向數(shù)據(jù)流進行需求分析的方法,采用自頂向下、逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模型。
69.B
70.A代數(shù)表達式1/(X·Y·z)是小數(shù),轉(zhuǎn)為cf語言的表達式必須是小數(shù)。A選項由于l.0為浮點數(shù),計算結(jié)1果自動轉(zhuǎn)換為浮點數(shù),故A選項正確。選項B,C,D的表達式均為0。答案為A選項。
71.B本題考查邏輯與運算符“&&”的使用。對于邏輯與運算符&&來說,對象的結(jié)合方式為從左往右,只有&&左邊的值為真,才繼續(xù)右邊的運算。題目中&&左邊的表達式為m=a>b,“>”運算符優(yōu)先級高于“=”,故先判斷a>b,因為a=1,b=2,所以a>b為假,于是m=0?!?&”左邊的值為假,所以不進行右邊的運算。n的值沒有發(fā)生改變,n=2。
72.D本題考查鏈表的操作,本題中首先是s指向了它的下個結(jié)點,題目中說明了s總是指向鏈表的第一個結(jié)點,然后while循環(huán)找到鏈表的最后一個元素,然后最后一個元素指向了之前鏈表的頭結(jié)點,之前頭結(jié)點指向了空結(jié)點,所以本題實現(xiàn)的功能是使首結(jié)點成為尾結(jié)點。選項D正確。
73.D本題考查逗號運算符的運算方式,逗號運算符的作用是將若干表達式連接起來,它的優(yōu)先級別在所有運算符中是最低的,結(jié)合方向為”自左至右”。A)選項和c)選項的結(jié)果是一樣的,可展開為:x=x*(x+1)=3*4=12;B)選項中先執(zhí)行x++,因為++運算符有自加功能,逗號之前執(zhí)行后x的值為4,逗號后的值就是整個表達式的值,即12;D)選項逗號之前并未給x賦值,所以表達式的值就是x+=6的值,即9。因此,本題答案為D)。
74.A
75.Amalloc(sizeof(int))的作用是開辟一個長度為sizeofl:int)的存儲空間,并通過強制類型轉(zhuǎn)換(int*)將此存儲空間的地址賦給了一個整型的指針變量P。然后執(zhí)行語句*p=n,使得*p的值為10,并通過ieturn返回此值,ePa的值為l0。然后在主函數(shù)中輸出a+fun(10)=10+10=20。故本題答案為A)。
76.B常見的實體之間的聯(lián)系有一對一、一對多、多對一、多對多。如果對于實體集A中的每一個實體(工廠),實體集B中有n個實體(工人)(n≥0)與之聯(lián)系,反之,對于實體集B中的每一個實體(工人),實體集A中至多只有一個實體(工廠)與之聯(lián)系,則稱實體集A與實體集B有一對多聯(lián)系。
77.C此題中嵌套了兩個for語句,第一個用來輸出空格,第二個用來輸出數(shù)字。如此類型的輸出某種格式的考題,一般是采用多重循環(huán)來解決,需要考生找出輸出數(shù)據(jù)的特點,并用相應(yīng)的數(shù)學(xué)公式表示出來。
78.A\n數(shù)據(jù)定義語言負責(zé)數(shù)據(jù)模式定義和數(shù)據(jù)的物理存取構(gòu)建;數(shù)據(jù)操縱語言負責(zé)數(shù)據(jù)的操縱;數(shù)據(jù)控制語言負責(zé)數(shù)據(jù)完整性、安全性的定義與檢查以及并發(fā)控制、故障恢復(fù)等功能。無數(shù)據(jù)管理語言的說法。
\n
79.B因X為2,所以!X時表達式值為0,因Y為1,y--表達式的值為1然后自減1,y為0,所以!x||y--時表達式的值為1。
80.B在用靜態(tài)static與外部extern定義變量時,系統(tǒng)立刻給其分配內(nèi)存,而定義自動類auto與強制放入寄存器register類型變量時,只有當(dāng)使用時才分配內(nèi)存。
81.錯誤:c=arr[i];
正確:ch=arrEi];
【解析】由函數(shù)定義可知,函數(shù)proc只定義了變量ch,沒有定義變量c。因此,“c=”r[i];”應(yīng)改為“ch=arr[i];”。
82.\n#include'stdio.h'
\nmain
\n{inti,j,a[10];
\nfor(i=1;i<=10;i++)
\nscanf('%d',&a[i]);
\nfor(i=0;i<9=;i++)
\nfor(j=9;j>i;j--)
\nif(a[j-1]{t=a[j-1];
\na[j-1]=a[j];
\na[j]=t;}
\nfor(i=0;i<10;i++)
\nprintf('%d',a[i]);
\n}
\n2021年山西省晉中市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.下列選項中,不能用作標識符的是A._1234_B._1_2C.int_2_D.2_int_
2.下面關(guān)于哈希(Hash,雜湊)查找的說法正確的是()
A.哈希函數(shù)構(gòu)造的越復(fù)雜越好,因為這樣隨機性好,沖突小
B.除留余數(shù)法是所有哈希函數(shù)中最好的
C.不存在特別好與壞的哈希函數(shù),要視情況而定
D.若需在哈希表中刪去一個元素,不管用任何方法解決沖突都只要簡單地將該元素刪去即可
3.表達式a+=a-=a=9的值是()。
A.9B.-9C.18D.0
4.有以下程序:#include<stdio.h>voidsub(doublea,double*pb);intmain(){doublex,y;scanf(“%lf%lf”,&x,&y);sub(x,&y);printf(“x=%fy=%f\n”,x,y);}voidsub(doublea,double*pb){a=a-*pb;*pb=*pb-a;}程序運行時輸入10.23.5并按<Enter>鍵,則輸出結(jié)果為()。
A.x=10.200000y=-3.200000
B.x=6.700000y=-13.700000
C.x=7.000000y=-3.500000
D.x=13.400000y=-7.000000
5.以下關(guān)于鏈式存儲結(jié)構(gòu)說法錯誤的是()
A.比順序存儲結(jié)構(gòu)的存儲密度小
B.每個節(jié)點是由數(shù)據(jù)域和指針域組成
C.查找結(jié)點時鏈式存儲比順序存儲快
D.邏輯上不相鄰的節(jié)點物理上可能相鄰
6.下列選項中,不是一個算法的基本特征的是()。
A.完整性B.可行性C.有窮性D.擁有足夠的情報
7.以下程序intaa[3][3]={{2},{4},{6}};main(){inti,*p=&aa[0][0];for(i=0;i<2;i++){if(i==0)aa[i][i+1]=*p+1;else++p;printf("%d",*p);}}的輸出是________。
A.23B.26C.33D.36
8.下列有關(guān)格式輸入函數(shù)scanf的敘述中正確的是()
A.輸入項可以是C語言中規(guī)定的任何變量,并且在任何變量前必須加地址符號“&”
B.可以只有格式控制項,沒有地址列表項
C.在輸入數(shù)據(jù)時,必須規(guī)定精度。如:scanf("%4.2f",&d);
D.當(dāng)輸入數(shù)據(jù)時,必須指明變量地址
9.折半查找法的查找速度一定比順序查找法快()。
A.正確B.錯誤
10.從一個長度為100的順序表中刪除第30個元素時需向前移動()個元素
A.70B.71C.69D.30
11.結(jié)構(gòu)化程序設(shè)計的3種結(jié)構(gòu)是()。
A.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、轉(zhuǎn)移結(jié)構(gòu)
B.分支結(jié)構(gòu)、等價結(jié)構(gòu)、循環(huán)結(jié)構(gòu)
C.多分支結(jié)構(gòu)、賦值結(jié)構(gòu)、等價結(jié)構(gòu)
D.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)
12.有以下程序:#include<stdio.h>main(){FILE*fp;charstr[10];fp=fopen(“myfile.dat”,“w”);fputs(“abc”,fp);fclose(fp);fp=fopen(“myfile.dat”,“a+”);fprintf(fp,“%d”,28);rewind(fp);fscanf(fp,“%s”,str);puts(str);fclose(fp);}程序的運行結(jié)果是()。
A.abcB.28cC.abc28D.因類型不一致而出錯
13.
14.一個棧的進棧序列是a,b,c,d,e,則棧的不可能的輸出序列是()。
A.edcbaB.decbaC.dceabD.abcde
15.在一個元素個數(shù)為N的數(shù)組里,找到升序排在N/5位置的元素的最優(yōu)算法時間復(fù)雜度是()A.O(n)B.O(nlogn)C.O(n(logn)2)D.O(n3/2)
16.執(zhí)行完下列語句段后,i值為()。A.A.2B.4C.8D.無限遞歸
17.下列運算符中優(yōu)先級最低的算符是()。
A.||B.!=C.<;=D.十
18.
19.設(shè)有一個二維數(shù)組A[m][n],假設(shè)A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每個元素占一個空間,問A[3][3](10)存放在什么位置()(腳注(10)表示用10進制表示)。
A.688B.678C.692D.696
20.以下程序的輸出結(jié)果是()。main(){charst[20]="hell0\O\t\\\”;printf("%d%d\n",strlen(st),sizeof(st));}A.99B.520C.1320D.2020
二、2.填空題(20題)21.下列程序的運行結(jié)果是【】。
main()
{inti;
for(i=1;i<=5;i++)
f(i);}
f(j)
{intj;
staticinta=1000;
autointk=1;
++k;
printf("%d+%d+%d=%d\n",a,k,j,a+k+j);
a+=10;}
22.若有如下結(jié)構(gòu)體說明:
structSTRU
{inta,b;charc:doubled;
structSTRU*p1,*p2;
};
請?zhí)羁?,以完成對t數(shù)組的定義,t數(shù)組的每個元素為該結(jié)構(gòu)體類型。
【】t[20]
23.若x和y都是double型變量,且x的初值為3.0,y的初值為2.0,則表達式pow(y,fabs(x))的值為【】。
24.函數(shù)my_cmp()的功能是比較字符串s和t的大小,當(dāng)s等于t時返回0,否則返回s和t的第一個不同字符的ASCII碼差值,即s>t時返回正值,當(dāng)s<t時返回負值。請?zhí)羁铡?/p>
my_cmp(char*s,char*t)
{while(*s==*t)
{if(*s=='\0')return0;
++s;++t;
}return【】;
}
25.語句:x++;++x;x=1/x;執(zhí)行后都使變量x中的值增1,請寫出一條同一功能的賦值語句______。
26.以下程序的輸出結(jié)果是【】。
main()
{char*p[]={"BOOL","OPK","H","SP"};
inti;
for(i=3;i>0;i--,i--)printf("%c",*p[i]);
printf("\n");}
27.表示“整數(shù)x的絕對值大于5”時值為“假”的C語言表達式是______。
28.以下函數(shù)把b字符串連接到a字符串的后面,并返回a中新字符串的長度。
strcen(chara[],charb[])
{intnum=0,n=0;
while(*(a+num)!=【】)num++;
while(b[n]){*(a+num)=b[n];num++;【】;
return(num);
}
29.在面向?qū)ο蠓椒ㄖ?,類之間共享屬性和操作的機制稱為______。
30.有以下程序,其功能是:以二進制“寫”方式打開文件d1.dat,寫入1~100這100個整數(shù)后關(guān)閉文件。再以二進制“讀”方式打開文件d1.dat,將這100個整數(shù)讀入到另一個數(shù)組b中,并打印輸出。請?zhí)羁铡?/p>
#include<stdio.h>
main()
{FILE*fp;
inti,a[100],b[100];
fp=fopen("d1.dat","wb");
for(i=0;i<100;i++)a[i]=i+1;
fwrite(a,sizeof(int),100,fp);
fclose(fp);
fp=fopen("d1.dat",【】);
fread(b,sizeof(int),100,fp);
fclose(fp);
for(i=0;i<100;i++)printf("%d\n",b[i]);
}
31.若a=10,b=20,則表達式!(a<b)的值是【】。
32.下列程序的輸出結(jié)果是______。
10ngfun5(intn)
{longs;
if((n==1)‖(n==2))
s=2;
else
s=n+fun5(n-1);
return(s);
}
main()
{longx;
x=fun5(4);
printf("%1d\n",x);}
33.下面程序的運行結(jié)果是______。
voidswap(int*a,int*B)
{
int*t;
t=a;a=b;b=t;
}
main()
{
intx=3,y=5,*p=&x,*q=&y;
swap(p,q);
printf("%d%d\n",*p,*q);
}
34.以下scanf函數(shù)調(diào)用語句中對結(jié)構(gòu)體變量成員的引用不正確的是{charname[20];}pup[5],*p;
35.以下程序的功能是將字符串s中的數(shù)字字符放入d數(shù)組中,最后輸出d中的字符串。例如,輸入字符串:
abcl23edf456gh,執(zhí)行程序后輸出:123456。請?zhí)羁铡?/p>
#include<stdio.h>
#include<ctype,h>
main()
{chars[80],d[80];inti,j;
gets(s);
for(i=j=0;s[i]!='\0';i++)
if(【】){d[j]=s[i];j++;}
d[j]='\0';
puts(d);
}
36.以下程序中select函數(shù)的功能是:在N行M列的二維數(shù)組中,選出一個最大值作為函數(shù)值返回,并通過形參傳回此最大值所在的行下標。請?zhí)羁铡?/p>
#defineN3
#defineM3
select{inta[N][M],int*n;
{inti,j,row=l,eolum=l;
for(i=0;i<N;i++
forj=0;j<M;j++)
if(a[i][j]>a[row][colum]){row=i;colum=j:}
*n=______;
return______;
}
main()
{inta[N][M]={9,11,23.6,1,15,9,17,20},max,nj
max=select(a,&n);
printf("max=%d,line=%d\n",max.n;
}
37.數(shù)據(jù)庫系統(tǒng)的三級模式分別為______模式、內(nèi)部級模式與外部級模式。
38.下列程序的運行結(jié)果是______。
#include<stdio.h>
main()
{inta,b,c,n;
a=2;b=0;c=1;n=1;
while(n<=3)
{c=c*a;b=b+c;++n;}
printf("b=%d",B);
}
39.樹中度為零的結(jié)點稱為______。
40.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),線性鏈表屬于【】。
三、1.選擇題(20題)41.設(shè)有以下函數(shù)f(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}如果在下面的程序中調(diào)用該函數(shù),則輸出結(jié)果是______。main(){inta=2,i;for(i=0;i<3;i++)printf("%d\n"f(a));}
A.789B.7911C.71013D.777
42.若有定義:“inta[2][3];”,則對a數(shù)組的第i行第j列元素的正確引用為()。
A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j
43.設(shè)有定義:intn1=0,n2,*P=&n2,*q=&n1;,以下賦值語句中與n2=n1;語句等價的是()。
A.*p=*q;B.p=q;C.*p=&n1;D.p=*q;
44.以下程序的輸出結(jié)果是______。main(){inti,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(i+1)];for(i=0;i<3;i++)k+=p[i]*2;printf("%d\n",k);}
A.20B.21C.22D.23
45.下述程序的輸出結(jié)果是#include<stdio.h>voidmain(){inta[5]={2,4,6,8,10};int*p=a,**q=&p;printf("%d,",*(p++));pfintf("%d",**q);}
A.4,4B.2,2C.4,5D.2,4
46.下面程序的輸出結(jié)果是_______。#include<stdio.h>main(){char*p[]={"DOOL","OPK","H","SP"};inti;for(i=3;i>=0;i-,i-)printf("%c",*p[i]);printf("\n");}
A.SOB.SPC.SPOPKD.SHOB
47.下列敘述中正確的是()。
A.接口復(fù)雜的模塊,其耦合程度一定低
B.耦合程度弱的模塊,其內(nèi)聚程度一定低
C.耦合程度弱的模塊,其內(nèi)聚程度一定高
D.上述3種說法都不對
48.下列程序的輸出結(jié)果是()。voidf(int*x,int*y){intt;t=*x,*x=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(p<q){f(p,q);p++;q--;}for(i=0;i<8;i+)printf("%d,",a[i]);}
A.8,2,3,4,5,6,7,1
B.5,6,7,8,1,2,3,4
C.1,2,3,4,5,6,7,8
D.8,7,6,5,4,3,2,1
49.下列敘述中錯誤的是()。
A.一種數(shù)據(jù)的邏輯結(jié)構(gòu)可以有多種存儲結(jié)構(gòu)
B.數(shù)據(jù)的存儲結(jié)構(gòu)與數(shù)據(jù)的處理效率無關(guān)
C.數(shù)據(jù)的存儲結(jié)構(gòu)與數(shù)據(jù)的處理效率密切相關(guān)
D.數(shù)據(jù)的存儲結(jié)構(gòu)在計算機中所占的空間不一定是連續(xù)的
50.閱讀以下程序及對程序功能的描述,其中正確的是
#include<stdio.h>
main()
{FILE*in,*out;
charch,infile[10],outfile[10];
printf("Entertheinfilename:\n");
scanf("%s",infile);
printf("Entertheoutfilename:\n");
scanf("%s",outfile);
if((in=fopen(infile,"r"))==NULL)
{printf("cannotopeninfile\n");
exit(0);}
if((out=fopen(outfile,"w"))==NULL)
{printf("cannotopenoutfile\n");
exit(0);}
while(!feof(in))fputc(fgetc(in),out);
fclose(in);fclose(out);}
A.程序完成將磁盤文件的信息在屏幕上顯示的功能
B.程序完成將兩個磁盤文件合二為一的功能
C.程序完成將一個磁盤文件復(fù)制到另一個磁盤文件中
D.程序完成將兩個磁盤文件合并并在屏幕上輸出
51.下面函數(shù)的功能是______。exchange(int*ptr1,*ptr2){int*ptr;ptr=-ptr1;ptr1=ptr2;ptr2=ptr;}
A.交換*ptr1和*ptr2的值
B.無法改變*ptr1和*ptr2的值
C.可能造成系統(tǒng)故障,因為使用了空指針
D.交換*ptr1和*pb2的地址
52.在長度為64的有序線性表中進行順序查找,最壞情況下需要比較的次數(shù)為A.63B.64C.6D.7
53.變量a所占的內(nèi)存字節(jié)數(shù)是______。unionU{charst[4];inti;long1;};structA{intc;unionUu;}a;
A.4B.5C.6D.8
54.請選出可用作C語言用戶標識符的是()。
A.void,define,WORD
B.a3_b3,_123,IF
C.FOR,-abc,Case
D.2a,Do,$izeof
55.下列敘述中,正確的是
A.用E-R圖能夠表示實體集間一對一的聯(lián)系、一對多的聯(lián)系和多對多的聯(lián)系
B.用E-R圖只能表示實體集之間一對一的聯(lián)系
C.用E-R圖只能表示實體集之間一對多的聯(lián)系
D.用E-R圖表示的概念數(shù)據(jù)模型只能轉(zhuǎn)換為關(guān)系數(shù)據(jù)模型
56.當(dāng)a=1、b=3、c=5、d=4時,執(zhí)行下面一段程序:if(a<B)if(c<D)x=1;elseif(a<C)if(b<D)x=2;elsex=3;elesx=6;elsex=7;程序執(zhí)行后,x的值為()
A.1B.2C.3D.6
57.若要求從鍵盤讀入含有空格字符的字符串,應(yīng)使用函數(shù)A.getc()B.gets()C.getchar()D.scanf()
58.下面程序的輸出結(jié)果是______。#definea121constb=12;enumc{a1,a2};main(){printf("%d,%d,%d",sizeof(a),sizeof(b),sizeof(enumc));}
A.121,0,4B.2,2,2C.0,2,4D.0,2,2
59.若以下選項中的變量已正確定義,則正確的賦值語句是()。
A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3
60.有以下程序:#include<stdio.h>ma
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人工拆搬合同范本
- 亞馬遜采購合同范例
- 書畫掛牌合同范例
- 醫(yī)療技術(shù)入股合同范本
- 供應(yīng)化糞池銷售合同范本
- 資金入股合同范本
- 2025年度建筑工程施工安全檢測合同范本
- 商業(yè)房屋全裝修短期租賃合同范本
- 會務(wù)承包服務(wù)合同范本
- 農(nóng)村股追加合同范本
- 2025年湖南九嶷職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測試近5年常考版參考題庫含答案解析
- 農(nóng)產(chǎn)品貯運與加工考試題(附答案)
- 幼兒園開學(xué)教職工安全教育培訓(xùn)
- 學(xué)校財務(wù)年終工作總結(jié)4
- 生態(tài)安全課件
- 鋼鐵是怎樣煉成的鋼鐵讀書筆記
- 2025年汽車加氣站作業(yè)人員安全全國考試題庫(含答案)
- 化工過程安全管理導(dǎo)則安全儀表管理課件
- 中國高血壓防治指南-解讀全篇
- 2024年監(jiān)控安裝合同范文6篇
- 2024年山東省高考政治試卷真題(含答案逐題解析)
評論
0/150
提交評論