版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2021-2022年湖北省隨州市全國計算機(jī)等級考試C語言程序設(shè)計測試卷一(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.若某線性表最常用的操作是存取任一指定序號的元素和在最后進(jìn)行插入和刪除運(yùn)算,則利用()存儲方式最節(jié)省時間。
A.順序表B.雙鏈表C.帶頭結(jié)點(diǎn)的雙循環(huán)鏈表D.單循環(huán)鏈表
2.在帶頭結(jié)點(diǎn)的單鏈表head為空的判定條件是()。
A.head=NULLB.head->next=NULLC.head->next=headD.head!=NULL
3.有以下程序:#include<stdio.h>main(){chars[]={“012xy”;inti,n=0;for(i=0;s[i]|=0;i++)if(s[i]>=‘a(chǎn)’&&s[i]<=‘z’)n++;printf(“%d\n”,n);}程序的運(yùn)行結(jié)果是()。
A.0B.2C.3D.5
4.在c語言中,變量的隱含存儲類別是()。
A.autoB.staticC.externD.無存儲類別
5.每次從無序表中取出一個元素,把它插入到有序表中的適當(dāng)位置,此種排序方法叫做()排序。
A.插入B.堆C.快速D.歸并排序
6.C語言中的變量只能由字母、數(shù)字和下劃線組成,且第一個字符()。
A.必須是字母B.必須是下劃線C.必須是下劃線和字母D.可以是字母.數(shù)字或下劃線中任一一種
7.有如下程序段
#include"stdio.h"
#include"string.h"
#defineN10
#defineM10
char*find(char(*a)[M],intn)
{char*q;inti;
q=a[0];
for(i=0;i<n;i++)
if(strcmp(a[i],q)<0)q=a[i];
returnq;}
main()
{chars[N][M]={"tomeetme","you","and","he","china"};
char*p;
intn=5;
p=find(s,n);
puts(p);}
則執(zhí)行后輸出的結(jié)果為A.A.heB.andC.youD.tomeetme
8.若有下列說明和語句,則對結(jié)構(gòu)體變量st中成員i的引用方式不正確的是()。Structstu{inti;intname;}st,*p;p=&st;
A.st.iB.*p.iC.(*p).iD.p->i
9.若主調(diào)用函數(shù)類型為double,被調(diào)用函數(shù)定義中沒有進(jìn)行函數(shù)類型說明,而return語句中的表達(dá)式類型為float型,則被調(diào)函數(shù)返回值的類型是()。
A.int型B.float型C.double型D.由系統(tǒng)當(dāng)時的情況而定
10.以下關(guān)于結(jié)構(gòu)化程序設(shè)計的敘述中正確的是()。
A.結(jié)構(gòu)化程序使用goto語句會很便捷
B.在c語言中,程序的模塊化是利用函數(shù)實現(xiàn)的
C.一個結(jié)構(gòu)化程序必須同時由順序、分支、循環(huán)三種結(jié)構(gòu)組成
D.由三種基本結(jié)構(gòu)構(gòu)成的程序只能解決小規(guī)模的問題
11.以下敘述中,不正確的是()。
A.使用staticfloata定義的外部變量存放在內(nèi)存中的靜態(tài)存儲區(qū)
B.使用floatb定義的外部變量存放在內(nèi)存中的動態(tài)存儲區(qū)
C.使用staticfloatc定義的內(nèi)部變量存放在內(nèi)存中的靜態(tài)存儲區(qū)
D.使用floatd定義的內(nèi)部變量存放在內(nèi)存中的動態(tài)存儲區(qū)
12.在下面的字符數(shù)組定義中,哪一個有語法錯誤()。A.chara[20]=”abcdefg”;
B.chara[]=”x+y=55.”;
C.chara[15];
D.chara[10]=’5’;
13.在以下的敘述中,正確的是()。
A.線性表的順序存儲結(jié)構(gòu)優(yōu)于鏈表存儲結(jié)構(gòu)
B.二維數(shù)組是其數(shù)據(jù)元素為線性表的線性表
C.棧的操作方式是先進(jìn)先出
D.隊列的操作方式是先進(jìn)后出
14.若有定義:“inta=4,b=5;floatx=3.4,y=2.1;”,則下列表達(dá)式的值為()。(float)(a+b)/2+(int)x%(int)y;
A.5.5B.55C.5.500000D.55.00000
15.設(shè)有宏定義“#defineIsDIV(k,n)((k%n==1)?1:0)”,且變量m已正確定義并賦值,則宏調(diào)用“IsDIV(m,5)&&IsDIV(m,7)”為真時所要表達(dá)的是()。
A.判斷m是否能被5和7整除
B.判斷m被5和7整除是否都余1
C.判斷m被5或者7整除是否余1
D.判斷m是否能被5或者7整除
16.有以下程序:#include<stdio.h>main(){inti=0.s=0;for(;;)if(i==3‖i==5)continue;if(i==6)break;i++;s+=i;}printf("%d\n",s);程序運(yùn)行后的輸出結(jié)果是()。
A.10B.13C.21D.程序進(jìn)入列循環(huán)
17.設(shè)有如下函數(shù)定義:#include<stdio.h>intfun(intk){if(k<1)return0;elseif(k==1)return1;elsereturnfun(k-1)+1;}若執(zhí)行調(diào)用語句“n=fun(3);”,則函數(shù)fun總共被調(diào)用的次數(shù)是()。
A.2B.3C.4D.5
18.線性表的順序存儲結(jié)構(gòu)是一種()。
A.隨機(jī)存取的存儲結(jié)構(gòu)B.順序存取的存儲結(jié)構(gòu)C.索引存取的存儲結(jié)構(gòu)D.Hash存取的存儲結(jié)構(gòu)
19.在下列幾種排序方法中,要求內(nèi)存量最大的是______。
A.插入排序B.選擇排序C.快速排序D.歸并排序
20.某二叉樹結(jié)點(diǎn)的中序序列為ABCDEFG,后序序列為BDCAFGE,則其左子樹中結(jié)點(diǎn)數(shù)目為()
A.3B.2C.4D.5
二、2.填空題(20題)21.關(guān)系模型的完整性規(guī)則是對關(guān)系的某種約束條件,包括實體完整性、______和自定義完整性。
22.若有定義:inta=4,b=5,c=6;然后順序執(zhí)行下列語句后,變量b中的值是()。c=(a-=(b-5));c=(a%3)+(b=1);
23.下列程序執(zhí)行后輸出的結(jié)果是【】。
f(intA)
{staticc=0;
c=a+c++;
return(c);
}
main()
{inta=2,i,k;
for(i=0;i<2;i++)
k=f(a++);
printf("%d\n",k);
}
24.若下面程序的輸出結(jié)果是4,請?zhí)羁铡?/p>
main()
{inti,j,k;
k=0;i=j=【】;
k+=-(i+j);printf("%d\n",k);
}
25.下列程序的運(yùn)行結(jié)果是______。
#include<stdio.h>
longfunc(intx)
{longp;
if(x==0‖x==1)
return(1);
p=x*func(x-1);
return(p);
}
main()
{printf("%d\n",func(4));
}
26.下面函數(shù)用來求兩個單精度數(shù)之和,并通過形參將結(jié)果傳回,請?zhí)羁铡?/p>
voidsub(floatx,floaty,【】z)
{【】=x+y;}
27.下面程序有兩個printf語句,如果第一個printf語句輸出的是194,則第二個printf語句的輸出結(jié)果是【】。
main()
{inta[10]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;
printf("%x\n",p);
printf("%x\n,p+9);
}
28.測試的目的是暴露錯誤,評價程序的可靠性;而______的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。
29.以下程序的輸出結(jié)果是#include<stdio.h>structstiintx;int*y;}*p;intdt[4]={10,20,30,40};structstaa[4]={50,&dt[0],60,&dt[0],60,&it[0],60,&dt[0],};main(){p=aa;printf("%d\n",++(p->x));}
30.若x為血類型,請寫出與!x等價的C語言表達(dá)式______。
31.以下程序運(yùn)行后輸出結(jié)果是【】。
#include<stdio,h>
voidswap(y)
{intt;
t=x;x=y;y=t:printf("%d%d",x,y);
}
main()
{ihta=3,b=4:
swap(a,b);prinff("%d%d",a,b);
}
32.函數(shù)voidfun(float*sn,intn)的功能是:根據(jù)以下公式計算S,計算結(jié)果通過形參指針sn傳回;n通過形參傳入,n的值大于等于0。請補(bǔ)全程序。
S=1-1/3+1/5-1/7+…+1/(2n+1)
voidfun(float*sn,intn)
{floats=0.0,w,f=-1.0;
inti=0;
for(i=0;i<=n;i++)
{f=【】*f;
w=f/(2*i+1);
s+=w;
}
【】=s;
}
33.若輸入字符串:(圖片),則以下while循環(huán)體將執(zhí)行【】次。
while((ch=getchar())=='e')printf("*");
34.以下程序調(diào)用invert函數(shù)按逆序重新放置a數(shù)組元素的值。a數(shù)組中的值在main函數(shù)中讀入。
#include<stdio.h>
#defineN10
invert(s,i,j)
int*s,i,j;
{intt;
if(i<j)
{t=*(s+i);
*(s+i)=(s+j);
*(s+j)=t;
invert(s,【】,j-1);
}
}
main()
{
inta[N],i;
for(i=0;i<N;i++)scanf("%d",a+【】);
invert(a,0,N-1);
for(i=0,i<N;i++)printf("%d",a[i]);
printf("\n")
}
35.按照邏輯結(jié)構(gòu)分類,結(jié)構(gòu)可以分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),棧屬于______。
36.有以下程序,若運(yùn)行時從鍵盤輸入:18,11<回車>,則程序的輸出結(jié)果是【】。
main()
{inta,b;
printf("Entera,b:");scanf("%d,%d",&a,&b);
while(a!=b)
{while(a>b)a-=b;
while(b>a)b-=a;
}
printf("%3d%3d\n",a,b);
}
37.設(shè)有下列宏定義:
#defineA2
#defineB(A+3)
則執(zhí)行賦值語句“k=B*20;”(k為int型變量)后,k的值是______。
38.設(shè)有以下定義和語句:
inta[3][2]={1,2,3,4,5},*p[3];
p[0]=a[1];
則*(p[0]+1)所代表的數(shù)組元素是【】。
39.下列程序的運(yùn)行結(jié)果是______。
#include<stdio.h>
main()
{inta,b,c;
a=3;b=4;c=5;
if(a>b)
if(a>c)
printf("%d",a);
elseprintf("%d",b);
printf("%d\n",c);
}
40.若有以下定義和語句,則使指針p指向值為36的數(shù)組元素的表達(dá)式是【】。
inta[10]={19,23,44,17,37,28,49,36},*p;
p=a;
三、1.選擇題(20題)41.下列關(guān)于單目運(yùn)算符++、--的敘述中正確的是A.它們的運(yùn)算對象可以是任何變量和常量
B.它們的運(yùn)算對象可以是char型變量和int型變量,但不能是float型變量
C.它們的運(yùn)算對象可以是int型變量,但不能是double型變量和float型變量
D.它們的運(yùn)算對象可以是char型變量、int型變量和float型變量
42.在微機(jī)中,應(yīng)用最普遍的字符編碼是()
A.BCD碼B.ASCII碼C.漢字騙碼D.補(bǔ)碼
43.下列敘述中正確的是______。
A.一個邏輯數(shù)據(jù)結(jié)構(gòu)只能有一種存儲結(jié)構(gòu)
B.數(shù)據(jù)的邏輯結(jié)構(gòu)屬于線性結(jié)構(gòu),存儲結(jié)構(gòu)屬于非線性結(jié)構(gòu)
C.一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)不影響數(shù)據(jù)處理效率
D.一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)影響數(shù)據(jù)處理效率
44.fgetc函數(shù)的作用是從指定文件讀入一個字符,該文件的打開方式必須是______。
A.只讀B.追加C.讀或讀寫D.以上均正確
45.以下程序的輸出結(jié)果是______。main(){charst[20]="hello'、0\t\\";printf("%d%d\n",strlen(st),sizeof(st));}
A.99B.520C.1320D.2020
46.第
13
題
設(shè)有程序段
intk=10;
while(k=0)k=k-1;
則下面描述中正確的是A.while循環(huán)執(zhí)行10次B.循環(huán)是無限循環(huán)C.循環(huán)體語句一次也不執(zhí)行D.循環(huán)體語句執(zhí)行一次
47.需求分析階段的任務(wù)是()
A.軟件開發(fā)方法B.軟件開發(fā)工具C.軟件開發(fā)費(fèi)用D.軟件系統(tǒng)功能
48.下列程序的輸出結(jié)果是()。
#include<stdio.h>
main()
{stmctst
{inty,x,z;
};
union
{longi;
intj;
chark;
}un;
printf("%d,%d\n",sizeof(stmctst),sizeof(un));
}
A.6,2B.6,4C.8,4D.8,6
49.對于n個結(jié)點(diǎn)的單向鏈表(無表頭結(jié)點(diǎn)),需要指針單元的個數(shù)至少為______。
A.n-1B.nC.n+1D.2n
50.若fp已正確定義并指向某個文件,當(dāng)未遇到該文件結(jié)束標(biāo)志時函數(shù)feof(fp)的值為()
A.0B.1C.-1D.一個非0值
51.以下程序的輸出結(jié)果是()structHAR{intx,y;structHAR*p;}h[2];main(){h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=&h[1];h[1].p=h;printf("%d%d\n"h[0].p)->x,(h[1].p)->y);}
A.12B.23C.14D.32
52.若w、x、y、z、m均為int型變量,則執(zhí)行下列的語句后m的值是()。w=2,x=3,y=4,z=5;m=(w<x)?w:x;m=(m<z)?m:z;m=(m<y)?m:y;
A.2B.3C.5D.4
53.下列關(guān)于棧的描述中,正確的是()
A.在棧中只能插入元素B.在棧中只能刪除元素C.只能在一端插入或刪除元素D.只能在一端插入元素,而在另一端刪除元素
54.下列能正確定義且賦初值的語句是()。
A.intn1=n2=10;
B.charc=32;
C.floatf=f+1.1;
D.doublex=12.3E2.5;
55.在軟件設(shè)計中,不屬于過程設(shè)計工具的是()。
A.PDL(過程設(shè)計語言)B.PAD圖C.N-S圖D.DFD圖
56.下列程序的輸出結(jié)果是______。main(){intk=17;printf("%d,%0,%x\n",k,k,k);}
A.17,021,0x11B.17,17,17C.17,Ox11,021D.17,21,11
57.若有定義:inta[4][10];,則以下選項中對數(shù)組元素a[i][j]引用錯誤的是______。(0<=i<4,0<=j<10)
A.*(&a[0][0]+10*i+j)B.*(a+i)+jC.*(*(a+i)+j)D.*(a[i]+j)
58.下面程序執(zhí)行后的輸出結(jié)果是(小數(shù)點(diǎn)后只寫一位)______。main(){doubled;floatf;long1;inti;i=f=1=d=20/3;printf("%d%ld%f%f\n",i,l,f,d);}
A.666.06.0B.666.76.7C.666.06.7D.666.76.0
59.下列敘述中正確的是A.break語句只能用于switch語句
B.在switch語句中必須使用default
C.break語句必須與switch語句中的case配對使用
D.在switch語句中,不一定使用break語句
60.下列程序的運(yùn)行結(jié)果是()。#include<stdio.h>#include<string.h>main(){char*s1="abDuj";char*s2="ABdUG";intt;t=strcmp(s1,s2);printf("%d",t);}
A.正數(shù)B.負(fù)數(shù)C.零D.不確定的值
四、選擇題(20題)61.對建立良好的程序設(shè)計風(fēng)格,下面描述正確的是
A.程序應(yīng)簡單、清晰、可讀性好B.符號名的命名只需符合語法
C.充分考慮程序的執(zhí)行效率D.程序的注釋可有可無
62.若以下選項中的變量已正確定義,則正確的賦值語句是()。
A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3
63.有下列程序:
main()
{inti,j,x=0;
for(i=0,i<2;i++)
{x++;
for(j=0;j<=3;j++)
{if(j%2)continue;
x++:
}
x++:
}
printf("x=%d\n"x);
}
程序執(zhí)行后的輸出結(jié)果是()。
A.x=4B.x=8C.x=6D.x=12
64.
以下程序的輸出結(jié)果是()。
main
{charst[20]="hello\0\t\\\";
printf("%d%d\n",strlen(st).sizeof(st));
}
A.99B.520C.1320D.2020
65.為了避免嵌套的條件分支語句if—else的二義性,C語言規(guī)定:C程序中的else總是與_____組成配對關(guān)系。
A.縮排位置相同的ifB.在其之前未配對的ifC.在其之前未配對的最近的ifD.同一行上的if
66.
67.設(shè)有條件表達(dá)式:(EXP)?i++;j--,則以下表達(dá)式中(EXP)完全等價的是()。
A.(EXP==0)B.(EXP!=0)C.(EXP==1)D.(EXP!=1)
68.下面程序的輸出結(jié)果是()。
#include<stdio.h>
main()
{inta[4][5]={1,2,4,-4,5,-9,3,6,-3,2,7,8,4};
inti,j,n;
n=9;
i=n/5;
j=n-i*5-1;
printf("a[%d][%d]=%d\n",i,j,a[i][j]);
}
執(zhí)行后輸出結(jié)果是()。A.A.a[1][3]=6
B.a[1][3]=-3
C.a[1][3]=2
D.不確定
69.
70.(71)算法分析的目的是______。
A.找出數(shù)據(jù)結(jié)構(gòu)的合理性
B.分析算法的效率以求改進(jìn)
C.分析算法的易懂性和可靠性
D.找出算法中輸入和輸出之間的關(guān)系
71.若已定義的函數(shù)有返回值,則以下關(guān)于該函數(shù)調(diào)用的敘述中錯誤的是()。
A.函數(shù)調(diào)用可以嵌套和遞歸
B.函數(shù)調(diào)用可以作為一個函數(shù)的實參
C.函數(shù)調(diào)用可以出現(xiàn)在表達(dá)式中
D.函數(shù)調(diào)用可以作為一個函數(shù)的形參
72.面向?qū)ο蠓椒ㄖ校粚儆趯ο蠡咎攸c(diǎn)的是()。
A.標(biāo)識唯一性B.分類性C.封裝性D.一致性
73.下列對隊列的敘述正確的是()。
A.隊列按“先進(jìn)后出”原則組織數(shù)據(jù)
B.隊列屬于非線性表
C.隊列在隊尾刪除數(shù)據(jù)
D.隊列按“先進(jìn)先出”原則組織數(shù)據(jù)
74.
有以下程序
#include<stdio.h>
main
{inty=9;
for(;y>0;y--)
if(y%3==0)printf("%d",--y);
}
程序的運(yùn)行結(jié)果是()。
A.741B.963C.852D.875421
75.
76.
77.下面程序的運(yùn)行結(jié)果是()。
A.gaeB.gaC.LanguageD.有語法錯
78.(27)程序流程圖(PFD)中的箭頭代表的是()
A.數(shù)據(jù)流
B.控制流
C.調(diào)用關(guān)系
D.組成關(guān)系
79.有以下程序:main(){intm=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);}程序運(yùn)行后的輸出結(jié)果是______。
A.12353514B.12353513C.12343514D.12343513
80.以下敘述中正確的是
A.C語言比其他語言高級
B.C語言可以不用編譯就能被計算機(jī)識別執(zhí)行
C.C語言以接近英語國家的自然語言和數(shù)學(xué)語言作為語言的表達(dá)形式
D.C語言出現(xiàn)得最晚,具有其他語言的一切優(yōu)點(diǎn)
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是根據(jù)整型形參n,計算如下公式的值:y=1-1/(22)+1/(33)-1/(44)+…+(-1)(n+1)/(m)例如,n中的值為l0,則應(yīng)輸出0.817962。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.請編寫一個函數(shù)proc(),它的功能是:將str所指字符串中所有下標(biāo)為奇數(shù)位置的字母轉(zhuǎn)換為大寫(若該位置上不是字母,則不轉(zhuǎn)換)。例如,若輸入abcdel23,則應(yīng)輸出aBcDe123。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
參考答案
1.A
2.B
3.B程序首先給字符數(shù)組s賦值為“012xy”。for循環(huán)語句的功能是遍歷字符串,通過if條件語句對字符串中的小寫字母進(jìn)行計數(shù),字符串中小寫字母個數(shù)為2,即n=2。故本題答案為B選項。
4.A解析:auto變量:無static聲明的局部變量。用auto作存儲類別的聲明時,可以不寫auto,存儲類別隱含確定為auto(自動存儲類別),是動態(tài)存儲方式。大多數(shù)變量是自動變量。用static聲明的局部變量是靜態(tài)局部變量。函數(shù)調(diào)用結(jié)束后靜態(tài)局部變量占據(jù)的內(nèi)存存儲單元空間不釋放,局部變量保留原值,下次調(diào)用時可以繼續(xù)使用該值。用extern聲明外部變量,外部變量即全局變量,可以用extern聲明來改變?nèi)肿兞康淖饔糜?實際上,關(guān)鍵字'auto'可以省略,auto不寫則隱含確定為'自動存儲類別',屬于動態(tài)存儲方式。
5.A
6.C
7.B在本題中,首先定義了兩個宏N和M,大小都為10,然后定義了一個返回指針的函數(shù)find,該函數(shù)帶有兩個形參,第一個為字符型的指針數(shù)組,第二個為整型變量,在函數(shù)體中,首先定義了一個指針變量q,并將形參中指針數(shù)組的第一個元素賦值給q,然后執(zhí)行for循環(huán),在循環(huán)體中,首先執(zhí)行條件判斷語句,其條件為strcmp(a[i],q)<0(strcmp函數(shù)的作用是比較兩字符串的大小,如果相等,則返回0值,如果參數(shù)中的第一個字符串大,則返回正值,否則返回負(fù)值),如果結(jié)果為真,說明指針數(shù)組當(dāng)前元素所指向的字符串比q所指向的字符串小,此時,程序執(zhí)行將當(dāng)前指針數(shù)組元素賦值給p,最后返回p,通過上面的分析我們可以看出,find函數(shù)的作用是找出指針數(shù)組中各元素所指向字符串的最小字符串。
在主函數(shù)中,定義了一個二維數(shù)組s,并賦了初值,然后定義一個指針變量p,用來存放函數(shù)find的返回值。調(diào)用函數(shù)find的參數(shù)分別為s和5,結(jié)合形參看find函數(shù),不難知道調(diào)用find函數(shù)就是找出二維數(shù)組s中各字符串中最小的字符串,那么應(yīng)該為and。此時,指針變量p指向字符串“and”的首地址,然后執(zhí)行puts(p),完成該字符串的輸出。因此,本題正確的答案是B。
8.B解析:本題主要考查結(jié)構(gòu)指針:p=&st,訪問結(jié)構(gòu)體的成員,可以通過結(jié)構(gòu)變量訪問,即st.i,也可以用等價的指針形式,即(*p).i和p->i。
9.A
10.B濫用90t0語句將使程序的流程毫無規(guī)律,可讀性差,對于初學(xué)者來說盡量不要使用,所以A錯誤?!獋€結(jié)構(gòu)化程序可以包含順序、分支、循環(huán)結(jié)構(gòu)中的一種或多種,所以C錯誤。由三種基本結(jié)構(gòu)構(gòu)成的程序可以解決任何復(fù)雜的問題,所以D錯誤。
11.B
12.D
13.B
14.C在計算(float)(a4-b)/2時,由于通過強(qiáng)制類型轉(zhuǎn)換將(a+b)轉(zhuǎn)換成了float型,所以應(yīng)先將2轉(zhuǎn)換成float型,再進(jìn)行計算,得4.500000。在計算(int)x%(int)y時,先將x和y通過強(qiáng)制類型轉(zhuǎn)換成int型,再進(jìn)行求余運(yùn)算,結(jié)果為1。又因為4.500000是float型,所以將1和它相加時,先將1換成float型,再計算,得到5.500000。類型轉(zhuǎn)換的一般規(guī)則是:低級類型從高級類型,并進(jìn)行相應(yīng)的轉(zhuǎn)換。數(shù)據(jù)類型的級別由低到高的排序表示為:char→int→unsigned→log→float→double。
15.B邏輯與運(yùn)算兩邊運(yùn)算對象的值都為真時,結(jié)果才為真。所以需要m能被5和7整除都余1。故本題答案為B選項。
16.D解析:程序第1次執(zhí)行for循環(huán)時,i=0,兩條if語句中的表達(dá)式都不成立,執(zhí)行i++;s+=i;此時i為1,s為1第2次循環(huán),兩條if語句中的表達(dá)式也不成立,執(zhí)行i++,s+=i,此時i為2,s為3;……;當(dāng)i=3時,執(zhí)行continue,結(jié)束本輪循環(huán),不執(zhí)行i++;繼續(xù)執(zhí)行下一輪循環(huán),這樣一來i值始終為3,繼續(xù)continue,無終止條件,進(jìn)入死循環(huán)。
17.B執(zhí)行調(diào)用語句“n=fun(3);”,3被當(dāng)作實參傳遞進(jìn)去,進(jìn)行了一次調(diào)用。3被當(dāng)作實參傳進(jìn)去后,程序會執(zhí)行“elsereturnfun(k-1)+1;”,函數(shù)被調(diào)用了第2次,參數(shù)是3-1,也就是2。2被當(dāng)作參數(shù)傳進(jìn)去后,程序會執(zhí)行“elsereturnfun(k-1)+1;”函數(shù)被調(diào)用了第3次,參數(shù)是2-1,也就是1。1被當(dāng)作實參傳進(jìn)去后,程序會執(zhí)行“elseif(k==1)return1;”,函數(shù)不再被遞歸調(diào)用。所以最終結(jié)果為3次。故本題答案為B選項。
18.A
19.D解析:快速排序的基本思想是,通過一趟排序?qū)⑴判蛴涗浄指畛瑟?dú)立的兩部
分,其中一部分記錄的關(guān)鍵字均比另一部分記錄的關(guān)鍵字小,再分別對這兩部分記錄繼
續(xù)進(jìn)行排序,以達(dá)到整個序列有序;插入排序的基本操作是指將無序序列中的各元素依
次插入到已經(jīng)有序的線性表中,從而得到一個新的序列;選擇排序的基本思想是:掃描整
個線性表,從中選出最小的元素,將它交換到表的最前面(這是它應(yīng)有的位置),然后對剩
下的于表采用同樣的方法,直到表空為止;歸并:排序是將兩個或兩個以上的有序表組合
成一個新的有序表。
注意:各種排序方法實現(xiàn)過程及實現(xiàn)機(jī)制。
20.C
21.參照完整性參照完整性
22.11解析:本題考查的是基本賦值運(yùn)算符和賦值表達(dá)式。a-=(b-5)等價于a=a-(b-5)=4,c=a=4;a%3=1,c=(a%3)+(b=1)=2,其中b的值被b=1確定為1。
23.77解析:在程序執(zhí)行時,static變量僅初始化一次,下次使用時將使用上次保存的值。
24.-2-2解析:題目中定義并初始化了變量k為0,最后輸出k的值,要求為4,而在此期間只有k+=-(i+j);這條語句改變了k的值,即要求表達(dá)式-(i+j)的值為4。所以,答案應(yīng)該為-2,因為只有i=j=-2時,表達(dá)式-(i+j)的值才為4。
25.2424解析:本題考查函數(shù)的循環(huán)調(diào)用。p=x*func(x-1),當(dāng)x=4時,不滿足if語句的條件,p=4*func(3),x=3也不滿足條件,則func(3)=3*func(2),func(2)=2*func(1),x=1滿足條件return(1),則輸出結(jié)果為4*3*2*1-24。
26.float**zfloat*\r\n*z解析:C程序中可以通過傳送地址的方式在被調(diào)用函數(shù)中直接改變被調(diào)用函數(shù)中變量的值,從而達(dá)到函數(shù)之間數(shù)據(jù)的傳遞。
27.1a61a6解析:對于指針變量的運(yùn)算,就是對地址的運(yùn)算。本題中由于指針指向的是整型變量,所以,使指針變量移動9個位置也就是移動18個字節(jié)。注意,本題是以十六進(jìn)制輸出的。
28.調(diào)試調(diào)試
29.C
30.x==0x==0解析:!x的邏輯意思就是x為非,即x==0。
31.43344334解析:程序?qū)⒆兞縜,b的值傳給函數(shù)swap的形參x,y,并在函數(shù)中對x,y的值進(jìn)行交換,所以在函數(shù)swap中輸出x,y的值4,3,由于c程序的函數(shù)是僧傳遞,實參a,b的值不會隨形參x,y的改變而改變,所以在主函數(shù)中輸出的a,b的值為3,4。
32.-1或-1.0*sn-1或-1.0\r\n*sn解析:由于在對S求和時,相鄰兩項的符號剛好相反,而在函數(shù)fun中沒有對數(shù)據(jù)進(jìn)行取反的操作,故第—空的目的是對數(shù)據(jù)進(jìn)行取反,以保證序列中相鄰兩項的符號不同。故第—個應(yīng)填-1或-1.0。在執(zhí)行完循環(huán)體后,要將求和結(jié)果通過指針參數(shù)的形式傳遞紿調(diào)用fun的函數(shù),故第二空應(yīng)填*sn。
33.00解析:函數(shù)getchar()是從鍵盤得到用戶輸入的一個字符。用戶輸入的第1個字符是a,不管后面輸入的是什么ch的值都是'a',因此條件(ch=getchar())=='e'為假,這個循環(huán)不會被執(zhí)行。
34.i+1i
35.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)元素之間的邏輯關(guān)系,分為線性結(jié)構(gòu)和非線性結(jié)構(gòu)。常見的線性結(jié)構(gòu)有線性表、棧和隊列等,常見的非線性結(jié)構(gòu)有樹、二叉樹等。
36.1111解析:首先,程序通過scanf()函數(shù)將18和11分別讀入到變量a和b中。然后,因為a!=b為真,進(jìn)入外層while循環(huán)。此時a>b為真,執(zhí)行a-=b;,a的值變?yōu)?8-11=7:接下來b>a也為真,執(zhí)行b-=a;,b的值變?yōu)?1-7=4。此時a!=b還是為真,第2次進(jìn)入外層循環(huán)。a>b為真,執(zhí)行a-=b;,a的值變?yōu)?-4=3。b>a為真,執(zhí)行b-=a;,b的值變?yōu)?-3=1接下來a!=b為真第3次進(jìn)入外層循環(huán)。a>b為真,執(zhí)行a-=b,a的值變?yōu)?-1=2。b>a為假,不執(zhí)行b-=a;;然后第4次進(jìn)入外層循環(huán),a>b為真,執(zhí)行a-=b,a的值變?yōu)?-1=1。b>a為假,不執(zhí)行b-=a;此時a和b均為1了,a!=b條件為假,外層循環(huán)結(jié)束。故本題輸出的結(jié)果是11。
37.100100解析:本題考查帶參數(shù)的宏定義及相關(guān)運(yùn)算。運(yùn)算過程為:k=B*20=(A+3)*20=(2+3)*20=100。
38.a[1][1]a[1][1]解析:p是一個指針數(shù)組,p[0]指向數(shù)組a[1][0]。*(p[0]+1)代表數(shù)組a[1][1]。
39.55解析:分析程序,當(dāng)a=3;b=4;c=5時,判斷語句a>b不成立,所以不執(zhí)行后面的語句,直接執(zhí)行“printf('%d\\n',c);”語句,輸出c的值,輸出結(jié)果為5。
40.p=p+7或p+=7p=p+7或p+=7解析:本題考查通過指針引用數(shù)組元素。值為36的數(shù)組元素在a數(shù)組中是第8個元素,即a[7]。在程序中,p=a;語句將數(shù)組a的首地址賦給了指針變量p,則可以用*(p+i)來表示數(shù)組元素,*(p+i)與a[i]等價,a[7]可表示為*(p+7)。要使指針p指向a[7],可以用p=p+7移動指針,故填寫p=p+7或p+=7。
41.D本題主要考查自加與自減運(yùn)算符。在C語言中,自加與自減運(yùn)算符具有以下性質(zhì):
(1)自加運(yùn)算符“++”和自減運(yùn)算符“--”的運(yùn)算本身是一種賦值運(yùn)算,其結(jié)果是使運(yùn)算對象的值增1或減1。
(2)++、--運(yùn)算符是單目運(yùn)算符,運(yùn)算對象可以是整型變量或字符型變量,也可以是實型變量,但不能是常量和表達(dá)式。
(3)自加、自減運(yùn)算符無論是作為前綴還是后綴運(yùn)算符,對于變量而言,其效果相同,但作為表達(dá)式來說,其值不同。
(4)++和--運(yùn)算符的結(jié)合方向是“自右向左”。
(5)不要在一個表達(dá)式中對同一個變量進(jìn)行多次自增或自減運(yùn)算??梢灾辣绢}正確的答案是D。
42.B
43.D解析:邏輯結(jié)構(gòu)是反映了元素之間的邏輯關(guān)系的數(shù)據(jù)結(jié)構(gòu),存儲結(jié)構(gòu)是邏輯結(jié)構(gòu)在計算機(jī)中的存放形式,它們都具有線性結(jié)構(gòu)和非線性結(jié)構(gòu)。邏輯結(jié)構(gòu)有順序、鏈接、索引等存儲結(jié)構(gòu),采用不同的存儲結(jié)構(gòu),數(shù)據(jù)處理的效率不同。
44.D解析:fgetc函數(shù)是指從指定的文件讀入一個字符,該文件必須是以讀或讀寫方式打開的。fgetc函數(shù)的調(diào)用形式為:ch=fgetc(fp);。
45.B解析:C語言中字符串是以'0'字符結(jié)束的,且strlen()函數(shù)計算的是'0'字符前的所有字符的個數(shù)。本題中strlen(st)應(yīng)為5。數(shù)組定義以后系統(tǒng)就為其分配相應(yīng)大小的內(nèi)存空間,而不論其中有投有內(nèi)容。sizeof()函數(shù)是計算變量或數(shù)組的所分配到的內(nèi)存空間的大小。所以本題的sizeof(st)為20。
46.C本題中,首先將0賦給k,表達(dá)式變?yōu)?,跳出循環(huán),沒有執(zhí)行循環(huán)體語句。解答本題的關(guān)鍵是掌握while語句。
47.DD)【解析】需求分析是軟件定義時期的最后一個階
\n段,它的基本任務(wù)就是詳細(xì)調(diào)查現(xiàn)實世界要處理的對象,充分了解原系統(tǒng)的工作概況,明確用戶的各種需求,然后在這些基礎(chǔ)上確定新系統(tǒng)的功能。
48.B解析:本題主要考查結(jié)構(gòu)體和聯(lián)合內(nèi)存使用的區(qū)別:結(jié)構(gòu)中不同的成員分別使用不同的內(nèi)存空間,一個結(jié)構(gòu)所占內(nèi)存空間的大小是結(jié)構(gòu)中每個成員所占內(nèi)存空間大小的總和,結(jié)構(gòu)中每個成員相互獨(dú)立;聯(lián)合所占用的內(nèi)存空間為最長的成員所占用的空間。
49.C解析:在n個結(jié)點(diǎn)的單向鏈表(無表頭結(jié)點(diǎn))中,每個結(jié)點(diǎn)都有一個指針單元(即指針域),加上頭指針,至少需要n+1個指針單元。
50.A解析:文件尾測試函數(shù)feof()的應(yīng)用,讀取文件時,當(dāng)文件中的數(shù)據(jù)全部讀完后,文件位置指針將位于文件的結(jié)尾。此時如果讀數(shù)據(jù),將會出現(xiàn)錯誤。為了保證讀寫數(shù)據(jù)的正確性,需要進(jìn)行文件尾測試,文件尾測試使用函數(shù)feof(),它的功能是測試fp指向的文件是否到達(dá)文件尾。若到達(dá)文件尾,返回值為非0,否則返回值為0。在本題中fP指向的某文件還沒有到了文件尾,因此返回0。
51.D解析:本題中是一個含有兩個結(jié)點(diǎn)的循環(huán)鏈表。
C語言中結(jié)構(gòu)體的定義為:
struct結(jié)構(gòu)題類型名
{
成員項表;
};
52.A解析:條件表達(dá)式“a?b:c”的含義是:當(dāng)a為真時,其值等于表達(dá)式b的值;當(dāng)a為假時,其值等于表達(dá)式c的值。
表達(dá)式運(yùn)算過程:第1個表達(dá)式:w=2<x=3為真,所以返回w的值,即m=w=2;第2個表達(dá)式:m=2<z=5為真,所以返回m的值,即m=2;第3個表達(dá)式:w=2<y=4為真,所以返回m的值,即m=2。
53.C\nC)【解析】棧實際也是線性表,只不過是一種特殊的線性表。棧是只能在表的~端進(jìn)行插入和刪除運(yùn)算的線性表,通常稱插入、刪除的這一端為棧頂另一端為棧底。當(dāng)表中沒有元素時稱為空棧。棧頂元素總是最后被插入的元素,從而也是最先被刪除的元素;棧底元素總是最先被插入的元素,從而也是最后才能被刪除的元素。
\n
54.B解析:C語言規(guī)定,可以在定義變量的同時給變量賦初值,稱為變量初始化。在選項A)中在給n1和n2進(jìn)行賦初值,但變量02沒有定義;在選項C)中定義變量f時,不能在賦值表達(dá)式的右邊出現(xiàn)變量f自身,所以選項C)錯誤:在選項D)用指數(shù)表達(dá)式的常量中,字母E后面的數(shù)應(yīng)該為整數(shù),而不應(yīng)該為小數(shù)形式。因此,選項B)正確。
55.D解析:PDL一種設(shè)計性語言,用于書寫軟件設(shè)計規(guī)約。它是軟件設(shè)計中廣泛使用的語言之一。N-S圖是無線的流程圖,是算法描述工具;PAD圖是問題分析圖,它用二維樹狀結(jié)構(gòu)的圖表示程序的控制流,將這種圖轉(zhuǎn)換為程序代碼比較容易。此3類均是過程設(shè)計工具,數(shù)據(jù)流圖(DataFunctionDiagram):又名數(shù)據(jù)功能圖表,簡稱DFD,是采用圖形方式來表達(dá)系統(tǒng)的邏輯功能、數(shù)據(jù)在系統(tǒng)內(nèi)部的邏輯流向和邏輯變換過程,是結(jié)構(gòu)化系統(tǒng)分析方法的主要表達(dá)工具及用于表示軟件模型的一種圖示方法。
56.D
57.B解析:本題中選項B是錯誤的引用,*(a+i)+j只代表了a[i][j]的地址。
58.A
59.D解析:break語句除了能用于switch語句外,還可以用于循環(huán)語句中,因此選項A不正確。在switch語句中,可以使用default來執(zhí)行所有case均失配時的分支,也可以不使用default,此時若所有case均失配則跳出switch,因此選項B不正確。在switch語句中,每個case的作用就是標(biāo)出一個執(zhí)行的起點(diǎn),當(dāng)符合某個case時,程序就從該case所標(biāo)出的起點(diǎn)處開始執(zhí)行,若沒有break語句中斷執(zhí)行的話,程序會一直執(zhí)行到switch的最后一條語句,而不是碰到下一個case就跳出switch。雖然break與case的配對使用會讓所有case分支互不重疊條理明確,但不配對使用在C語言中也是允許的。因此選項C不正確,應(yīng)該選擇D。
60.A解析:本題考查字符串比較函數(shù)和兩個字符串比較的原則兩個知識點(diǎn),①原則是依次比較兩個字符串同一位置的對字符,若它們的ASCII碼值相同,則繼續(xù)比較下一對字符,若它們的ASCII碼值不同,則ASCII碼值較大的字符所在的字符串較大;若所有字符相同,則兩個字符串相等;若一個字符串全部i個字符與另一個字符串的前i個字符相同,則字符串較長的較大。②strcmp(s1,s2)的返回值,當(dāng)str1<str2時,返回值<0;當(dāng)str1=str2時,返回值為0;當(dāng)str1>str2,返回值>0。
61.A具有良好的程序設(shè)計風(fēng)格是一個程序員必不可少的素質(zhì)。我們在編寫程序時要養(yǎng)成良好的程序設(shè)計習(xí)慣,對程序的要求不僅能夠在計算機(jī)上正確運(yùn)行,而且要便于閱讀和被別人理解,便于程序的調(diào)試和維護(hù)。好的程序設(shè)計風(fēng)格有助于提高程序的正確性、可讀性、可維護(hù)性和可用性。要使程序具有良好的風(fēng)格,必須做到以下幾點(diǎn):
(1)合理的標(biāo)識符的命名。由于一個程序中必然有很多標(biāo)識符,特別是在一個大型復(fù)雜的程序中,標(biāo)識符可能成千上萬,對標(biāo)識符作用的正確理解是讀懂程序的前提,如果程序員隨意命名標(biāo)識符,程序的可讀性會很差。因此,在命名標(biāo)識符時要注意其可理解性。
(2)在程序中添加一定的注釋。注釋是程序員與日后的程序讀者之間詢通的重要工具,它用自然語言或偽碼描述。它說明了程序的功能,特別是在維護(hù)階段,對理解程序提供了明確指導(dǎo)。因此,一定的注釋是程序必不可少的組成部分。
(3)程序的編輯風(fēng)格。為了使程序的結(jié)構(gòu)一目了然,可以在程序中利用空格、空行、縮進(jìn)等技巧使程序?qū)哟吻逦?,便于對程序的理解?/p>
(4)語句的結(jié)構(gòu)。在結(jié)構(gòu)化程序設(shè)計中,單個語句結(jié)構(gòu)是編碼階段的任務(wù),語句結(jié)構(gòu)追求簡單直接,不能為了追求效率而使代碼復(fù)雜化。
總之,程序應(yīng)簡單、清晰、可讀性和可理解性好。
62.C解析:賦值的一般形式為:變量名:表達(dá)式;,賦值的方向為由右向左,即將:右側(cè)表達(dá)式的值賦給:左側(cè)的變量,執(zhí)行步驟是先計算再賦
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度樓層套房租賃合同書(含私人廚師服務(wù))4篇
- 2025版企業(yè)安全保衛(wèi)力量派遣合同范本4篇
- 2025版智能烘焙面包磚設(shè)備租賃合同范本4篇
- 2025年度個人股權(quán)贈與協(xié)議(股權(quán)捐贈)4篇
- 二零二五年度苗木種植與林業(yè)產(chǎn)業(yè)結(jié)構(gòu)調(diào)整合同樣本4篇
- 2024陶瓷廠勞務(wù)外派合同標(biāo)準(zhǔn)模板3篇
- 2025版智能家居瓷磚裝飾工程承包合同文本2篇
- 二零二五版模具行業(yè)知識產(chǎn)權(quán)保護(hù)合同4篇
- 2025彩鋼瓦建筑構(gòu)件采購合同標(biāo)準(zhǔn)范本3篇
- 2025版新能源儲能系統(tǒng)關(guān)鍵零配件采購與集成服務(wù)合同4篇
- 加強(qiáng)教師隊伍建設(shè)教師領(lǐng)域?qū)W習(xí)二十屆三中全會精神專題課
- 2024-2025學(xué)年人教版數(shù)學(xué)七年級上冊期末復(fù)習(xí)卷(含答案)
- 四年級數(shù)學(xué)上冊人教版24秋《小學(xué)學(xué)霸單元期末標(biāo)準(zhǔn)卷》考前專項沖刺訓(xùn)練
- 2025年慢性阻塞性肺疾病全球創(chuàng)議GOLD指南修訂解讀課件
- (完整版)減數(shù)分裂課件
- 五年級數(shù)學(xué)(小數(shù)乘除法)計算題專項練習(xí)及答案
- 小學(xué)數(shù)學(xué)知識結(jié)構(gòu)化教學(xué)
- 2022年睪丸腫瘤診斷治療指南
- 被執(zhí)行人給法院執(zhí)行局寫申請范本
- 飯店管理基礎(chǔ)知識(第三版)中職PPT完整全套教學(xué)課件
- 2023年重慶市中考物理A卷試卷【含答案】
評論
0/150
提交評論