版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
2021-2022年浙江省寧波市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.有以下程序:#includemain(){inty=9;for(;y>0;y--)If?y%3==0)printf("%d",---y);}程序的運行結(jié)果是()。A.852B.963C.741D.875421
2.對于線性表(7,34,55,25,64,46,20,10)進行散列存儲時,若選用H(K)=K%9作為散列函數(shù),則散列地址為1的元素有()個。
A.1B.2C.3D.4
3.以下程序的輸出結(jié)果是______。charcchar(charch){if(ch>='A'&&ch<='z')ch=ch-'A'+'a';returnch;}main(){chars[]="ABC+abc=defDEF",*p=s;while(*p){*p=cchar(*p);p++;}printf("%s\n",s);}
A.abe+ABC=DEFdef
B.abc+abe=defdef
C.abcaABCDEFdef
D.abcabcdefdef
4.樹的度為3,且有9個度為3的節(jié)點,5個度為1的節(jié)點,但沒有度為2的節(jié)點。則該樹中的葉子節(jié)點數(shù)為()。
A.18B.33C.19D.32
5.若有運算符:>、*=、<<、%、sizeof,則它們按優(yōu)先級(由低至高)的正確排列次序為()。
A.*=<<>%sizeof
B.<<*=>%sizeof
C.%=><<sizeof%
D.*=><<%sizeof
6.
7.定義int*swap()指的是______。
A.—個返回整型值的函數(shù)swap()
B.一個返回指向整型值指針的函swap()
C.一個指向函數(shù)swap()的指針,函數(shù)返回一個整型值
D.以上說法均錯
8.設某文件內(nèi)排序后得到100個初始歸并段(初始順串),若使用多路歸并排序算法,且要求三趟歸并完成排序,問歸并路數(shù)最少為()
A.5B.6C.7D.8
9.
10.以下程序的主函數(shù)中調(diào)用了在其面前定義的fun函數(shù)#include<stdio.h>...main(){doublea[15],k;k=fun(a);...}則以下選項中錯誤的fun函數(shù)首部是()。、A.doublefun(doublea[l5])
B.doublefun(double*a)
C.doublefun(doublea[])
D.doublefun(doublea)
11.在說明語句:int*f();中,標識符f代表的是
A.一個用于指向整型數(shù)據(jù)的指針變量
B.一個用于指向一維數(shù)組的行指針
C.一個用于指向函數(shù)的指針變量
D.一個返回值為指針型的函數(shù)名
12.
13.有以下語句:intb;charc[10];,則正確的輸入語句是______。
A.scanf("%d%s",&b,&c);
B.scanf("%d%s",&b,c);
C.scanf("%d%s",b,c);
D.scanf("%d%s",b,&c);
14.下列程序的輸出結(jié)果是()。#includedstdi0.h>#includedstring.h>voidfun(intb[]){staticinti=0;do{b[i]+=b[i+1];}while(++i<2);}main{intk,a[5]={1,3,5,4,9};fun(a);for(k=0;k<5;k++)printf("%d",a[k]);}A.13579B.48579C.48549D.48999
15.
16.下列敘述中,正確的是()
A.軟件交付使用后還需要進行維護
B.軟件一旦交付使用就不需要再進行維護
C.軟件交付使用后其生命周期就結(jié)束
D.軟件維護是指修復程序中被破壞的指令
17.有如下說明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;則數(shù)值為9的表達式是()
A.*p+9B.*(p+8)C.*p+=9D.p+8
18.一個棧的輸入序列為123…n,若輸出序列的第一個元素是n,輸出第i(1<=i<=n)個元素是()
A.不確定B.n-i+1C.iD.n-i
19.若已包括頭文件且已有定義charsl[18],s2={"ABCDE")和inti,現(xiàn)要將字符串”ABCDE”賦給sl,下列語句錯誤的是()。
A.strcpy(s1,s2)
B.strcpy(s1,"ABCDE");
C.sl="ABCDE";
D.for(i=0;i<6;i++)sl[i]=s2[i]
20.在長度為n的有序線性表中進行二分查找,最壞情況下需要比較的次數(shù)是A.O(n)
B.O(n2)
C.O(log2n)
D.O(nlog2n)
二、2.填空題(20題)21.請在以下程序第一行的下劃線處填寫適當內(nèi)容,使程序能正常運行。
#include<stdio.h>
【】(double,double);
main()
{doublex,y;
scanf("%If%If",&x,&y);
printf("%If\n",max(x,y));
}
doublemax(doublea,doubleb)
{return(a>b?a:b);}
22.以下程序的功能是計算:s=1+12+123+1234+12345。請?zhí)羁铡?/p>
main()
{intt=0,s=0,i;
for(i=1;i<=5;i++)
{t=i+______;s=s+t;}
printf("s=%d\n",s);
}
23.以下程序運行后的輸出結(jié)果是______。
main()
{chara[]="Language",b[]="Programe";
char*p1,*p2;
intk;
p1=a;p2=b;
for(k=0;k<=7;k++)
if(*(p1+k)==*(p2+k))printf("%c,*(p1+k));
}
24.以下程序的輸出結(jié)果是【】。
main()
{chars[]="ABCD",*p;
for(p=s+1;p<s+4;p++)printf("%s\n",p);}
25.若x和y都是buble型變量,且x的初值為3.0,y的初值為2.0,則表達式pow(y,fabs(x))的值為【】。
26.已知字符'A'的ASCII碼值為65,以下語句的輸出結(jié)果是【】。
charch='B';
printf("%c%d\n",ch,ch);
27.以下程序的運行結(jié)果是【】。
#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);
}
28.下列軟件系統(tǒng)結(jié)構(gòu)圖的寬度為[]。
29.當運行以下程序時,輸入abed,程序的輸出結(jié)果是:【】。
insert(charstr[])
{inti
i=strlen(str);
while(i>0)
{str[2*i]=str[i];str[2*-1]='*';i--;}
printf("%s\n",str);
}
main()
{charstr[40];
scanf("%s",sB);insert(str);
}
30.閱讀下面程序段,則執(zhí)行后輸出的結(jié)果是【】。
#include"stdio.h"
main()
{charfun(char,int);
chara='A';
intb=13;
a=fun(a,b);
putchar(a);}
charfun(chara,intb)
{chark;
k=a+b;
returnk;}
31.下列語句的輸出結(jié)果是______。
chars[20]="aaaa",*sp=s;
puts(strcat(sp,"AAAAA"));
32.一棵二叉樹第六層(根節(jié)點為第一層)的節(jié)點數(shù)最多為______。
33.軟件生命周期分為軟件定義期、軟件開發(fā)期和軟件維護期,詳細設計屬于______中的一個階段。
34.如果調(diào)用fopen函數(shù)不成功,則函數(shù)返回【】;如果調(diào)用fclose函數(shù)不成功,則函數(shù)返回【】。
35.已知存儲結(jié)構(gòu)如下所示,請?zhí)羁铡?/p>
datanext
structlink{chardata;
【】;
}node;
36.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
main()
{inti;
for(i=′a′;i<′f′;i++,i++)printf("%c",i-′a′+′A′);
printf("\n");
}
37.以下程序運行后的輸出結(jié)果是______。
main()
{
inta,b,c;
a=25;
b=025;
c=0x25;
printf("%d%d%d\n",a,b,C);
}
38.下面程序的輸出是()。
main()
{intarr[8],i,k=0;
for(i=0;i<8;i++)
arr[i]=i;
for(i=1;i<5;i++)
k+=arr[i]+i;
printf("%d\n",k);
}
39.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
#defineMAX(x,y)(x)>(y)?(x):(y)
main()
{inta=5,b=2,c=3,d=3,t;
t=MAX(a+b,c+d)*10;
printf("%d\n",1);
}
40.閱讀程序,填空補充程序。
#define【】30
main()
{【】;
num=10;
total=num*PRICE;
printf("total=%d,num=%d\n",【】);
}
三、1.選擇題(20題)41.以下程序的輸出結(jié)果是______。main(){inti,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];for(i=0;i<4;i+=2)printf("%d",p[i]);}
A.52B.51C.53D.97
42.以下程序的運行結(jié)果是
#defineMAX(A,B)(A)>(B)?(A):(B)
#definePRINT(Y)printf("Y=%d\t",Y)
main()
{inta=1,b=2,c=3,d=4,t;
t=MAX(a+b,c+d);
PRINT(t);}
A.Y=3B.存在語法錯誤C.Y=7D.Y=0
43.下列程序的輸出結(jié)果是______。main(){inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;i<=i;j++)s+=a[i][j];printf("%d\n",s);}
A.18B.19C.20D.21
44.若定義inta=10,則表達式a+=a-=a*=a的值是()。
A.0B.-180C.-100D.-90
45.在面向?qū)ο笤O計中,對象有很多基本特點,其中“從外面看只能看到對象的外部特性,而對象的內(nèi)部對外是不可見的”這一性質(zhì)指的是對象的
A.分類性B.標識惟一性C.多態(tài)性D.封裝性
46.已知intt=0;while(t=1){…}則以下敘述正確的是()。
A.循環(huán)控制表達式的值為0B.循環(huán)控制表達式的值為1C.循環(huán)控制表達式不合法D.以上說法都不對
47.字長為16位的計算機是指______。
A.該計算機能夠處理的最大數(shù)不超過16
B.該計算機中的CPU可以同時處理16位的二進制信息
C.該計算機的內(nèi)存量為16MB
D.該計算機每秒鐘所能執(zhí)行的指令條數(shù)為16MIPS
48.若a、b、c、d都是int型變量且都已經(jīng)正確賦初值,則下列不正確的賦值語句是()。
A.a+d;B.a++;C.a=b=c=d=100;D.a=(b=3)+(d=5);
49.在“文件包含”預處理語句的使用形式中,當#include后面的文件名用<>(尖括號)括起時,尋找被包含文件的方式是()。
A.僅僅搜索當前目錄
B.僅僅搜索源程序所在目錄
C.在標準目錄下查找指定的文件
D.先在源程序所在目錄搜索,如查找不到,再按系統(tǒng)指定的標準目錄查找
50.在面向?qū)ο蠓椒ㄖ校?)描述的是具有相似屬性與操作的一組對象。
A.屬性B.事件C.方法D.類
51.簡單的交換排序方法是()。
A.快速排序B.選擇排序C.堆排序D.冒泡排序
52.有以下程序voidsum(inta[]){a[0]-a[-1]+a[1];}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};sum(&a[2]);printf(“%d\n”,a[2]);}程序運行后的輸出結(jié)果是A.6B.7C.5D.8
53.結(jié)構(gòu)化程序設計的核心和基礎是()。
A.結(jié)構(gòu)化分析方法B.結(jié)構(gòu)化設計方法C.結(jié)構(gòu)化設計理論D.結(jié)構(gòu)化編程方法
54.在E-R圖中,用來表示實體之間聯(lián)系的圖形是()
A.矩形B.橢圓形C.菱形D.平行四邊形
55.若a為int類型,且其值為3,則執(zhí)行完表達式a+=a-=a*a后,a的值是()。
A.-3B.9C.-12D.6
56.在軟件測試設計中,軟件測試的主要目的是
A.實驗性運行軟件B.證明軟件正確C.找出軟件中全部錯誤D.盡可能多地發(fā)現(xiàn)軟件中的錯誤
57.sizeof(float)是()。A.一個雙精度型表達式B.一個整型表達式C.一種函數(shù)調(diào)用D.一個不合法的表達式
58.循環(huán)鏈表的主要優(yōu)點是______。
A.不再需要頭指針了
B.己知某個結(jié)點的位置后,能夠容易找到它的直接前驅(qū)
C.在進行插入、刪除運算時,能更好地保證鏈表不斷開
D.從表中任一結(jié)點出發(fā)都能掃描到整個鏈表
59.下列能正確定義字符串的語句是()。
A.charstr[]={'\64'};
B.charstr="kx43";
C.charstr=";
D.charstr[]="\0";
60.以下能正確定義二維數(shù)給的是
A.inta[][3];
B.inta[][3]={2*3};
C.inta[][3]={};
D.inta[2][3]={{1},{2},{3,4}};
四、選擇題(20題)61.對于循環(huán)隊列,下列敘述中正確的是()。A.隊頭指針是固定不變的
B.隊頭指針—定大于隊尾指針
C.隊頭指針_定小于隊尾指針
D.隊頭指針可以大于隊尾指針,也可以小于隊尾指針
62.當執(zhí)行以下程序段時,()。x=-l:do{x=x*X;)while(!x);A.循環(huán)體將執(zhí)行一次B.循環(huán)體將執(zhí)行兩次C.循環(huán)體將執(zhí)行無限次D.系統(tǒng)將提示有語法錯誤
63.下列敘述中錯誤的是()。
A.一個C語言程序只能實現(xiàn)一種算法
B.c程序可以由多個程序文件組成
C.C程序可以由一個或多個函數(shù)組成
D.一個c函數(shù)可以單獨作為一個C程序文件存在
64.
65.有以下程序
main()
{inti=010,j=0X10;
pirntf("%d,%d\n",i,j);
}
該程序的輸出結(jié)果是
A.10,10B.8,10
C.8,16D.10,16
66.
67.有以下程序:
程序運行后的輸出結(jié)果是()。
A.1127B.1212C.1111D.117
68.請選出以下語句的輸出結(jié)果Printf("%d\n",strlen("\t\"\065\xff\n"));
A.5B.14C.8D.輸出項不合法,無正常輸出
69.
70.
71.
72.有以下程序:執(zhí)行時輸入:0<;回車>;后,則輸出結(jié)果是()。A.5,B.0,0,0,0,0,C.0,1,2,3,4,D.0,1.
73.若intk=8;,則執(zhí)行下列程序后,變量k的正確結(jié)果是
main()
{intk=8;
switch(k)
{case8:k+=1;
case10:k+=1;
case11:k+=1;break;
default:k+=1;
}
printf("%d\n",k);
}
A.12B.11
C.10D.9
74.以下程序的功能是
#include<stdio.h>
main()
{FILE*fp1;*fp2;
fp1=fopen("file1","r");
fp2=fopen("file2","w");
while(!feof(fp1))
fputc(fgetc(fp1),fp2);
fclose(fp1);
fclose(fp2);
}
A.將磁盤文件的內(nèi)容顯示在屏幕上
B.將兩個磁盤文件合為一個
C.將一個磁盤文件復制到另一個磁盤文件中
D.將兩個磁盤文件合并后送屏幕
75.
76.在面向?qū)ο蠓椒ㄖ?,一個對象請求另一對象為其服務的方式是通過發(fā)送()。A.調(diào)用語句B.命令C.口令D.消息
77.軟件開發(fā)離不開系統(tǒng)環(huán)境資源的支持,其中必要的測試數(shù)據(jù)屬于A.硬件資源B.通信資源C.支持軟件D.輔助資源
78.若執(zhí)行以下程序時從鍵盤上輸入9,則輸出結(jié)果是()。main(){intn;scanf(”%d”,&n);if(n++<10)printf(”/%d\n”,n);elseprintf(”%d\n”,n--);}A.11B.10C.9D.8
79.
80.
五、程序改錯題(1題)81.下列給定程序中,函數(shù)fun()的功能是:將str所指字符串中的字母轉(zhuǎn)換為按字母序列的后續(xù)字母(Z轉(zhuǎn)換A,z轉(zhuǎn)換a),其他字符不變。
請修改函數(shù)fun()中的錯誤,得出正確的結(jié)果。
注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
六、程序設計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),其功能是統(tǒng)計s所指字符串中的數(shù)字字符個數(shù),并將其作為函數(shù)值返回。例如,s所指字符串中的內(nèi)容是2def35adh253kjsdf7/kj8655x,函數(shù)fun()返回值為11注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:
參考答案
1.A答疑:[解析]第一次for循環(huán),y的值為9.y%3的值為0.滿足條件打印-y,即先減一-后打印,所以打印8;第二次for循環(huán),y的值為7.y%3的值為1.不執(zhí)行打印語句;第三次for循環(huán),y的值為6.y%3的值為0.滿足條件打印--y,即先減-后打印,所以打印5;第四次for循環(huán),y的值為4.不滿足條件,不執(zhí)行打印語句;第五次for循環(huán),y的值為3.滿足條件,打印輸出2;第六次for循環(huán),y的值為1.不滿足條件,不執(zhí)行打印語句。
2.D
3.B解析:字符數(shù)組元素作函數(shù)參數(shù)是單向的值傳遞。函數(shù)cchar的功能是將大寫字母轉(zhuǎn)換為小寫字母。主函數(shù)中while循環(huán)語句的條件是判斷指針p當前指向的字符是否為空,若不為空,則調(diào)用函數(shù)cchar,即主函數(shù)中通過循環(huán)語句將字符串'ABC+abc=defDEF'中的大寫字母全部轉(zhuǎn)換為小寫字母,因此printf的輸出結(jié)果為選項B。
4.C設葉子結(jié)點數(shù)為〃,則該樹的結(jié)點數(shù)為n+9+5=n+\n14,根據(jù)樹中的結(jié)點數(shù)=樹中所有結(jié)點的度之和+1,得9×3+0×2+5×1+n×0+1=n+14,則n=19。本題選擇C選項。
5.D解析:本題主要考查算術運算的優(yōu)先級。順序如下:
[*]
注:*=、>、<<、%、sizeof的優(yōu)先級依次遞增。
6.D
7.B解析:—個函數(shù)可以帶回—個整型值、字符值、實型值等,但也可以帶回指針型數(shù)據(jù),即地址。本題的定義中,包括括號和*號,由于()優(yōu)先級高于*。故它是—個返回整型指針的函數(shù)。
8.A
9.A
10.A由題可知fun的參數(shù)為變量,而a[15]為常量,所以答案為A。
11.D解析:帶回指針值的函數(shù),其一般定義形式為:
類型標識符*函數(shù)名(參數(shù)表);
例如;int*f(x,y);
其中,f是函數(shù)名,調(diào)用它以后能得到一個指向整型數(shù)據(jù)的指針(地址),x,y是函數(shù)f的形參。在f的兩側(cè)分別為*運算符和()運算符,而()優(yōu)先級高于*,因此f先與()結(jié)合,顯然是函數(shù)形式。這個函數(shù)前面有一個*,表示此函數(shù)是指針型函數(shù)(函數(shù)值是指針)。前面的int表示返回的指針指向整型變量。
12.B
13.B解析:b是整型數(shù),在輸人語句中要加取地址符,而c是數(shù)組名,本身就是數(shù)組的首地址,因此不用加取地址符。
14.C本題考查do-while循環(huán),在fun函數(shù)中,首先定義了靜態(tài)變量i=0,do-while循環(huán)要實現(xiàn)的功能是以b[0]=b[0]+b[1],b[1]=b[1]+b[2],其他元素不變的規(guī)則重新給b數(shù)組賦值。在主函數(shù)中,通過調(diào)用fun函數(shù),按上面的規(guī)則對數(shù)組a重新賦值,最后輸出數(shù)組a。
15.D
16.A解析:維護是軟件生命周期的最后一個階段,也是持續(xù)時間最長、付出代價最大的階段。軟件工程學的目的就在于提高軟件的可維護性,同時也要設法降低維護的代價。
軟件維護通常有以下四類;
①為糾正使用中出現(xiàn)的錯誤而進行的改正性維護;
②為適應環(huán)境變化而進行的適應性維護;
③為改進原有軟件而進行的完善性維護;
④為將來的可維護和可靠而進行的預防性維護。
軟件維護不僅包括程序代碼的維護,還包括文檔的維護。文檔可以分為用戶文檔和系統(tǒng)文檔兩類。但無論是哪類文檔,都必須與程序代碼同時維護。只有與程序代碼完全一致的文檔才有意義和價值。由此可知,本題中選項B、C、D中的說法都是錯誤的。
17.B解析:在C語言的數(shù)組元素的引用方法,我們在前面已經(jīng)講過了,比如數(shù)組元素a[0],可以用表達式*(p+0),即*p來引用,對于數(shù)組元素a[1],可以用表達式*(p+1)來引用,在這里,p+1的值就是數(shù)組元素a[1]的地址,對此地址使用“間接訪問運算符”:*(p+1)就代表存儲單元a[1],注意:一對圓括號不可少。同樣,對于數(shù)組元素a[2],則可以用表達式。(p+2)來引用…,對于數(shù)組元素a[9],可以用表達式,(p+9)來引用。因此,當指針變量p指向a數(shù)組的起始地址時,若0≤i<10,則數(shù)組元素a[i]可以用*(p+i)來表示。
18.B
19.C數(shù)組名sl是代表sl數(shù)組首地址的地址常量,因為“=”左邊不能出現(xiàn)常量,所以s1="ABCDE"的方法是錯誤的。
20.C解析:二分查找法也稱為折半查找法。它的基本思想是:將n個元素分成個數(shù)大致相同的兩半,取a[n/2]與欲查找的x作比較,如果x=a[n/2],則找到x,算法終止;如果x<a[n/2],則只要在數(shù)組a的左半部繼續(xù)搜索x(這里假設數(shù)組元素呈升序排列);如果x>a[n/2],則只要在數(shù)組a的右半部繼續(xù)搜索x。每次余下n/(2i)個元素待比較,當最后剩下一個時,即n/(2i)=1。故n=2i;所以i=log2n。
21.doublemax或externdoublemaxdoublemax或externdoublemax解析:main函數(shù)中調(diào)用了一個max函數(shù),而max函數(shù)是在調(diào)用之后定義的,所以要求填空的內(nèi)容應該是對函數(shù)進行聲明的語句。由max函數(shù)的定義可知此函數(shù)是double型的,因此空格處應該填doublemax或externdoublemax。
22.t*10或10*tt*10或10*t解析:本題要求累加一系列有規(guī)律的數(shù),從輸出結(jié)果來看,s保存的是最終結(jié)果,而s在循環(huán)體中,每次累加一個t,則說明t在5次循環(huán)中分別等于1.12、123、1234、12345;而t每次循環(huán)等于“填空內(nèi)容”加上循環(huán)變量i,又因為i在5次循環(huán)中分別等于1、2、3、4,5,所以t每次循環(huán)要加的“填空內(nèi)容”應分別為0、10、120,1230,12340,這一系列值正好是前一次t的值的10倍.所以“填空內(nèi)容”應是t*10。
23.gae
24.BCDCDDBCD\r\nCD\r\nD解析:本題考查指向字符串的指針的運算方法。指針變量p首先指向字符串中的第一個字符A,執(zhí)行p=s+1后,p指向字符串中的第二個字符B,然后輸出值“BCD”并換行,依次執(zhí)行循環(huán)語句。
25.88解析:fabs函數(shù)功能是求x的絕對值,計算結(jié)果為double型。pow功能是計算x的y次方的值,計算結(jié)果同樣為double型。所以本題表達式相當于2.0的3.0次方,結(jié)果為8.000000。
26.B66B66解析:字符B的ASCII碼值為66,因此,按%c形式輸出B,按%d形式輸出66,輸出結(jié)果為:B66。
27.a=2b=1a=2,b=1解析:本題考查了switch結(jié)構(gòu)的內(nèi)容。C語言中,程序執(zhí)行完一個case標號的內(nèi)容后,如果沒有break語句,控制結(jié)構(gòu)會轉(zhuǎn)移到下一個case繼續(xù)執(zhí)行,因為case常量表達式只是起語句標號作用,并不是在該處進行條件判斷。本題程序在執(zhí)行完內(nèi)部switch結(jié)構(gòu)后,繼續(xù)執(zhí)行了外部switch結(jié)構(gòu)的case2分支,最后a和b的值分別為2和1。
28.33解析:軟件系統(tǒng)結(jié)構(gòu)圖的寬度:整體控制跨度(最大模塊數(shù)的層)的表示。
29.a*b*c*da*b*c*d,解析:在insert()函數(shù),因為題目要求輸入的字符串為abed,所以執(zhí)行完“i=strlen(str);”后,i中存放的是字符串a(chǎn)bcd的長度值4。所以接F來的while循環(huán)會循環(huán)4次,每次讓i減1,故4次循環(huán)中i的值依次為4、3、2、1。每次循環(huán)會執(zhí)行兩條語句str[2*i]=str[i];str[2*i-1]='*',當i=4時為:str[8]=str[4];str[7=='*';。執(zhí)行結(jié)果是將字符串a(chǎn)bed末尾的結(jié)束符'\\0'復制到其下標值2倍的位置,并在其前1位插入—個'*'哼符。接下來i=3,執(zhí)行str[6]=str[3];str[5]='*'。執(zhí)行后會將字符串a(chǎn)bcd最后一個字符,d復制到其下標值2倍的位置,并在其前1位插入一個'*'字符。依次類推,直到i=1,執(zhí)行str[2]=str[1];str[1]='*',將字符tb,往后移動了1位,并在原位置插入'*'字符。所以,循環(huán)結(jié)束后,字符串str會變?yōu)閍*b*c*d*。這就是程序的輸出結(jié)果。
30.NN解析:函數(shù)說明語句中的類型名必須與函數(shù)返回值的類型一致。本題實現(xiàn)的是在字符“A”的ASCII碼值上加上一個常數(shù),使之變成另一個ASCII碼值,從而輸出字符。
31.aaaaAAAAAaaaaAAAAA解析:函數(shù)strcat(sp,'AAAAA')的作用是將字符中“AAAAA”連接到字符串sp的末尾,并自動覆蓋字符數(shù)組sp末尾的\'\\0\'。
32.在二叉樹的第k層上,最多有2k-1(k>1)個結(jié)點。
33.軟件開發(fā)軟件開發(fā)解析:軟件生命周期分為3個時期共8個階段:軟件定義期(問題定義、可行性研究和需求分析)、軟件開發(fā)期(系統(tǒng)設計、詳細設計、編碼和測試)、軟件維護期(即運行維護階段)。
34.NULL或0EOF或-1NULL或0\r\nEOF或-1解析:如果fopen()函數(shù)調(diào)用不成功,則返回一個空指針值NULL(0);如果fclose()函數(shù)調(diào)用不成功,則返回EOF(-1)。所以本題的兩個空應分別填NULL和EOF。
35.strucklink*nextstrucklink*next解析:結(jié)構(gòu)體變量構(gòu)成鏈表要求結(jié)構(gòu)體中必須有一個指向該結(jié)構(gòu)體變量自身的指針用來指明鏈表的下一個結(jié)點。注意:結(jié)構(gòu)體變量的定義及其成員變量的引用。
36.ACEACE解析:在本題中,for循環(huán)體每執(zhí)行完一次,變量i的值自加兩次。i的初值為\'a\',執(zhí)行一次循環(huán)后變?yōu)閈'c\',之后再變成\'e\',當其變?yōu)閈'g\'時,循環(huán)條件若不滿足,循環(huán)終止,故本題共輸出3個字符。表達式'i-\'a\'+\ue008\'A\'\ue009'即表示輸出i對應的大寫字母,結(jié)果為ACE。
37.252137252137解析:本題中先定義了整型變量a、b和c,然后分別給賦值a為25,b為八進制的025,c為十六進制0x25。然后調(diào)用pruntf()函數(shù)將a、b和c分別用十進制輸出,且中間用空格隔開,八進制025轉(zhuǎn)換為十進制的值為21,十六進制的0x25轉(zhuǎn)換為十進制的值為37,故最后的輸出結(jié)果為252137。
38.20
39.77解析:程序中經(jīng)過宏替換后,表達式t=MAX(a+b,c+d)*10變?yōu)閠=(a+b)>(c+d)?(a+b):(c+d)*10。因為(a+b)>(c+d)為真,所以t=(a+b),輸出結(jié)果為7。
40.PRICEintnumtotaltotalnumPRICE\r\nintnum,total\r\ntotal,num解析:程序中出現(xiàn)了變量num,total以及宏PRICE,因此應在相應位置說明它們。
41.C解析:題中*p=&x[1][1];是指將數(shù)組x的數(shù)組元素x[1][1]的地址賦值給指針變量p,使p指向x[1][1]這個數(shù)組元素,那么p[0]即為指針變量p當前所指向的數(shù)組元素x[1][1]的值。
42.C解析:考查帶參數(shù)的宏替換。宏替換不像函數(shù)調(diào)用要進行參數(shù)值的計算、傳遞等,而只是簡單按照原格式進行字符串的替換。
43.A
44.B解析:算術運算符的運算規(guī)則是:從右到左的原則。所以表達式中先計算a=a-a*(上標)a的值是-90,再計算a=a+a的值是-180。
45.D解析:從外面看只能看到對象的外部特性,而對象的內(nèi)部,即處理能力的實行和內(nèi)部狀態(tài),指的是對象的封裝性。
46.B解析:t=1是將t賦值為1,所以循環(huán)控制表達式的值為1。判斷t是否等于1時,應用t==1,注意“=”與“==”的用法。
47.B解析:字長是指CPU可以同時處理二進制的位數(shù),是由CPU的型號和類型決定的。
48.A解析:C語言規(guī)定,賦值號的右邊可以是一個賦值表達式.因此選項C)、選項D)正確:在選項B)中,a++是一個自加1的表達式,a被重新賦值,因此它是一個合法的賦值表達式:選項A)中,a+d是一個算術表達式,雖然最后有一個分號,但這個表達式中沒有賦值操作,因此它不是一條賦值語句。
49.C解析:本題考查文件包含的知識點:格式1:#include(文件名),預處理程序在標準目錄下查找指定的文件;格式2:#include“文件名”,預處理程序首先在引用被包含文件的源文件所在的目錄中尋找指定的文件,如查找不到,再按系統(tǒng)指定的標準目錄查找。
50.D解析:類(calss)描述的是具有相似屬性與操作的一組對象,而一個具體對象則是其對應類的一個實例。
51.D解析:所謂的交換類排序方法是指借助數(shù)據(jù)元素之間的互相交換進行排序的一種方法,包括冒泡排序和快速排序,冒泡排序是一種最簡單的交換排序方法,它通過相鄰元素的交換,逐步將線性表變成有序。
52.A本題考查的是數(shù)組和函數(shù)。sum()函數(shù)接收一個int型數(shù)組作參數(shù),也可以把它看作是一個int型指針,語句a[0]=a[*1)+a(比的意思就是將參數(shù)指針指向內(nèi)容的前一個元素和后一個元素的值相加放到指針所指的位置.因此,主函數(shù)中調(diào)用sum(&a[2]);的意思就是讓a[2]=a[1]+a[3];,所以最后輸出的結(jié)果是6。應該選擇A。
53.CC?!窘馕觥拷Y(jié)構(gòu)化程序設計的核心和基礎是結(jié)構(gòu)化設計理論,其中包括:結(jié)構(gòu)化分析方法、結(jié)構(gòu)化設計方法和結(jié)構(gòu)化編程方法。
54.C解析:E-R模型可用E-R圖來表示,它具有3個要素:①實體(型)用矩形框表示,框內(nèi)為實體名稱。②屬性用橢圓型來表示,并用線與實體連接。屬性較多時也可以將實體及其屬性單獨列表。③實體間的聯(lián)系用菱形框表示。用線將菱形框與實體相連,并上標注聯(lián)系的類型。
55.C解析:本題中首先定義一個整型變量a并給它賦初值為3,在表達式中,從右開始執(zhí)行,即先執(zhí)行“a-=a*a;”等價于a=a-a*a即a=3-3*3=-6,此時a的值為-6,接著執(zhí)行“a+=a-;”相當于執(zhí)行a=a+a即a=-6+(-6)=-12,此時a的值為-12。所以,4個選項中選項C符合題意。
56.D解析:使用人工或自動手段來運行或測定某個系統(tǒng)的過程,其目的在于檢驗它是否滿足規(guī)定的需求或是弄清預期結(jié)果與實際結(jié)果之間的差別。軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。測試要以查找錯誤為中心,而不是為了演示軟件的正確功能。
57.B該函數(shù)用于數(shù)據(jù)類型和變量。注意:sizeof操作符不能用于函數(shù)、不完全類型或位字段。不完全類型指具有未知存儲大小的數(shù)據(jù)類型,如未知存儲大小的數(shù)組類型、void類型等。
58.D
59.D解析:字符串常量是用一對雙括號括起來的一串字符。它用字符數(shù)組來存放,不能用一對大括號對括起來。
60.B解析:選項A中省略了第一維的長度,在c語言中是不允許的,故選項A錯誤;選項C也是省略第一維的長度;選項D中定義了一個2行3列的數(shù)組,而在賦值的時候卻賦了一個3行的值給它,顯然不正確,故選項D錯誤,所以,4個選項中選項B符合題意。
61.D循環(huán)隊列的隊頭指針與隊尾指針都不是固定的,隨著入隊與出隊操作要進行變化。因為是循環(huán)利用的隊列結(jié)構(gòu),所以對頭指針有時可能大于隊尾指針有時也可能小于隊尾指針,故本題答案為D)。
62.Ado-wlfile的功能是先執(zhí)行一次循環(huán)體,再判斷條件是否成立,當x=-1時,執(zhí)行do語句,x=x*x=1,接著執(zhí)行while后的表達式,其值為0,退出循環(huán),因此循環(huán)體只執(zhí)行了一次。
63.A答案A
解析:一個C程序可以有一個或多個程序文件,也可以有一個或多個函數(shù),所以一個C語言程序可以實現(xiàn)多種算法。
64.C
65.C本題主要考查八進制數(shù)與十六進制數(shù)的十進制輸出。做這類題目的關鍵是對數(shù)據(jù)進行數(shù)制轉(zhuǎn)換。
在程序中,首先定義了兩個變量i和j,其中i的初值為一個八進制數(shù)10,而j的初值為一個十六進制數(shù)10,然后輸出它們的十進制數(shù)。
一般情況下,八進制數(shù)與十進制數(shù)的轉(zhuǎn)換通過二進制來實現(xiàn),即先將八進制數(shù)轉(zhuǎn)換為二進制數(shù),然后將二進制轉(zhuǎn)換為十進制數(shù)。八進制數(shù)的一位對應二進制數(shù)的三位,那么將八進制數(shù)10轉(zhuǎn)換成二進制應該為001000,再將這個值轉(zhuǎn)換為十進制,即2的三次方,結(jié)果為8。
將十六進制數(shù)轉(zhuǎn)換為十進制數(shù)也可以通過二進制來實現(xiàn)。一位十六進制數(shù)對應四位二進制數(shù),轉(zhuǎn)換后為00010000,再將這個值轉(zhuǎn)換為十進制數(shù),即2的四次方,結(jié)果為16。
因此本題程序最后輸出的結(jié)果為8,16。
66.C
67.D本題考查宏定義的用法,宏定義只是做個簡單的替換,所以本題中執(zhí)行f(2)=(2*N+1)=11,執(zhí)行f(1+1)=(1+1}N+1)=7。選項D正確。
68.A解析:本題考查用strlen函數(shù)計算字符串長度的方法。該字符串中包含的字符是:\'\\t\'(跳格符)、\'\\'\'(雙引號)、\'\\065\'(ASCII值為八進制065,也即+進制為51的字符)、\'\\xff\'(ASCII值為+六進制ff,也即+進制為255的字符)、\'\\n\'(換行符)。
69.A
70.B
71.C
72.C”anf(”%c”,&c),輸入的字符,題目中輸入了0,字符0,對應于ASCIl碼為48,因此for循環(huán)中,i的范圍從0~5,均小于48,if條件不成立,直接執(zhí)行下一條語句,執(zhí)行語句prinff,因此得到的結(jié)果是0,1,2,3,4。故答案為C選項。
73.B在本題中,程序的作用是通過switch語句改變已經(jīng)被賦初值的變量k的值。程序中首先將變量k賦初值為8,然后使用switch選擇結(jié)構(gòu)。由于k的值為8,在switch結(jié)構(gòu)中找到與之對應的塊case8執(zhí)行,完成一次k加1的操作,此時變量k的值變?yōu)?,由于沒有break語句,程序接著往下執(zhí)行,執(zhí)行case10程序塊,再完成一次k加1的操作,此時k的值為10,又由于沒有break語句,程序接著往下執(zhí)行,執(zhí)行case11,再完成一次k加1的操作,此時k的值為11,程序碰到break語句,跳出switch結(jié)構(gòu)。然后執(zhí)行輸出語句,輸出的結(jié)果為11。
74.C本題主要考查文件的操作。在本題的程序中,首先定義了兩個文件指針fp1和fp2,然后用指針fp1指向一個以讀方式打開的文件file1,用指針fp2指向一個以寫方式打開的文件file1,接著執(zhí)行while循環(huán),循環(huán)的結(jié)束條件是(!feof(fp1))為假,即feof(fp1)為真,表示對文件fp1的操作讀取到結(jié)束符,因此,循環(huán)結(jié)束的條件是對文件file1的讀取結(jié)束,循環(huán)體語句fputc(fgetc(fp1),fp2);中用到了fgetc和fputc函數(shù),C語言提供這兩個函數(shù)對文本文件進行字符的讀寫操作。fgetc(fp1)函數(shù)的作用是從輸入流fp1的當前位置返回一個字符,并將文件指針指示器移到下一個字符處;fputc(ch,fp2)函數(shù)的作用是將字符ch的值寫入所指定的流文件的當前位置處,并將文件指針后移一位。
根據(jù)上面的分析,可以知道循環(huán)結(jié)束后,即將指針fp1指向的文件復制到指針fp2指向的文件中,然后關閉兩個操作的文件。因此,本題程序的作用是將一個磁盤文件復制到另一個磁盤文件中,本題正確答案選C。
75.A
76.D解析:面向?qū)ο蟮氖澜缡峭ㄟ^對象與對象間彼此的相互合作來推動的,對象間的這種相互合作需要一個機制協(xié)助進行,這樣的機制稱為消息。消息是一個實例與另一個實例之間傳遞的信息,它請求對象執(zhí)行某一處理或回答某一要求的信息,它統(tǒng)一了數(shù)據(jù)流和控制流。
77.D軟件開發(fā)離不開系統(tǒng)環(huán)境資源的支持,其中主要的資源有硬件資源、通信資源、輔助資源等。(1)硬件資源是指組成計算機及相關應用所需要的硬件,它是軟件開發(fā)必不可少的資源,因為無論什么樣的軟件工具都需要在硬件上完成任務,它是其他資源的基礎資源。(2)通信資源是指為軟件開發(fā)提供通信支撐的資源,它與測試數(shù)據(jù)無關。(3)支持軟件是指為軟件開發(fā)提供操作平臺的軟件,如常用的面向?qū)ο箝_發(fā)的Rose軟件,它主要是軟件開發(fā)的工具。通過對上述分析的總結(jié),可以知道本題的正確答案選D。
78.B當n為9時,此時if語句成立,執(zhí)行n++后,n為10,因此輸出n的值為10,故選擇B選項。
79.D
80.B81.(1)錯誤:while(*str!=ˊ@ˊ)
正確:while(*str)或while(*str!=ˊ\0ˊ)或while(*str!=0)
(2)錯誤:(*str++);
正確:str++
【解析】首先判斷字母是否為小寫字母,如果是小寫字母則進行轉(zhuǎn)換。
第一個標識下“while(*str!=ˊ@ˊ)”語句原意是str不指向字符串尾就進入下面的循環(huán),所以對于指針判斷不為結(jié)束符的語句應該是循環(huán)為真,所以應為“while(*str)”或“while(*str!=ˊ\Oˊ)”或“while(*str!=0)”。
第二個標識下“(*str)++;”是對字符內(nèi)容加1,而原題是對字符位置加1,所以將其改為“str++;”。
82.intfun(char*s)2;{intn=0;3char*p;4:;for(p=s;*p!=,\\0';p丄+)if((*p≥’o’)&&(≤’9’))6n++;7returnn;8}要統(tǒng)計字符串中數(shù)字字符的個數(shù),首先應定義變量n,并將其初始化為0,然后遍歷字符串,逐個判斷字符是否為數(shù)字字符,判斷條件為該元素的ASCII值在字符o和9的ASCII值之間,若判斷條件成立,則使n的值加1,否則,繼續(xù)判斷下一個字符,直到字符串結(jié)束。2021-2022年浙江省寧波市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.有以下程序:#includemain(){inty=9;for(;y>0;y--)If?y%3==0)printf("%d",---y);}程序的運行結(jié)果是()。A.852B.963C.741D.875421
2.對于線性表(7,34,55,25,64,46,20,10)進行散列存儲時,若選用H(K)=K%9作為散列函數(shù),則散列地址為1的元素有()個。
A.1B.2C.3D.4
3.以下程序的輸出結(jié)果是______。charcchar(charch){if(ch>='A'&&ch<='z')ch=ch-'A'+'a';returnch;}main(){chars[]="ABC+abc=defDEF",*p=s;while(*p){*p=cchar(*p);p++;}printf("%s\n",s);}
A.abe+ABC=DEFdef
B.abc+abe=defdef
C.abcaABCDEFdef
D.abcabcdefdef
4.樹的度為3,且有9個度為3的節(jié)點,5個度為1的節(jié)點,但沒有度為2的節(jié)點。則該樹中的葉子節(jié)點數(shù)為()。
A.18B.33C.19D.32
5.若有運算符:>、*=、<<、%、sizeof,則它們按優(yōu)先級(由低至高)的正確排列次序為()。
A.*=<<>%sizeof
B.<<*=>%sizeof
C.%=><<sizeof%
D.*=><<%sizeof
6.
7.定義int*swap()指的是______。
A.—個返回整型值的函數(shù)swap()
B.一個返回指向整型值指針的函swap()
C.一個指向函數(shù)swap()的指針,函數(shù)返回一個整型值
D.以上說法均錯
8.設某文件內(nèi)排序后得到100個初始歸并段(初始順串),若使用多路歸并排序算法,且要求三趟歸并完成排序,問歸并路數(shù)最少為()
A.5B.6C.7D.8
9.
10.以下程序的主函數(shù)中調(diào)用了在其面前定義的fun函數(shù)#include<stdio.h>...main(){doublea[15],k;k=fun(a);...}則以下選項中錯誤的fun函數(shù)首部是()。、A.doublefun(doublea[l5])
B.doublefun(double*a)
C.doublefun(doublea[])
D.doublefun(doublea)
11.在說明語句:int*f();中,標識符f代表的是
A.一個用于指向整型數(shù)據(jù)的指針變量
B.一個用于指向一維數(shù)組的行指針
C.一個用于指向函數(shù)的指針變量
D.一個返回值為指針型的函數(shù)名
12.
13.有以下語句:intb;charc[10];,則正確的輸入語句是______。
A.scanf("%d%s",&b,&c);
B.scanf("%d%s",&b,c);
C.scanf("%d%s",b,c);
D.scanf("%d%s",b,&c);
14.下列程序的輸出結(jié)果是()。#includedstdi0.h>#includedstring.h>voidfun(intb[]){staticinti=0;do{b[i]+=b[i+1];}while(++i<2);}main{intk,a[5]={1,3,5,4,9};fun(a);for(k=0;k<5;k++)printf("%d",a[k]);}A.13579B.48579C.48549D.48999
15.
16.下列敘述中,正確的是()
A.軟件交付使用后還需要進行維護
B.軟件一旦交付使用就不需要再進行維護
C.軟件交付使用后其生命周期就結(jié)束
D.軟件維護是指修復程序中被破壞的指令
17.有如下說明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;則數(shù)值為9的表達式是()
A.*p+9B.*(p+8)C.*p+=9D.p+8
18.一個棧的輸入序列為123…n,若輸出序列的第一個元素是n,輸出第i(1<=i<=n)個元素是()
A.不確定B.n-i+1C.iD.n-i
19.若已包括頭文件且已有定義charsl[18],s2={"ABCDE")和inti,現(xiàn)要將字符串”ABCDE”賦給sl,下列語句錯誤的是()。
A.strcpy(s1,s2)
B.strcpy(s1,"ABCDE");
C.sl="ABCDE";
D.for(i=0;i<6;i++)sl[i]=s2[i]
20.在長度為n的有序線性表中進行二分查找,最壞情況下需要比較的次數(shù)是A.O(n)
B.O(n2)
C.O(log2n)
D.O(nlog2n)
二、2.填空題(20題)21.請在以下程序第一行的下劃線處填寫適當內(nèi)容,使程序能正常運行。
#include<stdio.h>
【】(double,double);
main()
{doublex,y;
scanf("%If%If",&x,&y);
printf("%If\n",max(x,y));
}
doublemax(doublea,doubleb)
{return(a>b?a:b);}
22.以下程序的功能是計算:s=1+12+123+1234+12345。請?zhí)羁铡?/p>
main()
{intt=0,s=0,i;
for(i=1;i<=5;i++)
{t=i+______;s=s+t;}
printf("s=%d\n",s);
}
23.以下程序運行后的輸出結(jié)果是______。
main()
{chara[]="Language",b[]="Programe";
char*p1,*p2;
intk;
p1=a;p2=b;
for(k=0;k<=7;k++)
if(*(p1+k)==*(p2+k))printf("%c,*(p1+k));
}
24.以下程序的輸出結(jié)果是【】。
main()
{chars[]="ABCD",*p;
for(p=s+1;p<s+4;p++)printf("%s\n",p);}
25.若x和y都是buble型變量,且x的初值為3.0,y的初值為2.0,則表達式pow(y,fabs(x))的值為【】。
26.已知字符'A'的ASCII碼值為65,以下語句的輸出結(jié)果是【】。
charch='B';
printf("%c%d\n",ch,ch);
27.以下程序的運行結(jié)果是【】。
#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);
}
28.下列軟件系統(tǒng)結(jié)構(gòu)圖的寬度為[]。
29.當運行以下程序時,輸入abed,程序的輸出結(jié)果是:【】。
insert(charstr[])
{inti
i=strlen(str);
while(i>0)
{str[2*i]=str[i];str[2*-1]='*';i--;}
printf("%s\n",str);
}
main()
{charstr[40];
scanf("%s",sB);insert(str);
}
30.閱讀下面程序段,則執(zhí)行后輸出的結(jié)果是【】。
#include"stdio.h"
main()
{charfun(char,int);
chara='A';
intb=13;
a=fun(a,b);
putchar(a);}
charfun(chara,intb)
{chark;
k=a+b;
returnk;}
31.下列語句的輸出結(jié)果是______。
chars[20]="aaaa",*sp=s;
puts(strcat(sp,"AAAAA"));
32.一棵二叉樹第六層(根節(jié)點為第一層)的節(jié)點數(shù)最多為______。
33.軟件生命周期分為軟件定義期、軟件開發(fā)期和軟件維護期,詳細設計屬于______中的一個階段。
34.如果調(diào)用fopen函數(shù)不成功,則函數(shù)返回【】;如果調(diào)用fclose函數(shù)不成功,則函數(shù)返回【】。
35.已知存儲結(jié)構(gòu)如下所示,請?zhí)羁铡?/p>
datanext
structlink{chardata;
【】;
}node;
36.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
main()
{inti;
for(i=′a′;i<′f′;i++,i++)printf("%c",i-′a′+′A′);
printf("\n");
}
37.以下程序運行后的輸出結(jié)果是______。
main()
{
inta,b,c;
a=25;
b=025;
c=0x25;
printf("%d%d%d\n",a,b,C);
}
38.下面程序的輸出是()。
main()
{intarr[8],i,k=0;
for(i=0;i<8;i++)
arr[i]=i;
for(i=1;i<5;i++)
k+=arr[i]+i;
printf("%d\n",k);
}
39.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
#defineMAX(x,y)(x)>(y)?(x):(y)
main()
{inta=5,b=2,c=3,d=3,t;
t=MAX(a+b,c+d)*10;
printf("%d\n",1);
}
40.閱讀程序,填空補充程序。
#define【】30
main()
{【】;
num=10;
total=num*PRICE;
printf("total=%d,num=%d\n",【】);
}
三、1.選擇題(20題)41.以下程序的輸出結(jié)果是______。main(){inti,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];for(i=0;i<4;i+=2)printf("%d",p[i]);}
A.52B.51C.53D.97
42.以下程序的運行結(jié)果是
#defineMAX(A,B)(A)>(B)?(A):(B)
#definePRINT(Y)printf("Y=%d\t",Y)
main()
{inta=1,b=2,c=3,d=4,t;
t=MAX(a+b,c+d);
PRINT(t);}
A.Y=3B.存在語法錯誤C.Y=7D.Y=0
43.下列程序的輸出結(jié)果是______。main(){inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;i<=i;j++)s+=a[i][j];printf("%d\n",s);}
A.18B.19C.20D.21
44.若定義inta=10,則表達式a+=a-=a*=a的值是()。
A.0B.-180C.-100D.-90
45.在面向?qū)ο笤O計中,對象有很多基本特點,其中“從外面看只能看到對象的外部特性,而對象的內(nèi)部對外是不可見的”這一性質(zhì)指的是對象的
A.分類性B.標識惟一性C.多態(tài)性D.封裝性
46.已知intt=0;while(t=1){…}則以下敘述正確的是()。
A.循環(huán)控制表達式的值為0B.循環(huán)控制表達式的值為1C.循環(huán)控制表達式不合法D.以上說法都不對
47.字長為16位的計算機是指______。
A.該計算機能夠處理的最大數(shù)不超過16
B.該計算機中的CPU可以同時處理16位的二進制信息
C.該計算機的內(nèi)存量為16MB
D.該計算機每秒鐘所能執(zhí)行的指令條數(shù)為16MIPS
48.若a、b、c、d都是int型變量且都已經(jīng)正確賦初值,則下列不正確的賦值語句是()。
A.a+d;B.a++;C.a=b=c=d=100;D.a=(b=3)+(d=5);
49.在“文件包含”預處理語句的使用形式中,當#include后面的文件名用<>(尖括號)括起時,尋找被包含文件的方式是()。
A.僅僅搜索當前目錄
B.僅僅搜索源程序所在目錄
C.在標準目錄下查找指定的文件
D.先在源程序所在目錄搜索,如查找不到,再按系統(tǒng)指定的標準目錄查找
50.在面向?qū)ο蠓椒ㄖ校?)描述的是具有相似屬性與操作的一組對象。
A.屬性B.事件C.方法D.類
51.簡單的交換排序方法是()。
A.快速排序B.選擇排序C.堆排序D.冒泡排序
52.有以下程序voidsum(inta[]){a[0]-a[-1]+a[1];}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};sum(&a[2]);printf(“%d\n”,a[2]);}程序運行后的輸出結(jié)果是A.6B.7C.5D.8
53.結(jié)構(gòu)化程序設計的核心和基礎是()。
A.結(jié)構(gòu)化分析方法B.結(jié)構(gòu)化設計方法C.結(jié)構(gòu)化設計理論D.結(jié)構(gòu)化編程方法
54.在E-R圖中,用來表示實體之間聯(lián)系的圖形是()
A.矩形B.橢圓形C.菱形D.平行四邊形
55.若a為int類型,且其值為3,則執(zhí)行完表達式a+=a-=a*a后,a的值是()。
A.-3B.9C.-12D.6
56.在軟件測試設計中,軟件測試的主要目的是
A.實驗性運行軟件B.證明軟件正確C.找出軟件中全部錯誤D.盡可能多地發(fā)現(xiàn)軟件中的錯誤
57.sizeof(float)是()。A.一個雙精度型表達式B.一個整型表達式C.一種函數(shù)調(diào)用D.一個不合法的表達式
58.循環(huán)鏈表的主要優(yōu)點是______。
A.不再需要頭指針了
B.己知某個結(jié)點的位置后,能夠容易找到它的直接前驅(qū)
C.在進行插入、刪除運算時,能更好地保證鏈表不斷開
D.從表中任一結(jié)點出發(fā)都能掃描到整個鏈表
59.下列能正確定義字符串的語句是()。
A.charstr[]={'\64'};
B.charstr="kx43";
C.charstr=";
D.charstr[]="\0";
60.以下能正確定義二維數(shù)給的是
A.inta[][3];
B.inta[][3]={2*3};
C.inta[][3]={};
D.inta[2][3]={{1},{2},{3,4}};
四、選擇題(20題)61.對于循環(huán)隊列,下列敘述中正確的是()。A.隊頭指針是固定不變的
B.隊頭指針—定大于隊尾指針
C.隊頭指針_定小于隊尾指針
D.隊頭指針可以大于隊尾指針,也可以小于隊尾指針
62.當執(zhí)行以下程序段時,()。x=-l:do{x=x*X;)while(!x);A.循環(huán)體將執(zhí)行一次B.循環(huán)體將執(zhí)行兩次C.循環(huán)體將執(zhí)行無限次D.系統(tǒng)將提示有語法錯誤
63.下列敘述中錯誤的是()。
A.一個C語言程序只能實現(xiàn)一種算法
B.c程序可以由多個程序文件組成
C.C程序可以由一個或多個函數(shù)組成
D.一個c函數(shù)可以單獨作為一個C程序文件存在
64.
65.有以下程序
main()
{inti=010,j=0X10;
pirntf("%d,%d\n",i,j);
}
該程序的輸出結(jié)果是
A.10,10B.8,10
C.8,16D.10,16
66.
67.有以下程序:
程序運行后的輸出結(jié)果是()。
A.1127B.1212C.1111D.117
68.請選出以下語句的輸出結(jié)果Printf("%d\n",strlen("\t\"\065\xff\n"));
A.5B.14C.8D.輸出項不合法,無正常輸出
69.
70.
71.
72.有以下程序:執(zhí)行時輸入:0<;回車>;后,則輸出結(jié)果是()。A.5,B.0,0,0,0,0,C.0,1,2,3,4,D.0,1.
73.若intk=8;,則執(zhí)行下列程序后,變量k的正確結(jié)果是
main()
{intk=8;
switch(k)
{case8:k+=1;
case10:k+=1;
case11:k+=1;break;
default:k+=1;
}
printf("%d\n",k);
}
A.12B.11
C.10D.9
74.以下程序的功能是
#include<stdio.h>
main()
{FILE*fp1;*fp2;
fp1=fopen("file1","r");
fp2=fopen("file2","w");
while(!feof(fp1))
fputc(fgetc(fp1),fp2);
fclose(fp1);
fclose(fp2);
}
A.將磁盤文件的內(nèi)容顯示在屏幕上
B.將兩個磁盤文件合為一個
C.將一個磁盤文件復制到另一個磁盤文件中
D.將兩個磁盤文件合并后送屏幕
75.
76.在面向?qū)ο蠓椒ㄖ校粋€對象請求另一對象為其服務的方式是通過發(fā)送()。A.調(diào)用語句B.命令C.口令D.消息
77.軟件開發(fā)離不開系統(tǒng)環(huán)境資源的支持,其中必要的測試數(shù)據(jù)屬于A.硬件資源B.通信資源C.支持軟件D.輔助資源
78.若執(zhí)行以下程序時從鍵盤上輸入9,則輸出結(jié)果是()。main(){intn;scanf(”%d”,&n);if(n++<10)printf(”/%d\n”,n);elseprintf(”%d\n”,n--);}A.11B.10C.9D.8
79.
80.
五、程序改錯題(1題)81.下列給定程序中,函數(shù)fun()的功能是:將str所指字符串中的字母轉(zhuǎn)換為按字母序列的后續(xù)字母(Z轉(zhuǎn)換A,z轉(zhuǎn)換a),其他字符不變。
請修改函數(shù)fun()中的錯誤,得出正確的結(jié)果。
注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
六、程序設計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),其功能是統(tǒng)計s所指字符串中的數(shù)字字符個數(shù),并將其作為函數(shù)值返回。例如,s所指字符串中的內(nèi)容是2def35adh253kjsdf7/kj8655x,函數(shù)fun()返回值為11注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:
參考答案
1.A答疑:[解析]第一次for循環(huán),y的值為9.y%3的值為0.滿足條件打印-y,即先減一-后打印,所以打印8;第二次for循環(huán),y的值為7.y%3的值為1.不執(zhí)行打印語句;第三次for循環(huán),y的值為6.y%3的值為0.滿足條件打印--y,即先減-后打印,所以打印5;第四次for循環(huán),y的值為4.不滿足條件,不執(zhí)行打印語句;第五次for循環(huán),y的值為3.滿足條件,打印輸出2;第六次for循環(huán),y的值為1.不滿足條件,不執(zhí)行打印語句。
2.D
3.B解析:字符數(shù)組元素作函數(shù)參數(shù)是單向的值傳遞。函數(shù)cchar的功能是將大寫字母轉(zhuǎn)換為小寫字母。主函數(shù)中while循環(huán)語句的條件是判斷指針p當前指向的字符是否為空,若不為空,則調(diào)用函數(shù)cchar,即主函數(shù)中通過循環(huán)語句將字符串'ABC+abc=defDEF'中的大寫字母全部轉(zhuǎn)換為小寫字母,因此printf的輸出結(jié)果為選項B。
4.C設葉子結(jié)點數(shù)為〃,則該樹的結(jié)點數(shù)為n+9+5=n+\n14,根據(jù)樹中的結(jié)點數(shù)=樹中所有結(jié)點的度之和+1,得9×3+0×2+5×1+n×0+1=n+14,則n=19。本題選擇C選項。
5.D解析:本題主要考查算術運算的優(yōu)先級。順序如下:
[*]
注:*=、>、<<、%、sizeof的優(yōu)先級依次遞增。
6.D
7.B解析:—個函數(shù)可以帶回—個整型值、字符值、實型值等,但也可以帶回指針型數(shù)據(jù),即地址。本題的定義中,包括括號和*號,由于()優(yōu)先級高于*。故它是—個返回整型指針的函數(shù)。
8.A
9.A
10.A由題可知fun的參數(shù)為變量,而a[15]為常量,所以答案為A。
11.D解析:帶回指針值的函數(shù),其一般定義形式為:
類型標識符*函數(shù)名(參數(shù)表);
例如;int*f(x,y);
其中,f是函數(shù)名,調(diào)用它以后能得到一個指向整型數(shù)據(jù)的指針(地址),x,y是函數(shù)f的形參。在f的兩側(cè)分別為*運算符和()運算符,而()優(yōu)先級高于*,因此f先與()結(jié)合,顯然是函數(shù)形式。這個函數(shù)前面有一個*,表示此函數(shù)是指針型函數(shù)(函數(shù)值是指針)。前面的int表示返回的指針指向整型變量。
12.B
13.B解析:b是整型數(shù),在輸人語句中要加取地址符,而c是數(shù)組名,本身就是數(shù)組的首地址,因此不用加取地址符。
14.C本題考查do-while循環(huán),在fun函數(shù)中,首先定義了靜態(tài)變量i=0,do-while循環(huán)要實現(xiàn)的功能是以b[0]=b[0]+b[1],b[1]=b[1]+b[2],其他元素不變的規(guī)則重新給b數(shù)組賦值。在主函數(shù)中,通過調(diào)用fun函數(shù),按上面的規(guī)則對數(shù)組a重新賦值,最后輸出數(shù)組a。
15.D
16.A解析:維護是軟件生命周期的最后一個階段,也是持續(xù)時間最長、付出代價最大的階段。軟件工程學的目的就在于提高軟件的可維護性,同時也要設法降低維護的代價。
軟件維護通常有以下四類;
①為糾正使用中出現(xiàn)的錯誤而進行的改正性維護;
②為適應環(huán)境變化而進行的適應性維護;
③為改進原有軟件而進行的完善性維護;
④為將來的可維護和可靠而進行的預防性維護。
軟件維護不僅包括程序代碼的維護,還包括文檔的維護。文檔可以分為用戶文檔和系統(tǒng)文檔兩類。但無論是哪類文檔,都必須與程序代碼同時維護。只有與程序代碼完全一致的文檔才有意義和價值。由此可知,本題中選項B、C、D中的說法都是錯誤的。
17.B解析:在C語言的數(shù)組元素的引用方法,我們在前面已經(jīng)講過了,比如數(shù)組元素a[0],可以用表達式*(p+0),即*p來引用,對于數(shù)組元素a[1],可以用表達式*(p+1)來引用,在這里,p+1的值就是數(shù)組元素a[1]的地址,對此地址使用“間接訪問運算符”:*(p+1)就代表存儲單元a[1],注意:一對圓括號不可少。同樣,對于數(shù)組元素a[2],則可以用表達式。(p+2)來引用…,對于數(shù)組元素a[9],可以用表達式,(p+9)來引用。因此,當指針變量p指向a數(shù)組的起始地址時,若0≤i<10,則數(shù)組元素a[i]可以用*(p+i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年渤海船舶職業(yè)學院高職單招語文歷年參考題庫含答案解析
- 寶貝學常見詞
- 授權函完整版本
- 二零二五年能源管理服務簡易借款合同3篇
- 二零二五年新型電子產(chǎn)品動產(chǎn)交易合同2篇
- 2024年河南物流職業(yè)學院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 2024年阜陽市第二人民醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 2024年阜康準東石油醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 2024年長沙現(xiàn)代女子醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 2025版高端食品買賣合同及食品安全追溯協(xié)議
- (2024-2025)新人教版八年級上冊語文期末測試卷及答案
- 35KV變電站地質(zhì)勘察與施工方案
- 2025年中國社會科學院外國文學研究所專業(yè)技術人員招聘3人歷年管理單位筆試遴選500模擬題附帶答案詳解
- 運輸公司安全隱患大排查整治行動方案
- 湖北省十堰市2023-2024學年高二上學期期末調(diào)研考試 物理 含答案
- 傳染病和突發(fā)公共衛(wèi)生事件報告和處置培訓課件
- 道具設計安裝合同模板
- 2024至2030年中國白內(nèi)障手術耗材行業(yè)投資前景及策略咨詢研究報告
- 體育單杠課件教學課件
- 新版浙教版2024-2025學年度八年級數(shù)學上冊幾何復習專題卷含答案
- 《現(xiàn)代控制理論》全套課件(東北大學)
評論
0/150
提交評論