版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2022-2023年貴州省銅仁地區(qū)全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________
一、單選題(20題)1.以下敘述正確的是()。
A.“charc1,*c2,*c3[10];”是合法的變量定義語句
B.數組說明符的方括號中不能使用表達式
C.數組元素下標可以是非整數
D.若有定義“chararray[4];”,則語句“printf(“%c”,array[“3”]);”是合法的
2.算法的有窮性是指A.算法程序的運行時間是有限的
B.算法程序所處理的數據量是有限的
C.算法程序的長度是有限的
D.算法只能被有限的用戶使用
3.某某二叉樹的中序序列和后序序列正好相反,則該二叉樹一定是______的二叉樹
A.空或只有一個結點B.高度等于其結點數C.任一結點無左孩子D.任一結點無右孩子
4.計算機系統(tǒng)的組成是______。
A.主機、外設B.運算器、控制器C.硬件系統(tǒng)和軟件系統(tǒng)D.CPU、內存儲器
5.以下選項中,能表示邏輯值“假”的是()
A.1B.0.000001C.0D.100.0
6.若有"doublea;",則正確的輸入語句是()。
A.scanf("%1f",a);
B.scanf("%f",&a);
C.scanf("%1f",&a)
D.scanf("%1e",&a);
7.有以下程序:main{intx,i;for(i=l;i<=50;i++){x=i:if(x%2=0)if(x%3=0)if(X%7=0)printf(”%d,i)”;}}輸出結果是()。A.28B.27C.42D.4l
8.設有二維數組A7×8,每個數據元素占8個字節(jié)存儲單元,順序存放,A第一個元素A0,0的存儲地址為1000,按行優(yōu)先存放時,元素A3,4的地址為()。
A.1224B.1208C.1200D.1216
9.
10.若有定義“inta=1,b=2,c=3,d=4,m=2,n=2;”,則執(zhí)行“(m=a>b)&&(n=c>d)”后n的值是()。
A.4B.3C.2D.1
11.
12.設有定義:int?x=2,以下表達式中,值不為6的是()。
A.2*<.x+=2B.x++.2*xC.x=x*(1+x)D.x*=x+1
13.
14.
15.
若輸入“abcdef”“abdef”,下述程序的輸出結果為()。
#include<stdio.h>
#include<string.h>
main
{intn;
chars1[20],s2[20],*p1,*p2;
scanf("%s",s1);
scanf("%S",s2);
p1=s1;
p2=s2;
n=strcmp(p1,p2);
printf("Vood\n",n);
}
A.-1B.0C."abcdef"D."abdef"
16.設有定義“doublex=5.16894;”,則語句“printf(“%lf\n”,(int)(x*1000+0.5)/1000.);”的輸出結果是()。
A.5.16900B.5.16800C.0.00000D.輸出格式說明符與輸出項不匹配,產生錯誤信息
17.以下敘述中正確的是()。
A.宏替換不占用程序的運行時間
B.預處理命令行必須位于源文件的開頭
C.在源文件的一行上可以有多條預處理命令
D.宏名必須用大寫字母表示
18.
19.設一棵二叉樹有3個葉子節(jié)點,有8個度為1的節(jié)點,則該二叉樹中總的節(jié)點數為()
A.12B.13C.14D.15E.16F.17
20.如下程序段
#include<stdio.h>
#include<ctype.h>
#include<conio.h>
intfun(char*str)
{inti,j=0;
for(i=0;str[i]!=’\0’;i++)
if(str[i]!=’’)str[j++]=str[i];
str[j]=’\0’;
}
main()
{
charstr[81];
intn;
clrscr();
printf("Inputastring:");
gets(str);
fun(str);
printf("%s\n",str);
}
當運行程序時,輸入asdafaaz67<回車>,則輸出是A.A.asdafaaz67
B.asdafaaz67
C.asd
D.z67
二、2.填空題(20題)21.設a,b,c為整型數,且a=2,b=3,c=4,則執(zhí)行完以下語句后,a的值是【】。
a*=16+(b++)-(++c);
22.以下程序的輸出結果是【】。
#include<stdio.h>
#deftneJFT(x)x*x
main()
{inta,k=3;
a=++JFT(k+1);
printf("%d",a);
}
23.下列程序執(zhí)行后輸出的結果是【】。
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)arr[i]=i;
for(i=1;i<4;i++)k+=arr[i]+i;
printf("%d\n",k);
24.下列程序的輸出結果是______。
main()
{inta=2,b=4,c=6;
int*p1=&a,*p2=&b,*p;
*(p=&c)=*p1*(*p2);
printf("%d\n",c);
}
25.若按功能劃分,軟件測試的方法通常分為白盒測試方法和【】測試方法。
26.下列程序段的輸出結果是______。
intn='c';
switch(n++)
{default:printf("error");break;
case'a':printf("good");break;
case'c':printf("morning");
case'd':printf("class");
}
27.數據結構包括數據的邏輯結構、數據的【】以及列數據的操作運算。
28.按"先進后出"原則組織數據的數據結構是【】。
29.數據結構分為線性結構和非線性結構,帶鏈的隊列屬于[]。
30.軟件測試中路徑覆蓋測試是整個測試的基礎,它是對軟件【】進行測試。
31.設有以下定義和語句,則*(*(p+2)+1)的值為【】。
inta[3][2]={10,20,30,40,50,60},(*p)[2];
p=a;
32.設x和y均為int型變量,且x=1,y=2,則表達式2.0+x/y的值為_______。
33.類是一個支持集成的抽象數據類型,而對象是類的【】。
34.數據庫管理系統(tǒng)常見的數據模型有層次模型、網狀模型和【】3種。
35.以下條件表達式可計算:1+|a|的值,請?zhí)羁?。a>=0?【】:【】
36.設有下列的程序段;
charstr[]="Hello";
char*ptr;
ptr=str;
執(zhí)行上面的程序段后,*(ptr+5)的值為______。
37.有以下程序:
#include<stdio.h>
main()
{intn=0,m=1,x=2;
if(!n)x-=1;
if(m)x-=2;
if(x)x-=3;
printf("%d\n",x);
}
執(zhí)行后的輸出結果是【】。
38.下列程序的運行結果是______。
#definePOW(r)(r)*(r)
main()
{intx=3,y=2,t;
t=POW(x+y);
printf("%d\n",t);
}
39.下列程序的輸出結果是______。
main()
{inta=2,b=4,e=6;
int*p1=&a,*p2=&b,*p;
*(p=&c)=*p1*(*p2);
printf("%d\n",c);
}
40.設在主函數中有以下定義和函數調用語句,且fun函數為void類型;請寫出fun函數的首部【】(要求形參名為b)。main(){doubles[10][22];intn;……fun(s);……}
三、1.選擇題(20題)41.根據數據結構中各數據元素之間前后件關系的復雜程度,一般將數據結構分成()。
A.動態(tài)結構和靜態(tài)結構B.緊湊結構和非緊湊結構C.線性結構和非線性結構D.內部結構和外部結構
42.下列可用于C語言用戶標識符的一組是
A.void,define,WORD
B.a3_b3,_123,Car
C.For,-abc,IFCase
D.2a,DO,sizeof
43.與十六進制數CD相等的十進制數是______。
A.205B.206C.207D.208
44.以下程序的輸出結果是()。#include<stdio.h>intfan(int);main(){intw=5;fun(w);printf("\n");}fun(intk){if(k>0)fun(k-1);printf("%d",k);}
A.54321B.012345C.12345D.543210
45.以下選項中,與k=n++完全等價的表達式是A.k=n,n=n+1B.n=n+1,k=nC.k=++nD.k+=n+1
46.若有下列定義(設int類型變量占2個字節(jié)):inti=8;則下列語句:printf("i=%08d",i);輸出的結果是()。
A.i=8,B.i=00000008,C.i=08,D.8
47.能正確表“當x的取值在[1,10]和[100,110]范圍內為真,否則為假”的表達式是()。
A.(x>=1)&&(x<=10)&&(x>=100)&&(x<=110)
B.(x>=1)‖(x<=10)‖(x>=100)‖(x<=110)
C.(x>=1)&&(x<=10)‖(x>=100)&&(x<=110)
D.(x>=1)‖(x<=10)&&(x>=100)‖(x<=110)
48.關系代數運算是以______為基礎的運算。
A.關系運算B.謂詞運算C.集合運算D.代數運算
49.若有以下說明和語句:structst{intn;char*ch;};structsta[3]={5,"abc",7,"def",9,"ghk"},*p=a;則值為6的表達式是______。
A.p++->nB.p->n++C.(*p).n++D.++p->n
50.軟件工程的結構化生命周期方法,通常是將軟件生命周期劃分為計劃、開發(fā)和運行3個時期,下列選項中的______工作應屬于軟件開發(fā)期的內容。
①需求分析
②可行性研究
③總體設計
④問題定義
A.①和②B.①和③C.①、②和④D.全部
51.有以下程序:voidsott(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;)}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},I;sort(aa+2,5);for(i=0;i<10;i++)printf("%d",aa[i]);printf("\n");}程序運行后的輸出結果是______。
A.1,2,3,4,5,6,7,8,9,10,
B.1,2,7,6,3,4,5,8,9,10,
C.1,2,7,6,5,4,3,8,9,10,
D.1,2,9,8,7,6,5,4,3,10,
52.下列敘述中,不屬于軟件需求規(guī)格說明書的作用的是()
A.便于用戶,開發(fā)人員進行理解和交流
B.反映出用戶問題的結構,可以作為軟件開發(fā)工作的基礎和依據
C.作為確認測試和驗收的依據
D.便于開發(fā)人員進行需求分析
53.有如下程序intfunc(inta,intb){return(a+b);}main(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf("%d\n",r);}該程序的輸出結果是______。
A.12B.13C.14D.15
54.設有定義:intk=1,m=2;floatf=7;則下列選項中錯誤的表達式是()。
A.k=k>=kB.-k++C.k%int(f)D.k>=f>=m
55.請選擇以下語句的輸出結果()。printf("%d\n",strlen("\t\"\065\xff\n"));
A.5B.14C.8D.輸出項不合法,無正常輸出
56.下列程序的輸出結果是()。#include<stdio.h>f(intA){intb=0;staticintc=4;a=c++;b++;return(A);}main(){inta=2,i,c;for(i=0;i<2;i++)c=f(a++);printf("%d\n",C);}
A.4B.7C.6D.5
57.有定義語句: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);
58.以下程序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
59.有如下程序段:#include<stdio.h>#defineMax(a,b)a>b?a:bmain(){inta=5,b=6,c=4,d;d=c+Max(a,b);printf("%d",d);}其輸出結果為______。
A.10B.5C.6D.編譯錯誤
60.以下程序的功能是:給r輸入數據后計算半徑為r的圓面積s。程序在編譯時出錯。main()/*Beginning*/{intr;floats;scanf("%d",&);s=*π*r*r;printf("s=%f\n",s);}出錯的原因是
A.注釋語句書寫位置錯誤
B.存放圓半徑的變量r不應該定義為整型
C.輸出語句中格式描述符非法
D.計算圓面積的賦值語句中使用了非法變量
四、選擇題(20題)61.以下定義數組的語句中錯誤的是()。
A.intnum[][3]={{1,2},3,4,5,6};
B.intnUITI[2][4]={{1,2},{3,4},{5,6}};
C.intnum[]={1,2,3,4,5,6};
D.intnum[][4]={1,2,3,4,5,6’};
62.數據的存儲結構是指()。
A.數據所占的存儲空間
B.數據的邏輯結構在計算機中的存放形式
C.數據在計算機中的順序存儲方式
D.存儲在計算機外存中的數據
63.有以下程序執(zhí)行后的輸出結果是()。
A.3B.2C.1D.4
64.有以下程序:
若想通過鍵盤輸入,使得al的值為12,a2的值為34,cl的值為字符a,c2的值為字符b,程序運行后的輸出結果是:l2,a,34,b。則正確的輸入格式是(以下-代表空格,<;CR>;代表回車)()。
A.12-a34-b<CR>
B.12-a-34-b<CR>
C.12,a,34,b<CR>
D.12a34b<CR>
65.函數ftell(fp)的作用是()。
A.得到fp所指向文件的當前讀寫位置B.初始化流式文件的位置指針C.移動流式文件的位置指針D.以上答案均正確
66.(52)棧和隊列的共同點是()
A.都是先進后出B.都是先進先出
C.只允許在端點處插入和刪除元素
D.沒有共同點
67.
68.(8)數據庫系統(tǒng)的核心是()
A.數據模型
B.數據庫管理系統(tǒng)
C.軟件工具
D.數據庫
69.下面的程序段運行后,輸出結果是()。
A.9B.不確定值C.0D.18
70.設x、y和z是int型變量,且x=4,y=6,z=8,則下列表達式中值為0的是()。
A.x&&yB.x<=yC.x||++y&&y-zD.!(x<y&&!z||1
71.
以下程序的輸出結果是()。
main
{charst[20]="hello\0\t\\\";
printf("%d%d\n",strlen(st).sizeof(st));
}
A.99B.520C.1320D.2020
72.有以下程序
#include<stdio.h>
#include<string.h>
main()
{chara[10]=”abcd”;
printf("%d,%d\n",strlen(a),sizeof(a));
}
程序運行后的輸出結果是()。
A.7,4
B.4,10
C.8,8
D.10,10
73.
74.以下關于宏的敘述中正確的是()。
A.宏替換沒有數據類型限制
B.宏定義必須位于源程序中所有語句之前
C.宏名必須用大寫字母表示
D.宏調用比函數調用耗費時間
75.有定義如下:
structsk
{inta;
floatb;
}data,*p;
如果p=&data;則對于結構變量data的成員a的正確引用時()
A)(*).data.aB)(*p).a
C)p->data.aD)p.data.a
76.以下不能輸出字符A的語句是()(注:字符A的ASCIl碼值為65,字符a的ASCIl碼值為97)。
77.數據庫管理系統(tǒng)中負責數據模式定義和數據的物理存取構建的語言是()。
A.數據定義語言B.數據管理語言C.數據操縱語言D.數據控制語言
78.以下敘述中錯誤的是()。
A.gets函數用于從終端讀人字符串
B.getehar函數用于從磁盤文件讀人字符
C.fputs函數用于把字符串輸出到文件
D.fwrite函數用于以二進制形式輸出數據到文件
79.以下選項中不能用做C程序合法常量的是()。
A.1,234B.‘\123’C.123D.“\x7G”
80.
五、程序改錯題(1題)81.下列給定程序中,函數proc()的功能是:根據以下公式求π的值,并作為函數值返回。例如,給指定精度的變量eps輸人0.0001時,應當輸出Pi=3.141358。π/2=1+t/3+1/3*e/5+1/3*2/5*3/7+1/3*2/5*3/7*4/9……請修改程序中的錯誤,使它能得出正確的結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:,
六、程序設計題(1題)82.規(guī)定輸入的字符串中只包含字母和*號。編寫函數fun(),其功能是:刪除字符串中所有的*號。編寫函數時,不得使用C語言提供的字符串函數。例如,字符串中的內容為“****A*BC*DEF*G****”,刪除后,字符串中的內容應當是“ABCDEFG”。注意:部分源程序給出如下。請勿改動main()函數和其他函數中的任何內容,僅在函數fun()的花括號中填入編寫的若干語句。試題程序:
參考答案
1.AC語言規(guī)定定義數組時,數組的長度必須是整型常量,數組說明符的方括號中表達式只要是常量即合法,因此選項B錯誤。C語言規(guī)定,數組元素下標必須是非負整數,因此選項C錯誤。選項D中,“chararray[4]”數組的長度為4,“army[“3”]”中“3”是常量字符串,與C語言規(guī)定數組的下標必須是非負整數不符。故本題答案為A選項。
2.A算法的有窮性,是指算法必須能在有限的時間內做完,即算法必須能在執(zhí)行有限個步驟之后終止。
3.C
4.C
5.C\n本題考查邏輯值假,在程序中非0字符表示邏輯真,0表示邏輯假,所以答案選擇C。
\n
6.D解析:函數scanf()的調用形式是:scanf(格式字符串,輸入項地址表)。其中,“格式字符串”是要輸入的變量的格式符;“輸入項地址表”是要輸入的變量的地址。本題中定義變量a為雙精度型變量,雙精度變量的格式符為“1e”;變量的地址用取地址符“&”加變量名表示,如變量a的地址為“&a”。
7.C只有當3個if條件同時成立,即能夠同時被2、3、7整除時,才輸出i的值,而從0到50能夠同時被2、3、7整除的數只有42,故選擇C選項。
8.A
9.C
10.C對于表達式“(m=a>b)&&(n=c>d)”,首先執(zhí)行m=a>b,由于a、b的值分別為1、2,因此a>b的值為0,m的值為0,又由于邏輯與運算符&&的短路原則,第1個表達式的值為假,因此整個表達式的值已經確定為假,第2個表達式不會被執(zhí)行,n的值依然是2。本題答案為C選項。
11.C
12.A?A)選項中逗號表達式先計算第一表達式2*x,然后計算表達式x+=2的值,即x=x+2即4,整個逗號表達式為第二個表達式的值4,所以選A)。B)選項中首先計算逗號表達式中第一一個表達式x++,此時x為3,再執(zhí)行第二個表達式2*x=2*3=6,所以逗號表達式為第二個表達式的值6。C)選項的賦值表達式可以表示為x=x*(1+x)=2*(1+2)=6。D)選項中的表達式可以表示為x=x*(x+1)=2*3=6。
13.A
14.D
15.D
\n本題考查字符串比較函數strcmp(s1,s2),若s1>s2,則返回1;若s1=s2,則返回0;若s1<s2,則返回-1。字符串依次比較的是它們字符的ASCIl碼值。
\n
16.A表達式“(int)(x*1000+0.5)”使用了強制轉換,其計算結果為5169,(5169/1000.0)=5.169。所以“printf(“%lf\\n”,5.169);”結果是5.16900。故本題答案為A選項。
17.A宏替換是在編譯階段前的預處理階段,對程序中的宏完成文本替換,因此宏替換不占用運行時間,選項A正確;預處理命令行無須在源文件的開頭,它可以出現在程序的任何一行的開始部位,其作用一直持續(xù)到源文件的末尾,選項B錯誤;在源文件的一行上至多只能有一條預處理命令,選項C錯誤;宏名通常使用大寫字母表示,這并不是語法規(guī)定,只是一種習慣,選項D錯誤。本題答案為A選項。
18.A
19.B
20.A在本題中,程序首先定義一個返回類型為整型的函數fun,該函數帶有一個指針型的形參變量str,從主函數中對其調用時傳遞的參數我們可以知道,該指針指向的是一個數組,在該函數體中,首先定義兩個整型變量,然后執(zhí)行循環(huán),循環(huán)變量i的初始值為0,循環(huán)結束的條件是str[i]!=’\\0’,表示取到的數組元素是字符串結束標識,即字符串中的字符被處理完,在循環(huán)體中,首先執(zhí)行條件判斷語句if(str[i]!=’’),如果結果為真,說明取到的當前字符不是空字符,這時執(zhí)行str[j++]=str[i],即將非空格字符保存到數組中;如果為假,說明取到了空格字符,此時不保存,而接著執(zhí)行下次循環(huán)跳過空格字符。循環(huán)結束后執(zhí)行str[j]=’\\0’;,即保存字符結束標識符,用來標識字符串結束。通過上面的這些分析,我們可以知道函數fun的作用是去掉字符數組中的空格字符。
在主函數中,首先定義了一個大小為81的字符數組,然后調用函數clrscr()清除輸入文本窗口,接著輸出一條提示語句,執(zhí)行gets(str);語句,該語句的作用是從鍵盤輸入一個字符串到str數組,碰到換行符結束。然后調用函數fun,其實參為str。通過上面對函數fun作用的分析我們可以知道,調用函數后輸入字符串中的空格符都被刪除了,最后得到的字符串為asdafaaz67。
程序最后執(zhí)行輸出語句,輸出字符數組str中的字符串,因此,程序最終的輸出結果是asdafaaz67,本題答案選A。
21.28
22.99解析:宏替換的原則是按原樣替換,本題中遇到形參x則以實參k+1替換,其他字符不變,所以JFT(k+1)經替換后為k+1,k+1,則a=++k+1*k+1。若k的值為3,則經過運算為a=4+1*4+1=9。
23.1212解析:本題的第一個for循環(huán)用于給數組arr賦初值,第二個for循環(huán)用于求和運算。由于第二個for循環(huán)初始值為1,而循環(huán)條件為i<4,所以求的是arr[1]到arr[3]及i的和,所以輸出結果為12。
24.88解析:本程序定義了3個指針變量p1、p2、p,并且將,、b的地址分別賦給P1、p2,則*p1=a=2,*p2=b=4,所以表達式*p1*(*p2)的值是8。在賦值語句的左邊是*(p=&c),即使指針p指向了變量c,因而*(p)代表了c的存儲單元,賦值語句“*(p=&c)=*p1*(*p2);”是把整數8賦給了變量c。
25.黑盒軟件測試的方法有三種:動態(tài)測試、靜態(tài)測試和正確性證明。設計測試實例的方法一般有兩類:黑盒測試法和白盒測試法。在使用黑盒法設計測試實例時,測試人員將程序看成一個“黑盒”,即不關心程序內部是如何實現的,只是檢查程序是否符合它的“功能說明”,所以使用黑盒法設計的測試用例完全是根據程序的功能說明來設計的。
26.morningclassmorningclass解析:本題考查了兩個知識點:①“++,--”運算后綴形式是先使用變量原來的值,使用完后再使其增1或減1;②在switch語句中,當n='c'時,執(zhí)行“case'c'”,輸出morning;因為此句中沒有break語句,因此接著執(zhí)行“case'd':”,輸出class,最終輸出結果為morningclass。
27.存儲結構存儲結構解析:數據結構包括3個方面,即數據的邏輯結構、數據的存儲結構及對數據的操作運算。
28.棧棧解析:考查考生對棧和隊列概念的掌握。按'先進后出'原則組織數據的數據結構是棧;按'先進先出'原則組織數據的數據結構是隊列。
29.線性結構線性結構解析:與棧類似,隊列也是線性表,也町以采用鏈式存儲結構。
30.結構結構解析:路徑測試是白盒測試方法中的—種,它要求對程序中的每條路徑最少檢查一次,目的是對軟件的結構進行測試。
31.6060解析:程序中定義a是一個3行2列的二維數組,p是指向兩個元素的一維數組指針,并讓p指向二維數組a的首行。則代碼*(*(p+2)+1)中的p+2指向二維數組a的第三行a[2],*(p+2)指向a[2[]0],*(p+2)+1指向a[2][1],*(*(p+2)+1)是引用a[2][1],其值是60。
32.2.0。2.0。解析:x和y為整數,運算符“/”在這里是整型除,整除后值為0。
33.實例將屬性、操作相似的對象歸為類,也就是說,類是具有共同屬性、共同方法的對象的集合。所以,類是對象的抽象,對象則是其對應類的一個實例。
34.關系模型關系模型解析:數據庫管理系統(tǒng)是位于用戶與操作系統(tǒng)之間的一層系統(tǒng)管理軟件,是一種系統(tǒng)軟件,是用戶與數據庫之間的一個標準接口。其總是基于某種數據模型,可以分為層次模型、網狀模型和關系模型。
35.1+a1-a1+a,1-a解析:考查條件運算符的使用。因為題目中求的是1+|a|的值,即1和a的絕對值之和,所以根據數學中求絕對值的規(guī)則;當a>=0時,絕對值取本身,當a<0時,絕對值取相反數,再結合條件運算符的計算規(guī)則,可得到本題的答案為a>=0。
36.'\0''\\0'解析:本題涉及字符數組和指針的兩個知識點:①在C語言中,字符型數組在存放字符串時會自動在末尾加上字符串結束標識符'\\0'所以題中數組str有6個元素。②ptr指向數組str的首地址,ptr+5是指向str[5],*(ptr+5)是引用str[5]的值,即'\\0'。
37.-4-4解析:因為n=0,所以!n為真,執(zhí)行x-=1;得到x=x=2-1=1;m=1為真,執(zhí)行x-=2;得到x=x-2=1-2=-1;x=-1為真,執(zhí)行x-=3;得到x=x-3=-1-3=-4。
38.2525解析:本題考查帶參數的宏的定義及相關運算。運算過程為:t=POW(x+y)=(2+3)*(2+3)=25。
39.88解析:本程序定義了3個指針變量p1、p2、p,并且將a、b的地址分別賦給p1、p2,則*p1=a=2,*p2=b=4,所以表達式*p1*(*p2)的值是8。在賦值語句的左邊是*(p=&c),即使指針p指向了變量c,因而*(P)代表了c的存儲單元,賦值語句“*(p=&c)=*p1*(*p2);”是把整數8賦給了變量c。
40.
41.C解析:數據結構概念一般包括3個方面的內容:數據之間的邏輯關系、數據在計算機中的存儲方式以及在這些數據上定義的運算的集合。數據的邏輯結構是數據間關系的描述,它只抽象地反映數據元素間的邏輯關系,而不管其在計算機中的存儲方式。數據的邏輯結構分為線性結構和非線性結構。若各數據元素之間的邏輯關系可以用一個線性序列簡單地表示出來,則稱之為線性結構,否則稱之為非線性結構。線性表是典型的線性結構,而樹形結構是典型的非線性結構。
42.B解析:C語言規(guī)定標識符只能由字母、數字和下畫線3種字符組成,且第一個字符必須為字母或下畫線,排除選項C)和D);C語言中還規(guī)定標識符不能為C語言的關鍵字,而選項A)中void為關鍵字,故排除選項A)。
43.A解析:CD=12*16+13=192+13=205。
44.B解析:本題考查函數的遞歸調用。fun函數共被調用6次,即fun(5)、fun(4)、fun(3)、fun(2)、fun(1)、fun(0),其中fun(5)是main函數調用的,其余是在fun函數中調用的。
45.A解析:在本題中k=n++,為后綴運算。根據其運算規(guī)則,首先n先加一,但n++表達式的值依然n原來的值,即k的值沒有改變。選項A中先給k賦值為n,然后n再加1,k值沒有變化,所以這個表達式和本題中表達式等價:選項B中先n加1,然后將n加1后的值賦給k,k變化了比原來的值大1,所以這個表達式和本題中表達式不等價:選項C中先計算表達式左邊的表達式++=N的值,執(zhí)行++n后,左邊的表達式的值為n的值加1,然后將n+1后的值賦給k,所以這個表達式和本題中的表達式不等價;選項D中表達式展開為k=k+(n+1),k的值發(fā)生了變化,所以這個表達式和本題中的表達式不等價。所以4個選項中A正確。
46.B解析:本題考查printf函數的格式?!?08”格式符中的“0”表示在指定數據輸出寬度的同時,在數據前面的多余空格處加“0”;“8”表示指定數據的輸出寬度為8位。
47.C解析:本題考查邏輯與(&&)和邏輯或(‖)運算符的使用。x>=1和x<=10是邏輯與的關系,因此C語言表達式應寫成“(x>=1)&&(x<=10)”,x>=100和x<=110也是邏輯與的關系,因此C語言表達式應寫成“(x>=100)&&(x<=110)”;[1,10]和[100,110]是邏輯或的關系,因此只要將前兩個表達式用邏輯或運算符連接起來即可,所以最后的表達式:(x>=1)&&(X<=10)‖(x>=100)&&(x<=110)。
48.C解析:關系代數是以集合代數為基礎女發(fā)展起來的,它是以關系代數作為運算對象的一組高級運算的集合。它的基本操作是并、交、差、笛卡爾積,另外還包括針對數據庫環(huán)境專門設計的操作,包括對關系進行垂直分割(投影)、水平分割(選擇)、關系的結合(連接)等。
49.D解析:根據結構變量的存儲特點,p+1意味著增加地址值為結構體數組a的一個元素所占的字節(jié)數,即p++使p由a[0]指向a[1]起始地址。本題++p->n得到p指向的結構體變量中成員n的值使之加1。因為p指向數組a起始地址,p->n的值為5,再掏打自加1運行,結果為6。
50.B
51.C解析:aa+2=aa[2],因此sort(aa+2,5)是從aa[2]開始,依次與后面的元素進行比較,將當前值小于其后一項的值進行互換,循環(huán)5次。
52.D解析:軟件需求規(guī)格說明書SRS,SoftwareRequirementSpecification)是需求分析階段的最后成果,是軟件開發(fā)中的重要文檔之一。它有以下幾個方面的作用,①便于用戶、開發(fā)人員進行理解和交流;②反映出用戶問題的結構,可以作為軟件開發(fā)工作的基礎和依據;③作為確認測試和驗收的依據。
53.D解析:調用函數func(x,y),返回x+y,即7;再調用函數func(7,z),返回7+z,即15。
54.C解析:在C語言中,求余運算符“%”兩邊的運算對象都應為整型數據,所以需要對變量f進行強制類型轉換,正確的寫法為k%(int)f。在C語言中,邏輯運算符與賦值運算符、算術運算符、關系運算符之間從高到低的運算優(yōu)先次序是:!(邏輯“非”)、算術運算符、關系運算符、&&(邏輯“與”)、||(邏輯“或”)、賦值運算符。根據運算符的優(yōu)先級與結合性,對于選項A),先計算k>=k的值(為真,即1),再用1對k進行賦值。對于選取項B),先計算k++的值,再對其取負數。對于選項D),先計算k>=f的值(為假,即0),再用0與出進行比較,故最終結果為0。
55.A解析:本題考查用strlen函數計算字符串長度的方法。該字符串中包含的字符是:'\\t'(跳格符)、'\\''(雙引號)、'\\065'(ASCII值為八進制065,也即十進制為53的字符)、'\\xff'(ASCII值為十六進制ff,也即十進制為255的字符)、'\\n'(換行符)。
56.D解析:本題考查靜態(tài)變量的使用方法和for循環(huán)。在函數調用時,static變量在函數調用結束后所作的所有變化均不保持,所以當i=1時,第2次進入f函數時c=5,所以最終main函數中c的值為5。
57.B解析:scanf函數的第一個參數是格式控制字符串,該字符串中所出現的格式控制符必須與scanf函數的笫二個及其后面的參數一一對應.本題中四個選項的格式控制字符串都是'%d%s',其中包括兩個格式控制符%d和%s,它們分別表示輸入一個十進制整數和輸入一個字符串,其對應的參數應該分別為一個整型變量的地址和一個字符型數組的首地址。變量的地址可以通過對變量做取地址(&)運算來得到,而宇符型數組的首地址則可以直接通過數組名來得到。所以,4個選項中選項B符合題意。
58.A解析:觀察題目,可以發(fā)現,*p=&aa[0][0]語句實際是將數組aa的首地址賦給了指針變量p,將i的值帶入for循環(huán)中,i=0時,aa[0][1]=3,*p=2;*p輸出的是指針所指向的數組值,此時p所指向的是aa[O][0],輸出2,而i=1時執(zhí)行了++p操作使指針向后移動指向了aa[0][1],所以在輸出*p時應為3。
59.B解析:在C語言中,宏定義是直接替換的,所以在c+a>b?a:b這個條件表達式中,c+a>b為真,所以用a的值作為整個表達式的值,而a的值為5,所以整個表達式的值為5。
60.D解析:計算圓面積的賦值語句中使用了非法變量π。所以,答案為選項D)。注意:注釋語句可以出現在程序中的任意位置,故選項A)中的描述錯誤;圓的半徑可以是整型,也可以是實型,定義成哪種類型都不算錯,故選項B)中的描述錯誤;顯而易見,選項D)中的描述也錯誤。
61.B選項B中,intIrlllm[2][4]={{1,2},{3,4},{5,6}};定義數組是2行4列,但是初始化的結構是3行2列,因此初始化錯誤。故答案為B選項。
62.B解析:數據的存儲結構,又稱為數據的物理結構,是數據的邏輯結構在計算機中的存放形式,數據的存儲結構有順序結構、鏈式結構、散列結構和索引結構等。
63.Ac的值為a乘以b的值,為3。所以答案選擇A)。
64.D在輸入多個數據時,若格式控制串中無非格式字符,則認為所有輸入的字符均為有效字符。所以應按選項D的順序輸入數據。
65.A解析:位置指針當前值函數ftell()的基本調用格式為:ftell(fp)。
ftell()函數的參數說明:“fp”是指向文件的文件型指針。
ftell函數的功能:得到fp所指向文件的當前讀寫位置,即位置指針的當前值,如果函數的返回值為-1L,表示出錯。
66.C注:這一共同點和線性表不一樣
67.B
68.B數據庫管理系統(tǒng)是一種系統(tǒng)軟件,負責數據庫中的數據組織、數據操縱、數據維護、控制及保護和數據服務等,因此數據庫管理系統(tǒng)是數據庫系統(tǒng)的核心。
69.C本題主要考查的是用二維數組首地址和
下標來引用二維數組元素的方法。通過分析可知,程序中的雙重循環(huán)定義了一個如下的二維數組:
012
234
456
簪由于數組的下標是從0開始的,所以二維數組元素a[i][j]表示的是二維數組a的第i+1行、第j+1列對應位置的元素。
70.D本題考查邏輯運算符的使用。當“&&”的兩個運算對象都是邏輯1時,表達式返回值才是1;“||”的兩個運算對象至少有一個是邏輯1時,表達式返回值也是1,x<y為1,!z為0,1&&0為1,0||為1,因此,!1為0。
71.B
\n從題目中可知,\0、\t、\\分別為一個字符,而sizeof是裝字節(jié)個數的函數,其中包括\O占的字節(jié),strlen函數是求數組長度的函數;其以\0結束,因此
\nstrlen的值為5,sizeof的值為20。
\n
72.B\nstrlen是求字符串的長度,結果為4,sizeof是求數組的長度,而數據在定義時已給出長度為10。
\n
73.D
74.A宏定義寫在函數的花括號外邊,作用域為其后的程序,通常在文件的最開頭,因此B)選項中宏定義必須位于源程序中所有語句之前是錯誤的。宏名一般用大寫,但不是必須用大寫,因此c)選項錯誤。宏展開不占運行時間,只占編譯時間,函數調用占運行時間(分配內存、保留現場、值傳遞、返回值),因此D)選項錯誤。
75.B結構體變量的引用。
76.A%d輸出整數,所以選擇A)。
77.A\n數據定義語言負責數據模式定義和數據的物理存取構建;數據操縱語言負責數據的操縱;數據控制語言負責數據完整性、安全性的定義與檢查以及并發(fā)控制、故障恢復等功能。無數據管理語言的說法。
\n
78.B本題考查字符處理函數和文件操作函數。屬于基礎知識,其中B選項9etchar函數是用于從終端讀人一個字符。
79.AA選項中逗號是一個操作符。
80.A
81.(1)錯誤:while(tDeps)
正確:while(tD=eps)
(2)錯誤:return(s);
82.
【解析】此題是刪除字符串中的星號。思路是通過for循環(huán)來完成對字符串的遍歷,通過if判斷,找到不是“*”的字符,將其賦值到數組a中星號前的位置,“if(a[i]!=ˊ*ˊ)”“a[j++]=a[i]”,最后返回主函數將刪除*后的字符串輸出即可。
</y&&!z||1>2022-2023年貴州省銅仁地區(qū)全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________
一、單選題(20題)1.以下敘述正確的是()。
A.“charc1,*c2,*c3[10];”是合法的變量定義語句
B.數組說明符的方括號中不能使用表達式
C.數組元素下標可以是非整數
D.若有定義“chararray[4];”,則語句“printf(“%c”,array[“3”]);”是合法的
2.算法的有窮性是指A.算法程序的運行時間是有限的
B.算法程序所處理的數據量是有限的
C.算法程序的長度是有限的
D.算法只能被有限的用戶使用
3.某某二叉樹的中序序列和后序序列正好相反,則該二叉樹一定是______的二叉樹
A.空或只有一個結點B.高度等于其結點數C.任一結點無左孩子D.任一結點無右孩子
4.計算機系統(tǒng)的組成是______。
A.主機、外設B.運算器、控制器C.硬件系統(tǒng)和軟件系統(tǒng)D.CPU、內存儲器
5.以下選項中,能表示邏輯值“假”的是()
A.1B.0.000001C.0D.100.0
6.若有"doublea;",則正確的輸入語句是()。
A.scanf("%1f",a);
B.scanf("%f",&a);
C.scanf("%1f",&a)
D.scanf("%1e",&a);
7.有以下程序:main{intx,i;for(i=l;i<=50;i++){x=i:if(x%2=0)if(x%3=0)if(X%7=0)printf(”%d,i)”;}}輸出結果是()。A.28B.27C.42D.4l
8.設有二維數組A7×8,每個數據元素占8個字節(jié)存儲單元,順序存放,A第一個元素A0,0的存儲地址為1000,按行優(yōu)先存放時,元素A3,4的地址為()。
A.1224B.1208C.1200D.1216
9.
10.若有定義“inta=1,b=2,c=3,d=4,m=2,n=2;”,則執(zhí)行“(m=a>b)&&(n=c>d)”后n的值是()。
A.4B.3C.2D.1
11.
12.設有定義:int?x=2,以下表達式中,值不為6的是()。
A.2*<.x+=2B.x++.2*xC.x=x*(1+x)D.x*=x+1
13.
14.
15.
若輸入“abcdef”“abdef”,下述程序的輸出結果為()。
#include<stdio.h>
#include<string.h>
main
{intn;
chars1[20],s2[20],*p1,*p2;
scanf("%s",s1);
scanf("%S",s2);
p1=s1;
p2=s2;
n=strcmp(p1,p2);
printf("Vood\n",n);
}
A.-1B.0C."abcdef"D."abdef"
16.設有定義“doublex=5.16894;”,則語句“printf(“%lf\n”,(int)(x*1000+0.5)/1000.);”的輸出結果是()。
A.5.16900B.5.16800C.0.00000D.輸出格式說明符與輸出項不匹配,產生錯誤信息
17.以下敘述中正確的是()。
A.宏替換不占用程序的運行時間
B.預處理命令行必須位于源文件的開頭
C.在源文件的一行上可以有多條預處理命令
D.宏名必須用大寫字母表示
18.
19.設一棵二叉樹有3個葉子節(jié)點,有8個度為1的節(jié)點,則該二叉樹中總的節(jié)點數為()
A.12B.13C.14D.15E.16F.17
20.如下程序段
#include<stdio.h>
#include<ctype.h>
#include<conio.h>
intfun(char*str)
{inti,j=0;
for(i=0;str[i]!=’\0’;i++)
if(str[i]!=’’)str[j++]=str[i];
str[j]=’\0’;
}
main()
{
charstr[81];
intn;
clrscr();
printf("Inputastring:");
gets(str);
fun(str);
printf("%s\n",str);
}
當運行程序時,輸入asdafaaz67<回車>,則輸出是A.A.asdafaaz67
B.asdafaaz67
C.asd
D.z67
二、2.填空題(20題)21.設a,b,c為整型數,且a=2,b=3,c=4,則執(zhí)行完以下語句后,a的值是【】。
a*=16+(b++)-(++c);
22.以下程序的輸出結果是【】。
#include<stdio.h>
#deftneJFT(x)x*x
main()
{inta,k=3;
a=++JFT(k+1);
printf("%d",a);
}
23.下列程序執(zhí)行后輸出的結果是【】。
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)arr[i]=i;
for(i=1;i<4;i++)k+=arr[i]+i;
printf("%d\n",k);
24.下列程序的輸出結果是______。
main()
{inta=2,b=4,c=6;
int*p1=&a,*p2=&b,*p;
*(p=&c)=*p1*(*p2);
printf("%d\n",c);
}
25.若按功能劃分,軟件測試的方法通常分為白盒測試方法和【】測試方法。
26.下列程序段的輸出結果是______。
intn='c';
switch(n++)
{default:printf("error");break;
case'a':printf("good");break;
case'c':printf("morning");
case'd':printf("class");
}
27.數據結構包括數據的邏輯結構、數據的【】以及列數據的操作運算。
28.按"先進后出"原則組織數據的數據結構是【】。
29.數據結構分為線性結構和非線性結構,帶鏈的隊列屬于[]。
30.軟件測試中路徑覆蓋測試是整個測試的基礎,它是對軟件【】進行測試。
31.設有以下定義和語句,則*(*(p+2)+1)的值為【】。
inta[3][2]={10,20,30,40,50,60},(*p)[2];
p=a;
32.設x和y均為int型變量,且x=1,y=2,則表達式2.0+x/y的值為_______。
33.類是一個支持集成的抽象數據類型,而對象是類的【】。
34.數據庫管理系統(tǒng)常見的數據模型有層次模型、網狀模型和【】3種。
35.以下條件表達式可計算:1+|a|的值,請?zhí)羁铡>=0?【】:【】
36.設有下列的程序段;
charstr[]="Hello";
char*ptr;
ptr=str;
執(zhí)行上面的程序段后,*(ptr+5)的值為______。
37.有以下程序:
#include<stdio.h>
main()
{intn=0,m=1,x=2;
if(!n)x-=1;
if(m)x-=2;
if(x)x-=3;
printf("%d\n",x);
}
執(zhí)行后的輸出結果是【】。
38.下列程序的運行結果是______。
#definePOW(r)(r)*(r)
main()
{intx=3,y=2,t;
t=POW(x+y);
printf("%d\n",t);
}
39.下列程序的輸出結果是______。
main()
{inta=2,b=4,e=6;
int*p1=&a,*p2=&b,*p;
*(p=&c)=*p1*(*p2);
printf("%d\n",c);
}
40.設在主函數中有以下定義和函數調用語句,且fun函數為void類型;請寫出fun函數的首部【】(要求形參名為b)。main(){doubles[10][22];intn;……fun(s);……}
三、1.選擇題(20題)41.根據數據結構中各數據元素之間前后件關系的復雜程度,一般將數據結構分成()。
A.動態(tài)結構和靜態(tài)結構B.緊湊結構和非緊湊結構C.線性結構和非線性結構D.內部結構和外部結構
42.下列可用于C語言用戶標識符的一組是
A.void,define,WORD
B.a3_b3,_123,Car
C.For,-abc,IFCase
D.2a,DO,sizeof
43.與十六進制數CD相等的十進制數是______。
A.205B.206C.207D.208
44.以下程序的輸出結果是()。#include<stdio.h>intfan(int);main(){intw=5;fun(w);printf("\n");}fun(intk){if(k>0)fun(k-1);printf("%d",k);}
A.54321B.012345C.12345D.543210
45.以下選項中,與k=n++完全等價的表達式是A.k=n,n=n+1B.n=n+1,k=nC.k=++nD.k+=n+1
46.若有下列定義(設int類型變量占2個字節(jié)):inti=8;則下列語句:printf("i=%08d",i);輸出的結果是()。
A.i=8,B.i=00000008,C.i=08,D.8
47.能正確表“當x的取值在[1,10]和[100,110]范圍內為真,否則為假”的表達式是()。
A.(x>=1)&&(x<=10)&&(x>=100)&&(x<=110)
B.(x>=1)‖(x<=10)‖(x>=100)‖(x<=110)
C.(x>=1)&&(x<=10)‖(x>=100)&&(x<=110)
D.(x>=1)‖(x<=10)&&(x>=100)‖(x<=110)
48.關系代數運算是以______為基礎的運算。
A.關系運算B.謂詞運算C.集合運算D.代數運算
49.若有以下說明和語句:structst{intn;char*ch;};structsta[3]={5,"abc",7,"def",9,"ghk"},*p=a;則值為6的表達式是______。
A.p++->nB.p->n++C.(*p).n++D.++p->n
50.軟件工程的結構化生命周期方法,通常是將軟件生命周期劃分為計劃、開發(fā)和運行3個時期,下列選項中的______工作應屬于軟件開發(fā)期的內容。
①需求分析
②可行性研究
③總體設計
④問題定義
A.①和②B.①和③C.①、②和④D.全部
51.有以下程序:voidsott(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;)}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},I;sort(aa+2,5);for(i=0;i<10;i++)printf("%d",aa[i]);printf("\n");}程序運行后的輸出結果是______。
A.1,2,3,4,5,6,7,8,9,10,
B.1,2,7,6,3,4,5,8,9,10,
C.1,2,7,6,5,4,3,8,9,10,
D.1,2,9,8,7,6,5,4,3,10,
52.下列敘述中,不屬于軟件需求規(guī)格說明書的作用的是()
A.便于用戶,開發(fā)人員進行理解和交流
B.反映出用戶問題的結構,可以作為軟件開發(fā)工作的基礎和依據
C.作為確認測試和驗收的依據
D.便于開發(fā)人員進行需求分析
53.有如下程序intfunc(inta,intb){return(a+b);}main(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf("%d\n",r);}該程序的輸出結果是______。
A.12B.13C.14D.15
54.設有定義:intk=1,m=2;floatf=7;則下列選項中錯誤的表達式是()。
A.k=k>=kB.-k++C.k%int(f)D.k>=f>=m
55.請選擇以下語句的輸出結果()。printf("%d\n",strlen("\t\"\065\xff\n"));
A.5B.14C.8D.輸出項不合法,無正常輸出
56.下列程序的輸出結果是()。#include<stdio.h>f(intA){intb=0;staticintc=4;a=c++;b++;return(A);}main(){inta=2,i,c;for(i=0;i<2;i++)c=f(a++);printf("%d\n",C);}
A.4B.7C.6D.5
57.有定義語句: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);
58.以下程序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
59.有如下程序段:#include<stdio.h>#defineMax(a,b)a>b?a:bmain(){inta=5,b=6,c=4,d;d=c+Max(a,b);printf("%d",d);}其輸出結果為______。
A.10B.5C.6D.編譯錯誤
60.以下程序的功能是:給r輸入數據后計算半徑為r的圓面積s。程序在編譯時出錯。main()/*Beginning*/{intr;floats;scanf("%d",&);s=*π*r*r;printf("s=%f\n",s);}出錯的原因是
A.注釋語句書寫位置錯誤
B.存放圓半徑的變量r不應該定義為整型
C.輸出語句中格式描述符非法
D.計算圓面積的賦值語句中使用了非法變量
四、選擇題(20題)61.以下定義數組的語句中錯誤的是()。
A.intnum[][3]={{1,2},3,4,5,6};
B.intnUITI[2][4]={{1,2},{3,4},{5,6}};
C.intnum[]={1,2,3,4,5,6};
D.intnum[][4]={1,2,3,4,5,6’};
62.數據的存儲結構是指()。
A.數據所占的存儲空間
B.數據的邏輯結構在計算機中的存放形式
C.數據在計算機中的順序存儲方式
D.存儲在計算機外存中的數據
63.有以下程序執(zhí)行后的輸出結果是()。
A.3B.2C.1D.4
64.有以下程序:
若想通過鍵盤輸入,使得al的值為12,a2的值為34,cl的值為字符a,c2的值為字符b,程序運行后的輸出結果是:l2,a,34,b。則正確的輸入格式是(以下-代表空格,<;CR>;代表回車)()。
A.12-a34-b<CR>
B.12-a-34-b<CR>
C.12,a,34,b<CR>
D.12a34b<CR>
65.函數ftell(fp)的作用是()。
A.得到fp所指向文件的當前讀寫位置B.初始化流式文件的位置指針C.移動流式文件的位置指針D.以上答案均正確
66.(52)棧和隊列的共同點是()
A.都是先進后出B.都是先進先出
C.只允許在端點處插入和刪除元素
D.沒有共同點
67.
68.(8)數據庫系統(tǒng)的核心是()
A.數據模型
B.數據庫管理系統(tǒng)
C.軟件工具
D.數據庫
69.下面的程序段運行后,輸出結果是()。
A.9B.不確定值C.0D.18
70.設x、y和z是int型變量,且x=4,y=6,z=8,則下列表達式中值為0的是()。
A.x&&yB.x<=yC.x||++y&&y-zD.!(x<y&&!z||1
71.
以下程序的輸出結果是()。
main
{charst[20]="hello\0\t\\\";
printf("%d%d\n",strlen(st).sizeof(st));
}
A.99B.520C.1320D.2020
72.有以下程序
#include<stdio.h>
#include<string.h>
main()
{chara[10]=”abcd”;
printf("%d,%d\n",strlen(a),sizeof(a));
}
程序運行后的輸出結果是()。
A.7,4
B.4,10
C.8,8
D.10,10
73.
74.以下關于宏的敘述中正確的是()。
A.宏替換沒有數據類型限制
B.宏定義必須位于源程序中所有語句之前
C.宏名必須用大寫字母表示
D.宏調用比函數調用耗費時間
75.有定義如下:
structsk
{inta;
floatb;
}data,*p;
如果p=&data;則對于結構變量data的成員a的正確引用時()
A)(*).data.aB)(*p).a
C)p->data.aD)p.data.a
76.以下不能輸出字符A的語句是()(注:字符A的ASCIl碼值為65,字符a的ASCIl碼值為97)。
77.數據庫管理系統(tǒng)中負責數據模式定義和數據的物理存取構建的語言是()。
A.數據定義語言B.數據管理語言C.數據操縱語言D.數據控制語言
78.以下敘述中錯誤的是()。
A.gets函數用于從終端讀人字符串
B.getehar函數用于從磁盤文件讀人字符
C.fputs函數用于把字符串輸出到文件
D.fwrite函數用于以二進制形式輸出數據到文件
79.以下選項中不能用做C程序合法常量的是()。
A.1,234B.‘\123’C.123D.“\x7G”
80.
五、程序改錯題(1題)81.下列給定程序中,函數proc()的功能是:根據以下公式求π的值,并作為函數值返回。例如,給指定精度的變量eps輸人0.0001時,應當輸出Pi=3.141358。π/2=1+t/3+1/3*e/5+1/3*2/5*3/7+1/3*2/5*3/7*4/9……請修改程序中的錯誤,使它能得出正確的結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:,
六、程序設計題(1題)82.規(guī)定輸入的字符串中只包含字母和*號。編寫函數fun(),其功能是:刪除字符串中所有的*號。編寫函數時,不得使用C語言提供的字符串函數。例如,字符串中的內容為“****A*BC*DEF*G****”,刪除后,字符串中的內容應當是“ABCDEFG”。注意:部分源程序給出如下。請勿改動main()函數和其他函數中的任何內容,僅在函數fun()的花括號中填入編寫的若干語句。試題程序:
參考答案
1.AC語言規(guī)定定義數組時,數組的長度必須是整型常量,數組說明符的方括號中表達式只要是常量即合法,因此選項B錯誤。C語言規(guī)定,數組元素下標必須是非負整數,因此選項C錯誤。選項D中,“chararray[4]”數組的長度為4,“army[“3”]”中“3”是常量字符串,與C語言規(guī)定數組的下標必須是非負整數不符。故本題答案為A選項。
2.A算法的有窮性,是指算法必須能在有限的時間內做完,即算法必須能在執(zhí)行有限個步驟之后終止。
3.C
4.C
5.C\n本題考查邏輯值假,在程序中非0字符表示邏輯真,0表示邏輯假,所以答案選擇C。
\n
6.D解析:函數scanf()的調用形式是:scanf(格式字符串,輸入項地址表)。其中,“格式字符串”是要輸入的變量的格式符;“輸入項地址表”是要輸入的變量的地址。本題中定義變量a為雙精度型變量,雙精度變量的格式符為“1e”;變量的地址用取地址符“&”加變量名表示,如變量a的地址為“&a”。
7.C只有當3個if條件同時成立,即能夠同時被2、3、7整除時,才輸出i的值,而從0到50能夠同時被2、3、7整除的數只有42,故選擇C選項。
8.A
9.C
10.C對于表達式“(m=a>b)&&(n=c>d)”,首先執(zhí)行m=a>b,由于a、b的值分別為1、2,因此a>b的值為0,m的值為0,又由于邏輯與運算符&&的短路原則,第1個表達式的值為假,因此整個表達式的值已經確定為假,第2個表達式不會被執(zhí)行,n的值依然是2。本題答案為C選項。
11.C
12.A?A)選項中逗號表達式先計算第一表達式2*x,然后計算表達式x+=2的值,即x=x+2即4,整個逗號表達式為第二個表達式的值4,所以選A)。B)選項中首先計算逗號表達式中第一一個表達式x++,此時x為3,再執(zhí)行第二個表達式2*x=2*3=6,所以逗號表達式為第二個表達式的值6。C)選項的賦值表達式可以表示為x=x*(1+x)=2*(1+2)=6。D)選項中的表達式可以表示為x=x*(x+1)=2*3=6。
13.A
14.D
15.D
\n本題考查字符串比較函數strcmp(s1,s2),若s1>s2,則返回1;若s1=s2,則返回0;若s1<s2,則返回-1。字符串依次比較的是它們字符的ASCIl碼值。
\n
16.A表達式“(int)(x*1000+0.5)”使用了強制轉換,其計算結果為5169,(5169/1000.0)=5.169。所以“printf(“%lf\\n”,5.169);”結果是5.16900。故本題答案為A選項。
17.A宏替換是在編譯階段前的預處理階段,對程序中的宏完成文本替換,因此宏替換不占用運行時間,選項A正確;預處理命令行無須在源文件的開頭,它可以出現在程序的任何一行的開始部位,其作用一直持續(xù)到源文件的末尾,選項B錯誤;在源文件的一行上至多只能有一條預處理命令,選項C錯誤;宏名通常使用大寫字母表示,這并不是語法規(guī)定,只是一種習慣,選項D錯誤。本題答案為A選項。
18.A
19.B
20.A在本題中,程序首先定義一個返回類型為整型的函數fun,該函數帶有一個指針型的形參變量str,從主函數中對其調用時傳遞的參數我們可以知道,該指針指向的是一個數組,在該函數體中,首先定義兩個整型變量,然后執(zhí)行循環(huán),循環(huán)變量i的初始值為0,循環(huán)結束的條件是str[i]!=’\\0’,表示取到的數組元素是字符串結束標識,即字符串中的字符被處理完,在循環(huán)體中,首先執(zhí)行條件判斷語句if(str[i]!=’’),如果結果為真,說明取到的當前字符不是空字符,這時執(zhí)行str[j++]=str[i],即將非空格字符保存到數組中;如果為假,說明取到了空格字符,此時不保存,而接著執(zhí)行下次循環(huán)跳過空格字符。循環(huán)結束后執(zhí)行str[j]=’\\0’;,即保存字符結束標識符,用來標識字符串結束。通過上面的這些分析,我們可以知道函數fun的作用是去掉字符數組中的空格字符。
在主函數中,首先定義了一個大小為81的字符數組,然后調用函數clrscr()清除輸入文本窗口,接著輸出一條提示語句,執(zhí)行gets(str);語句,該語句的作用是從鍵盤輸入一個字符串到str數組,碰到
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 快餐攤位租賃合同
- 2024【辦公大樓的物業(yè)管理委托合同】對付物業(yè)最有效的辦法
- 技術轉讓合同注意事項
- 2024日用品采購合同范本
- 2024年戶外廣告牌設置與發(fā)布合同
- 交通事故私了協(xié)議書模板
- 期刊廣告投放區(qū)域協(xié)議
- 農村調解協(xié)議書樣本
- 房產貸款合同匯編
- 2024家庭雇傭保姆合同協(xié)議書
- 微景觀制作課件
- 業(yè)務招待費審批單
- 建筑工程項目管理咨詢招標(范本)
- 三位數除兩位數的除法練習題
- 慢性胃炎的中醫(yī)治療培訓課件
- Python程序設計課件第7章面向對象程序設計
- 主題班會課防盜
- 幼兒園課件《撓撓小怪物》
- 教師教案檢查八大評分標準教案的評分標準
- 政府會計基礎知識講義
- 幼兒園整合式主題活動設計案例《溫馨家園》
評論
0/150
提交評論