版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2022-2023年山西省朔州市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.有下列程序:main{chars[]="abcde";s+=2:printf("%d\n",s[0]);}執(zhí)行后的結(jié)果是()。A.輸出字符a的ASCII碼B.輸出字符c的ASCII碼C.輸出字符cD.程序出錯
2.若有定義:“inta=4,b=5;floatx=3.4,y=2.1;”,則下列表達式的值為()。(float)(a+b)/2+(int)x%(int)y;
A.5.5B.55C.5.500000D.55.00000
3.有以下程序:#include<stdio.h>voidfunc(intn){inti;for(i=0;i<=n;i++)printf("*"):printf("#");}main(){func(3);printf("????");func(4);printf("n\");程序運行后的輸出結(jié)果()。A.****#????***#
B.***#????****#
C.**#????****#
D.****#????*****#
4.以下程序中函數(shù)reverse的功能是將a所指數(shù)組中的內(nèi)容進行逆置。voidreverse(inta[],intn){inti,t;for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1-i];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);}程序運行后的輸出結(jié)果是
A.22B.10C.34D.30
5.下列排序算法中,()算法可能會出現(xiàn)下面情況:初始數(shù)據(jù)有序時,花費的時間反而最多。
A.堆排序B.冒泡排序C.快速排序D.希爾排序
6.有以下程序:#include<stdio.h>intchange(int*data){*data=*data%2;return(*data)+1;}main(){intdata=12;change(&data);printf(“%d,”,data);data=change(&data);printf(“%d,”,data);}程序運行后的輸出結(jié)果是()。
A.0,0,B.1,2,C.12,13,D.0,1,
7.
8.若變量c為char類型,能正確判斷出c為小寫字母的表達式是_______。A.′a′<=c<=′z′
B.(c>=′a′)||(c<=′z′)
C.(′a′=C)
D.(c>=′a′)&&(c<=′z′)
9.有以下程序:#includeMain(){Int?x=1.y=0;if(!x)y++;elsef(x==0)if(x)y+=2;else?y+=3;printf("%d\n",y);\}程序運行后的輸出結(jié)果是()。A.3B.2C.1D.0
10.以下選項中不屬于字符常量的是
A.′C′B.′′C′′C.′\xCC′D.′\072′
11.已知inta=2,b=3;則執(zhí)行表達式a=a<b后,變量a的值為()。
A.0B.1C.2D.3
12.在待排序的元素序列基本有序的前提下,效率最高的排序方法是()。A.A.冒泡排序B.選擇排序C.快速排序D.歸并排序
13.
14.
15.則以下函數(shù)調(diào)用語句錯誤的是()。#include<stdio.h>intadd(inta,intb){return(a+b)}main(){intk,(*f)(),a=5,b=10;f=add;...}A.k=f(a,b);B.k=add(a,b);C.k=(*f(a,b);D.k=*f(a,b);
16.下列敘述中正確的是()。
A.順序存儲結(jié)構(gòu)的存儲一定是連續(xù)的,鏈式存儲結(jié)構(gòu)的存儲空間不一定是連續(xù)的
B.順序存儲結(jié)構(gòu)只針對線性結(jié)構(gòu),鏈式存儲結(jié)構(gòu)只針對非線性結(jié)構(gòu)
C.順序存儲結(jié)構(gòu)能存儲有序表,鏈式存儲結(jié)構(gòu)不能存儲有序表
D.鏈式存儲結(jié)構(gòu)比順序存儲結(jié)構(gòu)節(jié)省存儲空間
17.C語言中最簡單的數(shù)據(jù)類型包括()。
A.整型、實型、邏輯型B.整型、實型、字符型C.整型、字符型、邏輯型D.字符型、實型、邏輯型
18.若x、y、z、m均為int型變量,則執(zhí)行下面語句后m的值是()m=1;x=2;y=3;m=(m<x)?m:x;m=(m<y)?m:y;m=(m<y)?m:z;
A.1B.2C.3D.4
19.
20.以下關(guān)于算法的敘述中錯誤的是()。
A.算法可以用偽代碼、流程圖等多種形式來描述
B.一個正確的算法必須有輸入
C.一個正確的算法必須有輸出
D.用流程圖描述的算法可以用任何一種計算機高級語言編寫成程序代碼
二、2.填空題(20題)21.算法的復(fù)雜度主要包括空間復(fù)雜度和______復(fù)雜度。
22.診斷和改正程序中錯誤的工作通常稱為【】。
23.下列程序段的輸出結(jié)果是______。
intn='c':
switch(n++)
{default:printf("error");break;
case'a':printf("good");break;
case'c':printf("moming");
case'd':printf("class");
}
24.下列程序的運行結(jié)果是______。
main()
{inta=1,b=10;
do
{b-=a;a++;}while(b--<0);
printf("%d,%d\n",a,b);
}
25.有以下結(jié)構(gòu)體說明和變量的定義,且指針p指向變量a,指針q指向變量b,則不能把結(jié)點b連接到結(jié)點a之后的語句是______。
structnode
{chardata;
structnode*next;}a,b
以下程序中調(diào)用scanf函數(shù)給變量a輸入數(shù)值的方法是錯誤的,其錯誤原因是main(){int*p,*q,a,b;p=&a;printf("inputa:");scanf("%d",*p);}
26.測試的目的是暴露錯誤,評價程序的可靠性;而______的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。
27.關(guān)系模型的完整性規(guī)則是對關(guān)系的某種約束條件,包括實體完整性、______和自定義完整性。
28.在C語言中,while和do…while循環(huán)的主要區(qū)別是______的循環(huán)至少被執(zhí)行一次。
29.下面程序由兩個源程序文件:t4.h和t4.c組成,程序編譯運行結(jié)果是()。t4.h的源程序為:
#defineN10
#definef2(x)(x*N)
t4.c的源程序為:
#include<stdio.h>
#defineM8
#definef(x)((x)*M)
#include"t4.h"
main()
{inti,j;
i=f(1+1);j=f2(1+1);
printf("%d%d\n",i,j);
}
30.語句“int(*ptr)();”的含義是______是指向函數(shù)的指針,該函數(shù)返回一個int型數(shù)據(jù)。
31.以下程序的功能是計算。補足所缺語句。
longf(intn)
{inti;longs;
s=【】;
for(i=1;i<=n;i++)s=【】;
returns;
}
main()
{longs;intk,n;
scanf("%d",&n);
s=【】;
for(k=0;k<=n,k++)s=s+【】;
printf("%1d\n",s);
}
32.有以下程序:
voidswap1(intc[])
{intt;
t=c[0];c[0]=c[1];c[1]=t;
}
voidswap2(intc0,intc1)
{intt;
t=c0;c0=c1;c1=t;
}
main()
{inta[2]={3,5},b[2]={3,5};
swaplA);swap2(b[0],b[1]);
printf("%d,%d,%d,%d\n",a[0],a[1],b[0],b[1]);
}
其輸出結(jié)果是【】。
33.用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有11個字節(jié)的動態(tài)存儲空間。
st=(char*)【】;
34.以下程序從終端讀入數(shù)據(jù)到數(shù)組中,統(tǒng)計其中正數(shù)的個數(shù),并計算它們之和。請?zhí)羁铡?/p>
main()
{inti,a[20],sum,count;
sum=count=0;
for(i=0;i<20;i++)scanf("%d",【】);
for(i=0;i<20;i++)
{if(a[i]>0)
{count++;
sum+=【】;
}
}
printf("sum=%d,count=%d\n",sum,count);
}
35.下列的for語句的循環(huán)次數(shù)為______。
for(x=1,y=0;(y!=19)&&(x<7);x++);
36.有以下程序:
#include<stdio.h>
main()
{
charc;
while((c=getchar())!='?')putchar(--c);
}
程序運行時,如查從鍵盤輸入:Y?N?<回車>,則輸出的結(jié)果為______。
37.下面的程序把從終端讀入的文本(用@作為文本結(jié)束標志)輸出到一個名為bi.dat的新文件中,請?zhí)羁铡?/p>
#include<stdio.h>
#include<stdlib.h>
FILE*fp;
main()
{charch;
if((fp=fopen(【】))==NULL)exit(0);
while((ch=getchar())!='@')fputc(ch,fp);
fclose(fp);
}
38.數(shù)據(jù)元素之間______的整體稱為邏輯結(jié)構(gòu)。
39.有以下程序:
voidf(inty,int*x)
{y=y+*x;*x=*x+y;}
main()
{intx=2,y=4;
f(y,&x);
printf("%d%d\n",x,y);
}
執(zhí)行后輸出結(jié)果是上【】。
40.結(jié)構(gòu)化程序設(shè)計的三種基本邏輯結(jié)構(gòu)為順序、選擇和【】。
三、1.選擇題(20題)41.有以下程序:main(){intx=0,y=5,z=3;while(z-->0&&++x<5)y=y-1;printf("%d,%d,%d\n",x,y,z);}程序執(zhí)行后的輸出結(jié)果是()。
A.3,2,0B.3,2,-1C.4,3,-1D.5,-2,-5
42.若有以下程序段(n所賦的是八進制數(shù)):intm=32767,n=032767;printf("%d,%\n",m,n);執(zhí)行后輸出結(jié)果是()。
A.32767,32767B.32767,032767C.32767,77777D.32767,077777
43.為了使模塊盡可能獨立,要求()。
A.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量強
B.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量弱
C.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量弱
D.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量強
44.有以下程序段charch;intk;ch='a';k=12;printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);已知字符a的ASCII碼值為97,則執(zhí)行上述程序段后輸出結(jié)果是
A.因變量類型與格式描述符的類型不匹配輸出無定值
B.輸出項與格式描述符個數(shù)不符,輸出為零值或不定值
C.a,97,12k=12
D.a,97,k=12
45.以下語句段執(zhí)行后的輸出結(jié)果是()。#include<stdio.h>main(){intk=3;if(k)printf("###")elseprintf("&&&&");}
A.###
B.&&&&
C.###&&&&
D.有語法錯誤,不能執(zhí)行
46.若要顯示或打印漢字將用到漢字編碼中的()
A.輸入碼B.字型碼C.機內(nèi)碼D.交換碼
47.已經(jīng)定義ch為字符型變量,以下賦值表達式中錯誤的是______。
A.ch='\'B.ch=62+3C.ch=NULLD.ch='\xaa'
48.下列不正確的表達式是()
A.a>b>cB.c--,++b,a+=1C.a=c+b>n-m=kD.p++
49.下面程序的功能是輸出以下形式的金字塔圖案:****************main(){inti,j;for(i=1;i<=4;i++;){for(j=1;j<=4-i;j++)printf("");for(j=1;;j<=________;j++)printf("*");printf("\n");}}在下劃線處應(yīng)填入的是______。
A.iB.2*i-1C.2*i+1D.i+2
50.486PC機主板上一般帶有高速緩沖存儲器Cache,它是()之間的儲存。
A.CPU與輔助存助器B.CPU與主存儲器C.軟盤與內(nèi)存D.硬盤與內(nèi)存
51.以下敘述中正確的是
A.用C程序?qū)崿F(xiàn)的算法必須要有輸入和輸出操作
B.用C程序?qū)崿F(xiàn)的算法可以沒有輸出但必須要有輸入
C.用C程序?qū)崿F(xiàn)的算法可以沒有輸入但必須要有輸出
D.用C程序?qū)崿F(xiàn)的算法可以既沒有輸入也沒有輸出
52.下列敘述中正確的是()。
A.測試工作必須由程序編制者自己完成
B.測試用例和調(diào)試用例必須一致
C.一個程序經(jīng)調(diào)試改正錯誤后,一般不必再進行測試
D.上述三種說法都不對
53.有以下程序:voidsum(int*A){a[0]=a[1];}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;for(i=2;i>=0;i--)sum(&aa[i]);printf("%d\n",aa[0]);}執(zhí)行后的輸出結(jié)果是
A.4B.3C.2D.1
54.在C語言中,不正確的int類型的常數(shù)是______。
A.32768B.0C.37D.0xAF
55.數(shù)據(jù)的完整性是指數(shù)據(jù)的正確性、有效性和______。
A.可維護性B.獨立性C.安全性D.相容性
56.軟件設(shè)計中模塊劃分應(yīng)遵循的準則是()。A.低內(nèi)聚低耦合
B.高內(nèi)聚低耦合
C.低內(nèi)聚高耦合
D.高內(nèi)聚高耦合
57.設(shè)有下列二叉樹:
對此二叉樹中序遍歷的結(jié)果為______。
A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA
58.執(zhí)行下面的程序后,a的值為
main()
{inta,b;
for(a=1,b=1;a<=10;a++)
{if(b%3==1)
{b+=3;
continue;}
b-=5;}}
A.7B.8C.9D.10
59.已知x=3、y=2則表達式x*=y(tǒng)+8的值為()
A.3B.2C.30D.10
60.C語言的基本單位是()。
A.函數(shù)B.過程C.子程序D.子函數(shù)
四、選擇題(20題)61.以下敘述中正確的是()。
A.程序設(shè)計的任務(wù)就是編寫程序代碼并上機調(diào)試
B.程序設(shè)計的任務(wù)就是確定所用數(shù)據(jù)結(jié)構(gòu)
C.程序設(shè)計的任務(wù)就是確定所用算法
D.以上三種說法都不完整
62.(57)下列敘述中,不屬于軟件需求規(guī)格說明書的作用的是______。
A.便于用戶、開發(fā)人員進行理解和交流
B.反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎(chǔ)和依據(jù)
C.作為確認測試和驗收的依據(jù)
D.便于開發(fā)人員進行需求分析
63.以下關(guān)于typedef的敘述錯誤的是()。A.用tyFedef可以增加新類型
B.typedef只是將已存在的類型用一個新的名字來代表
C.用typedef可以為各種類型說明一個新名,但不能用來為變量說明一個新名
D.用typedef為類型說明一個新名,通常可以增加程序的可讀性
64.運算符________的優(yōu)先級最高。
A.[]B.+=C.?:D.++
65.下列關(guān)于結(jié)構(gòu)化設(shè)計原則的描述,錯誤的是
A.在塊和進程的非正常出口處往往需要調(diào)用GOTO語句,使用GOTO語句使程序執(zhí)行效率提高,但是濫用GOTO語句確實有害,應(yīng)該避免使用GOTO語句
B.程序設(shè)計時應(yīng)該自頂向下,逐步求精
C.程序設(shè)計時,應(yīng)該將復(fù)雜問題進行模塊化,就是將程序設(shè)計的總目標分解為若干個分目標,再進一步分解為具體的小目標
D.在進行程序設(shè)計時,應(yīng)該盡量在一行寫一條語句,盡量做到效率第一,清晰第二
66.
67.
68.
69.有以下程序:
程序運行后的輸出結(jié)果是()。
A.1127B.1212C.1111D.117
70.
71.下列有關(guān)數(shù)據(jù)庫的描述,正確的是A.數(shù)據(jù)處理是將信息轉(zhuǎn)化為數(shù)據(jù)的過程
B.數(shù)據(jù)的物理獨立性是指當數(shù)據(jù)的邏輯結(jié)構(gòu)改變時,數(shù)據(jù)的存儲結(jié)構(gòu)不變
C.關(guān)系中的每一列稱為元組,一個元組就是一個字段
D.如果一個關(guān)系中的屬性或?qū)傩越M并非該關(guān)系的關(guān)鍵字,但它是另一個關(guān)系的關(guān)鍵字,則稱其為本關(guān)系的外關(guān)鍵字
72.有以下程序:
程序運行后的輸出結(jié)果是()。
A.AbcdefB.ABCDEFC.aBcDeFD.AbCdEf
73.
74.有以下程序:
程序運行后的輸出結(jié)果是()。
A.11B.9C.6D.7
75.下列合法的聲明語句是()。
A.intabc=50;
B.doubleint=3+5e2.5;
C.longdo=1L;
D.float3asd=3e一3;
76.
下列程序的運行結(jié)果是()。
#include<stdio.h>
main
{inta=2,b=3,c=4:
if(a<b)
if(b<0)C=0:
elsec++;
printf("%d\n",c);
}
A.2B.3C.5D.4
77.
78.執(zhí)行下述程序后,輸出的結(jié)果是()。#include<stdio.h>#defineS(X)X*Xvoidmain{inta=9,k=3,m=2;a/=S(k+m)/s(k+m);printf("%d",a);}A.1B.4C.9D.0
79.
80.軟件測試的目的是()。
A.評估軟件可靠性B.發(fā)現(xiàn)并改正程序中的錯誤C.改正程序中的錯誤D.發(fā)現(xiàn)程序中的錯誤
五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc()的功能是:用選擇法對數(shù)組中的n個元素按從大到小的順序進行排序。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.請編寫一個函數(shù)proc,它的功能是:求出1~m(含m)能被7或11整除的所有整數(shù)放在數(shù)組a中,通過n返回這些數(shù)的個數(shù)。例如,若傳給m的值為70,則程序輸出:7111421222833354244495556636670注意:部分源程序給出如下。請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)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個數(shù){printf("%4d",arr[k]);printf("\n");}elseprintf("%4d",arr[k]);printf("\n");}
參考答案
1.D因為字符數(shù)組s[]中的數(shù)組名s表示的是一個地址常量。所以語句“s+=2;”不能將指針在當前位置的基礎(chǔ)上再向后移動兩位。因而程序編譯時出錯。
2.C在計算(float)(a4-b)/2時,由于通過強制類型轉(zhuǎn)換將(a+b)轉(zhuǎn)換成了float型,所以應(yīng)先將2轉(zhuǎn)換成float型,再進行計算,得4.500000。在計算(int)x%(int)y時,先將x和y通過強制類型轉(zhuǎn)換成int型,再進行求余運算,結(jié)果為1。又因為4.500000是float型,所以將1和它相加時,先將1換成float型,再計算,得到5.500000。類型轉(zhuǎn)換的一般規(guī)則是:低級類型從高級類型,并進行相應(yīng)的轉(zhuǎn)換。數(shù)據(jù)類型的級別由低到高的排序表示為:char→int→unsigned→log→float→double。
3.D本題考查簡單的for循環(huán),func(3)由于i是從0開始,所以會輸出四個“*”和一個“#”,然后打印四個“?”func(4),會輸出五個“*”和一個“#”,所以答案選擇D。
4.A解析:本題考查的知識點是數(shù)組名作為函數(shù)參數(shù)及函數(shù)調(diào)用。reverse()數(shù)的功能是將具有n個元素的數(shù)組a反序存放。在主函數(shù)中調(diào)用語句是“reverse(b,8);”,實現(xiàn)的功能是把b數(shù)組的前八個元素逆置,所以b數(shù)組中依次存放的值為“8,7,6,5,4,3,2,1,9,10”。for循環(huán)了4次,分別把b[6]、b[7]、b[8]和b[9]的值(分別是2、1、9、10)加到了s中,s的結(jié)果是22,所以最后輸出的s值為22。所以4個選項中A正確。
5.C
6.Dchange函數(shù)接收一個整型指針data,然后將data指向的數(shù)對2求余,求余后的值重新賦給data指向的變量,最后將data指向的變量值加1后返回。注意,此處data指向的數(shù)對2求余會改變實參指針指向的值,但返回值并不影響data指向的值。程序第1次調(diào)用change函數(shù),傳入實參data的地址,將data的值修改為0(12%2=0),此時輸出data的值是0;再次調(diào)用change傳入data的地址,將data的值修改為0(0%2=0),然后將返回值1重新賦給主函數(shù)變量data,所以此時輸出data的值是1。綜上,程序輸出0,1,。故本題答案為D選項。
7.B
8.D
9.D[解析]在ifelse語句中else,總是與離它最近的配對。本題目中x為1所以!勸0.所以執(zhí)行elsei語句中的內(nèi)容,判斷(x==0)是否成立,因為勸1所以條件不成立,所以else內(nèi)部的if..else語句不再執(zhí)行,所以y的值還是初始值0.
10.B解析:在C語言程序中,用單引號把一個字符或反斜線后跟一個特定的字符括起來表示一個字符常量。選項A)、C)和D)為正確的字符常量,而選項B)是用雙引號括起來的字符,表示一個字符串常量。
11.B解析:先計算關(guān)系表達式a<b=2<3為真(表達式為真時,如果變量為int型變量則真用1表示,假用0表示),即a=1。
12.A解析:以下幾種算法的時間復(fù)雜度分別為:冒泡排序(n2);選擇排序(n2);快速排序(nlog2n);歸并排序(nlog2n)。當排序元素序列基本有序的情況下,冒泡排序的交換次數(shù)為0,只是順序掃描數(shù)據(jù)而已,所以其效率是最高的。
13.D
14.B
15.DD選項中*f(a,b)表示調(diào)用后返回一個指向整型數(shù)據(jù)的地址指針,即該函數(shù)的返回值為指針類型,所以不能將其賦值給整形變量k。
16.A解析:順序存儲結(jié)構(gòu)就是用一組地址連續(xù)的存儲單元依次存儲該線性表中的各個元素,鏈式存儲結(jié)構(gòu)中各數(shù)據(jù)結(jié)點的存儲序號是不連續(xù)的,并且各結(jié)點在存儲空間中的位置關(guān)系與邏輯關(guān)系也不一致,所以選項A是正確的。兩者都可以存儲線性的、有序的邏輯結(jié)構(gòu),所以選項B、C不正確。順序結(jié)構(gòu)使用的是連續(xù)物理空間,鏈式結(jié)構(gòu)可以使用零散的物理空間存儲,鏈式結(jié)構(gòu)更靈活,不存在誰節(jié)約空間的說法,所以選項D不正確。
17.B解析:選項A)中包含一個不合法的運算符“:=”;選項C)應(yīng)改為(int)18.5%3;選項D)可理解為兩個表達式:a+7=c+b和a=a+7,因為C語言規(guī)定賦值號的左邊只能是單個變量,不能是表達式或常量等,所以a+7=c+b是錯的。因此,正確答案是選項B),它相當于a=(b=c+2),可分解為兩個表達式:b=c+2和a=b。
18.A解析:?:運算符首先執(zhí)行?之前的表達式,如果表達式的值為真,則返回?和:之間的表達式的值,否則返回:之后的表達式的值。本題中m比x和y都要小,所以,3個表達式都沒有改變m的值,故應(yīng)該選擇A。
19.A
20.B【答案】B
【知識點】算法描述
【解析】一個算法應(yīng)該有0個或多個輸入,但是必須有一個或多個輸出。
21.時間時間解析:算法的復(fù)雜度主要指時間復(fù)雜度和空間復(fù)雜度。
22.程序調(diào)試程序調(diào)試解析:程序調(diào)試的任務(wù)是診斷和改正程序中的錯誤。程序調(diào)試與軟件測試不同,軟件測試是盡可能多地發(fā)現(xiàn)軟件中的錯誤。先要發(fā)現(xiàn)軟件的錯誤,然后借助于調(diào)試工具找出軟件錯誤的具體位置。軟件測試貫穿整個軟件生命期,而調(diào)試主要在開發(fā)階段。
23.morningclassmorningclass解析:本題考查了兩個知識點:①“++、--”運算后綴形式是先使用變量原來的值,使用完后再使其增1或減1;②在switch語句中,當n=\'c\'時,執(zhí)行“case\'c\':”,輸出morning;因為此句中沒有break語句,因此接著執(zhí)行'case\'d\':”,輸出class,最終輸出結(jié)果為morningclass。
24.282,8解析:do…while語句的功能是:首先執(zhí)行循環(huán)體語句,然后檢測循環(huán)控制條件表達式的值,若為真,則重復(fù)執(zhí)行循環(huán)體語句,否則退出循環(huán)。這里程序初始時a=1,b=10,經(jīng)過操作b-=a;a++后b=9,a=2,判斷條件b--<O不成立,退出循環(huán),但b的值被減1,因此結(jié)果為:a=2,b=8。
25.B
26.調(diào)試調(diào)試
27.參照完整性參照完整性
28.do…whiledo…while解析:考查while和do…while循環(huán)的主要區(qū)別。while循環(huán)的控制出現(xiàn)在循環(huán)體之前,只有當while后面的表達式的值為非零時,才可能執(zhí)行循環(huán)體;在do…while構(gòu)成的循環(huán)體中,總是先執(zhí)行一次循環(huán)體,然后再求表達式的值,因此無論表達式的值是否為零,循環(huán)體至少要被執(zhí)行一次。
29.16111611解析:本題主要考查宏定義的兩種形式,不帶參數(shù)的宏定義:“#define宏名替換文本”;帶參數(shù)的宏定義:“#define宏名(形參表)替換文本”。故i=((1+1)*8)=16,j=(1+1*10)=11。
30.ptrptr解析:本題考查函數(shù)指針的概念。函數(shù)指針的定義格式是:類型標識符(*指針變量名)()。注:“類型標識符”為函數(shù)返回值的類型。
31.1s*i0f(k)
32.53355335解析:函數(shù)swap1的形參是數(shù)組,故形參的改變能夠影響實參,所以執(zhí)行完swap1(a)后,a[0]=5、a[1]=3;函數(shù)swap2的形參是簡單變量,故形參的改變不能夠影響實參,所以執(zhí)行完swap2(b)后,b[0]=3、b[1]=5;正確答案為5335。
33.malloc(11)或malloc(sizeof(char*)11)malloc(11)或malloc(sizeof(char*)11)解析:該題主要考查malloc函數(shù)的使用。一個字符在內(nèi)存中占一個字節(jié),因此malloc的參數(shù)為11。也可按指向字符指針的大小來分配。
34.&a[i]或a+ia[i]或*(a+i)&a[i]或a+i\r\na[i]或*(a+i)解析:主函數(shù)中一開始定義了一個長度為20的整型數(shù)組,然后通過一個循環(huán),循環(huán)20次給它的每個元素賦初值,所以在第一個空格處應(yīng)填各個元素的地址,即填&a[i]或a+i,然后再通過一個循環(huán)執(zhí)行20次,每循環(huán)一次,先判斷該循環(huán)是否大于0,如果大于0將其累加到變量sum中,所以第二個空格處應(yīng)該填入數(shù)組元素,所以應(yīng)該填a或*(a+i)。
35.66解析:分析程序可知,每循環(huán)一次,x的值加1,然后檢測循環(huán)控制條件(y!=19)&&(x<7),因y的值不變,故滿足x<7時循環(huán)6次。
36.xx解析:本題考查的知識點是while循環(huán)的程序分析;主函數(shù)中首先定義了一個字符型變量C,接著執(zhí)行下面while語句,在while循環(huán)中,首先從鍵盤上讀入一個字符Y并給賦給字符變量C,賦值表達式的值不為'?',執(zhí)行輸出語句,輸出字符x。接著判斷while中的循環(huán)條件,讀入一個字符'?',并賦值給c,賦值表達式的值為'?',循環(huán)條件不再滿足,退出循環(huán)。
37.bi.dat"w"或"bi.dat""w+"bi.dat,'w'或'bi.dat','w+'解析:根據(jù)fopen函數(shù)的調(diào)用方式fopen(文件名,使用文件方式)和題意可得結(jié)果。
38.邏輯關(guān)系邏輯關(guān)系
39.8484解析:函數(shù)f(y,*x)的作用是讓y的值加上指針x所指向變量的值,讓指針x所指向變量的值加上y的值。由于形參y是傳值的,形參x是傳地址的,故調(diào)用該函數(shù)后,作為實參的y的值將不改變,而實參x的值將改變,故最后輸出的y的值為4,而x的值為8。
40.重復(fù)(或循環(huán))重復(fù)(或循環(huán))
41.B解析:本題中首先定義了3個整型變量x、y和z,并分別賦值為0、5和3,while循環(huán)的判定條件為z-->0&&++x<5,由于z的初值為3,所以當z--執(zhí)行3次后,z-->O將不再成立,又由于x的初值為0,所以++x執(zhí)行5次,++x<5將不再成立,而它們兩個表達式的值為邏輯與的關(guān)系,故當z-->O不成立時整個表達式的值為假,因此該循環(huán)共執(zhí)行了3次,即語句y=y-1:共執(zhí)行了三次,但while循環(huán)的判定表達式卻執(zhí)行了四次,故最后輸出的x、y、z的值分別為3,2,-1,所以,4個選項中選項B符合題意。
42.A解析:程序在定義時,以十進制形式為m賦初值,以八進制的形式為n賦初值。輸出的時候m以十進制形式輸出,n以八進制形式輸出,因此輸出的結(jié)果為32767和32767。所以,A選項為所選。
43.B解析:模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。耦合性與內(nèi)聚性是模塊獨立性的兩個定性標準,耦合與內(nèi)聚是相互關(guān)聯(lián)的。在程序結(jié)構(gòu)中,各模塊的內(nèi)聚性越強,則耦合性越弱。一般較優(yōu)秀的軟件設(shè)計,應(yīng)盡量做到高內(nèi)聚,低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨立性。本題答案為B。
44.D解析:輸出格式控制符%c表示將變量以字符的形式輸出;輸出格式控制符%d表示將變量以帶符號的十進制整型數(shù)輸出,所以第一個輸出語句輸出的結(jié)果為a,97;第二個輸出語句輸出的結(jié)果為k=12。
45.D解析:在C語言中語句結(jié)束時應(yīng)該以分號結(jié)尾,程序中的第1個printf('###')輸出語句后面少了一個分號(;),因此執(zhí)行程序時會出錯。
46.B
47.A解析:反斜杠字符“\\”賦給字符,應(yīng)該寫成ch='\\\\',所以A是錯誤的。
48.C
49.B解析:根據(jù)題意可知第二個j循環(huán)結(jié)束的條件是第i行打印出的'*'的個數(shù)。
50.B
51.C算法具有的5個特性是:有窮性、確定性、可行性、有0個或多個輸入、有一個或多個輸出。所以說,用C程序?qū)崿F(xiàn)的算法可以沒有輸入,但必須要有輸出。因此本題答案選C。
52.D解析:測試不是為了證明程序是正確的,而是在設(shè)想程序有錯誤的前提下進行的,其目的是設(shè)法暴露程序中的錯誤和缺陷,一般應(yīng)當避免由開發(fā)者測試自己的程序,因此,選項A錯誤;測試是為了發(fā)現(xiàn)程序錯誤,不能證明程序的正確性,調(diào)試主要是推斷錯誤的原因,從而進一步改正錯誤,調(diào)試用例與測試用例可以一致,也可以不一致,選項B錯誤;測試發(fā)現(xiàn)錯誤后,可進行調(diào)試并改正錯誤:經(jīng)過調(diào)試后的程序還需進行回歸測試,以檢查調(diào)試的效果,同時也可防止在調(diào)試過程中引進新的錯誤,選項C錯誤。
53.A解析:本題考核的知識點是數(shù)組的定義、賦初值以及函數(shù)調(diào)用的組合應(yīng)用.本題中函數(shù)sum(int*A)的作用是:將形參a所指的數(shù)組中的第二個元素的值a[1]賦給第一個元素a[0]。主函數(shù)中定義一個長度為10的整型數(shù)組并賦初值,接著執(zhí)行一個for循環(huán),該循環(huán)共執(zhí)行了3次.當i=2時,調(diào)用函數(shù)sum(&aa[2]),主函數(shù)中將&aa[2]作為實參傳給行參a,所以此時形參a所指的數(shù)組的第一個元素和第二個元素分別為aa[2]和aa[3],故執(zhí)行完該函數(shù)后將aa[3]的值賦給aa[2],即aa[1]=aa[3]=4,當i=1時,調(diào)用函數(shù)sum(&aa[1]),主函數(shù)中將&aa[1]作為實參傳給行參a,所以此時形參a所指的數(shù)組的第一個元素和第二個元素分別為aa[1]和aa[2],故執(zhí)行完該函數(shù)后將aa[2]的值賦給aa[1],即aa[1]=aa[2]=4;當i=0時;調(diào)用函數(shù)sum(&aa[0]),,主函數(shù)中將&aa[0]作為實參傳給行參a,所以此時形參a所指的數(shù)組的第一個元素和第二個元素分別為aa[0]和aa[1],故執(zhí)行完該函數(shù)后將aa[1]的值賦給aa[0],即aa[0]=aa[1]=4;故最后輸出的aa[0]的值為4,所以,4個選項中選項A符合題意。
54.A解析:C語言中int類型的常數(shù)的范圍是:-32768~32767。C整常數(shù)可用三種形式表示:十進制整數(shù),八進制整數(shù),十六進制整數(shù)。選項A超出范圍,不正確。
55.D解析:數(shù)據(jù)模型應(yīng)該反映和規(guī)定本數(shù)據(jù)模型必須遵守的、基本的、通用的完整性約束條件。完整性規(guī)則是給定的數(shù)據(jù)模型中數(shù)據(jù)及其聯(lián)系所具有的制約和依存規(guī)則,用以限定符合數(shù)據(jù)模型的數(shù)據(jù)庫狀態(tài)及其狀態(tài)的變化,以保證數(shù)據(jù)的正確性、有效性和相容性。
56.B解析:耦合性和內(nèi)聚性足模塊獨立性的兩個定性標準。內(nèi)聚性是一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度的度量,作為軟件結(jié)構(gòu)設(shè)計的設(shè)計原則,要求每個模塊的內(nèi)部都具有很強的內(nèi)聚性;耦合性是指模塊間相互連接的緊密程度的度量,一個模塊與其他模塊的耦合性越強則該模塊的獨立性越弱。一般優(yōu)秀的軟件設(shè)計應(yīng)盡量做到高內(nèi)聚、低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨立性。
57.B解析:所謂中序遍歷是指在訪問根結(jié)點、遍歷左子樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結(jié)點,最后遍歷右子樹;并且在遍歷左、右子樹時,仍然先遍歷左子樹,然后訪問根結(jié)點,最后遍歷右子樹。
58.D解析:考查continue語句的使用。continue語句的作用是結(jié)束本次循環(huán),直接進入下次循環(huán)。
59.C
60.AA?!窘馕觥緾語言是函數(shù)式的語言。它的基本組成單位是函數(shù),在C語言中任何程序都是由一個或者多個函數(shù)組成的。
61.D\n程序設(shè)計是指設(shè)計、編制、調(diào)試程序的方法和過程。內(nèi)容涉及有關(guān)的基本概念、工具、方法以及方法學等。程序設(shè)計通常分為問題建摸、算法設(shè)計、編寫代碼和編譯調(diào)試4個階段。
\n
62.D
63.A用typedef沒有增加新類型,所以選擇A)。
64.A
65.D在結(jié)構(gòu)化程序設(shè)計過程中,我們可以根據(jù)下面的原則進行:
(1)使用語言中的順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)等有限的基本控制結(jié)構(gòu)表示程序邏輯。
(2)選用的控制結(jié)構(gòu)只準許有一個入口和一個出口。
(3)復(fù)雜結(jié)構(gòu)應(yīng)該用基本控制結(jié)構(gòu)進行組合嵌套來實現(xiàn)。
(4)語言中沒有的控制結(jié)構(gòu)可以用一段等價的程序段來模擬,但是要求程序段在整個系統(tǒng)中前后一致。
(5)嚴格限制GOTO語句。
(6)在編寫程序時,強調(diào)使用幾種基本的控制結(jié)構(gòu),通過組合嵌套,形成程序的控制結(jié)構(gòu)。
(7)在程序設(shè)計過程中,盡量采用自頂向下和逐步細化的原則,由粗到細,一步步展開。把一個模塊的功能逐步分解,細化為一系列具體的步驟,進而翻譯成一系列用某種程序設(shè)計語言寫成的源程序。
總之,在結(jié)構(gòu)化程序設(shè)計的過程中,要將清晰放在第一位。因此,本題中的答案D是不正確的。
66.C
67.C
68.B
69.D本題考查宏定義的用法,宏定義只是做個簡單的替換,所以本題中執(zhí)行f(2)=(2*N+1)=11,執(zhí)行f(1+1)=(1+1}N+1)=7。選項D正確。
70.B
71.D數(shù)據(jù)處理是指將數(shù)據(jù)轉(zhuǎn)換成信息的過程,故選項A敘述錯誤。數(shù)據(jù)的物理獨立性是指數(shù)據(jù)的物理結(jié)構(gòu)的改變,不會影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),故選項B敘述錯誤。關(guān)系中的行稱為元組,對應(yīng)存儲文件中的記錄,關(guān)系中的列稱為屬性,對應(yīng)存儲文件中的字段,故選項C敘述錯誤。所以本題選D。
72.D函數(shù)的含義是如果i的值能被2整除,以字符格式打印輸出i+C的值,如果i的值不能被2整除,打印i+b的值。第一次i值為0,執(zhí)行else語句打印字符‘A’,第二次i值為1,打印1+b的值即字符‘b符‘c’,依此類推選擇D選項,第三次i值為2,打印字I.
73.A
74.Cstrcpy:字符串拷貝函數(shù);strlen:求字符串長度函數(shù)(注意:不包含字符串結(jié)束標識符‘、0’);strcat:字符串連接函數(shù)。執(zhí)行完語句strcat(P,r);后,P數(shù)組中存儲的元素為a,b,c,d,a,b,C,d,8;執(zhí)行語句strcpy(P+strlen(q),q);得到的結(jié)果是將q所指向的字符串拷貝至P+strlen(q)開始的存儲位置,因為strlen的值為3,即從P+3開始存儲q中的元素。所以執(zhí)行完strcpy(P+str|en(q),q)語句后,字符數(shù)組P[20]的存儲元素為a,b,c,a,b,o;所以strlen(P)的結(jié)果為6。因此C選項正確。
75.A標識符是由字母、數(shù)字或下劃線組成,并且它的第一個字符必須是字母或者下劃線。B選項int不是表達變量類型的標識符,它不能再用做變量名和函數(shù)名。C選項do是C語言的一個關(guān)鍵字。D選項標識符只能以字母或下劃線開始。
76.C
\n本題考查if…else語句。第一個if語句,先判斷條件,發(fā)現(xiàn)a<b條件成立,則執(zhí)行第二個if語句,再判斷條件,發(fā)現(xiàn)b<0條件不成立,則執(zhí)行與其配對的else語句c++,c自加1,得c=5。
\n
77.B\r\n
78.D本題j=要是考查帶參數(shù)的宏的定義,過程如下:inta=a/S(k+m)/S(k+m)=a/(k+m*k+m/k+m)=9/(3十2*3十2/3十2*3十2)=0。
79.A
80.D軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程,測試要以查找錯誤為中心,而不是為了演示軟件的正確功能,也不是為了評估軟件或改正錯誤,因此本題答案為D)。
81.(1)錯誤:p=j
正確:p=j;
(2)錯誤:p=j;
正確:p=i;
【解析】根據(jù)C語言的語法規(guī)則.每一條語句都要以分號結(jié)束。因此,“p=j”后要加上分號“;”。每次比較后要把小的下標賦值給p,因此,“p=j;”應(yīng)改為“p=i;”。
82.voidproc(intm,int*a,int*n){inti,j=0;for(i=1;i<=m;i++)//進行m次循環(huán)if(i%7==0||i%11==0)//能被7或11整除的所有整數(shù)a[j++]=i;//符合條件的數(shù)放在數(shù)組a中*n=j;//返回這些數(shù)的個數(shù)}【解析】本題需要先判斷1~m每一個整數(shù)能否被7或11整除,然后將符合條件的整數(shù)放在數(shù)組a中,最后將符合條件的數(shù)的個數(shù)通過形參n返回主函數(shù)。2022-2023年山西省朔州市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.有下列程序:main{chars[]="abcde";s+=2:printf("%d\n",s[0]);}執(zhí)行后的結(jié)果是()。A.輸出字符a的ASCII碼B.輸出字符c的ASCII碼C.輸出字符cD.程序出錯
2.若有定義:“inta=4,b=5;floatx=3.4,y=2.1;”,則下列表達式的值為()。(float)(a+b)/2+(int)x%(int)y;
A.5.5B.55C.5.500000D.55.00000
3.有以下程序:#include<stdio.h>voidfunc(intn){inti;for(i=0;i<=n;i++)printf("*"):printf("#");}main(){func(3);printf("????");func(4);printf("n\");程序運行后的輸出結(jié)果()。A.****#????***#
B.***#????****#
C.**#????****#
D.****#????*****#
4.以下程序中函數(shù)reverse的功能是將a所指數(shù)組中的內(nèi)容進行逆置。voidreverse(inta[],intn){inti,t;for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1-i];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);}程序運行后的輸出結(jié)果是
A.22B.10C.34D.30
5.下列排序算法中,()算法可能會出現(xiàn)下面情況:初始數(shù)據(jù)有序時,花費的時間反而最多。
A.堆排序B.冒泡排序C.快速排序D.希爾排序
6.有以下程序:#include<stdio.h>intchange(int*data){*data=*data%2;return(*data)+1;}main(){intdata=12;change(&data);printf(“%d,”,data);data=change(&data);printf(“%d,”,data);}程序運行后的輸出結(jié)果是()。
A.0,0,B.1,2,C.12,13,D.0,1,
7.
8.若變量c為char類型,能正確判斷出c為小寫字母的表達式是_______。A.′a′<=c<=′z′
B.(c>=′a′)||(c<=′z′)
C.(′a′=C)
D.(c>=′a′)&&(c<=′z′)
9.有以下程序:#includeMain(){Int?x=1.y=0;if(!x)y++;elsef(x==0)if(x)y+=2;else?y+=3;printf("%d\n",y);\}程序運行后的輸出結(jié)果是()。A.3B.2C.1D.0
10.以下選項中不屬于字符常量的是
A.′C′B.′′C′′C.′\xCC′D.′\072′
11.已知inta=2,b=3;則執(zhí)行表達式a=a<b后,變量a的值為()。
A.0B.1C.2D.3
12.在待排序的元素序列基本有序的前提下,效率最高的排序方法是()。A.A.冒泡排序B.選擇排序C.快速排序D.歸并排序
13.
14.
15.則以下函數(shù)調(diào)用語句錯誤的是()。#include<stdio.h>intadd(inta,intb){return(a+b)}main(){intk,(*f)(),a=5,b=10;f=add;...}A.k=f(a,b);B.k=add(a,b);C.k=(*f(a,b);D.k=*f(a,b);
16.下列敘述中正確的是()。
A.順序存儲結(jié)構(gòu)的存儲一定是連續(xù)的,鏈式存儲結(jié)構(gòu)的存儲空間不一定是連續(xù)的
B.順序存儲結(jié)構(gòu)只針對線性結(jié)構(gòu),鏈式存儲結(jié)構(gòu)只針對非線性結(jié)構(gòu)
C.順序存儲結(jié)構(gòu)能存儲有序表,鏈式存儲結(jié)構(gòu)不能存儲有序表
D.鏈式存儲結(jié)構(gòu)比順序存儲結(jié)構(gòu)節(jié)省存儲空間
17.C語言中最簡單的數(shù)據(jù)類型包括()。
A.整型、實型、邏輯型B.整型、實型、字符型C.整型、字符型、邏輯型D.字符型、實型、邏輯型
18.若x、y、z、m均為int型變量,則執(zhí)行下面語句后m的值是()m=1;x=2;y=3;m=(m<x)?m:x;m=(m<y)?m:y;m=(m<y)?m:z;
A.1B.2C.3D.4
19.
20.以下關(guān)于算法的敘述中錯誤的是()。
A.算法可以用偽代碼、流程圖等多種形式來描述
B.一個正確的算法必須有輸入
C.一個正確的算法必須有輸出
D.用流程圖描述的算法可以用任何一種計算機高級語言編寫成程序代碼
二、2.填空題(20題)21.算法的復(fù)雜度主要包括空間復(fù)雜度和______復(fù)雜度。
22.診斷和改正程序中錯誤的工作通常稱為【】。
23.下列程序段的輸出結(jié)果是______。
intn='c':
switch(n++)
{default:printf("error");break;
case'a':printf("good");break;
case'c':printf("moming");
case'd':printf("class");
}
24.下列程序的運行結(jié)果是______。
main()
{inta=1,b=10;
do
{b-=a;a++;}while(b--<0);
printf("%d,%d\n",a,b);
}
25.有以下結(jié)構(gòu)體說明和變量的定義,且指針p指向變量a,指針q指向變量b,則不能把結(jié)點b連接到結(jié)點a之后的語句是______。
structnode
{chardata;
structnode*next;}a,b
以下程序中調(diào)用scanf函數(shù)給變量a輸入數(shù)值的方法是錯誤的,其錯誤原因是main(){int*p,*q,a,b;p=&a;printf("inputa:");scanf("%d",*p);}
26.測試的目的是暴露錯誤,評價程序的可靠性;而______的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。
27.關(guān)系模型的完整性規(guī)則是對關(guān)系的某種約束條件,包括實體完整性、______和自定義完整性。
28.在C語言中,while和do…while循環(huán)的主要區(qū)別是______的循環(huán)至少被執(zhí)行一次。
29.下面程序由兩個源程序文件:t4.h和t4.c組成,程序編譯運行結(jié)果是()。t4.h的源程序為:
#defineN10
#definef2(x)(x*N)
t4.c的源程序為:
#include<stdio.h>
#defineM8
#definef(x)((x)*M)
#include"t4.h"
main()
{inti,j;
i=f(1+1);j=f2(1+1);
printf("%d%d\n",i,j);
}
30.語句“int(*ptr)();”的含義是______是指向函數(shù)的指針,該函數(shù)返回一個int型數(shù)據(jù)。
31.以下程序的功能是計算。補足所缺語句。
longf(intn)
{inti;longs;
s=【】;
for(i=1;i<=n;i++)s=【】;
returns;
}
main()
{longs;intk,n;
scanf("%d",&n);
s=【】;
for(k=0;k<=n,k++)s=s+【】;
printf("%1d\n",s);
}
32.有以下程序:
voidswap1(intc[])
{intt;
t=c[0];c[0]=c[1];c[1]=t;
}
voidswap2(intc0,intc1)
{intt;
t=c0;c0=c1;c1=t;
}
main()
{inta[2]={3,5},b[2]={3,5};
swaplA);swap2(b[0],b[1]);
printf("%d,%d,%d,%d\n",a[0],a[1],b[0],b[1]);
}
其輸出結(jié)果是【】。
33.用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有11個字節(jié)的動態(tài)存儲空間。
st=(char*)【】;
34.以下程序從終端讀入數(shù)據(jù)到數(shù)組中,統(tǒng)計其中正數(shù)的個數(shù),并計算它們之和。請?zhí)羁铡?/p>
main()
{inti,a[20],sum,count;
sum=count=0;
for(i=0;i<20;i++)scanf("%d",【】);
for(i=0;i<20;i++)
{if(a[i]>0)
{count++;
sum+=【】;
}
}
printf("sum=%d,count=%d\n",sum,count);
}
35.下列的for語句的循環(huán)次數(shù)為______。
for(x=1,y=0;(y!=19)&&(x<7);x++);
36.有以下程序:
#include<stdio.h>
main()
{
charc;
while((c=getchar())!='?')putchar(--c);
}
程序運行時,如查從鍵盤輸入:Y?N?<回車>,則輸出的結(jié)果為______。
37.下面的程序把從終端讀入的文本(用@作為文本結(jié)束標志)輸出到一個名為bi.dat的新文件中,請?zhí)羁铡?/p>
#include<stdio.h>
#include<stdlib.h>
FILE*fp;
main()
{charch;
if((fp=fopen(【】))==NULL)exit(0);
while((ch=getchar())!='@')fputc(ch,fp);
fclose(fp);
}
38.數(shù)據(jù)元素之間______的整體稱為邏輯結(jié)構(gòu)。
39.有以下程序:
voidf(inty,int*x)
{y=y+*x;*x=*x+y;}
main()
{intx=2,y=4;
f(y,&x);
printf("%d%d\n",x,y);
}
執(zhí)行后輸出結(jié)果是上【】。
40.結(jié)構(gòu)化程序設(shè)計的三種基本邏輯結(jié)構(gòu)為順序、選擇和【】。
三、1.選擇題(20題)41.有以下程序:main(){intx=0,y=5,z=3;while(z-->0&&++x<5)y=y-1;printf("%d,%d,%d\n",x,y,z);}程序執(zhí)行后的輸出結(jié)果是()。
A.3,2,0B.3,2,-1C.4,3,-1D.5,-2,-5
42.若有以下程序段(n所賦的是八進制數(shù)):intm=32767,n=032767;printf("%d,%\n",m,n);執(zhí)行后輸出結(jié)果是()。
A.32767,32767B.32767,032767C.32767,77777D.32767,077777
43.為了使模塊盡可能獨立,要求()。
A.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量強
B.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量弱
C.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量弱
D.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量強
44.有以下程序段charch;intk;ch='a';k=12;printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);已知字符a的ASCII碼值為97,則執(zhí)行上述程序段后輸出結(jié)果是
A.因變量類型與格式描述符的類型不匹配輸出無定值
B.輸出項與格式描述符個數(shù)不符,輸出為零值或不定值
C.a,97,12k=12
D.a,97,k=12
45.以下語句段執(zhí)行后的輸出結(jié)果是()。#include<stdio.h>main(){intk=3;if(k)printf("###")elseprintf("&&&&");}
A.###
B.&&&&
C.###&&&&
D.有語法錯誤,不能執(zhí)行
46.若要顯示或打印漢字將用到漢字編碼中的()
A.輸入碼B.字型碼C.機內(nèi)碼D.交換碼
47.已經(jīng)定義ch為字符型變量,以下賦值表達式中錯誤的是______。
A.ch='\'B.ch=62+3C.ch=NULLD.ch='\xaa'
48.下列不正確的表達式是()
A.a>b>cB.c--,++b,a+=1C.a=c+b>n-m=kD.p++
49.下面程序的功能是輸出以下形式的金字塔圖案:****************main(){inti,j;for(i=1;i<=4;i++;){for(j=1;j<=4-i;j++)printf("");for(j=1;;j<=________;j++)printf("*");printf("\n");}}在下劃線處應(yīng)填入的是______。
A.iB.2*i-1C.2*i+1D.i+2
50.486PC機主板上一般帶有高速緩沖存儲器Cache,它是()之間的儲存。
A.CPU與輔助存助器B.CPU與主存儲器C.軟盤與內(nèi)存D.硬盤與內(nèi)存
51.以下敘述中正確的是
A.用C程序?qū)崿F(xiàn)的算法必須要有輸入和輸出操作
B.用C程序?qū)崿F(xiàn)的算法可以沒有輸出但必須要有輸入
C.用C程序?qū)崿F(xiàn)的算法可以沒有輸入但必須要有輸出
D.用C程序?qū)崿F(xiàn)的算法可以既沒有輸入也沒有輸出
52.下列敘述中正確的是()。
A.測試工作必須由程序編制者自己完成
B.測試用例和調(diào)試用例必須一致
C.一個程序經(jīng)調(diào)試改正錯誤后,一般不必再進行測試
D.上述三種說法都不對
53.有以下程序:voidsum(int*A){a[0]=a[1];}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;for(i=2;i>=0;i--)sum(&aa[i]);printf("%d\n",aa[0]);}執(zhí)行后的輸出結(jié)果是
A.4B.3C.2D.1
54.在C語言中,不正確的int類型的常數(shù)是______。
A.32768B.0C.37D.0xAF
55.數(shù)據(jù)的完整性是指數(shù)據(jù)的正確性、有效性和______。
A.可維護性B.獨立性C.安全性D.相容性
56.軟件設(shè)計中模塊劃分應(yīng)遵循的準則是()。A.低內(nèi)聚低耦合
B.高內(nèi)聚低耦合
C.低內(nèi)聚高耦合
D.高內(nèi)聚高耦合
57.設(shè)有下列二叉樹:
對此二叉樹中序遍歷的結(jié)果為______。
A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA
58.執(zhí)行下面的程序后,a的值為
main()
{inta,b;
for(a=1,b=1;a<=10;a++)
{if(b%3==1)
{b+=3;
continue;}
b-=5;}}
A.7B.8C.9D.10
59.已知x=3、y=2則表達式x*=y(tǒng)+8的值為()
A.3B.2C.30D.10
60.C語言的基本單位是()。
A.函數(shù)B.過程C.子程序D.子函數(shù)
四、選擇題(20題)61.以下敘述中正確的是()。
A.程序設(shè)計的任務(wù)就是編寫程序代碼并上機調(diào)試
B.程序設(shè)計的任務(wù)就是確定所用數(shù)據(jù)結(jié)構(gòu)
C.程序設(shè)計的任務(wù)就是確定所用算法
D.以上三種說法都不完整
62.(57)下列敘述中,不屬于軟件需求規(guī)格說明書的作用的是______。
A.便于用戶、開發(fā)人員進行理解和交流
B.反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎(chǔ)和依據(jù)
C.作為確認測試和驗收的依據(jù)
D.便于開發(fā)人員進行需求分析
63.以下關(guān)于typedef的敘述錯誤的是()。A.用tyFedef可以增加新類型
B.typedef只是將已存在的類型用一個新的名字來代表
C.用typedef可以為各種類型說明一個新名,但不能用來為變量說明一個新名
D.用typedef為類型說明一個新名,通常可以增加程序的可讀性
64.運算符________的優(yōu)先級最高。
A.[]B.+=C.?:D.++
65.下列關(guān)于結(jié)構(gòu)化設(shè)計原則的描述,錯誤的是
A.在塊和進程的非正常出口處往往需要調(diào)用GOTO語句,使用GOTO語句使程序執(zhí)行效率提高,但是濫用GOTO語句確實有害,應(yīng)該避免使用GOTO語句
B.程序設(shè)計時應(yīng)該自頂向下,逐步求精
C.程序設(shè)計時,應(yīng)該將復(fù)雜問題進行模塊化,就是將程序設(shè)計的總目標分解為若干個分目標,再進一步分解為具體的小目標
D.在進行程序設(shè)計時,應(yīng)該盡量在一行寫一條語句,盡量做到效率第一,清晰第二
66.
67.
68.
69.有以下程序:
程序運行后的輸出結(jié)果是()。
A.1127B.1212C.1111D.117
70.
71.下列有關(guān)數(shù)據(jù)庫的描述,正確的是A.數(shù)據(jù)處理是將信息轉(zhuǎn)化為數(shù)據(jù)的過程
B.數(shù)據(jù)的物理獨立性是指當數(shù)據(jù)的邏輯結(jié)構(gòu)改變時,數(shù)據(jù)的存儲結(jié)構(gòu)不變
C.關(guān)系中的每一列稱為元組,一個元組就是一個字段
D.如果一個關(guān)系中的屬性或?qū)傩越M并非該關(guān)系的關(guān)鍵字,但它是另一個關(guān)系的關(guān)鍵字,則稱其為本關(guān)系的外關(guān)鍵字
72.有以下程序:
程序運行后的輸出結(jié)果是()。
A.AbcdefB.ABCDEFC.aBcDeFD.AbCdEf
73.
74.有以下程序:
程序運行后的輸出結(jié)果是()。
A.11B.9C.6D.7
75.下列合法的聲明語句是()。
A.intabc=50;
B.doubleint=3+5e2.5;
C.longdo=1L;
D.float3asd=3e一3;
76.
下列程序的運行結(jié)果是()。
#include<stdio.h>
main
{inta=2,b=3,c=4:
if(a<b)
if(b<0)C=0:
elsec++;
printf("%d\n",c);
}
A.2B.3C.5D.4
77.
78.執(zhí)行下述程序后,輸出的結(jié)果是()。#include<stdio.h>#defineS(X)X*Xvoidmain{inta=9,k=3,m=2;a/=S(k+m)/s(k+m);printf("%d",a);}A.1B.4C.9D.0
79.
80.軟件測試的目的是()。
A.評估軟件可靠性B.發(fā)現(xiàn)并改正程序中的錯誤C.改正程序中的錯誤D.發(fā)現(xiàn)程序中的錯誤
五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc()的功能是:用選擇法對數(shù)組中的n個元素按從大到小的順序進行排序。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.請編寫一個函數(shù)proc,它的功能是:求出1~m(含m)能被7或11整除的所有整數(shù)放在數(shù)組a中,通過n返回這些數(shù)的個數(shù)。例如,若傳給m的值為70,則程序輸出:7111421222833354244495556636670注意:部分源程序給出如下。請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)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個數(shù){printf("%4d",arr[k]);printf("\n");}elseprintf("%4d",arr[k]);printf("\n");}
參考答案
1.D因為字符數(shù)組s[]中的數(shù)組名s表示的是一個地址常量。所以語句“s+=2;”不能將指針在當前位置的基礎(chǔ)上再向后移動兩位。因而程序編譯時出錯。
2.C在計算(float)(a4-b)/2時,由于通過強制類型轉(zhuǎn)換將(a+b)轉(zhuǎn)換成了float型,所以應(yīng)先將2轉(zhuǎn)換成float型,再進行計算,得4.500000。在計算(int)x%(int)y時,先將x和y通過強制類型轉(zhuǎn)換成int型,再進行求余運算,結(jié)果為1。又因為4.500000是float型,所以將1和它相加時,先將1換成float型,再計算,得到5.500000。類型轉(zhuǎn)換的一般規(guī)則是:低級類型從高級類型,并進行相應(yīng)的轉(zhuǎn)換。數(shù)據(jù)類型的級別由低到高的排序表示為:char→int→unsigned→log→float→double。
3.D本題考查簡單的for循環(huán),func(3)由于i是從0開始,所以會輸出四個“*”和一個“#”,然后打印四個“?”func(4),會輸出五個“*”和一個“#”,所以答案選擇D。
4.A解析:本題考查的知識點是數(shù)組名作為函數(shù)參數(shù)及函數(shù)調(diào)用。reverse()數(shù)的功能是將具有n個元素的數(shù)組a反序存放。在主函數(shù)中調(diào)用語句是“reverse(b,8);”,實現(xiàn)的功能是把b數(shù)組的前八個元素逆置,所以b數(shù)組中依次存放的值為“8,7,6,5,4,3,2,1,9,10”。for循環(huán)了4次,分別把b[6]、b[7]、b[8]和b[9]的值(分別是2、1、9、10)加到了s中,s的結(jié)果是22,所以最后輸出的s值為22。所以4個選項中A正確。
5.C
6.Dchange函數(shù)接收一個整型指針data,然后將data指向的數(shù)對2求余,求余后的值重新賦給data指向的變量,最后將data指向的變量值加1后返回。注意,此處data指向的數(shù)對2求余會改變實參指針指向的值,但返回值并不影響data指向的值。程序第1次調(diào)用change函數(shù),傳入實參data的地址,將data的值修改為0(12%2=0),此時輸出data的值是0;再次調(diào)用change傳入data的地址,將data的值修改為0(0%2=0),然后將返回值1重新賦給主函數(shù)變量data,所以此時輸出data的值是1。綜上,程序輸出0,1,。故本題答案為D選項。
7.B
8.D
9.D[解析]在ifelse語句中else,總是與離它最近的配對。本題目中x為1所以!勸0.所以執(zhí)行elsei語句中的內(nèi)容,判斷(x==0)是否成立,因為勸1所以條件不成立,所以else內(nèi)部的if..else語句不再執(zhí)行,所以y的值還是初始值0.
10.B解析:在C語言程序中,用單引號把一個字符或反斜線后跟一個特定的字符括起來表示一個字符常量。選項A)、C)和D)為正確的字符常量,而選項B)是用雙引號括起來的字符,表示一個字符串常量。
11.B解析:先計算關(guān)系表達式a<b=2<3為真(表達式為真時,如果變量為int型變量則真用1表示,假用0表示),即a=1。
12.A解析:以下幾種算法的時間復(fù)雜度分別為:冒泡排序(n2);選擇排序(n2);快速排序(nlog2n);歸并排序(nlog2n)。當排序元素序列基本有序的情況下,冒泡排序的交換次數(shù)為0,只是順序掃描數(shù)據(jù)而已,所以其效率是最高的。
13.D
14.B
15.DD選項中*f(a,b)表示調(diào)用后返回一個指向整型數(shù)據(jù)的地址指針,即該函數(shù)的返回值為指針類型,所以不能將其賦值給整形變量k。
16.A解析:順序
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《客房服務(wù)管理》課件
- 《孟非的激勵人生》課件
- 《實驗室管理》課件
- 2024-2025學年浙江省9+1聯(lián)考高一上學期期中考試歷史試題(解析版)
- 單位管理制度集合大合集【人事管理】十篇
- 單位管理制度集粹匯編【人力資源管理篇】
- 單位管理制度匯編大合集職員管理篇
- 單位管理制度合并匯編人力資源管理篇十篇
- 《漢字的結(jié)構(gòu)特點》課件
- 單位管理制度范例選集【員工管理篇】
- 《業(yè)務(wù)員銷售技巧》課件
- 《汽車涂裝》2024-2025學年第一學期工學一體化課程教學進度計劃表
- 水廠安全管理培訓
- 江西省贛州市2023-2024學年高一上學期期末考試化學試題 附答案
- 消化道出血護理常規(guī)課件
- 2024年物流運輸公司全年安全生產(chǎn)工作計劃例文(4篇)
- 二零二四年度軟件開發(fā)合同:凈水器智能控制系統(tǒng)定制開發(fā)協(xié)議3篇
- 貴州省銅仁市2023-2024學年高二上學期期末質(zhì)量監(jiān)測試題 地理 含答案
- 2024-2025學年二年級語文上冊期末非紙筆試卷二(統(tǒng)編版)
- 《淄博人壽保險公司績效考核問題及完善建議(5700字論文)》
- 糖尿病老年患者健康指導(dǎo)
評論
0/150
提交評論