2021-2022學(xué)年寧夏回族自治區(qū)固原市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第1頁
2021-2022學(xué)年寧夏回族自治區(qū)固原市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第2頁
2021-2022學(xué)年寧夏回族自治區(qū)固原市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第3頁
2021-2022學(xué)年寧夏回族自治區(qū)固原市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第4頁
2021-2022學(xué)年寧夏回族自治區(qū)固原市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

2021-2022學(xué)年寧夏回族自治區(qū)固原市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級:________姓名:________考號(hào):________

一、單選題(12題)1.靜態(tài)鏈表中指針表示的是()。

A.內(nèi)存地址B.數(shù)組下標(biāo)C.下一元素地址D.左、右孩子地址

2.已知a、b、c為整型變量,若從鍵盤輸入5<空格>6<空格>7<回車>,使a的值為5,b的值為6,c的值為7,則下列選項(xiàng)中正確的輸入語句是()。

A.scanf("%3d%3d%3d",a,b,C);

B.scanf("%d%d%d",a,b,C);

C.scanf("%d%d%d",&a,&b,&c);

D.scanf("%d%d%d",&a,&b,&c);

3.以下程序的輸出結(jié)果是()。#defineM(x,y,z)x*y+zmain(){inta=l,b=2,c=3;printf("%d\n",m(a+b.b+c,c+a));}A.19B.17C.15D.12

4.以下針對相應(yīng)語句的注釋中,說法錯(cuò)誤的是()。

A.int*pt[2];/*pt是一個(gè)指針數(shù)組名*/

B.int(*pt)[2];/*pt是一維數(shù)組名*/

C.int(*pt)();/*pt是指向函數(shù)的指針*/

D.int*pt();/*pt是一個(gè)函數(shù)名*/

5.以下選項(xiàng)中,非法的字符常量是______。

A.'\t'B.'\17'C.\nD.'\xaa'

6.有以下程序:intfun(intn){if(n==1)return1;elsereturn(n+fun(n-1));}main(){intx;scanf("%if",&x);x=fun(x);printf("%d\n",x);}執(zhí)行程序時(shí),給變量X輸入10,程序的輸出結(jié)果是()。A.55B.54C.65D.45

7.以下選項(xiàng)中非法的表達(dá)式是()。

A.0<=x<100B.i=j==0C.(char)(65+3)D.x+1=x+1

8.有以下程序voidf(int*x,int*y){intt;t=*x;*x=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(p<q){f(p,q);p++;q--;}for(i=0;i<8;i++)printf("%d,",a[i]);}程序運(yùn)行后的輸出結(jié)果是

A.8,2,3,4,5,6,7,1,

B.5,6,7,8,1,2,3,4,

C.1,2,3,4,5,6,7,8,

D.8,7,6,5,4,3,2,1

9.以下程序運(yùn)行后,輸出結(jié)果是()#include<stdio.h>ss(char*s){char*p=s;while(*p)p++return(p-s);}main(){char*a=“abded”inti;i=ss(a);printf(“%d\n”,i);}A.8B.7C.6D.5

10.有以下程序#definef(x)x*xmain(){inti;i=f(4+4)/f(2+2);printf(“%d\n”,i);}執(zhí)行后輸出結(jié)果是()A.28B.22C.16D.4

11.

12.以下敘述中正確的是()。

A.局部變量說明為static存儲(chǔ)類,其生存期將得到延長

B.全局變量說明為static存儲(chǔ)類,其作用域?qū)⒈粩U(kuò)大

C.任何存儲(chǔ)類的變量在未賦初值時(shí),其值都是不確定的

D.形參可以使用的存儲(chǔ)類說明符與局部變量完全相同

二、2.填空題(12題)13.若有以下定義,則不移動(dòng)指針p,且通過指針p引用值為98的數(shù)組元素的表達(dá)式是______。

intw[10]={23,54,10,33,47,98,72,80,61},*p=w;

14.一張3.5英寸軟盤大約能存儲(chǔ)140萬個(gè)ASCⅡ字符,若存放漢字大約能存放【】個(gè)。

15.棧中允許進(jìn)行插入和刪除的一端叫做______。

16.函數(shù)mystrlen(char*s)的功能是求字符串s的長度,請?zhí)羁铡?/p>

mystrlen(char*s)

{char*t:

t=s;

while(【】)t++;

return(t-s);

}

17.在進(jìn)行模塊測試時(shí),要為每個(gè)被測試的模塊另外設(shè)計(jì)兩類模塊:驅(qū)動(dòng)模塊和承接模塊(樁模塊),其中【】的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結(jié)果。

18.程序測試分為靜態(tài)分析和動(dòng)態(tài)測試。其中【】是指不執(zhí)行程序,而只是對程序文本進(jìn)行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯(cuò)誤。

19.數(shù)據(jù)庫管理系統(tǒng)是位于用戶與______之間的軟件系統(tǒng)。

20.已知字母A的ASCⅡ碼為65。以下程序運(yùn)行后的輸出結(jié)果是()。

main()

{chara,b;

a='A'+'5'-'3';b=a+'6'-'2';

a='A'+'5'-'3';b=a+'6'-'2';

printf("%d%c\n",a,B);

}

21.長度為n的順序存儲(chǔ)線性表中,當(dāng)在任何位置上插入一個(gè)元素概率都相等時(shí),插入一個(gè)元素所需移動(dòng)元素的平均個(gè)數(shù)為【】。

22.對于圖書管理數(shù)據(jù)庫,將圖書表中"人民郵電出版社"的圖書的單價(jià)漲價(jià)5%。請對下面的SQL語句填空:UPDATE圖書【】WHERE出版單位="人民郵電出版社"

23.以下定義的結(jié)構(gòu)體類型包含兩個(gè)成員,其中成員變量info用來存放整型數(shù)據(jù);成員變量link是指向自身結(jié)構(gòu)體的指針。請將定義補(bǔ)充完整。

structnode

{intinfo;

【】Link;

};

24.關(guān)系模型的3類完整性指的是【】、參照完整性、用戶定義的完整性。

三、3.程序設(shè)計(jì)題(10題)25.編寫函數(shù)fun(),它的功能是:計(jì)算和輸出下列級數(shù)的和。

S=1/(1×2)+1/(2×3)+…+1/(n×(n+1))

例如,當(dāng)n=10時(shí),函數(shù)值為0.909091。

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序;

#include<conio.h>

#include<stdio.h>

doublefun(intn)

{

}

main()

{

clrscr();

printf("%f\n",fun(10));

}

26.下列程序定義了N×N的二維數(shù)組,并在主函數(shù)中賦值。請編寫一個(gè)函數(shù)fun(),函數(shù)的功能是:求數(shù)組周邊元素的平方和,并作為函數(shù)值返回給主函數(shù)。例如,若數(shù)組a中的值為

01279

1112155

2216111

979102

54141

則返回主程序后s的值應(yīng)為310。

[注意]部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

[試題源程序]

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

#defineN5

intfun(intw[][N])

{

}

main()

{

inta[N][N]=(0,1,2,7,9,1,11,21,5,5,2,21,6,11,1,9,7,9,10,2,5,4,1,4,1);

inti,j;

ints;

clrscr()

printf("*****Thearray*****\n");

for(i=0;i<N;i++)

{

for(j=0;j<N;j++)

{

printf("%4d",a[i][j]);

}

printf("\n");

}

s=fun(a);

printf("*****THERESULT*****\n");

printf("Thesumis:%d\n",s);

}

27.請編寫函數(shù)fun(),它的功能是:求出1到1000之內(nèi)能被5或13整除、但不能同時(shí)被5和13整除的所有整數(shù)并將它們放在9所指的數(shù)組中,通過n返回這些數(shù)的個(gè)數(shù)。

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(int*a,int*n)

{

}

main()

{

intaa[1000],n,k;

clrscr();

fun(aa,an);

for(k=0;k<n;k++)

if((k+1)%10==0)

{

printf("%5d",aa[k]);

printf("\n");/*—行寫10個(gè)數(shù)*/

}

else

printf("%5d",aa[k]);

}

28.請編寫函數(shù)fun,函數(shù)的功能是求出二維數(shù)組周邊元素之和,作為函數(shù)值返回。二維數(shù)組中的值在主函數(shù)中賦予。

例如:二維數(shù)組中的值為:

13579

29994

69998

13570

則函數(shù)值為61。

注意:部分源程序存在文件PROGl.C文件中。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。

29.請編一個(gè)函數(shù)fun,函數(shù)的功能是使實(shí)型數(shù)保留2位小數(shù),并對第三位進(jìn)行四舍五入(規(guī)定實(shí)型數(shù)為正數(shù))。

例如:實(shí)型數(shù)為1234.567,則函數(shù)返回1234.572000;

實(shí)型數(shù)為1234.564,則函數(shù)返回1234.562000。

注意:部分源程序存在文件PROGl.C文件中。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。

30.學(xué)生的記錄由學(xué)號(hào)和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun(),它的功能是:把低于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,低于平均分的學(xué)生人數(shù)通過形參n傳回,平均分通過函數(shù)值返回。

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<stdio,h>

#defineN8

typedefstruct

{charnum[10];

doubles;

}STREC;

doublefun(STREC*a,STREC*b,int*n)

{

}

main()

{

STRECs[N]={{"GA05",85},{"GA03",76}

{"GA02",69},{"GA04",85}

{"GA01",91}{"GA07",72},{"GA08",64}

{"GA06",87}};

STSCh[N],t;

FILE*out;

int.i,j,n;

doubleave;

ave=fun(s,h,&n);

printf("The%dstudentdatawhichis

lowerthan%7.3f:\n"n,ave);

for(i=0;i<n;i++)

/*輸出成績低平均值的學(xué)生記錄*/

printf("%s%4lf\n"h[i]num,

h[i].s);

printf("\n");

ut=fopen("out71dat","w"

fprintf(out,"%d\n%7.3f\n",nave);

/*輸出平均值/

for(i=0;i<n-1;i++)

for(j=i+l;j<n;j++)

if(h[i].s>h[j].s)

{t=h[i];h[i]=h[j];h[j]=t;}

/*將成績由低至高排列*/

for(i=0;i<n;i++)

fprintf(out,"%4lf\n"h[i]s);

fclose(out);

}

31.程序定義了N×N的二維數(shù)組,并在主函數(shù)中自動(dòng)賦值。

請編寫函數(shù)fun(inta[][N],intn),該函數(shù)的功能是使數(shù)組左下半三角元素中的值加上n。

例如:若n的值為3,a數(shù)組中的值為

a=254

169

537

則返回主程序后a數(shù)組中的值應(yīng)為

554

499

8610

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)full的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

#defineN5

fun(inta[][N],intn)

{

}

main()

{

inta[N][N],n,i,j;

clrscr();

printf("*****Thearray*****\n");

for(i=0;i<N;i++)

/*產(chǎn)生—個(gè)隨機(jī)5*5矩陣*/

{

for(j=0;j<N;j++)

{

a[i][j]=rand()%10;

printf("%4d",a[i][j]);

}

printf("\n");

}

do

n=rand()%10;

/*產(chǎn)生一個(gè)小于5的隨機(jī)數(shù)n*/

while(n>=5);

printf("n=%4d\n",n);

fun(a,n);

printf("*****THERESULT*****\n");

for(i=0;i<N;i++)

{

for(j=0;j<N;i++)

printf("%4d",a[i][j]);

printf("\n");

}

}

32.學(xué)生的記錄由學(xué)號(hào)和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun,它的功能是:按分?jǐn)?shù)的高低排列學(xué)生的記錄,高分在前。

注意:部分源程序在文件PROGl.C文件中。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。

33.N名學(xué)生的成績已在主函數(shù)中放入一個(gè)帶頭節(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指向鏈表的頭節(jié)點(diǎn)。請編寫函數(shù)fun(),它的功能是:找出學(xué)生的最低分,由函數(shù)值返回。

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

#include<Stdlib.h>

#defineN8

StructSlist

{doubles;

StructSlist*next;

};

tyPedefStructSlistSTREC;

doublefun(STREC*h)

{

}

STREC*Creat(double*S)

{

STREC*h,*p,*q;

inti=0;

h=p={STREC*)malloc(sizeof(STREC));

p->S=0;

while(i<N)

/*產(chǎn)生8個(gè)節(jié)點(diǎn)的鏈表,各分?jǐn)?shù)存入鏈表中*/

{q=(STREC*)malloc(sizeOf(STREC));

p->S=S[i];i++;p->next=q;p=q;

}

p->next=NULL;

returnh;

/*返回鏈表的首地址*/

}

outlist(STREC*h)

{

STREC*p;

p=h;

printf("head");

do

{printf("->%2.of",p->s);p=p->next;}

/*輸/出各分?jǐn)?shù)*/

while(p!=NULL);

printf("\n\n");

}

main()

{

doubles[N]={56,89,76,95,91,68,75,

85},min;

STREC*h;

h=creat(S);

outlist(h);

min=fun(h);

printf("min=%6.If\n",min);

}

34.下列程序定義了NXN的二維數(shù)組,并在主函數(shù)中自動(dòng)賦值。請編寫函數(shù)fun(inta[][N]),該函數(shù)的功能是使數(shù)組右上半三角元素中的值全部置成0。例如a數(shù)組中的值為

a=456

179

326,

則返回主程序后a數(shù)組中的值應(yīng)為

000

100

320

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

#defineN5

intfun(inta[][N])

{

}

main()

{

inta[N][N],i,j;

clrscr();

printf("*****Thearray*****\n");

for(i=0;i<N;i++)

/*產(chǎn)生—個(gè)隨機(jī)的5*5矩陣*/

{for(j=0;j<N;j++)

{a[i][j]=rand()%10;

printf(“%4d”,a[i][j]);

}

printf(“\n”);

}

fun(a);

printf(“THERESULT\n”);

for(i=0;i<N;i++)

{for(j=0;i<N;j++)

printf(“%4d”,a[i][j]);

printf(“\n”);

}

}

四、單選題(0題)35.有下列程序:main{intk=5,n=0;while(k>0){switch(k){dcfault:break;case1:n=n+k;case2:case3:n+=k;}k--;}printf("%d\n".n);}程序運(yùn)行后的輸出結(jié)果足()。A.0B.4C.6D.7

五、單選題(0題)36.若有以下程序段,w和k都是整型變量:┇w=k:LB:if(w==0)gotoLE;W--:printf("*")gotoLB;LE;┇則不能與上面程序段等價(jià)的循環(huán)語句是()。A.for(w=k;w!=0;w--)printf("*");

B.for(w=k;w;--w)printf("*");

C.w=k;while(w--!=0)printf("*");

D.w=k:w++;do{w--;printf("*");}while(w!=0);

六、單選題(0題)37.

參考答案

1.C

2.C解析:通過scanf()函數(shù)從鍵盤讀入數(shù)據(jù)時(shí),接收參數(shù)的使用變量的地址值,所以選項(xiàng)A和B是錯(cuò)誤的。選項(xiàng)D要求輸入時(shí)以逗號(hào)間隔,故按題目要求的輸入方式不能正確讀取到3個(gè)數(shù),也是錯(cuò)誤的。所以正確答案是C。

3.DM(a+b,b+C,c+a)=a+b*b+c+c+a=1+2*2+3+3+1=12,注意x*y+z而不是(x)*(y)+z。

4.B選項(xiàng)A定義了一個(gè)數(shù)組pt,它包含兩個(gè)整型指針元素,所以pt是一個(gè)指針數(shù)組名,正確;選項(xiàng)B定義了一個(gè)數(shù)組指針Pt,pt指向一個(gè)數(shù)組,該數(shù)組包含兩個(gè)整型元素,錯(cuò)誤;選項(xiàng)C定義了一個(gè)函數(shù),pt是函數(shù)指針,指向的函數(shù)沒有參數(shù),返回類型為整型,正確;選項(xiàng)D定義了一個(gè)函數(shù),函數(shù)名為pt,函數(shù)返回整型指針類型,正確。故本題答案為B選項(xiàng)。

5.C解析:C語言中字符常量是以單引號(hào)括起來的單個(gè)字符,或?yàn)橐浴癨\”與三位八進(jìn)制數(shù)值或兩位十六進(jìn)制數(shù)值代替單個(gè)字符。

6.A函數(shù)fun()通過遞歸調(diào)用實(shí)現(xiàn)的功能為n+(n-1)+…+1,故程序的輸出結(jié)果為55。

7.D解析:選項(xiàng)A)在C語言中是一個(gè)合法的關(guān)系表達(dá)式,但它并不代表數(shù)學(xué)式o<=x<100。計(jì)算0<=x<100時(shí),從左到右結(jié)合,先計(jì)算0<=x,其結(jié)果只能是0或1,然后再比較0<100或1<100。根據(jù)運(yùn)算符的優(yōu)先級,選項(xiàng)B)先判斷j==0是否成立,其結(jié)果只能是0或1,然后再將0或1賦給i。選項(xiàng)C)中,(char)(65+3)為類型強(qiáng)制轉(zhuǎn)換,將整數(shù)型數(shù)據(jù)轉(zhuǎn)換為字符型。選項(xiàng)D)是將一個(gè)數(shù)據(jù)賦給一個(gè)表達(dá)式,等號(hào)左邊不合要求,所以錯(cuò)誤。

8.D解析:本題考查循環(huán)和指針做函數(shù)參數(shù),程序的功能是將a[0]和a[7]對換,a[1]和a[6]對換,a[2]和a[5]對換,a[3]和a[4]對換,最后輸出。

9.D

10.A解析:f(4+4)/f(2+2)=4+4*4+4/2+2*2+2=28。

11.D

12.A解析:局部變量在執(zhí)行到它所在的程序塊時(shí)產(chǎn)生,執(zhí)行完時(shí)被摧毀,而靜態(tài)局部變量的生存期將一直延長到程序運(yùn)行結(jié)束,故選項(xiàng)A正確;全局變量的只有一種靜態(tài)存儲(chǔ)類別,故全局變量說明為static存儲(chǔ)類,和沒有說明為static存儲(chǔ)類其生存期都是一直延長到程序運(yùn)行結(jié)束,故選項(xiàng)B不正確:未賦初值的局部變量的初值是隨機(jī)的,故選項(xiàng)C不正確;形參只能是一般局部變量,不能使用任何存儲(chǔ)類說明符,故選項(xiàng)D不正確。所以,4個(gè)選項(xiàng)中選項(xiàng)A符合題意。

13.*(p+5)或p[5]*(p+5)或p[5]

14.70萬70萬

15.棧頂棧頂解析:棧是限定在表的一端進(jìn)行插入和刪除操作的線性表。在表中,允許插入和刪除的一端叫做“棧頂”,不允許插入和刪除的一端叫做“棧底”。

16.*t*t解析:通過while循環(huán)掃描字符串,遇到字符‘\\0’結(jié)束,并用t統(tǒng)計(jì)字符串的長度。

17.驅(qū)動(dòng)模塊驅(qū)動(dòng)模塊解析:在進(jìn)行模塊測試時(shí),要為每個(gè)被測試的模塊另外設(shè)計(jì)兩類模塊:驅(qū)動(dòng)模塊和承接模塊(樁模塊)。其中,驅(qū)動(dòng)模塊相當(dāng)于被測試模塊的主程序,它接收測試數(shù)據(jù),并傳給被測試模塊,輸出實(shí)際測試結(jié)果。承接模塊通常用于代替被測試模塊調(diào)用的其他模塊,其作用僅做少量的數(shù)據(jù)操作,是一個(gè)模擬子程序,不必將子模塊的所有功能帶入。

18.靜態(tài)分析靜態(tài)分析解析:程序測試分為靜態(tài)分析和動(dòng)態(tài)測試。其中,靜態(tài)分析是指不執(zhí)行程序,而只是對程序文本進(jìn)行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯(cuò)誤。

19.操作系統(tǒng)操作系統(tǒng)解析:數(shù)據(jù)庫管理系統(tǒng)是幫助用戶創(chuàng)建和管理數(shù)據(jù)庫的應(yīng)用程序的集合。因此,數(shù)據(jù)庫管理系統(tǒng)需要操作系統(tǒng)的支持,為用戶提供服務(wù)。

20.67G67G解析:根據(jù)題意,a=‘A’+‘5’-‘3’=65+2=67,b=67+4=71,71即為字母G的ASCⅡ碼值。程序要求按十進(jìn)制形式輸出a,按字符形式輸出b,所以結(jié)果為67G。

21.n/2性表的任何位置插入一個(gè)元素的概率相等,即概率為p=1/(n+1),則插入一個(gè)元素時(shí)所需移動(dòng)元素的平均次數(shù)為E=1/(n+1)(n-i+1)=n/2。

22.SET單價(jià)=單價(jià)*1.05SET單價(jià)=單價(jià)*1.05解析:更新表中元組的值,使用UPDATE命令,一次可以更新表中的一個(gè)或多個(gè)屬性值。UPDATE短語之后指定更新數(shù)據(jù)所屬的表,將新的屬性值或表達(dá)式賦值給對應(yīng)的屬性名(SET單價(jià)=單價(jià)*1.05),并置于SET短語之后。要求對人民郵電出版社的圖書漲5%,需要用WHERE短語對元組進(jìn)行限制,即對符合條件的元組進(jìn)行更新。

23.structnode*structnode*解析:link是指向結(jié)構(gòu)體自身的指針,因此link是指針,指向strictnode類型的數(shù)據(jù),可定義成“stmctnode*link”。

24.實(shí)體完整性實(shí)體完整性解析:關(guān)系模型中的完整性是指數(shù)據(jù)庫中數(shù)據(jù)的正確性和一致性。為了維護(hù)數(shù)據(jù)庫中數(shù)據(jù)與現(xiàn)實(shí)世界的一致性,關(guān)系數(shù)據(jù)庫的插入、刪除、修改操作必須遵循3類完整性規(guī)則。關(guān)系模型的3類完整性指的是實(shí)體完整性、參照完整性和用戶定義的完整性。

25.doublefun(intn){inti;doubles=0.0;for(i=l;i<=n;i++)s=s+l.0/(i*(i+l));/*求級數(shù)的和*/returns;}doublefun(intn)\r\n{\r\ninti;\r\ndoubles=0.0;\r\nfor(i=l;i<=n;i++)\r\ns=s+l.0/(i*(i+l));/*求級數(shù)的和*/\r\nreturns;\r\n}解析:解決數(shù)學(xué)序列的問題,我們的思路依然是“數(shù)學(xué)先行”,即先看清楚題目的數(shù)學(xué)邏輯,然后再根據(jù)C語言來“翻譯”出來。本題中,每一項(xiàng)的值都是n*(n+1)的倒數(shù)。當(dāng)輸入n時(shí),從1開始循環(huán),注意,此處for(i=1;i

26.intfun(intw[][N]){intijk=0;ints=0;for(i=0;i<N;i++)for(j=0;j<N;j++)if(i==0||i==N-1||j==0||j==N-1){s=s+w[i][j]*w[i][j];}returns;}intfun(intw[][N])\r\n{\r\ninti,j,k=0;\r\nints=0;\r\nfor(i=0;i<N;i++)\r\nfor(j=0;j<N;j++)\r\nif(i==0||i==N-1||j==0||j==N-1)\r\n{\r\ns=s+w[i][j]*w[i][j];\r\n}\r\nreturns;\r\n}

27.voidfun(int*aint*n){inti.j=0;for(i=1;i<=1000;i++)/*求1到1000之內(nèi)能被5或13整除、但不能同時(shí)被5和13整除的所有整數(shù)并放入數(shù)組a中*/if((i%5==0||i%13==0)&&i%65!=0)a[j++]=i;*n=j;/*傳回滿足條件的數(shù)的個(gè)數(shù)*/}voidfun(int*a,int\u3000*n)\r\n{\r\ninti.j=0;\r\nfor(i=1;i<=1000;i++)/*求1到1000之內(nèi)能被5或13整除、但不能同時(shí)被5和13整除的所有整數(shù),并放入數(shù)組a中*/\r\nif((i%5==0||i%13==0)&&i%65!=0)\r\na[j++]=i;\r\n*n=j;/*傳回滿足條件的數(shù)的個(gè)數(shù)*/\r\n}解析:注意本題題目是找出能被5或13整除但不能同時(shí)被5和13整除的所有整數(shù)。能同時(shí)被5和13整除的整數(shù)一定能被65整除,且不能被65整除的數(shù)不一定就是能被5或13整除的數(shù)。所以可得出程序中的if()。按運(yùn)算優(yōu)先級可知(i%5==0||i%13==0),注意,兩邊必須要有小括號(hào)。

28.

解析:該程序功能是求出二維數(shù)組周邊元素之和。其中周邊元素是指數(shù)組的最上和最下的兩行,最左和最右的兩列。數(shù)組第一行元素的行下標(biāo)為0,最后一行元素的行下標(biāo)為M-1,第一列的列下標(biāo)為0,最后一列的列下標(biāo)為N-1。

29.

解析:該程序功能是進(jìn)行四舍五入。其中,通常求實(shí)數(shù)x保留m位小數(shù),首先將x擴(kuò)大10(m+1)倍,擴(kuò)大后的x加上5后,進(jìn)行截取判斷,最后進(jìn)行恢復(fù)。

30.doublefun(STREC*aSTREC*bint*n){intij=0;doubleay=0.0;for(i=0;i<N;i++)av=av+a[i].s;av=av/N;/*求平均值*/for(i=0;i<N;i++)if(a[i].s<av)b[j++]=a[i];/*將低于平均值的學(xué)生記錄存入結(jié)構(gòu)體b中*/*n=j;/*指針傳回低于平均值的學(xué)生人數(shù)//returnav;/*返回平均值*/}doublefun(STREC*a,STREC*b,int*n)\r\n{\r\ninti,j=0;\r\ndoubleay=0.0;\r\nfor(i=0;i<N;i++)\r\nav=av+a[i].s;\r\nav=av/N;/*求平均值*/\r\nfor(i=0;i<N;i++)\r\nif(a[i].s<av)b[j++]=a[i];/*將低于平均值的學(xué)生記錄存入結(jié)構(gòu)體b中*/\r\n*n=j;/*指針傳回低于平均值的學(xué)生人數(shù)//\r\nreturnav;/*返回平均值*/\r\n}解析:很明顯,本題應(yīng)該使用循環(huán)語句和條件判斷語句來實(shí)現(xiàn)目的,第1個(gè)循環(huán)是求出總分,然后求出平均分av。第2個(gè)循環(huán)的作用是將分?jǐn)?shù)低于平均分的學(xué)生記錄存入數(shù)組b中。

31.fun(inta[][N]intn){intij;for(i=0;i<N;i++)for(j=0;j<i;j++)a[i][j]=a[i][j]+n/*使數(shù)組左下半三角元素中的值加上n*/}fun(inta[][N],intn)\r\n{\r\ninti,j;\r\nfor(i=0;i<N;i++)\r\nfor(j=0;j<i;j++)\r\na[i][j]=a[i][j]+n/*使數(shù)組左下半三角元素中的值加上n*/\r\n}解析:首先從數(shù)組中找出要被加上n的那部分元素,找的過程其實(shí)就是找出將被挑出的那部分元素在原數(shù)組中的分布規(guī)律的過程。通過觀察得出,要被處理的那部分元素的下標(biāo)值的范圍是每行中從第一個(gè)元素開始,直到列數(shù)等于該行行數(shù)時(shí)為止。找到這個(gè)規(guī)律后,依次從數(shù)組中取得合乎要求的元素,然后再加上n。

32.

解析:該程序功能是按分?jǐn)?shù)的高低排列學(xué)生的記錄。首先從數(shù)組中挑選一個(gè)最大的元素,把它和第一元素交換,接著從剩下的n-1個(gè)元素中再挑出一個(gè)最大的元素,把它和第二個(gè)元素交換,不斷重復(fù)以上過程,直到比較完最后兩個(gè)元素。

33.doublefun(STREC*h){doublemin=h->s;while(h!=NULL)/*通過循環(huán)找到最低分?jǐn)?shù)*/{if(min>h->s)min=h->s;h=h->next;}returnmin;}doublefun(STREC\u3000*h)\r\n{\r\ndoublemin=h->s;\r\nwhile(h!=NULL)/*通過循環(huán)找到最低分?jǐn)?shù)*/\r\n{if(min>h->s)\r\nmin=h->s;\r\nh=h->next;\r\n}\r\nreturnmin;\r\n}解析:在本題中,h為—個(gè)指向結(jié)構(gòu)體的指針變量,若要引用它所指向的結(jié)構(gòu)體中的某一成員時(shí),要用指向運(yùn)算符“->”。由于是鏈表,所以要使h逐一往后移動(dòng),使用的是h=h->next。

34.intfun(inta[][N)){intij;for(i=0;i<N;i++)for(j=i;j<N;j++)a[i][j]=0;/*將數(shù)組右上半三角元素中的值全部置成0*/}intfun(inta[][N))\r\n{\r\ninti,j;\r\nfor(i=0;i<N;i++)\r\nfor(j=i;j<N;j++)\r\na[i][j]=0;/*將數(shù)組右上半三角元素中的值全部置成0*/\r\n}解析:本題旨在考查控制數(shù)組中右上半三角元素的算法,也就是兩個(gè)千篇一律的循環(huán)語句,希望學(xué)習(xí)者能夠掌握消化。

35.D本題主要考查while循環(huán)語句和switchcase語句的使用方法。其執(zhí)行步驟為:k=5時(shí),跳出switch語句,然后k自減1;當(dāng)k=4時(shí),跳出switch語句,然后k自減1;當(dāng)k=3時(shí),n=13+k=0+3=3,跳出switch語句,然后k自減1;當(dāng)k=2時(shí)n=n+k=3+2=5,跳出switch語句,然后k自減l;當(dāng)k=1時(shí),case1:n=n+k一5+1=6,沒有break繼續(xù)執(zhí)行CaSe3;n=n+k=6+1=7,跳出switch語句,然后k自減1;當(dāng)k=0時(shí),退出循環(huán),所以輸出結(jié)果為7。

36.C當(dāng)循環(huán)結(jié)束時(shí),w的值應(yīng)為-1,而其他選項(xiàng)中w的值為0,故選擇c選項(xiàng)。

37.A

2021-2022學(xué)年寧夏回族自治區(qū)固原市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級:________姓名:________考號(hào):________

一、單選題(12題)1.靜態(tài)鏈表中指針表示的是()。

A.內(nèi)存地址B.數(shù)組下標(biāo)C.下一元素地址D.左、右孩子地址

2.已知a、b、c為整型變量,若從鍵盤輸入5<空格>6<空格>7<回車>,使a的值為5,b的值為6,c的值為7,則下列選項(xiàng)中正確的輸入語句是()。

A.scanf("%3d%3d%3d",a,b,C);

B.scanf("%d%d%d",a,b,C);

C.scanf("%d%d%d",&a,&b,&c);

D.scanf("%d%d%d",&a,&b,&c);

3.以下程序的輸出結(jié)果是()。#defineM(x,y,z)x*y+zmain(){inta=l,b=2,c=3;printf("%d\n",m(a+b.b+c,c+a));}A.19B.17C.15D.12

4.以下針對相應(yīng)語句的注釋中,說法錯(cuò)誤的是()。

A.int*pt[2];/*pt是一個(gè)指針數(shù)組名*/

B.int(*pt)[2];/*pt是一維數(shù)組名*/

C.int(*pt)();/*pt是指向函數(shù)的指針*/

D.int*pt();/*pt是一個(gè)函數(shù)名*/

5.以下選項(xiàng)中,非法的字符常量是______。

A.'\t'B.'\17'C.\nD.'\xaa'

6.有以下程序:intfun(intn){if(n==1)return1;elsereturn(n+fun(n-1));}main(){intx;scanf("%if",&x);x=fun(x);printf("%d\n",x);}執(zhí)行程序時(shí),給變量X輸入10,程序的輸出結(jié)果是()。A.55B.54C.65D.45

7.以下選項(xiàng)中非法的表達(dá)式是()。

A.0<=x<100B.i=j==0C.(char)(65+3)D.x+1=x+1

8.有以下程序voidf(int*x,int*y){intt;t=*x;*x=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(p<q){f(p,q);p++;q--;}for(i=0;i<8;i++)printf("%d,",a[i]);}程序運(yùn)行后的輸出結(jié)果是

A.8,2,3,4,5,6,7,1,

B.5,6,7,8,1,2,3,4,

C.1,2,3,4,5,6,7,8,

D.8,7,6,5,4,3,2,1

9.以下程序運(yùn)行后,輸出結(jié)果是()#include<stdio.h>ss(char*s){char*p=s;while(*p)p++return(p-s);}main(){char*a=“abded”inti;i=ss(a);printf(“%d\n”,i);}A.8B.7C.6D.5

10.有以下程序#definef(x)x*xmain(){inti;i=f(4+4)/f(2+2);printf(“%d\n”,i);}執(zhí)行后輸出結(jié)果是()A.28B.22C.16D.4

11.

12.以下敘述中正確的是()。

A.局部變量說明為static存儲(chǔ)類,其生存期將得到延長

B.全局變量說明為static存儲(chǔ)類,其作用域?qū)⒈粩U(kuò)大

C.任何存儲(chǔ)類的變量在未賦初值時(shí),其值都是不確定的

D.形參可以使用的存儲(chǔ)類說明符與局部變量完全相同

二、2.填空題(12題)13.若有以下定義,則不移動(dòng)指針p,且通過指針p引用值為98的數(shù)組元素的表達(dá)式是______。

intw[10]={23,54,10,33,47,98,72,80,61},*p=w;

14.一張3.5英寸軟盤大約能存儲(chǔ)140萬個(gè)ASCⅡ字符,若存放漢字大約能存放【】個(gè)。

15.棧中允許進(jìn)行插入和刪除的一端叫做______。

16.函數(shù)mystrlen(char*s)的功能是求字符串s的長度,請?zhí)羁铡?/p>

mystrlen(char*s)

{char*t:

t=s;

while(【】)t++;

return(t-s);

}

17.在進(jìn)行模塊測試時(shí),要為每個(gè)被測試的模塊另外設(shè)計(jì)兩類模塊:驅(qū)動(dòng)模塊和承接模塊(樁模塊),其中【】的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結(jié)果。

18.程序測試分為靜態(tài)分析和動(dòng)態(tài)測試。其中【】是指不執(zhí)行程序,而只是對程序文本進(jìn)行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯(cuò)誤。

19.數(shù)據(jù)庫管理系統(tǒng)是位于用戶與______之間的軟件系統(tǒng)。

20.已知字母A的ASCⅡ碼為65。以下程序運(yùn)行后的輸出結(jié)果是()。

main()

{chara,b;

a='A'+'5'-'3';b=a+'6'-'2';

a='A'+'5'-'3';b=a+'6'-'2';

printf("%d%c\n",a,B);

}

21.長度為n的順序存儲(chǔ)線性表中,當(dāng)在任何位置上插入一個(gè)元素概率都相等時(shí),插入一個(gè)元素所需移動(dòng)元素的平均個(gè)數(shù)為【】。

22.對于圖書管理數(shù)據(jù)庫,將圖書表中"人民郵電出版社"的圖書的單價(jià)漲價(jià)5%。請對下面的SQL語句填空:UPDATE圖書【】WHERE出版單位="人民郵電出版社"

23.以下定義的結(jié)構(gòu)體類型包含兩個(gè)成員,其中成員變量info用來存放整型數(shù)據(jù);成員變量link是指向自身結(jié)構(gòu)體的指針。請將定義補(bǔ)充完整。

structnode

{intinfo;

【】Link;

};

24.關(guān)系模型的3類完整性指的是【】、參照完整性、用戶定義的完整性。

三、3.程序設(shè)計(jì)題(10題)25.編寫函數(shù)fun(),它的功能是:計(jì)算和輸出下列級數(shù)的和。

S=1/(1×2)+1/(2×3)+…+1/(n×(n+1))

例如,當(dāng)n=10時(shí),函數(shù)值為0.909091。

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序;

#include<conio.h>

#include<stdio.h>

doublefun(intn)

{

}

main()

{

clrscr();

printf("%f\n",fun(10));

}

26.下列程序定義了N×N的二維數(shù)組,并在主函數(shù)中賦值。請編寫一個(gè)函數(shù)fun(),函數(shù)的功能是:求數(shù)組周邊元素的平方和,并作為函數(shù)值返回給主函數(shù)。例如,若數(shù)組a中的值為

01279

1112155

2216111

979102

54141

則返回主程序后s的值應(yīng)為310。

[注意]部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

[試題源程序]

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

#defineN5

intfun(intw[][N])

{

}

main()

{

inta[N][N]=(0,1,2,7,9,1,11,21,5,5,2,21,6,11,1,9,7,9,10,2,5,4,1,4,1);

inti,j;

ints;

clrscr()

printf("*****Thearray*****\n");

for(i=0;i<N;i++)

{

for(j=0;j<N;j++)

{

printf("%4d",a[i][j]);

}

printf("\n");

}

s=fun(a);

printf("*****THERESULT*****\n");

printf("Thesumis:%d\n",s);

}

27.請編寫函數(shù)fun(),它的功能是:求出1到1000之內(nèi)能被5或13整除、但不能同時(shí)被5和13整除的所有整數(shù)并將它們放在9所指的數(shù)組中,通過n返回這些數(shù)的個(gè)數(shù)。

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(int*a,int*n)

{

}

main()

{

intaa[1000],n,k;

clrscr();

fun(aa,an);

for(k=0;k<n;k++)

if((k+1)%10==0)

{

printf("%5d",aa[k]);

printf("\n");/*—行寫10個(gè)數(shù)*/

}

else

printf("%5d",aa[k]);

}

28.請編寫函數(shù)fun,函數(shù)的功能是求出二維數(shù)組周邊元素之和,作為函數(shù)值返回。二維數(shù)組中的值在主函數(shù)中賦予。

例如:二維數(shù)組中的值為:

13579

29994

69998

13570

則函數(shù)值為61。

注意:部分源程序存在文件PROGl.C文件中。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。

29.請編一個(gè)函數(shù)fun,函數(shù)的功能是使實(shí)型數(shù)保留2位小數(shù),并對第三位進(jìn)行四舍五入(規(guī)定實(shí)型數(shù)為正數(shù))。

例如:實(shí)型數(shù)為1234.567,則函數(shù)返回1234.572000;

實(shí)型數(shù)為1234.564,則函數(shù)返回1234.562000。

注意:部分源程序存在文件PROGl.C文件中。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。

30.學(xué)生的記錄由學(xué)號(hào)和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun(),它的功能是:把低于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,低于平均分的學(xué)生人數(shù)通過形參n傳回,平均分通過函數(shù)值返回。

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<stdio,h>

#defineN8

typedefstruct

{charnum[10];

doubles;

}STREC;

doublefun(STREC*a,STREC*b,int*n)

{

}

main()

{

STRECs[N]={{"GA05",85},{"GA03",76}

{"GA02",69},{"GA04",85}

{"GA01",91}{"GA07",72},{"GA08",64}

{"GA06",87}};

STSCh[N],t;

FILE*out;

int.i,j,n;

doubleave;

ave=fun(s,h,&n);

printf("The%dstudentdatawhichis

lowerthan%7.3f:\n"n,ave);

for(i=0;i<n;i++)

/*輸出成績低平均值的學(xué)生記錄*/

printf("%s%4lf\n"h[i]num,

h[i].s);

printf("\n");

ut=fopen("out71dat","w"

fprintf(out,"%d\n%7.3f\n",nave);

/*輸出平均值/

for(i=0;i<n-1;i++)

for(j=i+l;j<n;j++)

if(h[i].s>h[j].s)

{t=h[i];h[i]=h[j];h[j]=t;}

/*將成績由低至高排列*/

for(i=0;i<n;i++)

fprintf(out,"%4lf\n"h[i]s);

fclose(out);

}

31.程序定義了N×N的二維數(shù)組,并在主函數(shù)中自動(dòng)賦值。

請編寫函數(shù)fun(inta[][N],intn),該函數(shù)的功能是使數(shù)組左下半三角元素中的值加上n。

例如:若n的值為3,a數(shù)組中的值為

a=254

169

537

則返回主程序后a數(shù)組中的值應(yīng)為

554

499

8610

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)full的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

#defineN5

fun(inta[][N],intn)

{

}

main()

{

inta[N][N],n,i,j;

clrscr();

printf("*****Thearray*****\n");

for(i=0;i<N;i++)

/*產(chǎn)生—個(gè)隨機(jī)5*5矩陣*/

{

for(j=0;j<N;j++)

{

a[i][j]=rand()%10;

printf("%4d",a[i][j]);

}

printf("\n");

}

do

n=rand()%10;

/*產(chǎn)生一個(gè)小于5的隨機(jī)數(shù)n*/

while(n>=5);

printf("n=%4d\n",n);

fun(a,n);

printf("*****THERESULT*****\n");

for(i=0;i<N;i++)

{

for(j=0;j<N;i++)

printf("%4d",a[i][j]);

printf("\n");

}

}

32.學(xué)生的記錄由學(xué)號(hào)和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun,它的功能是:按分?jǐn)?shù)的高低排列學(xué)生的記錄,高分在前。

注意:部分源程序在文件PROGl.C文件中。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。

33.N名學(xué)生的成績已在主函數(shù)中放入一個(gè)帶頭節(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指向鏈表的頭節(jié)點(diǎn)。請編寫函數(shù)fun(),它的功能是:找出學(xué)生的最低分,由函數(shù)值返回。

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

#include<Stdlib.h>

#defineN8

StructSlist

{doubles;

StructSlist*next;

};

tyPedefStructSlistSTREC;

doublefun(STREC*h)

{

}

STREC*Creat(double*S)

{

STREC*h,*p,*q;

inti=0;

h=p={STREC*)malloc(sizeof(STREC));

p->S=0;

while(i<N)

/*產(chǎn)生8個(gè)節(jié)點(diǎn)的鏈表,各分?jǐn)?shù)存入鏈表中*/

{q=(STREC*)malloc(sizeOf(STREC));

p->S=S[i];i++;p->next=q;p=q;

}

p->next=NULL;

returnh;

/*返回鏈表的首地址*/

}

outlist(STREC*h)

{

STREC*p;

p=h;

printf("head");

do

{printf("->%2.of",p->s);p=p->next;}

/*輸/出各分?jǐn)?shù)*/

while(p!=NULL);

printf("\n\n");

}

main()

{

doubles[N]={56,89,76,95,91,68,75,

85},min;

STREC*h;

h=creat(S);

outlist(h);

min=fun(h);

printf("min=%6.If\n",min);

}

34.下列程序定義了NXN的二維數(shù)組,并在主函數(shù)中自動(dòng)賦值。請編寫函數(shù)fun(inta[][N]),該函數(shù)的功能是使數(shù)組右上半三角元素中的值全部置成0。例如a數(shù)組中的值為

a=456

179

326,

則返回主程序后a數(shù)組中的值應(yīng)為

000

100

320

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

#defineN5

intfun(inta[][N])

{

}

main()

{

inta[N][N],i,j;

clrscr();

printf("*****Thearray*****\n");

for(i=0;i<N;i++)

/*產(chǎn)生—個(gè)隨機(jī)的5*5矩陣*/

{for(j=0;j<N;j++)

{a[i][j]=rand()%10;

printf(“%4d”,a[i][j]);

}

printf(“\n”);

}

fun(a);

printf(“THERESULT\n”);

for(i=0;i<N;i++)

{for(j=0;i<N;j++)

printf(“%4d”,a[i][j]);

printf(“\n”);

}

}

四、單選題(0題)35.有下列程序:main{intk=5,n=0;while(k>0){switch(k){dcfault:break;case1:n=n+k;case2:case3:n+=k;}k--;}printf("%d\n".n);}程序運(yùn)行后的輸出結(jié)果足()。A.0B.4C.6D.7

五、單選題(0題)36.若有以下程序段,w和k都是整型變量:┇w=k:LB:if(w==0)gotoLE;W--:printf("*")gotoLB;LE;┇則不能與上面程序段等價(jià)的循環(huán)語句是()。A.for(w=k;w!=0;w--)printf("*");

B.for(w=k;w;--w)printf("*");

C.w=k;while(w--!=0)printf("*");

D.w=k:w++;do{w--;printf("*");}while(w!=0);

六、單選題(0題)37.

參考答案

1.C

2.C解析:通過scanf()函數(shù)從鍵盤讀入數(shù)據(jù)時(shí),接收參數(shù)的使用變量的地址值,所以選項(xiàng)A和B是錯(cuò)誤的。選項(xiàng)D要求輸入時(shí)以逗號(hào)間隔,故按題目要求的輸入方式不能正確讀取到3個(gè)數(shù),也是錯(cuò)誤的。所以正確答案是C。

3.DM(a+b,b+C,c+a)=a+b*b+c+c+a=1+2*2+3+3+1=12,注意x*y+z而不是(x)*(y)+z。

4.B選項(xiàng)A定義了一個(gè)數(shù)組pt,它包含兩個(gè)整型指針元素,所以pt是一個(gè)指針數(shù)組名,正確;選項(xiàng)B定義了一個(gè)數(shù)組指針Pt,pt指向一個(gè)數(shù)組,該數(shù)組包含兩個(gè)整型元素,錯(cuò)誤;選項(xiàng)C定義了一個(gè)函數(shù),pt是函數(shù)指針,指向的函數(shù)沒有參數(shù),返回類型為整型,正確;選項(xiàng)D定義了一個(gè)函數(shù),函數(shù)名為pt,函數(shù)返回整型指針類型,正確。故本題答案為B選項(xiàng)。

5.C解析:C語言中字符常量是以單引號(hào)括起來的單個(gè)字符,或?yàn)橐浴癨\”與三位八進(jìn)制數(shù)值或兩位十六進(jìn)制數(shù)值代替單個(gè)字符。

6.A函數(shù)fun()通過遞歸調(diào)用實(shí)現(xiàn)的功能為n+(n-1)+…+1,故程序的輸出結(jié)果為55。

7.D解析:選項(xiàng)A)在C語言中是一個(gè)合法的關(guān)系表達(dá)式,但它并不代表數(shù)學(xué)式o<=x<100。計(jì)算0<=x<100時(shí),從左到右結(jié)合,先計(jì)算0<=x,其結(jié)果只能是0或1,然后再比較0<100或1<100。根據(jù)運(yùn)算符的優(yōu)先級,選項(xiàng)B)先判斷j==0是否成立,其結(jié)果只能是0或1,然后再將0或1賦給i。選項(xiàng)C)中,(char)(65+3)為類型強(qiáng)制轉(zhuǎn)換,將整數(shù)型數(shù)據(jù)轉(zhuǎn)換為字符型。選項(xiàng)D)是將一個(gè)數(shù)據(jù)賦給一個(gè)表達(dá)式,等號(hào)左邊不合要求,所以錯(cuò)誤。

8.D解析:本題考查循環(huán)和指針做函數(shù)參數(shù),程序的功能是將a[0]和a[7]對換,a[1]和a[6]對換,a[2]和a[5]對換,a[3]和a[4]對換,最后輸出。

9.D

10.A解析:f(4+4)/f(2+2)=4+4*4+4/2+2*2+2=28。

11.D

12.A解析:局部變量在執(zhí)行到它所在的程序塊時(shí)產(chǎn)生,執(zhí)行完時(shí)被摧毀,而靜態(tài)局部變量的生存期將一直延長到程序運(yùn)行結(jié)束,故選項(xiàng)A正確;全局變量的只有一種靜態(tài)存儲(chǔ)類別,故全局變量說明為static存儲(chǔ)類,和沒有說明為static存儲(chǔ)類其生存期都是一直延長到程序運(yùn)行結(jié)束,故選項(xiàng)B不正確:未賦初值的局部變量的初值是隨機(jī)的,故選項(xiàng)C不正確;形參只能是一般局部變量,不能使用任何存儲(chǔ)類說明符,故選項(xiàng)D不正確。所以,4個(gè)選項(xiàng)中選項(xiàng)A符合題意。

13.*(p+5)或p[5]*(p+5)或p[5]

14.70萬70萬

15.棧頂棧頂解析:棧是限定在表的一端進(jìn)行插入和刪除操作的線性表。在表中,允許插入和刪除的一端叫做“棧頂”,不允許插入和刪除的一端叫做“棧底”。

16.*t*t解析:通過while循環(huán)掃描字符串,遇到字符‘\\0’結(jié)束,并用t統(tǒng)計(jì)字符串的長度。

17.驅(qū)動(dòng)模塊驅(qū)動(dòng)模塊解析:在進(jìn)行模塊測試時(shí),要為每個(gè)被測試的模塊另外設(shè)計(jì)兩類模塊:驅(qū)動(dòng)模塊和承接模塊(樁模塊)。其中,驅(qū)動(dòng)模塊相當(dāng)于被測試模塊的主程序,它接收測試數(shù)據(jù),并傳給被測試模塊,輸出實(shí)際測試結(jié)果。承接模塊通常用于代替被測試模塊調(diào)用的其他模塊,其作用僅做少量的數(shù)據(jù)操作,是一個(gè)模擬子程序,不必將子模塊的所有功能帶入。

18.靜態(tài)分析靜態(tài)分析解析:程序測試分為靜態(tài)分析和動(dòng)態(tài)測試。其中,靜態(tài)分析是指不執(zhí)行程序,而只是對程序文本進(jìn)行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯(cuò)誤。

19.操作系統(tǒng)操作系統(tǒng)解析:數(shù)據(jù)庫管理系統(tǒng)是幫助用戶創(chuàng)建和管理數(shù)據(jù)庫的應(yīng)用程序的集合。因此,數(shù)據(jù)庫管理系統(tǒng)需要操作系統(tǒng)的支持,為用戶提供服務(wù)。

20.67G67G解析:根據(jù)題意,a=‘A’+‘5’-‘3’=65+2=67,b=67+4=71,71即為字母G的ASCⅡ碼值。程序要求按十進(jìn)制形式輸出a,按字符形式輸出b,所以結(jié)果為67G。

21.n/2性表的任何位置插入一個(gè)元素的概率相等,即概率為p=1/(n+1),則插入一個(gè)元素時(shí)所需移動(dòng)元素的平均次數(shù)為E=1/(n+1)(n-i+1)=n/2。

22.SET單價(jià)=單價(jià)*1.05SET單價(jià)=單價(jià)*1.05解析:更新表中元組的值,使用UPDATE命令,一次可以更新表中的一個(gè)或多個(gè)屬性值。UPDATE短語之后指定更新數(shù)據(jù)所屬的表,將新的屬性值或表達(dá)式賦值給對應(yīng)的屬性名(SET單價(jià)=單價(jià)*1.05),并置于SET短語之后。要求對人民郵電出版社的圖書漲5%,需要用WHERE短語對元組進(jìn)行限制,即對符合條件的元組進(jìn)行更新。

23.structnode*structnode*解析:link是指向結(jié)構(gòu)體自身的指針,因此link是指針,指向strictnode類型的數(shù)據(jù),可定義成“stmctnode*link”。

24.實(shí)體完整性實(shí)體完整性解析:關(guān)系模型中的完整性是指數(shù)據(jù)庫中數(shù)據(jù)的正確性和一致性。為了維護(hù)數(shù)據(jù)庫中數(shù)據(jù)與現(xiàn)實(shí)世界的一致性,關(guān)系數(shù)據(jù)庫的插入、刪除、修改操作必須遵循3類完整性規(guī)則。關(guān)系模型的3類完整性指的是實(shí)體完整性、參照完整性和用戶定義的完整性。

25.doublefun(intn){inti;doubles=0.0;for(i=l;i<=n;i++)s=s+l.0/(i*(i+l));/*求級數(shù)的和*/returns;}doublefun(intn)\r\n{\r\ninti;\r\ndoubles=0.0;\r\nfor(i=l;i<=n;i++)\r\ns=s+l.0/(i*(i+l));/*求級數(shù)的和*/\r\nreturns;\r\n}解析:解決數(shù)學(xué)序列的問題,我們的思路依然是“數(shù)學(xué)先行”,即先看清楚題目的數(shù)學(xué)邏輯,然后再根據(jù)C語言來“翻譯”出來。本題中,每一項(xiàng)的值都是n*(n+1)的倒數(shù)。當(dāng)輸入n時(shí),從1開始循環(huán),注意,此處for(i=1;i

26.intfun(intw[][N]){intijk=0;ints=0;for(i=0;i<N;i++)for(j=0;j<N;j++)if(i==0||i==N-1||j==0||j==N-1){s=s+w[i][j]*w[i][j];}returns;}intfun(intw[][N])\r\n{\r\ninti,j,k=0;\r\nints=0;\r\nfor(i=0;i<N;i++)\r\nfor(j=0;j<N;j++)\r\nif(i==0||i==N-1||j==0||j==N-1)\r\n{\r\ns=s+w[i][j]*w[i][j];\r\n}\r\nreturns;\r\n}

27.voidfun(int*aint*n){inti.j=0;for(i=1;i<=1000;i++)/*求1到1000之內(nèi)能被5或13整除、但不能同時(shí)被5和13整除的所有整數(shù)并放入數(shù)組a中*/if((i%5==0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論