




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2021年廣東省惠州市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.若已定義x和y是整型變量,x=2;,則表達式y(tǒng)=2.75+x/2的值是()。
A.5.5B.5C.3D.4.0
2.當執(zhí)行下面的程序時,如果輸入ABC,則輸出結果是()#include<stdio.h>#include<string.h>main(){charss[10]="12345";gets(ss);strcat(ss"6789");printf("%s\n",ss);}
A.ABC6789B.ABC67C.12345ABC6D.ABC456789
3.鏈表不具有的特點是A.A.不必事先估計存儲空間
B.可隨機訪問任一元素
C.插入和刪除不需要移動元素
D.所需空間與線性表長度成正比
4.在inta=3,int*p=&a;中,*p的值是()
A.變量a的地址值B.無意義C.變量p的地址值D.3
5.有以下程序:main(){char*p[10]={"abc","aabdfg","dcdbe","abbcf',"cd"};printf("%d\n",strlen(p[4]));}執(zhí)行后的輸出結果是______。
A.2B.3C.4D.5
6.若已知一個棧的進棧序列是l,2,3…n,其輸出序列是P1,P2,P3,…PN,若P1=3,則P2為()。
A.可能是2B.一定是2C.可能是1D.一定是1
7.若串S1="ABCDEFG",S2="9898",S3="###",S4="012345",執(zhí)行其結果為()。A.ABC###G0123B.ABCD###2345C.ABC###G1234D.ABCD###1234
8.甲乙兩個聰明人上街,撿到一張10塊錢的購物卡,兩人就想出一個辦法來分配這張卡。兩個分別將自己出的價格寫在紙上,然后看誰出的價高就給誰,并且那個出價高的人要把出的錢給對方?,F(xiàn)在甲有6塊錢,乙有8塊錢,甲乙雙方都知道對方當前有多少錢并且都希望自己收益高于對方。問最后誰獲得的錢多()
A.甲多B.乙多C.一樣多D.有可能出現(xiàn)有人賠錢的情況
9.
10.已知一個大小為n的整型數(shù)組,現(xiàn)求該數(shù)組的全部連續(xù)子數(shù)組的元素之和的最大值,最優(yōu)算法的時間復雜度是()如:a[4]={2,-1,3,-4},它的全部連續(xù)子數(shù)組為{2,-1,3,-4,[2,-1],[-1,3],[3,-4],[2,-1,3],[-1,3,-4],[2,-1,3,-4]},它們的元素之和為{2,-1,3,-4,1,2,-1,4,-2,0},其中的最大值為4。
A.O(logN)B.O(N)C.O(N*logN)D.O(N^2)
11.以下選項中關于C語言算術表達式的敘述中錯誤的是()。
A.可以通過使用圓括號來改變算術表達式中某些算術運算符的計算優(yōu)先級
B.C語言采用的是人們熟悉的四則運算規(guī)則,即先乘除后加減
C.算術表達式中,運算符兩側類型不同時,將進行類型之間的轉換
D.C語言僅提供了“+”“-”“*”“/”這4個基本算術運算符
12.有以下程序main(){intm=3,n=4,x;x=-m++;x=x+8/++n;printf(“%d\n”,x);}程序運行后的輸出結果是______。A.3B.5C.-1D.-2
13.
14.
15.在位運算中,操作數(shù)每左移兩位,其結果相當于()。
A.操作數(shù)乘以2B.操作數(shù)除以2C.操作數(shù)除以4D.操作數(shù)乘以4
16.有以下程序:#include#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
17.
18.下列選項中,不屬于數(shù)據(jù)管理員(DBA.職責的是()。
A.數(shù)據(jù)庫維護B.數(shù)據(jù)庫設計C.改善系統(tǒng)性能,提高系統(tǒng)效率D.數(shù)據(jù)類型轉換
19.
20.若有定義“intb[8],*p=b;”,則p+6表示()。
A.數(shù)組元素b[6]的值B.數(shù)組元素b[6]的地址C.數(shù)組元素b[7]的地址D.數(shù)組元素b[0]的值加上6
二、2.填空題(20題)21.若有定義語句chars[100],d[100];intj=0,i==0;且s中已賦字符串,請?zhí)羁找詫崿F(xiàn)拷貝。(注:不使用逗號表達式)
while(s[i]=【】;j++;}
d[j]=0;
22.數(shù)據(jù)模型按不同應用層次分成三種類型,它們是概念數(shù)據(jù)模型、【】和物理數(shù)據(jù)模型。
23.算法的復雜度主要包括時間復雜度和______復雜度。
24.以下函數(shù)的功能是計算s=1+1/21+1/3!+…+1/n!,請?zhí)羁铡?/p>
doublefun(intn)
{doubles=0.0,fac=1.0;
inti,k=1;
for(i=1;i<=n;i++)
{【】;
fac=fac/k;
s=s+fac;
}
}
25.設二進制數(shù)A是00101101,若想通過異或運算ab使A的高4位取反,低4位不變,則二進制數(shù)B應是【】。
26.已有定義:charc=′′;inta=1,b;(此處c的初值為空格字符),執(zhí)行b=!c&&a;后b的值為【】。
27.以下fun函數(shù)的功能是:累加數(shù)組元素中的值,n為數(shù)組中元素的個數(shù)。累加的和值放入x所指的存儲單元中。補足所缺語句。
fun(intb[],intn,int*x)
{intk,r=0;
for(k=0;k<n;k++)r=【】;
【】=r;
}
28.下面的程序可對指定字符串中的字符串進行從大到小排序,請將程序完整。(注:程序采用了冒泡排序算法)
#include<stdio.h>
#include<string.h>
main()
{char*str="ABCDabcd",temp;
intn,i;
n=strlen(str);
while(n->1)
for(i=0;i<n;i++)
if(str[i]<str[i+1])
{temp=【】;
str[i]=str[i+1];
【】=temp;
}
printf(【】);
}
29.若有以下定義,則不移動指針p,且通過指針p引用值為98的數(shù)組元素的表達式是______。
intw[10]={23,54,10,33,47,98,72,80,61},*p=w;
30.Jackson方法是一種面向【】的結構化方法。
31.下列程序的運行結果是______。
#include<stdio.h>
main()
{intfun();
fun();
}
fun()
{staticinta[4]={1,2,3,4};
inti;
for(i=0;i<4;i++)a[i]+=a[i];
for(i=0;i<4;i++)printf("%d,",a[i]);
printf"\n");
}
32.軟件危機出現(xiàn)于60年代末,為了解決軟件危機,人們提出了【】的原理來設計軟件,這就是軟件工程誕生的基礎。
33.下列程序中的函數(shù)stropy2()實現(xiàn)字符串兩次復制,即將t所指字符串復制兩次到s所指內存空間中,合并形成一個新字符串。例如,若t所指字符串為:efgh,調用strcpy2后,s所指字符串為:efghefgh。請?zhí)羁铡?/p>
#include<stdio.h>
#include<string.h>
voidstrcpy2(char*s,char*t)
{char*p=t;
while(*s++=*t++);
s=【】;
while(【】=*p++);
}
main()
{charstr1[100]="abed",str2[]="efgh";
strcpy2(str1,str2);printf("%s\n",str1);
}
34.若a是int型變量,則表達式(a=2*3,a*2),a+6的值為______。
35.在數(shù)據(jù)庫的概念結構設計中,常用的描述工具是【】。
36.函數(shù)pi的功能是根據(jù)以下公式近似求得的:
pi*pi/6=1+1/(2*2)+1/(3*3)+…+1/(n*n)
請在下面的函數(shù)中填空,完成求pi的功能。
#include<math.h>
doublepi(longn)
{doubles=0.0,longi;
for(i=1;i<=n;i++)s=s+【】。
return(sqrt(6*s));
}
37.軟件工程研究的內容主要包括:【】技術和軟件工程管理。
38.下面程序的功能是:將字符數(shù)組a中下標值為偶數(shù)的元素從小到大排列,其他元素不變。請?zhí)羁铡?/p>
#include<stdio.h>
#include<string.h>
main()
{chara[]="clanguage",t;
inti,j,k;
k=strlen(a);
for(i=0;i<=k-2;i+=2)
for(j=i+2;j<=k;j+=2;)
if(【】)
{t=a[i];a[i]=a[j];a[j]=t;}
puts(a);printf("\n");
}
39.以下程序的運行結果是【】。
#include<stdio.h>
main()
{FILE*fp;inta[10]={1,2,3,0,0},i;
fp=fopen("d2.dat","wb");
fwtite(a,sizeof(int),5,fp);
fwrite(a,sizeof(int),5,fp);
fclose(fp);
fp=fopen("d2.dat","rb");
fread(a,sizeof(int),10,fp);
fclose(fp);
for(i=0;i<10;i++)printf("%d",a[i]);
}
40.以下程序的定義語句中,x[1]的初值是【】,程序運行后輸出的內容是【】。
#include<stdio.h>
main()
{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,161},*p[4],i;
for(i=0;i<4;i++)
{p[i]=&x[2*i+1];
printf("%d",p[i][0]);
}
printf("\n");
}
三、1.選擇題(20題)41.有以下程序main(){inta[3][3],*p,i;p=&a[0][0];for(i=0;i<9;i++)p[i]=i;for(i=0;i<3;i++)printf("%d",a[1][i]);}程序運行后的輸出結果是
A.12B.123C.234D.345
42.下列敘述中正確的是()。
A.數(shù)據(jù)庫設計是指設計數(shù)據(jù)庫系統(tǒng)
B.數(shù)據(jù)庫設計是指設計數(shù)據(jù)庫管理系統(tǒng)
C.數(shù)據(jù)庫設計是指在已有數(shù)據(jù)庫管理系統(tǒng)的基礎上建立數(shù)據(jù)庫
D.以上三種說法都不對
43.有以下程序:#include<stdio.h>main(){inta=6,b=7,m=1;switch(a%2){case0:m++;break;case1:m++;switch(b%2){defaut:m++;case0:m++;break;}}printf("%d\n",m);}
A.1B.2C.3D.4
44.以下程序的輸出結果是main(){intc=35;printf("%d\n",c&c);}
A.0B.70C.35D.1
45.以下4個選項中,不能看作一條語句的是
A.;B.a=5,b=2.5,c=3.6;C.if(a<5);D.if(b!=5)x=2;y=6;
46.數(shù)據(jù)的存儲結構是指()。
A.數(shù)據(jù)所占的存儲空間
B.數(shù)據(jù)的邏輯結構在計算機中的存放形式
C.數(shù)據(jù)在計算機中的順序存儲方式
D.存儲在計算機外存中的數(shù)據(jù)
47.在一棵二叉樹上第5層的結點數(shù)最多是______。
A.8B.16C.32D.15
48.下列數(shù)據(jù)結構中,能用二分法進行查找的是()。
A.順序存儲的有序線性表B.結性鏈表C.二叉鏈表D.有序線性鏈表
49.以下程序段的輸出為()staticchara[]="language",b[]="progratne";char*ptr1,*ptr2;intk;ptr1=a;ptr2=b;for(k=0;k<7;k++)if(*(ptr1+k)==*(ptr2+k))printf("%c",*(ptr1+k));
A.gaeB.gaC.languageD.有語法錯誤
50.有以下程序:#include<stdio.h>intfun(chars[]){intn=0;while(*s<='9'&&*s>='0'){n=10*n+*s-'0';s++;}return(n);}main(){chars[10]={'6','1','*','4','*','9','*','0','*'};printf("%d\n",fun(s));}程序的運行結果是()。
A.9B.61490C.61D.5
51.有以下程序main(){intk=4,n=0;for(;n<k;){n++;if(n%3!=0)continue;K--;}printf("%d,%d\n",k,n);}程序運行后的輸出結果是
A.1,1B.2,2C.3,3D.4,4
52.下列對于軟件測試的描述中正確的是______。
A.軟件測試的目的是證明程序是否正確
B.軟件測試的目的是使程序運行結果正確
C.軟件測試的目的是盡可能地多發(fā)現(xiàn)程序中的錯誤
D.軟件測試的目的是使程序符合結構化原則
53.在面向對象方法中,一個對象請求另一對象為其服務的方式是通過發(fā)送()。A.調用語句B.命令C.口令D.消息
54.設變量已正確定義,則下列能正確計算f=n!的程序段是()。
A.f=0;for(i=1;i<=n;i++)f*=i;
B.f=1;for(i=1;i<n;i++)f*=i;
C.f=1;for(i=n;i>1;i++)f*=i;
D.f=1;for(i=n;i>=2;i--)f*=i;
55.下列程序段的運行結果是()。#include<stdio.h>voidmain(){charstr[]="ABC",*p=str;printf("%d\n",*(p+3));}
A.67B.0C.字符'C'的地址D.字符'C'
56.有以下程序fun(intx){intp;if(x==0‖x==1)return(3);p=x-fun(x-2);returnp;}main(){printf("%d\n",fun(7));}執(zhí)行后的輸出結果是
A.7B.3C.2D.0
57.在C語言中引用數(shù)組元素時,其數(shù)組下標的數(shù)據(jù)類型只能是()。
A.整型常量B.整型表達式C.整型常量或整型表達式D.任何類型的表達式
58.若有語句:Char*line[5];,以下敘述中正確的是()。
A.定義line是一個數(shù)組,每個數(shù)組元素是一個基類型為Char的指針變量
B.定義line是一個指針變量,該變量可以指向一個長度為5的字符型數(shù)組
C.定義line是一個指針數(shù)組,語句中的*號稱為間址運算符
D.定義line是一個指向字符型函數(shù)的指針
59.以下數(shù)組定義中錯誤的是A.intx[][3]={0};
B.intx[2][3]={{l,2},{3,4},{5,6}};
C.intx[][3]={{l,2,3},{4,5,6}};
D.intx[2][3]={l,2,3,4,5,6};
60.如果要限制一個變量,命名其只能為本文件所用,必須通過()來實現(xiàn)。
A.外部變量說明B.靜態(tài)內部變量C.靜態(tài)外部變量D.局部變量說明
四、選擇題(20題)61.
則以下選項中錯誤的表達式是()。
A.
B.
C.
D.
62.下列關于算法復雜度描述正確的是()。
A.算法的時間復雜度是指算法執(zhí)行的時間
B.算法的空間復雜度是指執(zhí)行這個算法所需的內存空間
C.一個算法的空間復雜度大,則其時間復雜度必定大
D.一個算法的空間復雜度大,則其時間復雜度必定小
63.數(shù)字字符0的ASCIl值為48,若有以下程序:
程序運行后的輸出結果是()。
A.3,2B.50,2C.2,2D.2,50
64.
65.
66.下列詞語中,不屬于面向對象方法的是
A.對象、消息B.繼承、多態(tài)C.類、封裝D.過程調用
67.
有下列程序:
main
{intk=5:
while(--k)printf("%d",k=1);
printf("\n");
}
執(zhí)行后的輸出結果是()。
A.1B.2C.4D.死循環(huán)
68.下列敘述中正確的是()。
A.軟件測試應該由程序開發(fā)者來完成
B.程序經(jīng)調試后一般不需要測試
C.軟件維護只包括對程序代碼的維護
D.以上三種說法都不對
69.
70.
下列程序的輸出結果是()。
#include<stdio.h>
main
{inta=0,i;
for(i=1;i<5;i++)
{switch(i)
{case0:
case3:a+=1;
case1;
case2:a+=2;
default:a+=3;
}
}
printf("%d",a);
}
A.19B.1C.6D.8
71.有以下程序:
程序的運行結果是()。
A.0B.1C.2D.3
72.(12)下列敘述中正確的是______。
A.線性表是線性結構
B.棧與隊列是非線性結構
C.線性鏈表是非線性結構
D.二叉樹是線性結構
73.以下關于long、int和short類型數(shù)據(jù)占用內存大小的敘述中正確的是(),
A.均占4個字節(jié)B.根據(jù)數(shù)據(jù)的大小來決定所占內存的字節(jié)數(shù)C.由用戶自己定義D.由C語言編譯系統(tǒng)決定
74.
75.有以下程序:
程序運行后的輸出結果是()。
A.2,2,3,4,5,
B.6,2,3,4,5,
C.1,2,3,4,5,
D.2,3,4,5,6,
76.有以下程序:
main()
{intX,i;
for(i=1;i<=50;i++)
{x=i;
if(X%2=O)
if(x%3=O)
if(X%7=0)
printf("%d,i)";
}
}
輸出結果是()。
A.28
B.27
C.42
D.41
77.
78.
有以下程序:
main
{intk=5;
while(--k)printf("%d",k-=3);
printf("\n");
}
執(zhí)行后的輸出結果是()。
A.1B.2C.4D.死循環(huán)
79.
80.以下關于邏輯運算符兩側運算對象的敘述中正確的是()。
A.可以是任意合法的表達式B.只能是整數(shù)0或非0整數(shù)C.可以是結構體類型的數(shù)據(jù)D.只能是整數(shù)O或l
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc的功能是計算正整數(shù)m各位上數(shù)字的平方和。 例如,輸入498,則輸出應該是161。 請修改程序中的錯誤,使它能得到正確結果。 注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構。 試題程序: #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.規(guī)定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,其功能是:除了字符串前導的。號之外,將串中其他*號全部刪除。在編寫函數(shù)時.不得使用C語言提供的字符串函數(shù).
參考答案
1.C
2.A
3.B鏈表是一種特殊的線性表,鏈表的存儲結構與順序存儲結構不同,它的存儲區(qū)域可以是任意的存儲單元,對存儲系統(tǒng)中零碎的存儲部分具有更好的應用,在給其分配存儲單元時,不必事先估計整個存儲單元的空間大?。挥捎阪湵淼脑厥峭ㄟ^指針域的指針相連的,用鏈表存儲數(shù)據(jù)時,對其進行插入和刪除操作時,不需要移動其他元素,只需改變其直接前驅指針域,使其指向該結點,并將該結點的指針域修改為指向其直接后繼結點即可。當然,不管是鏈表還是順序存儲,所需空間與線性表長度都成正比。在鏈式存儲的鏈表結構中,由于后一結點數(shù)據(jù)被存儲在哪里,只有通過前一結點的指針域才知道,因此,訪問時只能是逐個訪問,而不能實現(xiàn)隨機訪問。
4.D
5.A解析:本題中p[4]='cd',所以strlen(p[4])=2。
6.A
7.D
8.C
9.A
10.B
11.DC語言的算術運算符是有優(yōu)先級的。圓括號可以改變算術表達式中某些算術運算符的優(yōu)先級,選項A正確;算術運算符中,乘除運算符的優(yōu)先級比加減運算符的優(yōu)先級高,C語言采用的是四則運算規(guī)則,選項B正確;算術表達式中,運算符兩側運算對象的數(shù)據(jù)類型不同時,將進行隱式類型轉換,選項C正確;C語言中基本的算術運算符除了“+”“-”“*”“/”之外,還有“%”,即求余運算符,選項D錯誤。故本題答案為D選項。
12.D本題考核的知識點是運算符的優(yōu)先級。主函數(shù)中首先定義了整型變量m、n和x,并給m和n賦初值為3和4,接著執(zhí)行兩條賦值語句,第一條x=-m++等價于x=-(m++),其值即為-3,第二條x=x+8/++n等價于X=X+8/(++n),即為x=-3+8/5=-2,因此最后輸出x的值為-2。所以,4個選項中選項D符合題意。
13.C
14.A
15.D解析:本題主要考查左移、右移對數(shù)據(jù)值的影響,左移n位相當于乘以2的n次冪,右移n位相當于除以2的n次冪。
16.C宏定義不是C語句,末尾不需要有分號。所以語句Printf("%4.1f\\n",,S(a+b));展開后為printf("%4.1f\\n",3.5;*a+b*a+b;);所以程序會出現(xiàn)語法錯誤。
17.D
18.DD)【解析】數(shù)據(jù)庫管理員(DataBaseAdministrator,DBA)是指對數(shù)據(jù)庫的規(guī)劃、設計、維護、監(jiān)視等的人員,其主要工作如下:數(shù)據(jù)庫設計。DBA的主要任務之一是數(shù)據(jù)庫設計,具體地說是進行數(shù)據(jù)模式的設計;數(shù)據(jù)庫維護。DBA必須對數(shù)據(jù)庫中的數(shù)據(jù)安全性、完整性、并發(fā)控制及系統(tǒng)恢復、數(shù)據(jù)定期轉儲等進行實施與維護;改善系統(tǒng)性能,提高系統(tǒng)效率。DBA必須隨時監(jiān)視數(shù)據(jù)庫的運行狀態(tài),不斷調整內部結構,使系統(tǒng)保持最佳狀態(tài)與效率。
19.A
20.B指針中存放的是變量的地址,指針也可以進行增減運算,這時指針移動的最小單位是一個存儲單元,而不是一個字節(jié)。所以題中“P+6”指的是將指針向后移動了6個存儲單元,即指向uE63,存放的是b[6]的地址。
21.s[i++]s[i++]解析:本題中為了能實現(xiàn)字符串的拷貝,需要使字符數(shù)組s從頭到尾依次遍歷其所有元素。本題應使用i的自增后置來實現(xiàn)。
22.邏輯數(shù)據(jù)模型邏輯數(shù)據(jù)模型解析:數(shù)據(jù)模型按不同的應用層次分成三種類型,它們是概念數(shù)據(jù)模型、邏輯數(shù)據(jù)模型、物理數(shù)據(jù)模型。
23.空間空間解析:算法的復雜度主要包括時間復雜度和空間復雜度。所謂算法的時間復雜度,是指執(zhí)行算法所需要的計算工作量。一個算法的空間復雜度,一般是指執(zhí)行這個算法所需要的內存空間。
24.k=k*ik=k*i解析:本題中遺過for循環(huán)求s表達式中每一項的和,表達式“fac=fac/k;”求的是每—項的值,所以k的值應為n!,在求n!的時候,可以用上次循環(huán)階乘的值乘i,就可以直接得此次n!,故本題填k=k*i。
25.1111000011110000解析:按位異或運算的一個重要應用是讓某個整型變量的二進制位取反,0變成1,而1變成0。這只要設計這樣一個位串信息,讓要變反的位為1,不要改變的位為0,用這個位串信息與整型變量按位加就能得到希望的結果。要使字節(jié)的高4位取反,低4位不變,則需要位串信息是11110000。
26.11解析:字符空格的ASCII碼不為0,所以本題中表達式\ue008!c\ue009的值為0,b=0&&1的結果顯然為0。
27.r+b[k]或b[k]+r或r+*(b+k)或*(b+k)+r*xr+b[k]或b[k]+r或r+*(b+k)或*(b+k)+r\r\n*x
28.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本題要求將字符串str中的字符用冒泡排序算法從大到小排列,其實現(xiàn)過程是將相鄰兩個字符進行比較,如果當前字符小于下一個字符;則通過中間變量temp將字符兩兩交換,所以第一空應填:str[i],第二空應填:str[i+1]。最終打印輸出得到的字符串str,所以第三空應填;'%s',str。
29.*(p+5)或p[5]*(p+5)或p[5]
30.數(shù)據(jù)結構數(shù)據(jù)結構解析:Jackson方法是—‘種面向數(shù)據(jù)結構的結構化方法。
31.24682,4,6,8解析:子函數(shù)fun()的功能是將數(shù)組a中的元素都自加一遍,然后仍然將結果存在原數(shù)組中,其實就是將數(shù)組a的每個元素都變?yōu)樵瓉淼?倍,然后輸出。在主程序中首先通過intfun()定義了子函數(shù)fun(),然后再調用fun()。
32.軟件工程學軟件工程學
33.s-1或--s或s--*s++s-1或--s或s--\r\n*s++解析:在函數(shù)。strcpy2()中,首先將指針t保存到指針p中,然后進入第1個while()循環(huán),其循環(huán)條件為*s++=*t++,其中“*”和“++”運算符的優(yōu)先級相同,但他們的結合性為從右至左,而“=”運算符優(yōu)先級比較低,所以原表達式等價于(*s++)=(*(t++)),即將t當前所指內容復制到s當前所指地址中,然后讓s和t同時往后移動一位,整個表達式返回的是復制給s的值。所以,當t所指內容是字符串結束符'\\0',時,while循環(huán)結束,原先t所指的整個字符串也就復制到s所指的地址中去了。但是,while循環(huán)最后一次判斷也會讓s和t往后移動一位,即此時s指向了字符串結束符'\\0'的后一位。所以第2次復制字符串之前,應先將s指針往回移動一位,故前一空應該填入s-1或其他等價形式。接下來的while循環(huán)實現(xiàn)第二次復制,照抄第1次的while循環(huán)就行,故后一空應填入*s++。
34.1212解析:本題考查逗號表達式的運算規(guī)則。逗號表達式的基本格式為:“表達式1,表達式2,…”,其整個表達式的結果取最后一個子表達式的值。本題中首先計算逗號表達式中的第1個表達式a=2*3=6,然后計算第2個表達式a*2,這時整個表達式的值為12,但要注意,因為第2個表達式并沒有給a賦值,因此a的值不變;接下來執(zhí)行最后一個表達式a+6=12,所以整個表達式最后的值為12。
35.E-R圖E-R圖解析:E-R圖是設計概念模型的有力工具。
36.0/i/i或1.0/(i*i)0/i/i或1.0/(i*i)解析:由題面中提供的計算pi的公式可知;在第i項其值為1/(i*i),考慮到運算結果為浮點數(shù),故必須要將1轉化為浮點數(shù)或采用1.0/(i*i)的形式。故本題應填1.0/(i*i)或其等效形式。
37.軟件開發(fā)
38.a[I]>a[j]a[I]>a[j]解析:本題中的嵌套的循環(huán)結構用在了數(shù)組元素的排序上。本題需要注意的一點是:由于題目只要求出下標值為偶數(shù)的元素從小到大排序,所以內外層for循環(huán)的條件變量變更條件都是+=2,最后通過條件a[i]>a[j]對元素大小進行判斷并交換。
39.12300123001,2,3,0,0,1,2,3,0,0,解析:本題考查文件讀寫函數(shù)fread和fwrite的用法。fwrite函數(shù)將數(shù)組a的前5個元素輸出到文件fp中兩次,共10個字節(jié),再調用fread函數(shù)從文件fp中讀取這10個字節(jié)的數(shù)據(jù)到數(shù)組a中,此時數(shù)組a的內容就變?yōu)閧1,2,3,0,0,1,2,3,0,0},最后的輸出結果為'1,2,3,0,0,1,2,3,0,0,'。
40.224682\r\n2468解析:在主函數(shù)中根據(jù)整型數(shù)組x[]的定義可知,x[1]的初值等于2。在for循環(huán)語句中,當i=0時,p[0]=&x[1],p[0][0]=2;當i=1時,p[1==&x[3],p[1][0]=4;當i=2時,p[2]=&x[5],p[2][0]=6;當i=3時,p[3]=&x[7],p[3][0]=8,所以程序輸出的結果為2、4、6、8。
41.D解析:本題考查的是二維數(shù)組元素在內存中的排列形式。雖然二維數(shù)組成多維數(shù)組從結構上來看不是線性的,但是在C語言中,這些數(shù)組元素在內存中的排列是連續(xù)線性存放的。它們的排列規(guī)則是:第一維下標變化最慢,最右邊的下標變化最快.例如本題中定義的二維數(shù)組a[3][3]中9個元素在內存中的排列順序是:a[0][0],a[0][1],a[0][2],a[1][0],a[1][1],a[1][2],a[2][0],a[2][1],a[2][2]。在主函數(shù)中,首先定義了二維數(shù)組a[3][3],然后定義了一個指針p指向數(shù)組a的第1個元素a[0][0]。在第一個for循環(huán)中,依數(shù)組a在內存中的排列順序為其元素賦從0~8九個值,然后用第二個for循環(huán)依次輸出a[1][0],a[1][1],a[1][2]三個元素的值。所以,4個選項中選項D符合題意。
42.C解析:數(shù)據(jù)庫設計是指,在已有數(shù)據(jù)庫管理系統(tǒng)的基礎上建立數(shù)據(jù)庫的過程,選項A與B錯誤,選項C正確。
43.B解析:本題考查swish語句。第一個switch語句,因為a=6,a%2=0,所以執(zhí)行case0,將m加1,遇到break語句跳出switch語句,結束循環(huán)。
44.C解析:本題考查按位與“&”。因為1&1=1,0&0=0,所以任何數(shù)與自身按位與,結果仍為此數(shù),不發(fā)生變化。
45.D解析:選項D)為兩條語句。
46.B解析:數(shù)據(jù)的存儲結構,又稱為數(shù)據(jù)的物理結構,是數(shù)據(jù)的邏輯結構在計算機中的存放形式,數(shù)據(jù)的存儲結構有順序結構、鏈式結構、散列結構和索引結構等。
47.B[答案]B
[考點]數(shù)據(jù)結構與算法
[評析]依次從上到下,可得出:
第1層結點數(shù)為1;
第2層結點數(shù)為2*1=2;
第3層結點數(shù)為2*2=4;
第n層結點數(shù)為2的n-1次冪
48.A\nA?!窘馕觥慷址ú檎抑贿m用于順序存儲的有序線性表,對于順序存儲的非有序線性表和線性鏈表,都只能采用順序查找。
\n
49.B
50.C解析:題目fun()函數(shù)中while循環(huán)的意思是:判斷s所指內容是否為數(shù)字字符,如果是數(shù)字字符,則計算表達式n=10*n+*s-'0';。其中*s-'0'的作用是將相應的數(shù)字字符轉換為數(shù)值,例如字符'8'減去字符'0'后,得到的結果就是數(shù)值8了。n=10*n+的作用是將累計變量n中原來內容乘以10,然后再加上剛轉換的數(shù)字字符的數(shù)值,例如原來n的值為1,*s現(xiàn)在的內容為'2',那么執(zhí)行了n=10*n+*s-'0';語句后,n的值變?yōu)?2,如果接下來再來一個'8'字符,執(zhí)行n=10*n+*s-'O';語句后,n的值就是128了。故不難看出fun()函數(shù)的作用是“將數(shù)字字符串轉換為相應的十進制數(shù)值,碰到非數(shù)字字符時結束”。從主函數(shù)中定義的字符數(shù)組s的初始化內容可以看出,fun()函數(shù)返回值應該是61。故應該選擇C。
51.C解析:在本程序的for循環(huán)中,用到了一個continue語句,continue語句的作用是停止本次循環(huán),即不執(zhí)行循環(huán)體內continue語句后面的其他語句,繼續(xù)下次循環(huán)的條件判斷。首先在for循環(huán)中n自加1(值變?yōu)?),然后執(zhí)行后面的if語句,由于if語句后面括號的表達式(1%3!=0)的值為真,程序執(zhí)行continue語句,回到for循環(huán)的開始部分,并且判斷for循環(huán)中的條件表達式(n<k)為真,重復執(zhí)行“n++;”語句,如此循環(huán)直到n=3時,if語句判定條件中表達式(3%3!=0)的值為假,程序執(zhí)行if語句后面的“k--;”語句,此時k的值為3,不滿足“n<k”,退出for循環(huán)。故最后的k和n的值為3和3。
52.C解析:軟件測試的目的:盡可能地多發(fā)現(xiàn)程序中的錯誤,不能也不可能證明程序沒有錯誤,軟件測試是一個發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。軟件調試的目的是發(fā)現(xiàn)錯誤的位置,并改正錯誤。
53.D解析:面向對象的世界是通過對象與對象間彼此的相互合作來推動的,對象間的這種相互合作需要一個機制協(xié)助進行,這樣的機制稱為消息。消息是一個實例與另一個實例之間傳遞的信息,它請求對象執(zhí)行某一處理或回答某一要求的信息,它統(tǒng)一了數(shù)據(jù)流和控制流。
54.D解析:要正確計算函數(shù)f=n!,由n!的數(shù)學定義可知n!=n*(n-1)*(n-2)*……*1。在選項A)中,由于f的初值為0,在for循環(huán)語句中,f依次乘以1,2,3,……,n。最后計算f=n!=O,所以選項A)不正確。在選項B)中,f的初值為1,在for循環(huán)語句中,f依次乘以1,2,3,……,(n-1)。最后計算得到f=(n-1)!,所以選項B)不正確。在選項C)中,f的初值為1,在for循環(huán)語句中,f依次乘以n,n+1,n+2,……,所以選項C)不正確。在選項D)中,f的初值為1,在for循環(huán)語句中,f依次乘以n,n-1,n-2,……,2。最后計算f=n!,所以選項D)正確。
55.B解析:先定義了一個指向字符型數(shù)組str的指針p,指針p旨向數(shù)組str的首地址,p+3將指針指向str[3],又因為字符型數(shù)組在存放字符串時會自動在末尾加上'\\0',所以*(p+3)=0。
56.C解析:因為fun(intx)是一個遞歸函數(shù),所以主函數(shù)中fun(7)經(jīng)過三次遞歸調用,其過程可以描述為'fun(7)=7-fun(5)=7-(5-fun(3))=7-(5-(3-fun(1)))=7-(5-(3-3))=7-5=2”,所以最后的輸出結果為2。
57.C解析:在C語言中,數(shù)組元素的下標只能是整型常量或整型表達式。
58.A解析:理解復雜定義要掌握兩點:一、右結合原則.本題中的定義char*line[5];等價于char*(line[5]);;二、自外向內分解成typedef語句。char*(line[5]);等價于typedefchar*A;Aline[5];其中A被typedef定義成字符指針的別名,然后line被定義成A的一維數(shù)組,即字符指針的一維數(shù)組。再來看看行指針的定義char(*line)[5];它應該被分解成typedefcharB[5];B*line;其中B被定義成包含5個元素的一維字符數(shù)組,然后line被定義成指向B的指針,即指向包含5個元素的一維字符數(shù)組的指針。所以兩者切不可混淆了,后者的括號不能省略。故本題應該選擇A。
59.B(16)B)解析:二維數(shù)組的初始化有以下幾種形式:①分行進行初始化。②不分行的初始化。③部分數(shù)組元素初始化。④省略第一維的定義,不省略第二維的定義。選項B)等號右邊分了3行,大于等號左邊數(shù)組的行數(shù)2。
60.C
61.C選項c)中int(f)不正確,因為強制類型轉換表示為:(類型名)(表達式),正確表示為(int)f.
62.B算法的時間復雜度是指執(zhí)行算法所需的計算工作量。算法的空間復雜度是指執(zhí)行這個算法所需的內存空間。在一個算法的空間復雜度大的情況下,其時間復雜度可能會很大,具體視情況而定;反之亦然。
63.C
先返回后自增,所以執(zhí)行完該語句后,輸出結果是2,變量b的
64.A
65.A
66.D面向對象方法是一種運用對象、類、封裝、繼承、多態(tài)和消息等概念來構造、測試、重構軟件的方法。面向對象方法從對象出發(fā),發(fā)展出對象、類、消息、繼承等概念。
67.A
\n在程序語句中,k的初始值為5,進行第l次while循環(huán)后,k自減1為4,非0,執(zhí)行循環(huán)體里的printf語句,輸出k,此時k的值變?yōu)?。程序執(zhí)行第2次循環(huán)時,k自減1變?yōu)?,為假,退出while循環(huán)語句。所以程序的最后結果為1。
\n
68.D程序調試是由程序開發(fā)者完成診斷和改正程序中的錯誤的過程;軟件測試是由專門的測試人員完成,是發(fā)現(xiàn)錯誤而執(zhí)行程序的過程;軟件維護是指軟件系統(tǒng)交付使用以后,為了改正錯誤或滿足新的需要而修改軟件的過程,是軟件生存周期中非常重要的一個階段。
69.B
70.A
\n本題考查switch語句。當i一1時,執(zhí)行case1,因為沒有遇到break語句,所以依次往下運行,“a=a+2=2,a=a+3=5”;當i=2時,執(zhí)行case2,因為沒有遇到break語句,所以依次往下執(zhí)行,“a=a+2=7,a=a+3=10”;當i=3時,執(zhí)行case3,a=a+1=11,因為沒有遇到break語句,所以依次往下運行,a—a+2—13,a—a+3一l6:當i=4時,執(zhí)行default,a=a+3=19,結束循環(huán)。
71.B本題考查循環(huán)語句的嵌套以及條件的判斷問題。在程序中,內層循環(huán)判斷條件為”j<=i¨,而j的初值為3,故當i的值為1和2時,內層循環(huán)體都不會被執(zhí)行。只有當i和j都等于3時才會執(zhí)行一次。m的值為55對3取模,計算結果為l。
72.A
73.D解析:在C語言的標準中,short占2個字節(jié)、long占4個字節(jié),但int的大小和編譯系統(tǒng)相關。例如在Turbo\u3000C\u30002.0中,int占2個字節(jié),但在VisualC++6.0(VC6可以用做C語言編譯器)中占4個字節(jié)。故本題應該選擇D。
74.A
75.B本題考查的是指針作為函數(shù)的參數(shù)和函數(shù)的調用。題目中定義了一個指針變量作為函數(shù)f的形參。主函數(shù)main中調用f函數(shù),當i=0時,執(zhí)行語句(*q)++,此處*q代表的就是數(shù)組元素a[O]的值,即將1進行加1操作;當i=1時,q仍指向數(shù)組元素a[0]的地址,因為在函數(shù)f中并未對指針變量q作任何變動,也即*q仍代表了數(shù)組元素a[0]的值,所以此次(*q)++即2+1,所以a[O]的值變?yōu)?;……直到i=4時,執(zhí)行(*q)++(即5+1)后a[0]的值變?yōu)?。所以最后的輸出結果為:6,2,3,4…5
76.C\n只有當3個if條件同時成立,即能夠同時被2、3、7整除時,才輸出i的值,而從0到50能夠同時被2、3、7整除的數(shù)只有42,故選擇c選鞏。
\n
77.B
78.A解析:因為在while循環(huán)的循環(huán)條件中,一運算符是前綴形式,所以表達式—k的值是k自減之后的值。程序開始時,將k的值初始化為5,然后進入while循環(huán),因為—k的值為4(非零),所以執(zhí)行循環(huán)體輸出k-=3的值1,此時k的值也變?yōu)?。第2次執(zhí)行循環(huán)條件,—k的值為0,所以循環(huán)結束。因此最后輸出的結果是1,故應該選擇A。
79.A
80.Ac語言的邏輯運算符比較特別,它的操作數(shù)沒有明確的數(shù)據(jù)類型,可以是仨意合法的表達式,因此選擇A)。
81.(1)錯誤:longsum=1;正確:longsum=0;(2)錯誤:while(m)正確:while(m);【解析】由函數(shù)proc可知,變量sum中存放正整數(shù)m的各位上數(shù)字的平方和,其初始化為0。因此,“l(fā)ongsum=1;”應改為“l(fā)ongsum=0;”。按照C語言的語法規(guī)則,語句都以分號結束,應在do-while語句最后加上分號。因此,“while(m)”應改為“while(m);”。
82.
程序設計題解析:
【考點分析】
本題考查:指針型變最定義;wh丑e循環(huán)語句;語句條件
表達式;字符串結束標識‘\0’。
【解題思路】
函數(shù)fun的功能:除了字符串前導的*號之外,將串中其他+號全部刪除。
【解答本題】
(1)定義一個臨時指針P,初始指向原串首地址;(2)利用循環(huán)語句把字符串前導*號拷貝到原串;(3)繼續(xù)移動指針,把串中和串尾的非*號字符拷貝到原串;(4)為修改后的字符串賦結束字符‘、O’。
【解題寶典】
要刪除字符串中的指定字符,我們通常采用保留非指定字符的方法??梢詫⒎侵付ㄗ址A粼谠?,即將需要保留的字符從原串的起始位置重新賦值;也可以保留到新串,即新建一個字符串,存放要保留的字符。2021年廣東省惠州市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.若已定義x和y是整型變量,x=2;,則表達式y(tǒng)=2.75+x/2的值是()。
A.5.5B.5C.3D.4.0
2.當執(zhí)行下面的程序時,如果輸入ABC,則輸出結果是()#include<stdio.h>#include<string.h>main(){charss[10]="12345";gets(ss);strcat(ss"6789");printf("%s\n",ss);}
A.ABC6789B.ABC67C.12345ABC6D.ABC456789
3.鏈表不具有的特點是A.A.不必事先估計存儲空間
B.可隨機訪問任一元素
C.插入和刪除不需要移動元素
D.所需空間與線性表長度成正比
4.在inta=3,int*p=&a;中,*p的值是()
A.變量a的地址值B.無意義C.變量p的地址值D.3
5.有以下程序:main(){char*p[10]={"abc","aabdfg","dcdbe","abbcf',"cd"};printf("%d\n",strlen(p[4]));}執(zhí)行后的輸出結果是______。
A.2B.3C.4D.5
6.若已知一個棧的進棧序列是l,2,3…n,其輸出序列是P1,P2,P3,…PN,若P1=3,則P2為()。
A.可能是2B.一定是2C.可能是1D.一定是1
7.若串S1="ABCDEFG",S2="9898",S3="###",S4="012345",執(zhí)行其結果為()。A.ABC###G0123B.ABCD###2345C.ABC###G1234D.ABCD###1234
8.甲乙兩個聰明人上街,撿到一張10塊錢的購物卡,兩人就想出一個辦法來分配這張卡。兩個分別將自己出的價格寫在紙上,然后看誰出的價高就給誰,并且那個出價高的人要把出的錢給對方?,F(xiàn)在甲有6塊錢,乙有8塊錢,甲乙雙方都知道對方當前有多少錢并且都希望自己收益高于對方。問最后誰獲得的錢多()
A.甲多B.乙多C.一樣多D.有可能出現(xiàn)有人賠錢的情況
9.
10.已知一個大小為n的整型數(shù)組,現(xiàn)求該數(shù)組的全部連續(xù)子數(shù)組的元素之和的最大值,最優(yōu)算法的時間復雜度是()如:a[4]={2,-1,3,-4},它的全部連續(xù)子數(shù)組為{2,-1,3,-4,[2,-1],[-1,3],[3,-4],[2,-1,3],[-1,3,-4],[2,-1,3,-4]},它們的元素之和為{2,-1,3,-4,1,2,-1,4,-2,0},其中的最大值為4。
A.O(logN)B.O(N)C.O(N*logN)D.O(N^2)
11.以下選項中關于C語言算術表達式的敘述中錯誤的是()。
A.可以通過使用圓括號來改變算術表達式中某些算術運算符的計算優(yōu)先級
B.C語言采用的是人們熟悉的四則運算規(guī)則,即先乘除后加減
C.算術表達式中,運算符兩側類型不同時,將進行類型之間的轉換
D.C語言僅提供了“+”“-”“*”“/”這4個基本算術運算符
12.有以下程序main(){intm=3,n=4,x;x=-m++;x=x+8/++n;printf(“%d\n”,x);}程序運行后的輸出結果是______。A.3B.5C.-1D.-2
13.
14.
15.在位運算中,操作數(shù)每左移兩位,其結果相當于()。
A.操作數(shù)乘以2B.操作數(shù)除以2C.操作數(shù)除以4D.操作數(shù)乘以4
16.有以下程序:#include#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
17.
18.下列選項中,不屬于數(shù)據(jù)管理員(DBA.職責的是()。
A.數(shù)據(jù)庫維護B.數(shù)據(jù)庫設計C.改善系統(tǒng)性能,提高系統(tǒng)效率D.數(shù)據(jù)類型轉換
19.
20.若有定義“intb[8],*p=b;”,則p+6表示()。
A.數(shù)組元素b[6]的值B.數(shù)組元素b[6]的地址C.數(shù)組元素b[7]的地址D.數(shù)組元素b[0]的值加上6
二、2.填空題(20題)21.若有定義語句chars[100],d[100];intj=0,i==0;且s中已賦字符串,請?zhí)羁找詫崿F(xiàn)拷貝。(注:不使用逗號表達式)
while(s[i]=【】;j++;}
d[j]=0;
22.數(shù)據(jù)模型按不同應用層次分成三種類型,它們是概念數(shù)據(jù)模型、【】和物理數(shù)據(jù)模型。
23.算法的復雜度主要包括時間復雜度和______復雜度。
24.以下函數(shù)的功能是計算s=1+1/21+1/3!+…+1/n!,請?zhí)羁铡?/p>
doublefun(intn)
{doubles=0.0,fac=1.0;
inti,k=1;
for(i=1;i<=n;i++)
{【】;
fac=fac/k;
s=s+fac;
}
}
25.設二進制數(shù)A是00101101,若想通過異或運算ab使A的高4位取反,低4位不變,則二進制數(shù)B應是【】。
26.已有定義:charc=′′;inta=1,b;(此處c的初值為空格字符),執(zhí)行b=!c&&a;后b的值為【】。
27.以下fun函數(shù)的功能是:累加數(shù)組元素中的值,n為數(shù)組中元素的個數(shù)。累加的和值放入x所指的存儲單元中。補足所缺語句。
fun(intb[],intn,int*x)
{intk,r=0;
for(k=0;k<n;k++)r=【】;
【】=r;
}
28.下面的程序可對指定字符串中的字符串進行從大到小排序,請將程序完整。(注:程序采用了冒泡排序算法)
#include<stdio.h>
#include<string.h>
main()
{char*str="ABCDabcd",temp;
intn,i;
n=strlen(str);
while(n->1)
for(i=0;i<n;i++)
if(str[i]<str[i+1])
{temp=【】;
str[i]=str[i+1];
【】=temp;
}
printf(【】);
}
29.若有以下定義,則不移動指針p,且通過指針p引用值為98的數(shù)組元素的表達式是______。
intw[10]={23,54,10,33,47,98,72,80,61},*p=w;
30.Jackson方法是一種面向【】的結構化方法。
31.下列程序的運行結果是______。
#include<stdio.h>
main()
{intfun();
fun();
}
fun()
{staticinta[4]={1,2,3,4};
inti;
for(i=0;i<4;i++)a[i]+=a[i];
for(i=0;i<4;i++)printf("%d,",a[i]);
printf"\n");
}
32.軟件危機出現(xiàn)于60年代末,為了解決軟件危機,人們提出了【】的原理來設計軟件,這就是軟件工程誕生的基礎。
33.下列程序中的函數(shù)stropy2()實現(xiàn)字符串兩次復制,即將t所指字符串復制兩次到s所指內存空間中,合并形成一個新字符串。例如,若t所指字符串為:efgh,調用strcpy2后,s所指字符串為:efghefgh。請?zhí)羁铡?/p>
#include<stdio.h>
#include<string.h>
voidstrcpy2(char*s,char*t)
{char*p=t;
while(*s++=*t++);
s=【】;
while(【】=*p++);
}
main()
{charstr1[100]="abed",str2[]="efgh";
strcpy2(str1,str2);printf("%s\n",str1);
}
34.若a是int型變量,則表達式(a=2*3,a*2),a+6的值為______。
35.在數(shù)據(jù)庫的概念結構設計中,常用的描述工具是【】。
36.函數(shù)pi的功能是根據(jù)以下公式近似求得的:
pi*pi/6=1+1/(2*2)+1/(3*3)+…+1/(n*n)
請在下面的函數(shù)中填空,完成求pi的功能。
#include<math.h>
doublepi(longn)
{doubles=0.0,longi;
for(i=1;i<=n;i++)s=s+【】。
return(sqrt(6*s));
}
37.軟件工程研究的內容主要包括:【】技術和軟件工程管理。
38.下面程序的功能是:將字符數(shù)組a中下標值為偶數(shù)的元素從小到大排列,其他元素不變。請?zhí)羁铡?/p>
#include<stdio.h>
#include<string.h>
main()
{chara[]="clanguage",t;
inti,j,k;
k=strlen(a);
for(i=0;i<=k-2;i+=2)
for(j=i+2;j<=k;j+=2;)
if(【】)
{t=a[i];a[i]=a[j];a[j]=t;}
puts(a);printf("\n");
}
39.以下程序的運行結果是【】。
#include<stdio.h>
main()
{FILE*fp;inta[10]={1,2,3,0,0},i;
fp=fopen("d2.dat","wb");
fwtite(a,sizeof(int),5,fp);
fwrite(a,sizeof(int),5,fp);
fclose(fp);
fp=fopen("d2.dat","rb");
fread(a,sizeof(int),10,fp);
fclose(fp);
for(i=0;i<10;i++)printf("%d",a[i]);
}
40.以下程序的定義語句中,x[1]的初值是【】,程序運行后輸出的內容是【】。
#include<stdio.h>
main()
{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,161},*p[4],i;
for(i=0;i<4;i++)
{p[i]=&x[2*i+1];
printf("%d",p[i][0]);
}
printf("\n");
}
三、1.選擇題(20題)41.有以下程序main(){inta[3][3],*p,i;p=&a[0][0];for(i=0;i<9;i++)p[i]=i;for(i=0;i<3;i++)printf("%d",a[1][i]);}程序運行后的輸出結果是
A.12B.123C.234D.345
42.下列敘述中正確的是()。
A.數(shù)據(jù)庫設計是指設計數(shù)據(jù)庫系統(tǒng)
B.數(shù)據(jù)庫設計是指設計數(shù)據(jù)庫管理系統(tǒng)
C.數(shù)據(jù)庫設計是指在已有數(shù)據(jù)庫管理系統(tǒng)的基礎上建立數(shù)據(jù)庫
D.以上三種說法都不對
43.有以下程序:#include<stdio.h>main(){inta=6,b=7,m=1;switch(a%2){case0:m++;break;case1:m++;switch(b%2){defaut:m++;case0:m++;break;}}printf("%d\n",m);}
A.1B.2C.3D.4
44.以下程序的輸出結果是main(){intc=35;printf("%d\n",c&c);}
A.0B.70C.35D.1
45.以下4個選項中,不能看作一條語句的是
A.;B.a=5,b=2.5,c=3.6;C.if(a<5);D.if(b!=5)x=2;y=6;
46.數(shù)據(jù)的存儲結構是指()。
A.數(shù)據(jù)所占的存儲空間
B.數(shù)據(jù)的邏輯結構在計算機中的存放形式
C.數(shù)據(jù)在計算機中的順序存儲方式
D.存儲在計算機外存中的數(shù)據(jù)
47.在一棵二叉樹上第5層的結點數(shù)最多是______。
A.8B.16C.32D.15
48.下列數(shù)據(jù)結構中,能用二分法進行查找的是()。
A.順序存儲的有序線性表B.結性鏈表C.二叉鏈表D.有序線性鏈表
49.以下程序段的輸出為()staticchara[]="language",b[]="progratne";char*ptr1,*ptr2;intk;ptr1=a;ptr2=b;for(k=0;k<7;k++)if(*(ptr1+k)==*(ptr2+k))printf("%c",*(ptr1+k));
A.gaeB.gaC.languageD.有語法錯誤
50.有以下程序:#include<stdio.h>intfun(chars[]){intn=0;while(*s<='9'&&*s>='0'){n=10*n+*s-'0';s++;}return(n);}main(){chars[10]={'6','1','*','4','*','9','*','0','*'};printf("%d\n",fun(s));}程序的運行結果是()。
A.9B.61490C.61D.5
51.有以下程序main(){intk=4,n=0;for(;n<k;){n++;if(n%3!=0)continue;K--;}printf("%d,%d\n",k,n);}程序運行后的輸出結果是
A.1,1B.2,2C.3,3D.4,4
52.下列對于軟件測試的描述中正確的是______。
A.軟件測試的目的是證明程序是否正確
B.軟件測試的目的是使程序運行結果正確
C.軟件測試的目的是盡可能地多發(fā)現(xiàn)程序中的錯誤
D.軟件測試的目的是使程序符合結構化原則
53.在面向對象方法中,一個對象請求另一對象為其服務的方式是通過發(fā)送()。A.調用語句B.命令C.口令D.消息
54.設變量已正確定義,則下列能正確計算f=n!的程序段是()。
A.f=0;for(i=1;i<=n;i++)f*=i;
B.f=1;for(i=1;i<n;i++)f*=i;
C.f=1;for(i=n;i>1;i++)f*=i;
D.f=1;for(i=n;i>=2;i--)f*=i;
55.下列程序段的運行結果是()。#include<stdio.h>voidmain(){charstr[]="ABC",*p=str;printf("%d\n",*(p+3));}
A.67B.0C.字符'C'的地址D.字符'C'
56.有以下程序fun(intx){intp;if(x==0‖x==1)return(3);p=x-fun(x-2);returnp;}main(){printf("%d\n",fun(7));}執(zhí)行后的輸出結果是
A.7B.3C.2D.0
57.在C語言中引用數(shù)組元素時,其數(shù)組下標的數(shù)據(jù)類型只能是()。
A.整型常量B.整型表達式C.整型常量或整型表達式D.任何類型的表達式
58.若有語句:Char*line[5];,以下敘述中正確的是()。
A.定義line是一個數(shù)組,每個數(shù)組元素是一個基類型為Char的指針變量
B.定義line是一個指針變量,該變量可以指向一個長度為5的字符型數(shù)組
C.定義line是一個指針數(shù)組,語句中的*號稱為間址運算符
D.定義line是一個指向字符型函數(shù)的指針
59.以下數(shù)組定義中錯誤的是A.intx[][3]={0};
B.intx[2][3]={{l,2},{3,4},{5,6}};
C.intx[][3]={{l,2,3},{4,5,6}};
D.intx[2][3]={l,2,3,4,5,6};
60.如果要限制一個變量,命名其只能為本文件所用,必須通過()來實現(xiàn)。
A.外部變量說明B.靜態(tài)內部變量C.靜態(tài)外部變量D.局部變量說明
四、選擇題(20題)61.
則以下選項中錯誤的表達式是()。
A.
B.
C.
D.
62.下列關于算法復雜度描述正確的是()。
A.算法的時間復雜度是指算法執(zhí)行的時間
B.算法的空間復雜度是指執(zhí)行這個算法所需的內存空間
C.一個算法的空間復雜度大,則其時間復雜度必定大
D.一個算法的空間復雜度大,則其時間復雜度必定小
63.數(shù)字字符0的ASCIl值為48,若有以下程序:
程序運行后的輸出結果是()。
A.3,2B.50,2C.2,2D.2,50
64.
65.
66.下列詞語中,不屬于面向對象方法的是
A.對象、消息B.繼承、多態(tài)C.類、封裝D.過程調用
67.
有下列程序:
main
{intk=5:
while(--k)printf("%d",k=1);
printf("\n");
}
執(zhí)行后的輸出結果是()。
A.1B.2C.4D.死循環(huán)
68.下列敘述中正確的是()。
A.軟件測試應該由程序開發(fā)者來完成
B.程序經(jīng)調試后一般不需要測試
C.軟件維護只包括對程序代碼的維護
D.以上三種說法都不對
69.
70.
下列程序的輸出結果是()。
#include<stdio.h>
main
{inta=0,i;
for(i=1;i<5;i++)
{switch(i)
{case0:
case3:a+=1;
case1;
case2:a+=2;
default:a+=3;
}
}
printf("%d",a);
}
A.19B.1C.6D.8
71.有以下程序:
程序的運行結果是()。
A.0B.1C.2D.3
72.(12)下列敘述中正確的是______。
A.線性表是線性結構
B.棧與隊列是非線性結構
C.線性鏈表是非線性結構
D.二叉樹是線性結構
73.以下關于long、int和short類型數(shù)據(jù)占用內存大小的敘述中正確的是(),
A.均占4個字節(jié)B.根據(jù)數(shù)據(jù)的大小來決定所占內存的字節(jié)數(shù)C.由用戶自己定義D.由C語言編譯系統(tǒng)決定
74.
75.有以下程序:
程序運行后的輸出結果是()。
A.2,2,3,4,5,
B.6,2,3,4,5,
C.1,2,3,4,5,
D.2,3,4,5,6,
76.有以下程序:
main()
{intX,i;
for(i=1;i<=50;i++)
{x=i;
if(X%2=O)
if(x%3=O)
if(X%7=0)
printf("%d,i)";
}
}
輸出結果是()。
A.28
B.27
C.42
D.41
77.
78.
有以下程序:
main
{intk=5;
while(--k)printf("%d",k-=3);
printf("\n");
}
執(zhí)行后的輸出結果是()。
A.1B.2C.4D.死循環(huán)
79.
80.以下關于邏輯運算符兩側運算對象的敘述中正確的是()。
A.可以是任意合法的表達式B.只能是整數(shù)0或非0整數(shù)C.可以是結構體類型的數(shù)據(jù)D.只能是整數(shù)O或l
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc的功能是計算正整數(shù)m各位上數(shù)字的平方和。 例如,輸入498,則輸出應該是161。 請修改程序中的錯誤,使它能得到正確結果。 注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構。 試題程序: #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.規(guī)定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,其功能是:除了字符串前導的。號之外,將串中其他*號全部刪除。在編寫函數(shù)時.不得使用C語言提供的字符串函數(shù).
參考答案
1.C
2.A
3.B鏈表是一種特殊的線性表,鏈表的存儲結構與順序存儲結構不同,它的存儲區(qū)域可以是任意的存儲單元,對存儲系統(tǒng)中零碎的存儲部分具有更好的應用,在給其分配存儲單元時,不必事先估計整個存儲單元的空間大??;由于鏈表的元素是通過指針域的指針相連的,用鏈表存儲數(shù)據(jù)時,對其進行插入和刪除操作時,不需要移動其他元素,只需改變其直接前驅指針域,使其指向該結點,并將該結點的指針域修改為指向其直接后繼結點即可。當然,不管是鏈表還是順序存儲,所需空間與線性表長度都成正比。在鏈式存儲的鏈表結構中,由于后一結點數(shù)據(jù)被存儲在哪里,只有通過前一結點的指針域才知道,因此,訪問時只能是逐個訪問,而不能實現(xiàn)隨機訪問。
4.D
5.A解析:本題中p[4]='cd',所以strlen(p[4])=2。
6.A
7.D
8.C
9.A
10.B
11.DC語言的算術運算符是有優(yōu)先級的。圓括號可以改變算術表達式中某些算術運算符的優(yōu)先級,選項A正確;算術運算符中,乘除運算符的優(yōu)先級比加減運算符的優(yōu)先級高,C語言采用的是四則運算規(guī)則,選項B正確;算術表達式中,運算符兩側運算對象的數(shù)據(jù)類型不同時,將進行隱式類型轉換,選項C正確;C語言中基本的算術運算符除了“+”“-”“*”“/”之外,還有“%”,即求余運算符,選項D錯誤。故本題答案為D選項。
12.D本題考核的知識點是運算符的優(yōu)先級。主函數(shù)中首先定義了整型變量m、n和x,并給m和n賦初值為3和4,接著執(zhí)行兩條賦值語句,第一條x=-
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 離婚協(xié)議書孩子由女方撫養(yǎng)二零二五年
- 房產(chǎn)抵押借款合同書范例二零二五年
- 二零二五版借款合同保證人范例
- 二零二五版集裝箱拖車運輸合同樣本
- 2025簽訂租房合同中有些注意事項
- 《2025年高空作業(yè)車租賃合同》
- 中班生活安全教育課件
- 中學生安全意識與防范
- 古代漢語翻譯課件
- 2025年上海浦東物流中心保溫改造合同
- 暖通系統(tǒng)調試方案
- 危貨車輛防汛救援應急預案
- 培訓學校安全管理制度
- 應用化學專課試題及答案
- 2025年紡織行業(yè):滌綸生產(chǎn)科學技術基礎知識考試題(附答案)
- 一般公共預算支出編制流程圖
- 麗聲北極星分級繪本第一級下The King's Yu Player教學設計
- 顯微操作技術(全面)
- 兩立體相交相貫
- fTU使用說明書
- 日本文學史-中世17頁
評論
0/150
提交評論