2023年湖南省株洲市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第1頁
2023年湖南省株洲市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第2頁
2023年湖南省株洲市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第3頁
2023年湖南省株洲市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第4頁
2023年湖南省株洲市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2023年湖南省株洲市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、2.填空題(10題)1.函數(shù)ssbc叩()的功能是對兩個字符申進行比較。當s所指字符串和t所指字符申相等時,返回值為0;當s所指字符串大于t所指字符串時,返回值大于0;當s所指字符串小于t所指字符串時,返回值小于0(功能等同于庫函數(shù)strcmp())。請?zhí)羁铡?/p>

#include<stdio.h>

intsstrcmp(char*s,char*t)

{

while(*s&&*t&&*s==)

{s++;t++;}

return

}

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

3.模塊測試時,要為每個被測試的模塊另外設(shè)計兩類模塊:驅(qū)動模塊和承接模塊。其中【】的作用是模擬被測試模塊的下層模塊。

4.以下程序的功能是:求出數(shù)組x中各相鄰兩個元素的和依次存放到a數(shù)組中,然后輸出。請?zhí)羁铡?/p>

main()

{intx[10],a[9],I;

for(I=0;I<10;I++)scanf("%d",&x[I]);

for(【】;I<10;I++)

a[I-1]=x[I]+【】;.

for(I=0;I<9;I++)printf("%d",a[I]);

printf("");

}

5.函數(shù)fun的功能是:根據(jù)以下公式求p的值,結(jié)果由函數(shù)值返回。m與n為兩個正數(shù),且要求m>n。

例如:m=12,n=8時,運行結(jié)果應(yīng)該是495.000000。請在題目的空白處填寫適當?shù)某绦蛘Z句,將該程序補充完整。

#include<stdio.h>

floatfun(intm,intn)

{inti;

doublep=1.0;

for(i=1;i<=m;i++)【】;

for(i=1;i<=n;i++)【】;

for(i=1;i<=m-n;i++)p=p/i;

returnp;

}

main()

{printf("p=%f\n",fun(12,8));

}

6.診斷和改正程序中錯誤的工作通常稱為【】。

7.設(shè)有下列程序:

#include<stdio.h>

#include<string.h>

main()

{inti;

chars[10],t[10];

gets(t);

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

{gets(s);

if(strcmp(t,s)<0)strcpy(t,s);

}

printf("%s\n",t);

}

程序運行后,從鍵盤上輸入(<CR>代表回車符):CDEF<CR>BADEF<CR>QTHRG<CR>,則程序的輸出結(jié)果是______。

8.若x和y都是double型變量,且x的初值為3.0,y的初值為2.0,則表達式pow(y,fabs(x))的值為【】。

9.數(shù)據(jù)庫系統(tǒng)中實現(xiàn)各種數(shù)據(jù)管理功能的核心軟件是______。

10.以下程序的輸出結(jié)果是【】。

fun(intx,inty,intz)

{z=x*x+y*y;}

main()

{inta=31;

fun(6,3,a)

printf("%d,a)

}

二、單選題(10題)11.若串S1="ABCDEFG",S2="9898",S3="###",S4="012345",執(zhí)行其結(jié)果為()。A.ABC###G0123B.ABCD###2345C.ABC###G1234D.ABCD###1234

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

A.“charc1,*c2,*c3[10];”是合法的變量定義語句

B.數(shù)組說明符的方括號中不能使用表達式

C.數(shù)組元素下標可以是非整數(shù)

D.若有定義“chararray[4];”,則語句“printf(“%c”,array[“3”]);”是合法的

13.

14.

15.

16.若有下列說明語句int(*p)();則標識符p代表的是()

A.一個用于指向函數(shù)的指針變量,函數(shù)返回值的類型為int型

B.一個帶回值類型為整型的函數(shù)名

C.一個用于指向整型數(shù)據(jù)的指針變量

D.一個帶回值類型為指針類型的函數(shù)名

17.有以下程序:#include<stdio.h>main(){FILE*fp;charstr[10];fp=fopen(“myfile.dat”,“w”);fputs(“abc”,fp);fclose(fp);fp=fopen(“myfile.dat”,“a+”);fprintf(fp,“%d”,28);rewind(fp);fscanf(fp,“%s”,str);puts(str);fclose(fp);}程序的運行結(jié)果是()。

A.abcB.28cC.abc28D.因類型不一致而出錯

18.以下敘述中錯誤的是()。

A.改變函數(shù)形參的值,不會改變對應(yīng)實參的值

B.函數(shù)可以返回地址值

C.可以給指針變量賦一個整數(shù)作為地址值

D.當在程序的開頭包含文件stdi0.h時,可以給指針變量賦NULL

19.以下選項中可作為C語言合法常量的是_____。A.-80B.-080C.-8e1.0D.-80.Oe

20.有以下程序:#include<stdio.h>main(){inta[3][3]={0,1,2,3,4,5,6,7,8},(*p)[3],i;p=a;for(i=0;i<3;i++){printf(“%d”,(*p)[i]);p++;}}程序的運行結(jié)果是()。

A.036B.012C.048D.147

三、程序設(shè)計題(10題)21.規(guī)定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,其功能是:除了字符串前導的。號之外,將串中其他*號全部刪除。在編寫函數(shù)時.不得使用C語言提供的字符串函數(shù).

22.編寫函數(shù)fun(),其功能是計算:

s作為函數(shù)值返回。

在C語言中可調(diào)用log(n)函數(shù)求1n(n)。log函數(shù)的引

用說明為:doublelog(doublex)。

例如,若m的值為20,則fun()函數(shù)值為6.506583。

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

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

試題程序:

23.N名學生的成績已在主函數(shù)中放入一個帶有頭結(jié)點的鏈表結(jié)構(gòu)中,h指向鏈表的頭結(jié)點。請編寫函數(shù)fun(),其功能是:找出學生的最高分,并由函數(shù)值返回。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入所編寫的若干語句。試題程序:

24.請編寫函數(shù)fun,其功能是:找出一維整型數(shù)組元素中最大的值所在的下標,并通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。

主函數(shù)中x是數(shù)組名,n是x中的數(shù)據(jù)個數(shù),max存放最大值。index存放最大值所在元素的下標。

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

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

試題程序:

25.學生的記錄由學號和成績組成,M名學生的數(shù)據(jù)已在主函數(shù)中放人結(jié)構(gòu)體數(shù)組stu中,請編寫函數(shù)proc(),它的功能是:把指定分數(shù)范圍之外的學生數(shù)據(jù)放在b所指的數(shù)組中,分數(shù)范圍之外的學生人數(shù)由函數(shù)值返回。

例如,輸入的分數(shù)是70和79,則應(yīng)當把分數(shù)低于70和高于79的學生數(shù)據(jù)輸出,不包含70分和79分的學生數(shù)據(jù)。主函數(shù)中把70放在low中,把79放在heigh中。

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

請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填人所編寫的若干語句。

試題程序:

26.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是將a、b兩個兩位正整數(shù)合并成一個新的整數(shù)放在c中。合并的方式是將a中的十位數(shù)和個位數(shù)依次放在變量c的千位和十位上,b中的十位數(shù)和個位數(shù)依次放在變量c的個位和百位上。例如,當a=45,b=12,調(diào)用該函數(shù)后c=4251。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){}main(){ inta,b; longc; printf(“Inputa,b:”); scanf(“%d%d”,&a,&b); fun(a,b,&c); printf(“Theresultis:%ld\n”,c);}

27.請編寫函數(shù)proc(),其功能是:將str所指字符串中下標為偶數(shù)的字符刪除,串中剩余字符形成的新串放在t所指數(shù)組中。

例如,當str所指字符串中的內(nèi)容為abcdefg,則在t所指數(shù)組中的內(nèi)容應(yīng)是bdf。

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

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

試題程序:

28.學生的記錄由學號和成績組成,M名學生的數(shù)據(jù)已在主函數(shù)中放人結(jié)構(gòu)體數(shù)組stu中,請編寫函數(shù)proc,它的功能是:把指定分數(shù)范圍之外的學生數(shù)據(jù)放在b所指的數(shù)組中,分數(shù)范圍之外的學生人數(shù)由函數(shù)值返回。

例如,輸入的分數(shù)是70和79,則應(yīng)當把分數(shù)低于70和高于79的學生數(shù)據(jù)輸出,不包含70分和79分的學生數(shù)據(jù)。主函數(shù)中把70放在low中,把79放在heigh中。

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

請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填人所編寫的若干語句。

試題程序:

#include<stdio.h>

#defineM16

typedefstruct

{

charnum[10];

ints:

}

STREC;

intproc(STREC*a,STREC*b,int1,inth)

{}

voidmain

{

STRECstu[M]={{"GA005",55),{"GA003",96},

{"GA002",80),{"GA004",68),

{"GA001",88},{"GA007",74},

{"GA008",85),{"GA006",89},

{"GA015",90),{"GA013”,53),

{"GA012",66},{"GA014”,82),

{"GA011",73},{"GA017",69),

{"GA018",64),{"GA016",86}};

STRECh[M];

inti,n,low,heigh,t;

printf("Enter2integernumberlow&

heigh:");

scanf("%d%d",&low,&heigh);

if(heigh<low)’

{

t=heigh:

heigh=low;

low=t;

}

n=proc(stu,h,low,heigh);

printf("Thestudent’Sdataout

%d--%d:\n",low,heigh);

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

printf("%S%4d\n",h[i].num,h[i].s);

//輸出指定分數(shù)范圍內(nèi)的學生記錄

printf("\n");

}

29.請編寫函數(shù)proc(),它的功能是計算:s=(1-1n(1)-1n(2)-1n(3)-…-1n(m))2s作為函數(shù)值返回。在C語言中可調(diào)用log(n)函數(shù)求1n(n)。log函數(shù)的引用說明是doublelog(doublex)。例如,若m的值為10,則proc()函數(shù)值為l98.934454。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

30.M名學生的成績已在主函數(shù)中放人一個帶頭結(jié)點的鏈表結(jié)構(gòu)中,h指向鏈表的頭結(jié)點。請編寫函數(shù)proc(),它的功能是:找出學生的最高分,由函數(shù)值返回。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

四、2.程序修改題(10題)31.給定程序MODll.C中函數(shù)fun的功能是:比較兩個字符串,將長的那個字符串的首地址作為函數(shù)值返回。

請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

32.下列給定程序中,函數(shù)fun()的功能是:將m(1≤m≤10)個字符串連接起來,組成一個新串,放入pt所指字符串中,例如:把3個串a(chǎn)bc,CD,EF串聯(lián)起來,結(jié)果是abcCDEF。

請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<conio.h>

#include<string.h>

#include<stdio.h>

/*************found**************/

intfun(charstr[][10],intm,char*pt)

{intk,q,i,j=0;

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

{q=strlen(str[k]);

j+=q;

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

/*************found**************/

pt[i]=str[k,i];

pt+=q;

pt[0]=0;

}

pt-=j;

}

main()

{intm,h;

chars[10][10],p[120];

clrscr();

printf("\nPleaseenterm:");

scanf("%d",&m);gets(s[0]);

printf("\nPleaseenter%dstring:In",m);

for(h=0;h<m;h++)gets(s[h]);

fun(s,m,p);

printf("\nTheresultis:%s\n",p);

}

33.下列給定程序中,函數(shù)fun()的功能是:將長整型數(shù)中每一位上為偶數(shù)的數(shù)依次取出,構(gòu)成一個新數(shù)放在沖。高位仍在高位,低位仍在低位。例如,當s中的數(shù)為87653142時,t中的數(shù)為8642。

請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main,~數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(longs,long*t)

/**********************************/

{intd;

longs1=l;

*t=0;

while(s>0)

{d=s%10;

/**********************************/

if(d%2=0)

{*t=d*sl+*t;

sl*=10

}

/**********************************/

s\=10;

}

}

main()

{longs,t;

clrscr();

printf("\nPleaseenters:");scanf

("%ld",&s);

fun(s,&t);

printf("Theresultis:%ld\n",t);

}

34.下列給定程序中函數(shù)fun()的功能是:計算n!。例如,給n輸入5,則輸出120.000000。

請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<stdio.h>

#include<conio.h>

doublefun(intn)

{doubleresult=l.0;

/*************found**************/

ifn==0

return1.0;

while(n>l&&n<170)

/*************found**************/

result*=n--

returnresult;

}

main()

{intn;

printf("InputN:");

scanf("%d"&n);

printf("\n\n%d!=%lf\n\n",n,fun(n));

}

35.給定程序MODll.C中函數(shù)fun的功能是:輸出M行M列整數(shù)方陣,然后求兩條對角線上元素之和,返回此和數(shù)。

請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

36.給定程序MODII.C中函數(shù)fun的功能是:把主函數(shù)中輸入的3個數(shù),最大的放在a中,最小的放在c中,中間的放在b中。

例如,輸入的數(shù)為:551234,輸出結(jié)果應(yīng)當是:a=55.0,b=34.0,c=12.0。

請改正程序中的錯誤,使它能得出正確結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

37.下列給定的程序中,函數(shù)fun()的功能是:計算并輸出k以內(nèi)最大的10個能被13或17整除的自然數(shù)之和。K的值由主函數(shù)傳入,若k的值為500,則函數(shù)的值為4622。

請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<stdio.h>

#include<conio.h>

intfun(intk)

{intm=0,mc=0,j;

while((k>=2)&&(mc<10))

{

/*************found**************/

if((k%13=0)||(k%17=0))

{m=m+k;mc++;}

k--;

/*************found**************/

returnm;

}

main()

{clrscr();

printf("%d\n",fun(500));

}

38.給定程序MODll.C中函數(shù)fun的功能是:根據(jù)整型形參m,計算如下公式的值。

例如,若m中的值為:5,則應(yīng)輸出:1.463611。

請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

39.下列給定程序中,函數(shù)fun()的功能是:計算并輸出下列級數(shù)的的N項之和SN,直到SN+1大于q為止,q的值通過形參傳入。

SN=2/1+3/2+4/3+(N+1)/N

例如,若q的值為50.0,則函數(shù)值為49.394948。

請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意;不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).

試題程序:

#include<conio.h>

#include<stdio.h>

/**************found***************/

doublefun(doubleq)

{intn;doubles,t;

n=2;

s=2.0;

while(s<=q)

{

t=s

/*************found*************/

s=s+(n+1)/n;

n++;

}

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

/************found***************/

returns;

}

main()

{clrscr();

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

}

40.給定程序MODl1.C中函數(shù)fun的功能是:從低位開始取出長整型變量s中奇數(shù)位上的數(shù),依次構(gòu)成一個新數(shù)放在t中。高位仍在高位,低位仍在低位。例如:當s中的數(shù)為2736598時,t中的數(shù)為:2358。

#include<conio.h>

#include<stdio.h>

/************found************/

voidfun(longs,longt)

{longs1=10;

*t=S%10;

while(s>0)

{s=s/l00;

*t=S%10*s1+*t;

/************found************/

s1=s1*100;

}

}

main()

{longs,t;

clrscr();

printf("\nPleaseenters:”);

scanf("%ld",&s);

fun(s,&t);

printf("Theresultis:%1d\n",t);

}

五、程序改錯題(2題)41.下列給定程序中,函數(shù)proc()的功能是:求整數(shù)X的Y次方的低3位值。例如,整數(shù)6的5次方為7776,此值的低3位值為776。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

42.下列給定程序中,函數(shù)proc()的功能是:先從鍵盤上輸入一個3行3列的矩陣的各個元素的值,然后輸出主對角線元素之和。請修改函數(shù)proc()中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、操作題(2題)43.下列給定的程序中,fun()函數(shù)的功能是:將p所指字符串中每個單詞的最后一個字母改成大寫(這里的“單詞”是指有空格隔開的字符串)。例如,若輸入:

Iamastudenttotaketheexamination

則應(yīng)輸出:IaMAstudenTtOtakethEexaminatioN

請改正程序中的錯誤,使它能得出正確的結(jié)果。

注童:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<conio.h>

#include<ctype.h>

#include<stdio.h>

voidfun(char*p)

{

intk=0;

for(;*p;p++)

if(k)

{

/*************found**************/

if(p=='')

{

k=0;

/*************found**************/

*p=toupper(*(p-1));

}

}

else

k=1;

}

main()

{charchrstr[64];

intd;

clrscr();

printf("\nPleaseenteranEnglishsentencewithin63letters:");

gets(chrstr);

d=strlen(chrstr);

chrstr[d=='';

chrstr[d+1]=0;

printf("\nBoforechanging:\n%s",chrstr);

fun(chrstr);

printf("\nAfterchanging:\n%s",chrstr);

}

44.使用VC++打開考生文件夾下modi1中的解決方案。此解決方案的項目中包含一個源程序文件modi1.c。在此程序中,函數(shù)fun()的功能是求出s所指字符串中最后一次出現(xiàn)的t所指字符串的地址,并將此地址通過函數(shù)值返回,在主函數(shù)中輸出從此地址開始的字符串;若未找到,則函數(shù)值為NULL。例如,當字符串中的內(nèi)容為“abcdabfabcdx”,t中內(nèi)容為“ab”時,輸出結(jié)果應(yīng)是“abcdx”。當字符串中的內(nèi)容為“abcdabfabcdx”,t中內(nèi)容為“abd”時,則程序輸出未找到信息“Notfound!”。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#include<stdio.h>#include<conio.h>#include<string.h>char*fun(char*s,char*t){ char*p,*r,*a;/*********found*********/ a=Null; while(*s) { p=s;r=t; while(*r)/*********found*********/ if(r==p) {r++;p++;} elsebreak; if(*r=='\0')a=s; s++;} returna;}voidmain(){ chars[l00],t[100],*p; system(“CLS”); printf(“\nPleaseenterstrings:”); scanf(“%s”,s); printf(“\nPleaseentersubstringt:”); scanf(“%s”,t); p=fun(s,t); if(p) printf(“\nTheresultis:%s\n”,p); else printf(“\nNotfound!\n”);}

參考答案

1.*t或t[0)*s-*t或*s-t[0]或s[0]-*t或s[0]t[0]*t或t[0)*s-*t或*s-t[0]或s[0]-*t或s[0]t[0]解析:本題考查的知識點是字符型指針變量作為函數(shù)的參數(shù)以及序符串大小的比較.函數(shù)sstrcmp()有兩個字符型指針變量,用來指向兩個字符串。比較兩個字符串的大小方法是:從第一個字符開始依次向后比較,若對應(yīng)的字符相等則接著比較下一個字符,一直到兩個字符串中對應(yīng)字符不等,或者有一個為'\\0',此對應(yīng)字符的ASCII碼大的字符串就大。故循環(huán)條件是*s和*t不為'\\0'。且*s和*t相同,第一處應(yīng)填“*t”或其他等價形式。根據(jù)題意可知第二處應(yīng)填“*s-*t”或其等價形式。

2.驅(qū)動模塊驅(qū)動模塊解析:由于模塊通常不是獨立的程序,自己不能運行,而需要其他模塊調(diào)用或驅(qū)動,同時被測試模塊還要去調(diào)用其他模塊,前者稱為驅(qū)動模塊,后者稱為承接模塊。其中驅(qū)動模塊的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結(jié)果;承接模塊的作用是代替被測模塊,調(diào)用其他模塊。

3.承接模塊承接模塊解析:進行模塊測試時,應(yīng)為每個被測試的模塊另外設(shè)計兩類模塊:驅(qū)動模塊和承接模塊。其中驅(qū)動模塊的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結(jié)果;承接模塊的作用是模擬被測試模塊的下層模塊。

4.I=1x[I-1]I=1,x[I-1]解析:對于10個數(shù),相臨的兩個數(shù)相加取和,總共要進行9次加法運算,所以空14處應(yīng)填入I=1。相臨的兩個數(shù)相加取和,放在數(shù)組a中,x[0]與x[1]的和存放在a[0]中,所以空15處應(yīng)填入x[I-1]。

5.p=p*ip=p/ip=p*ip=p/i解析:本題中,欲求p的值,需要先求m!,n!,(m-n)!,可分別用循環(huán)語句實現(xiàn)。

6.程序調(diào)試程序調(diào)試解析:程序調(diào)試的任務(wù)是診斷和改正程序中的錯誤。程序調(diào)試與軟件測試不同,軟件測試是盡可能多地發(fā)現(xiàn)軟件中的錯誤。先要發(fā)現(xiàn)軟件的錯誤,然后借助于調(diào)試工具找出軟件錯誤的具體位置。軟件測試貫穿整個軟件生命期,而調(diào)試主要在開發(fā)階段。

7.QTHRGQTHRG解析:strcmp(t,s)函數(shù)用來比較t和s所指字符串的大小,若t>s,則函數(shù)值大于0;若t=s,則函數(shù)值等于0:若t<s,則函數(shù)值小于0。strcpy(t,s)函數(shù)的功能是把字符數(shù)組s所指字符串的內(nèi)容復制到字符數(shù)組t所指的存儲空間中。本題中,t[10]='CDEF'。第一次循環(huán),s[10]='BADEF',if語句的控制條件strcmp(t,s)<0不成立,接著執(zhí)行第二次循環(huán).s='QTHRG',if語句的控制條件strcmp(t,s)<0成立,執(zhí)行下列的語句,將字符數(shù)組s所指字符串的內(nèi)容復制到字符數(shù)組t所指的存儲空間中,然后輸出字符數(shù)組t。

8.88解析:fabs函數(shù)功能是求x的絕對值,計算結(jié)果為double型。pow功能是計算x的y次方的值,計算結(jié)果同樣為double型。所以本題表達式相當于2.0的3.0次方,結(jié)果為8.000000。

9.數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫的管理機構(gòu),它是一種系統(tǒng)軟件,負責數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護、控制及保護和數(shù)據(jù)服務(wù)等。

10.3131解析:在函數(shù)調(diào)用時,形參值和改變,不會改變實參的值。

11.D

12.AC語言規(guī)定定義數(shù)組時,數(shù)組的長度必須是整型常量,數(shù)組說明符的方括號中表達式只要是常量即合法,因此選項B錯誤。C語言規(guī)定,數(shù)組元素下標必須是非負整數(shù),因此選項C錯誤。選項D中,“chararray[4]”數(shù)組的長度為4,“army[“3”]”中“3”是常量字符串,與C語言規(guī)定數(shù)組的下標必須是非負整數(shù)不符。故本題答案為A選項。

13.D

14.B

15.D

16.A

17.Cfprintf函數(shù)將內(nèi)容寫入硬盤的文件,fputs函數(shù)將字符串寫入文件,最終文件的內(nèi)容為abc28。故本題答案為C選項。

18.C指針變量的值只能是存儲單元地址,而不能是一個整數(shù),故選項C錯誤。

19.A解析:C語言的常量分為整型常量、實型常量和字符型常量。選項A屬于實型常量中的十進制小數(shù)形式的表示法,是合法的。

20.Cmain函數(shù)定義3行3列的整型二維數(shù)組a;定義數(shù)組指針P,P指向包含3個元素的數(shù)組。程序首先將a賦給p。for循環(huán)中,i=0時,P指向a的第1個元素{0,1,2},輸出p[0]即0;i=1時,p指向a的第2個元素{3,4,5},輸出P[1]即4;i=2時,p指向a的第3個元素{6,7,8},輸出P[2]即8。所以程序輸出048。故本題答案為C選項。

21.

程序設(shè)計題解析:

【考點分析】

本題考查:指針型變最定義;wh丑e循環(huán)語句;語句條件

表達式;字符串結(jié)束標識‘\0’。

【解題思路】

函數(shù)fun的功能:除了字符串前導的*號之外,將串中其他+號全部刪除。

【解答本題】

(1)定義一個臨時指針P,初始指向原串首地址;(2)利用循環(huán)語句把字符串前導*號拷貝到原串;(3)繼續(xù)移動指針,把串中和串尾的非*號字符拷貝到原串;(4)為修改后的字符串賦結(jié)束字符‘、O’。

【解題寶典】

要刪除字符串中的指定字符,我們通常采用保留非指定字符的方法??梢詫⒎侵付ㄗ址A粼谠?,即將需要保留的字符從原串的起始位置重新賦值;也可以保留到新串,即新建一個字符串,存放要保留的字符。

22.

【解析】題目要求寫出程序?qū)崿F(xiàn)數(shù)學表達式的功能,需要用for循環(huán)計算累加的結(jié)果,調(diào)用sqrt函數(shù)實現(xiàn)求平方根。循環(huán)變量的范圍是1~m,每次循環(huán)都進行一次累加求和。需要特別注意的是,log函數(shù)的形式參數(shù)為double型變量,用于循環(huán)的計數(shù)變量為整數(shù),所以必須強制轉(zhuǎn)換。最后返回所求出的平方根。

23.

【解析】本題考查的是結(jié)構(gòu)體類型、指針型變量、鏈表和if語句等知識點。需要用for循環(huán)遍歷鏈表中的每一個結(jié)點,用判斷語句比較結(jié)點數(shù)據(jù)域的大小。可以通過while循環(huán)實現(xiàn)對最大成績的查找,具體步驟為遍歷鏈表遇到比max大的值(max<h->s)則賦值給max,max=h->s。需要注意的是,h是指向結(jié)構(gòu)體類型的指針變量,引用它指向的結(jié)構(gòu)體的成員時,要用指向運算符“一>”。

24.

【解析】本題考查的是for循環(huán)和指針變量。通過for循環(huán)實現(xiàn)對數(shù)組的遍歷,形參iilax和d都是指針型變量,所以引用它們指向的變量時要進行指針運算。先有*max=a[0],在遍歷中如果遇到比max大的元素,則將a[i]賦值給max,下標i賦值給*d。循環(huán)語句用來遍歷數(shù)組元素,然后通過條件語句比較數(shù)組元素找到最大值。

25.

【解析】題目要求把指定范圍之外的數(shù)放到h中,將每一個學生的成績與指定的成績相比較,將符合條件的學生成績放在數(shù)組b中,并將符合要求的學生個數(shù)返回給主函數(shù)。

26.voidfun(inta,intb,long*c){/*b%10獲取b的個位數(shù),a/10獲取a的十位數(shù),a%10獲取a的個位數(shù),b/10獲取b的十位數(shù)*/ *c=b/10+(a%10)*10+(b%10)*100+(a/10)*1000;}本題主要考核如何取出a和b的個位數(shù)和十位數(shù),取出后如何將其表示成c中相應(yīng)的位數(shù)。由于a和b都是只有兩位的整數(shù),因此分別對它們除以10可得到它們的十位數(shù),分別用10對它們求余可得到它們的個位數(shù)。將得到的數(shù)對應(yīng)乘以1000、100、10、1,即可得到c的千位數(shù)、百位數(shù)、十位數(shù)、個位數(shù)。注意使用c時要進行指針運算。

27.

【解析】題目要求將下標為偶數(shù)的字符刪除,其余字符放在新的字符數(shù)組t中。首先取出字符串str中下標為奇數(shù)的字符,將其賦值給新的字符串t,最后用ˊ\0ˊ作為字符串結(jié)束的標志。

28.\n\tintproc(STREC*a,STREC*b,intl,inth)\n\n\n\t{\n\n\n\tinti,j=0;\n\n\n\tfor(i=0;i<M;i++)\n\n\n\tif((a[i].s>=0&&a[i].s<1)||(a[i].s>h&&a\n\n\n\t[i].s<=l00))

//通過if語句,來判斷指定范圍\n\n\n\t之外的數(shù)\n\n\n\tb[j++]=a[i];//放到b數(shù)組中\(zhòng)n\n\n\treturnj;//最后把其個數(shù)返回到主函數(shù)中\(zhòng)n\n\n\t}\n\n\n\t【解析】題目要求把指定范圍之外的數(shù)放到b中,將每一個學生的成績與指定的成績相比較,將符合條件的學生成績放在數(shù)組b中,并將符合要求的學生個數(shù)返回給主函數(shù)。\n

29.

【解析】首先我們應(yīng)定義一個變量來表示其和,另一個來表示其項數(shù),然后通過循環(huán),求得其差值,最后把和的平方返回到主函數(shù)中。

30.

【解析】要找出學生的最高分,就要比較所有學生的成績。定義一個變量max用來存放學生的最高分,初始化為第一個學生的成績,依次與其后的學生成績相比較,最后將得到的最高分返回主函數(shù)。

31.(1)char*fun(char*schar*t)(2)ss++;(3)tt++;(1)char*fun(char*s,char*t)(2)ss++;(3)tt++;解析:本題中函數(shù)的功能是比較兩個字符串,將長的那個字符串的首地址作為函數(shù)值返回。解題思路是對調(diào)試過程中產(chǎn)生的錯誤提示進行跟蹤,也就是題干中給出的錯誤標識符號下的語句。

32.(1)錯誤:intfun(charstr[][10]intmchar*pt)正確:voidfun(charstr[][10intmchar*pt)(2)錯誤:pt[i]=str[ki];正確:pt[i]=str[k][i];(1)錯誤:intfun(charstr[][10],intm,char*pt)正確:voidfun(charstr[][10,intm,char*pt)\r\n(2)錯誤:pt[i]=str[k,i];正確:pt[i]=str[k][i];解析:本題中的兩例錯誤我們已經(jīng)在前面的講解中詳細闡述了,一般這樣的字符串連接函數(shù)在C語言的考試中肯定不讓使用strcat函數(shù),但是,直接用if和while的循坪嵌套也很容易解決問題的。

33.(1)錯誤:intd;正確longd;(2)錯誤:if(d%2=0)正確:if(d%2==0)(3)錯誤:s\=10;正確:s/=10(1)錯誤:intd;正確longd;\r\n(2)錯誤:if(d%2=0)正確:if(d%2==0)\r\n(3)錯誤:s\\=10;正確:s/=10解析:其實,不論取出偶數(shù)還是奇數(shù),思路應(yīng)該是一樣的。我們在剛開始學習C語言的時候就學習過強制類型轉(zhuǎn)換以及運算級別的問題,所以,這里的int就沒有存在的理由。錯誤2中的問題是怎么表達一個偶數(shù)的問題,歸根結(jié)底還是“=”和“==”的區(qū)別問題。

34.(1)錯誤:ifn==0正確:if(n==0)(2)錯誤:result*=n--正確:result*=n--;(1)錯誤:ifn==0正確:if(n==0)\r\n(2)錯誤:result*=n--正確:result*=n--;解析:在做這道題之前,我們首先應(yīng)該明白一個數(shù)學上的概念,一般判卷人員先要執(zhí)行程序,如果結(jié)果正確,得滿分,否則錯一個扣分,再錯再扣,本題考查5!即5!=5×4×3×2×1=120,要求輸出double型結(jié)果。

35.(1)intfun(intnintxx[][M])(2)printf(“%4d”xx[i][j]);(1)intfun(intn,intxx[][M])(2)printf(“%4d”,xx[i][j]);解析:本題中函數(shù)的功能是輸出M行、M列正方陣,然后求兩條對角線上各元素之和。其中,假設(shè)矩陣行、列分別為i、j,那么對角線上的元素特點是主對角線上i=j(luò),以及逆對角線j=M-i-1。

36.(1)f1oatk;(2)if(*a<*c)(1)f1oatk;(2)if(*a<*c)解析:本題中函數(shù)的功能是把主函數(shù)中輸入的3個數(shù),最大的放在a中,最小的放在c中。對三個數(shù)進行兩兩比較,實現(xiàn)函數(shù)功能。

37.(1)錯誤:if((k%13=0)||(k%17=0))正確:if(k%13=0)||(k%17==0))(2)錯誤:缺少大括號正確:加}(1)錯誤:if((k%13=0)||(k%17=0))

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論