2021年河南省濮陽(yáng)市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第1頁(yè)
2021年河南省濮陽(yáng)市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第2頁(yè)
2021年河南省濮陽(yáng)市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第3頁(yè)
2021年河南省濮陽(yáng)市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第4頁(yè)
2021年河南省濮陽(yáng)市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第5頁(yè)
已閱讀5頁(yè),還剩56頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

2021年河南省濮陽(yáng)市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(12題)1.算法的時(shí)間復(fù)雜度是指()A.執(zhí)行算法程序所需要的時(shí)間B.算法程序的長(zhǎng)度C.算法程序中的指令條數(shù)D.算法執(zhí)行過(guò)程中所需要的基本運(yùn)算次數(shù)

2.

3.下列運(yùn)算符中,運(yùn)算對(duì)象必須是整型的是()。

A./B.%=C.=D.&

4.有以下程序

main()

{inti;

for(i=1;i<=40;i++)

{if(i++%5==0)

if(++i%8==0)printf("%d",i);

}

printf("\n");

}

執(zhí)行后的輸出結(jié)果是

A.5B.24C.32D.40

5.

6.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un));}

A.6,2B.6,4C.8,4D.8,6

7.交換兩個(gè)變量的值,不允許用臨時(shí)變量,應(yīng)該使用下列()位運(yùn)算符。

A.&.B.^C.||D.~

8.

9.若有函數(shù)voidfun(doublea[]。int*n){…}以下敘述中正確的是()。A.調(diào)用fun函數(shù)時(shí)只有數(shù)組執(zhí)行按值傳送,其他實(shí)參和形參之間執(zhí)行按地址傳送

B.形參a和n都是指針變量

C.形參a是一個(gè)數(shù)組名,n是指針變量

D.調(diào)用fun函數(shù)時(shí)將把double型參數(shù)組元素一一對(duì)應(yīng)地傳送給形參a數(shù)組

10.若有定義:floatx=1.5;inta=1,b=3,c=2;則正確的switch語(yǔ)句是()。A.switch(x)

B.switch((int)x);{case1.0:printf("*\n");{case1:printf("*\n");case2.0:printf("**\n");}case2:printf("**\n");}

C.switch(a+B)

D.switch(a+B){case1;printf("*\n");{case1:printf("*\n");case2+1:printf("**\n");}casec:printf("**\n");)

11.命令“DIRA:*.*/W”的功能是()

A.寬行顯示A盤(pán)當(dāng)前目錄的所有文件

B.寬行顯示A盤(pán)所有目錄的所有文件

C.寬行顯示A盤(pán)的所有目錄

D.顯示A盤(pán)中的文件名,每滿一屏后停頓一下

12.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。A.eeaabmmnhhirrstu

B.efgabcdmnopqhijkIrstuvwxyz

C.efgacdmopqhjkIrvwxyz

D.eefgaabcdmmnopqhhijkIrrstuvwxyz

二、2.填空題(12題)13.下面rotate函數(shù)的功能是:將n行n列的矩陣A轉(zhuǎn)置為A',例如:

#defineN4

voidrotate(inta()[N])

{inti,j,t;

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

for(j=0;【】;j++)

{t=a[i][j];

【】;

a[j][i]=t;

}

}

14.在計(jì)算機(jī)領(lǐng)域中,通常用英文單詞“Byte'’表示【】。

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

fun(intx,inty,intz)

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

main()

{inta=31;

fun(6,3,a)

printf("%d,a)

}

16.以下程序運(yùn)行后的輸出結(jié)果是______。

fun(inta)

{intb=0;staticintc=3;

b++;c++;

return(a+b+c);

}

main()

{inti,a=5;

for(i=0;i<3;i++)printf("%d%d",i,fun(a));

printf("\n");

}

17.下列程序的輸出結(jié)果是______。

main()

{inta=2,b=4,c=6;

int*p1=&a,*p2,&b,*p;

*(p=&c)=*p1*(*p2);

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

}

18.有以下語(yǔ)句段:

intn1=10,n2=20;

printf("【】",n1,n2);

要求按以下格式輸出n1和n2的值:

n1=10

n2=20

每個(gè)輸出行從第一列開(kāi)始,請(qǐng)?zhí)羁铡?/p>

19.設(shè)有以下程序,為使之正確運(yùn)行,請(qǐng)?jiān)跈M線中填入應(yīng)包含的命令行。(注:try_me()函數(shù)在a:\myfile.txt中有定義。)

______

main()

{printf("\n");

try_me();

printf("\n");}

20.以下程序運(yùn)行后的輸出結(jié)果是【】。

#include<stdio,h>

#include<stating,h>

voidfun(char*s,intp,intk)

{inti;

for(i=p;i<k-1;i++)s[i]=s[i+2];

}

main()

{chars[]="abedefg";

fun(s,3,strlen(s));puts(s);

}

21.設(shè)在主函數(shù)中有以下定義和函數(shù)調(diào)用語(yǔ)句,且fun函數(shù)為void類(lèi)型;請(qǐng)寫(xiě)出fun函數(shù)的首部【】(要求形參名為b)。main(){doubles[10][22];intn;……fun(s);……}

22.下面程序中函數(shù)creat用于建立一個(gè)帶頭結(jié)點(diǎn)的單向鏈表,新產(chǎn)生的結(jié)點(diǎn)總是插在鏈表的末尾,單向鏈表的頭指針作為函數(shù)值返回。將程序補(bǔ)充完整。

#include<stdiao.h>

structlist

{chardata;structlist*next;};

structlist*creat()

{

structlist*h,*p,*q;charch;

h=【】malloc(sizeof(structlist));

p=q=h;ch=getchar();

while(ch!='?')

{

p=【】malloc(sizeof(structlist));

p->data=ch;q->next=p;q=p;ch=getchar();

}

p->next='\0';

【】;

}

23.下述函數(shù)統(tǒng)計(jì)—個(gè)字符串中的單詞個(gè)數(shù),單詞是指處在空格之間的字符序列,請(qǐng)?zhí)羁铡?/p>

intword(char*s)

{intnum=0,flag=0;

while(*s)

{if(【】='')flag=0;

elseif(【】){flag=1;num++}

}

return【】;}

24.數(shù)據(jù)流圖的類(lèi)型有【】和事務(wù)型。

三、3.程序設(shè)計(jì)題(10題)25.假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫(xiě)函數(shù)fun,它的功能是:將字符串尾部的*號(hào)全部刪除,前面和中間的*號(hào)不刪除。

例如,字符串中的內(nèi)容為:****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:****A*BC*DEF*G。在編寫(xiě)函數(shù)時(shí),不得使用C語(yǔ)言提供的字符串函數(shù)。

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

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

26.假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫(xiě)函數(shù)fun,它的功能是:使字符串的前導(dǎo)*號(hào)不得多于n個(gè);若多于n個(gè),則刪除多余的*號(hào):若少于或等于n個(gè),則什么也不做,字符串中間和尾部的*號(hào)不刪除。

例如,字符串中的內(nèi)容為:******A*BC*DEF*G****,若n的值為4,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:****A*BC*DEF*G****;若n的值為8,則字符串中的內(nèi)容仍為;*******A*BC*DEF*G****。n的值在主函數(shù)中輸入。

在編寫(xiě)函數(shù)時(shí),不得使用C語(yǔ)言提供的字符串函數(shù)。

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

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

27.請(qǐng)編寫(xiě)一個(gè)函數(shù)voidfun(cbara[],charb[],intn),其功能是:刪除一個(gè)字符申中指定下標(biāo)的字符。其中,a指向原字符串,刪除后的字符串存放在b所指的數(shù)組中,n中存放指定的下標(biāo)。

例如,輸入一個(gè)字符串world,然后輸入3,則調(diào)用該函數(shù)后的結(jié)果為word。

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

#defineLEN20

voidfun(chara[],charb[],intn)

{

}

main()

{

charstr1[LEN],str2[LEN];

intn;

clrscr();

printf("Enterthestring:\n");

gets(str1);

printf("Enterthepositionofthestring

deleted:");

scanf("%d",&n);

fun(str1,str2,n);

printf("Thenewstringis:%s\n",

str2);

}

28.請(qǐng)編寫(xiě)一個(gè)函數(shù)fun,它的功能是:比較兩個(gè)字符串的長(zhǎng)度,(不得調(diào)用C語(yǔ)言提供的求字符串長(zhǎng)度的函數(shù)),函數(shù)返回較長(zhǎng)的字符串。若兩個(gè)字符串長(zhǎng)度相同,則返回第一個(gè)字符串。

例如,輸入beijingshah曲aj(為回車(chē)鍵),函數(shù)將返回shanghai。

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

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

29.編寫(xiě)一個(gè)函數(shù)fun(),它的功能是:實(shí)現(xiàn)兩個(gè)字符串的連接(不使用庫(kù)函數(shù)strcat,即把p2所指的字符串連接到p1所指的字符串后。

例如,分別輸入下面兩個(gè)字符串:

FirstString

SecondString

則程序輸出:

FirstStringSecondString

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

voidfun(charpi[],charp2[])

{

}

main()

{

chars1[80],s2[40];

clrscr();

printf("Enters1ands2:\n");

scanf("%s%s",s1,s2);

printf("s1=%s\n",s1);

printf("s2=%s\n",s2);

printf("Invokefun(s1,s2):\n");

fun(s1,s2);

printf("Afterinvoking:\n");

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

}

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

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

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

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

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

31.編寫(xiě)一個(gè)函數(shù),從num個(gè)字符串中找出最長(zhǎng)的一個(gè)字符串,并通過(guò)形參指針max傳回該串地址。(注意:主函數(shù)中用¨¨作為結(jié)束輸入的標(biāo)志。)

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

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

32.請(qǐng)編寫(xiě)一個(gè)函數(shù)fun(),它的功能是計(jì)算并輸出給定整數(shù)n的所有因子(不包括1與自身)的平方和(規(guī)定n的值不大于100)。

例如:主函數(shù)從鍵盤(pán)給輸入n的值為56,則輸出為sum=1113。

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

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

試題程序:

#include<stdio.h>

longfun(intn)

{

}

main()

{

intn;

longsum;

printf("Inputn:");

scanf("%d",&n);

sum=fun(n);

printf("sum=%ld\n",sum);

}

33.請(qǐng)編寫(xiě)函數(shù)fun(),該函數(shù)的功能是:計(jì)算n門(mén)課程的平均分,計(jì)算結(jié)果作為函數(shù)值返回。

例如x有5門(mén)課程的成績(jī)是90.5,72,80,61.5,55,則函數(shù)的值為71.80。

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

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

試題程序:

#include<stdio.h>

floatfun(float*a,intn)

{

}

main()

{

floatscore[30]=(90.5,72,80,61.5,55},

aver;

aver=fun(score,5);

printf("\nAveragescoreis:%5.2f

\n",aver);

}

34.請(qǐng)編寫(xiě)函數(shù)fun(),其功能是:將s所指字符串中除了下標(biāo)為偶數(shù)、同時(shí)ASCII碼值為奇數(shù)的字符之外,其余的所有字符都刪除,串中剩余字符所形成的一個(gè)新串放在t所指的數(shù)組中。

例如,若s所指字符串中的內(nèi)容為ABCDEFG12345,其中字符B的ASCII碼值為偶數(shù),所在元素的下標(biāo)為奇數(shù),因此必須刪除;而字符A的ASCII碼值為奇數(shù),所在數(shù)組中的下標(biāo)為偶數(shù),因此不應(yīng)當(dāng)刪除,其他依次類(lèi)推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是ACEG。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<string.h)

voidfun(char*s,chart[])

{

}

main()

{

chars[100],t[100];

clrscr();

printf("\nPleaseenterstrings:");

scanf("%s",s);

fun(s,t);

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

}

四、單選題(0題)35.若有定義:typedefint*INTEGER;INTEGERp,*q;則以下敘述正確的是()。

A.q是基類(lèi)型為int的指針變量

B.p是int型變量

C.p是基類(lèi)型為int的指針變量

D.程序中可用INTEGER代替類(lèi)型名int

五、單選題(0題)36.給出發(fā)下定義:charx[]="abcdefg";chary[]={'a','b','c','d','e','f','g'};則正確的敘述為_(kāi)_____。

A.數(shù)組x和數(shù)組y等價(jià)B.數(shù)組x和數(shù)組y的長(zhǎng)度相同C.數(shù)組x的長(zhǎng)度大于數(shù)組y的長(zhǎng)度D.數(shù)組x的長(zhǎng)度小于數(shù)組y的長(zhǎng)度

六、單選題(0題)37.設(shè)有6個(gè)結(jié)點(diǎn)的無(wú)向圖,該圖至少應(yīng)有()條邊才能確保是一個(gè)連通圖。

A.5B.6C.7D.8

參考答案

1.D解析:算法的時(shí)間復(fù)雜度實(shí)際上就是執(zhí)行算法程序所需要的計(jì)算工作量。為了客觀地反映算法性能,在度量算法的時(shí)間復(fù)雜度時(shí),應(yīng)該與編寫(xiě)算法程序所使用的程序設(shè)計(jì)語(yǔ)言、執(zhí)行算法程序時(shí)所使用的計(jì)算工具以及程序員的水平無(wú)關(guān)。

選項(xiàng)A錯(cuò)誤,因?yàn)橥凰惴ǔ绦蛟谶\(yùn)行速度不同的計(jì)算機(jī)上運(yùn)行時(shí),其計(jì)算時(shí)間是不同的。選項(xiàng)B錯(cuò)誤。因?yàn)樗惴ㄋ帉?xiě)的程序長(zhǎng)度往往與程序設(shè)計(jì)語(yǔ)言以及程序員的水平有關(guān),同一個(gè)算法,用不同的程序設(shè)計(jì)語(yǔ)言或者不同的程序員所編寫(xiě)出的程序其長(zhǎng)度可能會(huì)大不相同。

選項(xiàng)C錯(cuò)誤,因?yàn)楦鶕?jù)一個(gè)算法所編制出的程序程序中,其指令條數(shù)往往與程序設(shè)計(jì)語(yǔ)言以及程序員的水平有關(guān),不能用算法程序中的指令條數(shù)來(lái)度量算法的時(shí)間復(fù)雜度。

所以,本題的正確答案為D。

2.B

3.B

4.C解析:當(dāng)for循環(huán)執(zhí)行到第30次時(shí),i的值為30能被5整除,然后繼續(xù)執(zhí)行兩次if語(yǔ)句,i經(jīng)過(guò)兩次自加1運(yùn)算,值變?yōu)?2,能被8整除,故此時(shí)第一次執(zhí)行'printf('%d',i);'語(yǔ)句,即輸出32。

5.C

6.B解析:本題主要考查結(jié)構(gòu)體和聯(lián)合內(nèi)存使用的區(qū)別:結(jié)構(gòu)中不同的成員分別使用不同的內(nèi)存空間,一個(gè)結(jié)構(gòu)所占內(nèi)存空間的大小是結(jié)構(gòu)中每個(gè)成員所占內(nèi)存空間大小的總和,結(jié)構(gòu)中每個(gè)成員相互獨(dú)立;聯(lián)合所占用的內(nèi)存空間為最長(zhǎng)的成員所占用的空間。

7.B按邏輯位運(yùn)算特點(diǎn):①用按位與運(yùn)算將特定位清為0或保留特定位;②用按位或運(yùn)算將特定的位置為1;③用按位異或運(yùn)算將某個(gè)變量的特定位翻轉(zhuǎn)或交換兩個(gè)變量的值。

8.B

9.B\n本題考查函數(shù)中數(shù)組和指針的傳值,數(shù)組a[]在參數(shù)傳遞時(shí),是傳遞的數(shù)組a的首地址,所以形參a和n都是指針變量。。

\n

10.C

11.A

12.C程序定義一個(gè)二維字符數(shù)組a,使用5個(gè)字符串對(duì)其初始化。另外定義字符指針數(shù)組P。for循環(huán)中,每次將數(shù)組a當(dāng)前下標(biāo)為i的字符串首地址賦給P[i],再求得P[i]的長(zhǎng)度賦給len,第1個(gè)printf輸出p[i]字符串的首字母,第2個(gè)printf輸出p[i]字符串下標(biāo)從len/2開(kāi)始的子字符串。當(dāng)下標(biāo)i=0時(shí)輸出efg;當(dāng)下標(biāo)i=l時(shí)輸出acd;當(dāng)下標(biāo)i=2時(shí)輸出mopq;當(dāng)下標(biāo)i=3時(shí)輸出hjkl;當(dāng)下標(biāo)i=4時(shí)輸出rvwxyz。所以程序輸出:efgacdmopqhjklrvwxyz。本題答案為C選項(xiàng)。

13.j<ia[i][j]=a[j][i]j<i\r\na[i][j]=a[j][i]解析:本題中要求將n行n列的矩陣A轉(zhuǎn)置,即讓數(shù)組中行上的元素變成對(duì)應(yīng)列上的元素。即把對(duì)角線兩邊的元素對(duì)換,所以本題的第一個(gè)空格處應(yīng)該填寫(xiě)j<i,第二個(gè)空格處填寫(xiě)交換對(duì)角線兩邊的元素的語(yǔ)句a[i][j]=a[j][i]。

14.字節(jié)字節(jié)

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

16.010111212010111212解析:本題考查的是靜態(tài)局部變量的運(yùn)用。靜態(tài)局部變量的作用域與普通局部變量一樣,但它的生存期將延長(zhǎng)到程序運(yùn)行結(jié)束。本題的主函數(shù)中使用一個(gè)for循環(huán)輸出循環(huán)變量i和fun(a)的值,由于a的值一直沒(méi)被修改過(guò),所以三次調(diào)用的都是fun(5)。第1次調(diào)用,b=0,c=3,所以返回值為5+1+4=10;第2次調(diào)用,因?yàn)閏是靜態(tài)局部變量,它仍然保存著上次調(diào)用結(jié)束時(shí)的值4,而b重新被創(chuàng)建和初始化為0,所以返回值為5+1+5=11;同理,第3次調(diào)用返回的是12。所以,程序最終輸出為:010111212。

17.本程序定義了3個(gè)指針變量p1、p2、p,并且將a、b的地址分別賦給p1、p2,則*p1=a=2,*p2=b=4,所以表達(dá)式*p1*(*p2)的值是8。在賦值語(yǔ)句的左邊是*(p=&c),即使指針p指向了變量c,因而*(p)代表了c的存儲(chǔ)單元,賦值語(yǔ)句“*(p=&c)=*p1*(*p2);”是把整數(shù)8賦給了變量c。\r\n\r\n

18.n1=%d\nn2=%dn1=%d\\nn2=%d解析:根據(jù)輸出結(jié)果,可以確定“格式控制”為n1=%d\\nn2=%d,其中,“n1=”和“n2=”是按原樣輸出的字符,“%d”是按十進(jìn)制整數(shù)輸出,“\\n”是轉(zhuǎn)義字符,用于輸出回車(chē)換行。

19.#include<a:\myfile.txt>#include<a:\\myfile.txt>解析:本題考查了函數(shù)的存儲(chǔ)分類(lèi)的概念。如果沒(méi)有特別說(shuō)明,函數(shù)的存儲(chǔ)范圍是從定義函數(shù)的位置到文件的結(jié)尾,如果其他文件想使用這個(gè)函數(shù),需要用ginclude文件包含命令將定義函數(shù)的文件包含進(jìn)來(lái)。

20.abcfgabcfg解析:fun函數(shù)中for循環(huán)語(yǔ)句的作用是將s所指的字符串中從第5個(gè)字符到第7個(gè)字符依次向前移動(dòng)兩個(gè)位置。輸出結(jié)果為abcfg。

21.

22.(structlist*)(structlist*)return(h)

23.*s++flag=0或*(s-1)=''num*s++\r\nflag=0或*(s-1)=''\r\nnum解析:在統(tǒng)計(jì)字符串單詞個(gè)數(shù)的算法中,本題的flag是為了記錄—個(gè)單詞是否結(jié)束。第18空應(yīng)填*s++;如果某個(gè)字符不是空格,則必須判斷它是否是單詞,如是,則使得flag的標(biāo)志為1,num的值加1。本題判斷方法是:先判斷s所指向的字符是否為空格,如果是則使得flag=0,否則判斷前—個(gè)字符是否是空格,如果是則說(shuō)明這個(gè)字符是—個(gè)單詞的開(kāi)始,將flag標(biāo)志為1,num的值加1,如果不是,則不必記錄。故第19空應(yīng)填flag=0或*(s-1)='';最后—個(gè)空格需填寫(xiě)的是返回的單詞的個(gè)數(shù),即num。

24.變換型典型的數(shù)據(jù)流類(lèi)型有兩種:變換型和事務(wù)型。變換型是指信息沿輸入通路進(jìn)入系統(tǒng),同時(shí)由外部形式變換成內(nèi)部形式,進(jìn)入系統(tǒng)的信息通過(guò)變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開(kāi)軟件系統(tǒng);在很多軟件應(yīng)用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一個(gè)或多個(gè)處理,這些處理能夠完成該作業(yè)要求的功能,這種數(shù)據(jù)流就叫做事務(wù)。

25.

解析:該程序功能是將字符串尾部的“*”號(hào)全部刪除,前面和中間的“*”號(hào)不刪除。本題的解題過(guò)程首先確定由串尾開(kāi)始的第一個(gè)非“*”位置,將由頭開(kāi)始到此位置的字符拷貝到字符串。

26.

解析:該程序功能是根據(jù)字符串前導(dǎo)的“*”號(hào)個(gè)數(shù)進(jìn)行相關(guān)操作。解題過(guò)程首先確定字符串尾,然后由串頭開(kāi)始對(duì)字符進(jìn)行判斷,同時(shí)對(duì)“*”字符進(jìn)行統(tǒng)計(jì),如果大于n,就進(jìn)行截取。

27.voidfun{chara[]charb[]intn){intik=0;for(i=0;a[i]!=‘\0’;i++)if(i!=n)/*將不是指定下標(biāo)的字符存入數(shù)組b中*/b[k++]=a[i];b[k]=‘\0’;/*在字符串最后加上結(jié)束標(biāo)記*/}voidfun{chara[],charb[],intn)\r\n{\r\ninti,k=0;\r\nfor(i=0;a[i]!=‘\\0’;i++)\r\nif(i!=n)/*將不是指定下標(biāo)的字符存入數(shù)組b中*/\r\nb[k++]=a[i];\r\nb[k]=‘\\0’;/*在字符串最后加上結(jié)束標(biāo)記*/\r\n}解析:本題要求刪除字符串中指定下標(biāo)的字符,即相當(dāng)于把不是指定下標(biāo)的字符留下。所以要用if(i!=n),注意不能寫(xiě)成“=”運(yùn)算。

28.

解析:該程序功能是比較兩個(gè)字符串的長(zhǎng)度。解題過(guò)程是首先分別求得兩個(gè)字符串的長(zhǎng)度,然后對(duì)這兩個(gè)值進(jìn)行判斷,實(shí)現(xiàn)兩個(gè)字符串長(zhǎng)度的比較。

29.voidfun(charp1[]charp2[]){intij;for(i=0;p1[i]!='\0';i++);/*求出的i為p1字符的總長(zhǎng)度包括結(jié)束標(biāo)記位*/for(j=0;p2[j]!='\0';j++)p1[i++]=p2[j];/*將p2字符串連在p1字符串的后面*/p1[i]='\0';/*在字符串最后加上結(jié)束標(biāo)記符*/}voidfun(charp1[],charp2[])\r\n{\r\ninti,j;\r\nfor(i=0;p1[i]!='\\0';i++);/*求出的i為p1字符的總長(zhǎng)度,包括結(jié)束標(biāo)記位*/\r\nfor(j=0;p2[j]!='\\0';j++)\r\np1[i++]=p2[j];/*將p2字符串連在p1字符串的后面*/\r\np1[i]='\\0';/*在字符串最后加上結(jié)束標(biāo)記符*/\r\n}解析:本題用兩個(gè)循環(huán),第1個(gè)循環(huán)的作用是將i走到第1個(gè)字符串的末尾。第2個(gè)循環(huán)的作用是將第2個(gè)字符串的字符連到第1個(gè)字符串的末尾。

30.

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

31.

解析:該程序功能是找出最長(zhǎng)的一個(gè)字符串。解題思路,首先指定第一個(gè)字符串為長(zhǎng)度最大的字符串,然后在循環(huán)過(guò)程中將其與其他的所有串的長(zhǎng)度進(jìn)行比較,求出最長(zhǎng)的串。

32.longfun(intn){inti;longs=0;for(i=2;i<=n-1;i++)/*從2~n-1中找n的所有因子*/if(n%i==0)s+=i*i;/*將所有因子求平方加*/returns;/將平方和返回*/}longfun(intn)\r\n{\r\ninti;\r\nlongs=0;\r\nfor(i=2;i<=n-1;i++)/*從2~n-1中找n的所有因子*/\r\nif(n%i==0)\r\ns+=i*i;/*將所有因子求平方加*/\r\nreturns;/將平方和返回*/\r\n}解析:本題的解題思路是用n逐個(gè)去除以2到n-1之間的所有數(shù),如果n能被除盡,則把所得到的一個(gè)因子的平方累加到s中去。

33.floatfun(float*aintn){floatav=0.0;inti;for(i=0;iav=av+a[i];/*求分?jǐn)?shù)的總和*/return(av/n);/*返回平均值*/}floatfun(float*a,intn)\r\n{\r\nfloatav=0.0;\r\ninti;\r\nfor(i=0;iav=av+a[i];/*求分?jǐn)?shù)的總和*/\r\nreturn(av/n);/*返回平均值*/\r\n}解析:我們先按數(shù)學(xué)的思路來(lái)計(jì)算平均分:總分除以人數(shù)即可得到平均分,其實(shí)用C語(yǔ)言的指針來(lái)實(shí)現(xiàn)該問(wèn)題,也不難。當(dāng)指針變量指向一個(gè)數(shù)組時(shí),用該指針變量引用數(shù)組元素時(shí),引用方式與數(shù)組的引用方式相同。如本題中a指向了score,所以通過(guò)a引用score中的元素時(shí)可以用下標(biāo)法,也可以用指針運(yùn)算法,a[i]和*(a+i)具有相同的作用。下標(biāo)運(yùn)算實(shí)際上是從當(dāng)前地址開(kāi)始往后取出地址中的第幾個(gè)元素,當(dāng)前地址下標(biāo)為0。例如:若有intcc[10],*P=cc+5;,即p指向了cc的第5號(hào)元素,則p[0]的作用是取出從當(dāng)前地址(即p所指地址)開(kāi)始的第0號(hào)元素,它與cc[5]相同:p[3]的作用是取出從當(dāng)前地址(即p所指地址)開(kāi)始往后的第3號(hào)元素,它與cc[8]相同:p[-2]的作用是取出從當(dāng)前地址開(kāi)始往前的第2號(hào)元素,它與cc[3]相同,但不提倡使用“負(fù)”的F標(biāo)。

34.voidfun(char*s/chart[]){intij=0;for(i=0;s[i]!='\0';i++){if(i%2==0&&s[i]%2!=0)t[j++]=s[i];}/*將下標(biāo)為偶數(shù)同時(shí)ASCII碼值為奇數(shù)的字符放入數(shù)組t中*/t[j]='\0';/*在字符串最后加上結(jié)束標(biāo)志位*/}voidfun(char*s/chart[])\r\n{inti,j=0;\r\nfor(i=0;s[i]!='\\0';i++)\r\n{if(i%2==0&&s[i]%2!=0)\r\nt[j++]=s[i];}/*將下標(biāo)為偶數(shù)同時(shí)ASCII碼值為奇數(shù)的字符放入數(shù)組t中*/\r\nt[j]='\\0';/*在字符串最后加上結(jié)束標(biāo)志位*/\r\n}解析:本題要求除了下標(biāo)為偶數(shù)同時(shí)ASCII碼值為奇數(shù)的字符之外,其他字符都刪除。即要留下下標(biāo)為偶數(shù)同時(shí)ASCII碼值為奇數(shù)的字符。所以,在if的條件語(yǔ)句中應(yīng)使用if(i%2==0&&s[i]%2!=0)。

35.C題干中使用typedef定義新類(lèi)型名INTEGER,它代表int*類(lèi)型。使用INTEGER定義p,相當(dāng)于int*p。使用INTEGER定義*q,相當(dāng)于int**q。所以p是基類(lèi)型為int的指針變量,q是基類(lèi)型為int*的指針變量,選項(xiàng)A、B、D錯(cuò)誤。故本題答案為C選項(xiàng)。

36.C

37.A:在一個(gè)無(wú)向圖G中,若從頂點(diǎn)Vi到頂點(diǎn)Vj有路徑相連,則稱Vi和Vj是連通的。連通圖是指任意兩個(gè)結(jié)點(diǎn)之間都有一個(gè)路徑相連。6個(gè)節(jié)點(diǎn)的無(wú)向圖,至少要5個(gè)邊才能確保是任意兩個(gè)節(jié)點(diǎn)之間都有路徑相連。下圖是一種可能的連接方式:故本題選A。2021年河南省濮陽(yáng)市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(12題)1.算法的時(shí)間復(fù)雜度是指()A.執(zhí)行算法程序所需要的時(shí)間B.算法程序的長(zhǎng)度C.算法程序中的指令條數(shù)D.算法執(zhí)行過(guò)程中所需要的基本運(yùn)算次數(shù)

2.

3.下列運(yùn)算符中,運(yùn)算對(duì)象必須是整型的是()。

A./B.%=C.=D.&

4.有以下程序

main()

{inti;

for(i=1;i<=40;i++)

{if(i++%5==0)

if(++i%8==0)printf("%d",i);

}

printf("\n");

}

執(zhí)行后的輸出結(jié)果是

A.5B.24C.32D.40

5.

6.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un));}

A.6,2B.6,4C.8,4D.8,6

7.交換兩個(gè)變量的值,不允許用臨時(shí)變量,應(yīng)該使用下列()位運(yùn)算符。

A.&.B.^C.||D.~

8.

9.若有函數(shù)voidfun(doublea[]。int*n){…}以下敘述中正確的是()。A.調(diào)用fun函數(shù)時(shí)只有數(shù)組執(zhí)行按值傳送,其他實(shí)參和形參之間執(zhí)行按地址傳送

B.形參a和n都是指針變量

C.形參a是一個(gè)數(shù)組名,n是指針變量

D.調(diào)用fun函數(shù)時(shí)將把double型參數(shù)組元素一一對(duì)應(yīng)地傳送給形參a數(shù)組

10.若有定義:floatx=1.5;inta=1,b=3,c=2;則正確的switch語(yǔ)句是()。A.switch(x)

B.switch((int)x);{case1.0:printf("*\n");{case1:printf("*\n");case2.0:printf("**\n");}case2:printf("**\n");}

C.switch(a+B)

D.switch(a+B){case1;printf("*\n");{case1:printf("*\n");case2+1:printf("**\n");}casec:printf("**\n");)

11.命令“DIRA:*.*/W”的功能是()

A.寬行顯示A盤(pán)當(dāng)前目錄的所有文件

B.寬行顯示A盤(pán)所有目錄的所有文件

C.寬行顯示A盤(pán)的所有目錄

D.顯示A盤(pán)中的文件名,每滿一屏后停頓一下

12.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。A.eeaabmmnhhirrstu

B.efgabcdmnopqhijkIrstuvwxyz

C.efgacdmopqhjkIrvwxyz

D.eefgaabcdmmnopqhhijkIrrstuvwxyz

二、2.填空題(12題)13.下面rotate函數(shù)的功能是:將n行n列的矩陣A轉(zhuǎn)置為A',例如:

#defineN4

voidrotate(inta()[N])

{inti,j,t;

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

for(j=0;【】;j++)

{t=a[i][j];

【】;

a[j][i]=t;

}

}

14.在計(jì)算機(jī)領(lǐng)域中,通常用英文單詞“Byte'’表示【】。

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

fun(intx,inty,intz)

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

main()

{inta=31;

fun(6,3,a)

printf("%d,a)

}

16.以下程序運(yùn)行后的輸出結(jié)果是______。

fun(inta)

{intb=0;staticintc=3;

b++;c++;

return(a+b+c);

}

main()

{inti,a=5;

for(i=0;i<3;i++)printf("%d%d",i,fun(a));

printf("\n");

}

17.下列程序的輸出結(jié)果是______。

main()

{inta=2,b=4,c=6;

int*p1=&a,*p2,&b,*p;

*(p=&c)=*p1*(*p2);

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

}

18.有以下語(yǔ)句段:

intn1=10,n2=20;

printf("【】",n1,n2);

要求按以下格式輸出n1和n2的值:

n1=10

n2=20

每個(gè)輸出行從第一列開(kāi)始,請(qǐng)?zhí)羁铡?/p>

19.設(shè)有以下程序,為使之正確運(yùn)行,請(qǐng)?jiān)跈M線中填入應(yīng)包含的命令行。(注:try_me()函數(shù)在a:\myfile.txt中有定義。)

______

main()

{printf("\n");

try_me();

printf("\n");}

20.以下程序運(yùn)行后的輸出結(jié)果是【】。

#include<stdio,h>

#include<stating,h>

voidfun(char*s,intp,intk)

{inti;

for(i=p;i<k-1;i++)s[i]=s[i+2];

}

main()

{chars[]="abedefg";

fun(s,3,strlen(s));puts(s);

}

21.設(shè)在主函數(shù)中有以下定義和函數(shù)調(diào)用語(yǔ)句,且fun函數(shù)為void類(lèi)型;請(qǐng)寫(xiě)出fun函數(shù)的首部【】(要求形參名為b)。main(){doubles[10][22];intn;……fun(s);……}

22.下面程序中函數(shù)creat用于建立一個(gè)帶頭結(jié)點(diǎn)的單向鏈表,新產(chǎn)生的結(jié)點(diǎn)總是插在鏈表的末尾,單向鏈表的頭指針作為函數(shù)值返回。將程序補(bǔ)充完整。

#include<stdiao.h>

structlist

{chardata;structlist*next;};

structlist*creat()

{

structlist*h,*p,*q;charch;

h=【】malloc(sizeof(structlist));

p=q=h;ch=getchar();

while(ch!='?')

{

p=【】malloc(sizeof(structlist));

p->data=ch;q->next=p;q=p;ch=getchar();

}

p->next='\0';

【】;

}

23.下述函數(shù)統(tǒng)計(jì)—個(gè)字符串中的單詞個(gè)數(shù),單詞是指處在空格之間的字符序列,請(qǐng)?zhí)羁铡?/p>

intword(char*s)

{intnum=0,flag=0;

while(*s)

{if(【】='')flag=0;

elseif(【】){flag=1;num++}

}

return【】;}

24.數(shù)據(jù)流圖的類(lèi)型有【】和事務(wù)型。

三、3.程序設(shè)計(jì)題(10題)25.假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫(xiě)函數(shù)fun,它的功能是:將字符串尾部的*號(hào)全部刪除,前面和中間的*號(hào)不刪除。

例如,字符串中的內(nèi)容為:****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:****A*BC*DEF*G。在編寫(xiě)函數(shù)時(shí),不得使用C語(yǔ)言提供的字符串函數(shù)。

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

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

26.假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫(xiě)函數(shù)fun,它的功能是:使字符串的前導(dǎo)*號(hào)不得多于n個(gè);若多于n個(gè),則刪除多余的*號(hào):若少于或等于n個(gè),則什么也不做,字符串中間和尾部的*號(hào)不刪除。

例如,字符串中的內(nèi)容為:******A*BC*DEF*G****,若n的值為4,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:****A*BC*DEF*G****;若n的值為8,則字符串中的內(nèi)容仍為;*******A*BC*DEF*G****。n的值在主函數(shù)中輸入。

在編寫(xiě)函數(shù)時(shí),不得使用C語(yǔ)言提供的字符串函數(shù)。

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

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

27.請(qǐng)編寫(xiě)一個(gè)函數(shù)voidfun(cbara[],charb[],intn),其功能是:刪除一個(gè)字符申中指定下標(biāo)的字符。其中,a指向原字符串,刪除后的字符串存放在b所指的數(shù)組中,n中存放指定的下標(biāo)。

例如,輸入一個(gè)字符串world,然后輸入3,則調(diào)用該函數(shù)后的結(jié)果為word。

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

#defineLEN20

voidfun(chara[],charb[],intn)

{

}

main()

{

charstr1[LEN],str2[LEN];

intn;

clrscr();

printf("Enterthestring:\n");

gets(str1);

printf("Enterthepositionofthestring

deleted:");

scanf("%d",&n);

fun(str1,str2,n);

printf("Thenewstringis:%s\n",

str2);

}

28.請(qǐng)編寫(xiě)一個(gè)函數(shù)fun,它的功能是:比較兩個(gè)字符串的長(zhǎng)度,(不得調(diào)用C語(yǔ)言提供的求字符串長(zhǎng)度的函數(shù)),函數(shù)返回較長(zhǎng)的字符串。若兩個(gè)字符串長(zhǎng)度相同,則返回第一個(gè)字符串。

例如,輸入beijingshah曲aj(為回車(chē)鍵),函數(shù)將返回shanghai。

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

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

29.編寫(xiě)一個(gè)函數(shù)fun(),它的功能是:實(shí)現(xiàn)兩個(gè)字符串的連接(不使用庫(kù)函數(shù)strcat,即把p2所指的字符串連接到p1所指的字符串后。

例如,分別輸入下面兩個(gè)字符串:

FirstString

SecondString

則程序輸出:

FirstStringSecondString

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

voidfun(charpi[],charp2[])

{

}

main()

{

chars1[80],s2[40];

clrscr();

printf("Enters1ands2:\n");

scanf("%s%s",s1,s2);

printf("s1=%s\n",s1);

printf("s2=%s\n",s2);

printf("Invokefun(s1,s2):\n");

fun(s1,s2);

printf("Afterinvoking:\n");

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

}

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

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

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

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

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

31.編寫(xiě)一個(gè)函數(shù),從num個(gè)字符串中找出最長(zhǎng)的一個(gè)字符串,并通過(guò)形參指針max傳回該串地址。(注意:主函數(shù)中用¨¨作為結(jié)束輸入的標(biāo)志。)

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

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

32.請(qǐng)編寫(xiě)一個(gè)函數(shù)fun(),它的功能是計(jì)算并輸出給定整數(shù)n的所有因子(不包括1與自身)的平方和(規(guī)定n的值不大于100)。

例如:主函數(shù)從鍵盤(pán)給輸入n的值為56,則輸出為sum=1113。

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

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

試題程序:

#include<stdio.h>

longfun(intn)

{

}

main()

{

intn;

longsum;

printf("Inputn:");

scanf("%d",&n);

sum=fun(n);

printf("sum=%ld\n",sum);

}

33.請(qǐng)編寫(xiě)函數(shù)fun(),該函數(shù)的功能是:計(jì)算n門(mén)課程的平均分,計(jì)算結(jié)果作為函數(shù)值返回。

例如x有5門(mén)課程的成績(jī)是90.5,72,80,61.5,55,則函數(shù)的值為71.80。

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

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

試題程序:

#include<stdio.h>

floatfun(float*a,intn)

{

}

main()

{

floatscore[30]=(90.5,72,80,61.5,55},

aver;

aver=fun(score,5);

printf("\nAveragescoreis:%5.2f

\n",aver);

}

34.請(qǐng)編寫(xiě)函數(shù)fun(),其功能是:將s所指字符串中除了下標(biāo)為偶數(shù)、同時(shí)ASCII碼值為奇數(shù)的字符之外,其余的所有字符都刪除,串中剩余字符所形成的一個(gè)新串放在t所指的數(shù)組中。

例如,若s所指字符串中的內(nèi)容為ABCDEFG12345,其中字符B的ASCII碼值為偶數(shù),所在元素的下標(biāo)為奇數(shù),因此必須刪除;而字符A的ASCII碼值為奇數(shù),所在數(shù)組中的下標(biāo)為偶數(shù),因此不應(yīng)當(dāng)刪除,其他依次類(lèi)推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是ACEG。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<string.h)

voidfun(char*s,chart[])

{

}

main()

{

chars[100],t[100];

clrscr();

printf("\nPleaseenterstrings:");

scanf("%s",s);

fun(s,t);

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

}

四、單選題(0題)35.若有定義:typedefint*INTEGER;INTEGERp,*q;則以下敘述正確的是()。

A.q是基類(lèi)型為int的指針變量

B.p是int型變量

C.p是基類(lèi)型為int的指針變量

D.程序中可用INTEGER代替類(lèi)型名int

五、單選題(0題)36.給出發(fā)下定義:charx[]="abcdefg";chary[]={'a','b','c','d','e','f','g'};則正確的敘述為_(kāi)_____。

A.數(shù)組x和數(shù)組y等價(jià)B.數(shù)組x和數(shù)組y的長(zhǎng)度相同C.數(shù)組x的長(zhǎng)度大于數(shù)組y的長(zhǎng)度D.數(shù)組x的長(zhǎng)度小于數(shù)組y的長(zhǎng)度

六、單選題(0題)37.設(shè)有6個(gè)結(jié)點(diǎn)的無(wú)向圖,該圖至少應(yīng)有()條邊才能確保是一個(gè)連通圖。

A.5B.6C.7D.8

參考答案

1.D解析:算法的時(shí)間復(fù)雜度實(shí)際上就是執(zhí)行算法程序所需要的計(jì)算工作量。為了客觀地反映算法性能,在度量算法的時(shí)間復(fù)雜度時(shí),應(yīng)該與編寫(xiě)算法程序所使用的程序設(shè)計(jì)語(yǔ)言、執(zhí)行算法程序時(shí)所使用的計(jì)算工具以及程序員的水平無(wú)關(guān)。

選項(xiàng)A錯(cuò)誤,因?yàn)橥凰惴ǔ绦蛟谶\(yùn)行速度不同的計(jì)算機(jī)上運(yùn)行時(shí),其計(jì)算時(shí)間是不同的。選項(xiàng)B錯(cuò)誤。因?yàn)樗惴ㄋ帉?xiě)的程序長(zhǎng)度往往與程序設(shè)計(jì)語(yǔ)言以及程序員的水平有關(guān),同一個(gè)算法,用不同的程序設(shè)計(jì)語(yǔ)言或者不同的程序員所編寫(xiě)出的程序其長(zhǎng)度可能會(huì)大不相同。

選項(xiàng)C錯(cuò)誤,因?yàn)楦鶕?jù)一個(gè)算法所編制出的程序程序中,其指令條數(shù)往往與程序設(shè)計(jì)語(yǔ)言以及程序員的水平有關(guān),不能用算法程序中的指令條數(shù)來(lái)度量算法的時(shí)間復(fù)雜度。

所以,本題的正確答案為D。

2.B

3.B

4.C解析:當(dāng)for循環(huán)執(zhí)行到第30次時(shí),i的值為30能被5整除,然后繼續(xù)執(zhí)行兩次if語(yǔ)句,i經(jīng)過(guò)兩次自加1運(yùn)算,值變?yōu)?2,能被8整除,故此時(shí)第一次執(zhí)行'printf('%d',i);'語(yǔ)句,即輸出32。

5.C

6.B解析:本題主要考查結(jié)構(gòu)體和聯(lián)合內(nèi)存使用的區(qū)別:結(jié)構(gòu)中不同的成員分別使用不同的內(nèi)存空間,一個(gè)結(jié)構(gòu)所占內(nèi)存空間的大小是結(jié)構(gòu)中每個(gè)成員所占內(nèi)存空間大小的總和,結(jié)構(gòu)中每個(gè)成員相互獨(dú)立;聯(lián)合所占用的內(nèi)存空間為最長(zhǎng)的成員所占用的空間。

7.B按邏輯位運(yùn)算特點(diǎn):①用按位與運(yùn)算將特定位清為0或保留特定位;②用按位或運(yùn)算將特定的位置為1;③用按位異或運(yùn)算將某個(gè)變量的特定位翻轉(zhuǎn)或交換兩個(gè)變量的值。

8.B

9.B\n本題考查函數(shù)中數(shù)組和指針的傳值,數(shù)組a[]在參數(shù)傳遞時(shí),是傳遞的數(shù)組a的首地址,所以形參a和n都是指針變量。。

\n

10.C

11.A

12.C程序定義一個(gè)二維字符數(shù)組a,使用5個(gè)字符串對(duì)其初始化。另外定義字符指針數(shù)組P。for循環(huán)中,每次將數(shù)組a當(dāng)前下標(biāo)為i的字符串首地址賦給P[i],再求得P[i]的長(zhǎng)度賦給len,第1個(gè)printf輸出p[i]字符串的首字母,第2個(gè)printf輸出p[i]字符串下標(biāo)從len/2開(kāi)始的子字符串。當(dāng)下標(biāo)i=0時(shí)輸出efg;當(dāng)下標(biāo)i=l時(shí)輸出acd;當(dāng)下標(biāo)i=2時(shí)輸出mopq;當(dāng)下標(biāo)i=3時(shí)輸出hjkl;當(dāng)下標(biāo)i=4時(shí)輸出rvwxyz。所以程序輸出:efgacdmopqhjklrvwxyz。本題答案為C選項(xiàng)。

13.j<ia[i][j]=a[j][i]j<i\r\na[i][j]=a[j][i]解析:本題中要求將n行n列的矩陣A轉(zhuǎn)置,即讓數(shù)組中行上的元素變成對(duì)應(yīng)列上的元素。即把對(duì)角線兩邊的元素對(duì)換,所以本題的第一個(gè)空格處應(yīng)該填寫(xiě)j<i,第二個(gè)空格處填寫(xiě)交換對(duì)角線兩邊的元素的語(yǔ)句a[i][j]=a[j][i]。

14.字節(jié)字節(jié)

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

16.010111212010111212解析:本題考查的是靜態(tài)局部變量的運(yùn)用。靜態(tài)局部變量的作用域與普通局部變量一樣,但它的生存期將延長(zhǎng)到程序運(yùn)行結(jié)束。本題的主函數(shù)中使用一個(gè)for循環(huán)輸出循環(huán)變量i和fun(a)的值,由于a的值一直沒(méi)被修改過(guò),所以三次調(diào)用的都是fun(5)。第1次調(diào)用,b=0,c=3,所以返回值為5+1+4=10;第2次調(diào)用,因?yàn)閏是靜態(tài)局部變量,它仍然保存著上次調(diào)用結(jié)束時(shí)的值4,而b重新被創(chuàng)建和初始化為0,所以返回值為5+1+5=11;同理,第3次調(diào)用返回的是12。所以,程序最終輸出為:010111212。

17.本程序定義了3個(gè)指針變量p1、p2、p,并且將a、b的地址分別賦給p1、p2,則*p1=a=2,*p2=b=4,所以表達(dá)式*p1*(*p2)的值是8。在賦值語(yǔ)句的左邊是*(p=&c),即使指針p指向了變量c,因而*(p)代表了c的存儲(chǔ)單元,賦值語(yǔ)句“*(p=&c)=*p1*(*p2);”是把整數(shù)8賦給了變量c。\r\n\r\n

18.n1=%d\nn2=%dn1=%d\\nn2=%d解析:根據(jù)輸出結(jié)果,可以確定“格式控制”為n1=%d\\nn2=%d,其中,“n1=”和“n2=”是按原樣輸出的字符,“%d”是按十進(jìn)制整數(shù)輸出,“\\n”是轉(zhuǎn)義字符,用于輸出回車(chē)換行。

19.#include<a:\myfile.txt>#include<a:\\myfile.txt>解析:本題考查了函數(shù)的存儲(chǔ)分類(lèi)的概念。如果沒(méi)有特別說(shuō)明,函數(shù)的存儲(chǔ)范圍是從定義函數(shù)的位置到文件的結(jié)尾,如果其他文件想使用這個(gè)函數(shù),需要用ginclude文件包含命令將定義函數(shù)的文件包含進(jìn)來(lái)。

20.abcfgabcfg解析:fun函數(shù)中for循環(huán)語(yǔ)句的作用是將s所指的字符串中從第5個(gè)字符到第7個(gè)字符依次向前移動(dòng)兩個(gè)位置。輸出結(jié)果為abcfg。

21.

22.(structlist*)(structlist*)return(h)

23.*s++flag=0或*(s-1)=''num*s++\r\nflag=0或*(s-1)=''\r\nnum解析:在統(tǒng)計(jì)字符串單詞個(gè)數(shù)的算法中,本題的flag是為了記錄—個(gè)單詞是否結(jié)束。第18空應(yīng)填*s++;如果某個(gè)字符不是空格,則必須判斷它是否是單詞,如是,則使得flag的標(biāo)志為1,num的值加1。本題判斷方法是:先判斷s所指向的字符是否為空格,如果是則使得flag=0,否則判斷前—個(gè)字符是否是空格,如果是則說(shuō)明這個(gè)字符是—個(gè)單詞的開(kāi)始,將flag標(biāo)志為1,num的值加1,如果不是,則不必記錄。故第19空應(yīng)填flag=0或*(s-1)='';最后—個(gè)空格需填寫(xiě)的是返回的單詞的個(gè)數(shù),即num。

24.變換型典型的數(shù)據(jù)流類(lèi)型有兩種:變換型和事務(wù)型。變換型是指信息沿輸入通路進(jìn)入系統(tǒng),同時(shí)由外部形式變換成內(nèi)部形式,進(jìn)入系統(tǒng)的信息通過(guò)變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開(kāi)軟件系統(tǒng);在很多軟件應(yīng)用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一個(gè)或多個(gè)處理,這些處理能夠完成該作業(yè)要求的功能,這種數(shù)據(jù)流就叫做事務(wù)。

25.

解析:該程序功能是將字符串尾部的“*”號(hào)全部刪除,前面和中間的“*”號(hào)不刪除。本題的解題過(guò)程首先確定由串尾開(kāi)始的第一個(gè)非“*”位置,將由頭開(kāi)始到此位置的字符拷貝到字符串。

26.

解析:該程序功能是根據(jù)字符串前導(dǎo)的“*”號(hào)個(gè)數(shù)進(jìn)行相關(guān)操作。解題過(guò)程首先確定字符串尾,然后由串頭開(kāi)始對(duì)字符進(jìn)行判斷,同時(shí)對(duì)“*”字符進(jìn)行統(tǒng)計(jì),如果大于n,就進(jìn)行截取。

27.voidfun{chara[]charb[]intn){intik=0;for(i=0;a[i]!=‘\0’;i++)if(i!=n)/*將不是指定下標(biāo)的字符存入數(shù)組b中*/b[k++]=a[i];b[k]=‘\0’;/*在字符串最后加上結(jié)束標(biāo)記*/}voidfun{chara[],charb[],intn)\r\n{\r\ninti,k=0;\r\nfor(i=0;a[i]!=‘\\0’;i++)\r\nif(i!=n)/*將不是指定下標(biāo)的字符存入數(shù)組b中*/\r\nb[k++]=a[i];\r\nb[k]=‘\\0’;/*在字符串最后加上結(jié)束標(biāo)記*/\r\n}解析:本題要求刪除字符串中指定下標(biāo)的字符,即相當(dāng)于把不是指定下標(biāo)的字符留下。所以要用if(i!=n

溫馨提示

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

評(píng)論

0/150

提交評(píng)論