2021-2022學(xué)年廣東省潮州市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第1頁
2021-2022學(xué)年廣東省潮州市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第2頁
2021-2022學(xué)年廣東省潮州市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第3頁
2021-2022學(xué)年廣東省潮州市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第4頁
2021-2022學(xué)年廣東省潮州市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021-2022學(xué)年廣東省潮州市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(12題)1.有以下程序:#include<stdio.h>intfun(int*a,int*b,intn){inti=0,j=0,sum=0;for(;i<n;i++){sum+=a[i];if((i+1)%2==0){b[j++]=sum;sum=0;}}returnj;}main(){inta[8]={1,0,2,3,5,4,2,1},b[8],k,i;k=fun(a,b,8);for(i=0;i<k;i++)printf(“%d”,b[i]);}程序的運行結(jié)果是()。

A.0242B.1593C.1351D.286

2.一個遞歸的定義可以用遞歸過程求解,也可以用非遞歸過程求解,但單從運行時間來看,通常遞歸過程比非遞歸過程()。

A.較快B.較慢C.相同D.無法確定

3.二叉樹中第5層上的結(jié)點個數(shù)最多為________

A.8B.15C.16D.32

4.下述關(guān)于數(shù)據(jù)庫系統(tǒng)的敘中正確的是______。

A.數(shù)據(jù)庫系統(tǒng)減少了數(shù)據(jù)冗余

B.數(shù)據(jù)庫系統(tǒng)避免了一切冗余

C.數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的一致性是指數(shù)據(jù)類型的一致

D.數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù)

5.以下選項中,非法的字符常量是______。

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

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

A.一個C程序中可以包含多個不同名的函數(shù)

B.一個C程序只能有一個主函數(shù)

C.C程序在書寫時,有嚴格的縮進要求,否則不能編譯通過

D.C程序的主函數(shù)必須用main作為函數(shù)名

7.以下關(guān)于return語句的敘述中正確的是()。

A.一個自定義函數(shù)中必須有一條return語句

B.一個白定義函數(shù)中可以根據(jù)不同情況設(shè)置多條return語句

C.定義成void類型的函數(shù)中可以有帶返回值的return語句

D.沒有return語句的自定義函數(shù)在執(zhí)行結(jié)束時不能返回到調(diào)用處

8.有以下程序,程序中庫函數(shù)islower(ch)用以判斷ch中的字母是否為小寫字母:

程序運行后的輸出結(jié)果是()。

A.abcdEFg!B.AbCdEFg!C.abcdEFG!D.aBcDEFG!

9.在軟件開發(fā)過程中,軟件結(jié)構(gòu)設(shè)計是描述______。

A.數(shù)據(jù)存儲結(jié)構(gòu)B.軟件體系結(jié)構(gòu)C.軟件結(jié)構(gòu)測試D.軟件控制過程

10.

11.設(shè)有函數(shù)說明語句:intfun(int,int);以及函數(shù)指針定義語句:int(*f)(int,int);若要使函數(shù)指針指向函數(shù)fun的入口地址,以下選項中正確的是()。

A.f=fun();B.*f=fun;C.f=fun;D.*f=fun();

12.關(guān)于排序算法的以下說法,錯誤的是()

A.歸并排序的平均時間復(fù)雜度O(nlogn),最壞時間復(fù)雜度O(n^2)

B.堆排序平均時間復(fù)雜度O(nlogn),最壞時間復(fù)雜度O(nlogn)

C.冒泡排序平均時間復(fù)雜度O(n^2),最壞時間復(fù)雜度O(n^2)

D.快速排序的平均時間復(fù)雜度O(nlogn),最壞時間復(fù)雜度O(n^2)

二、2.填空題(12題)13.表示條件;10<x<100或x<0的C語言表達式是【】。

14.下面程序的運行結(jié)果是()。##include<stdio.h>main(){inta,s,n,m;a=2;s=0;n=1;m=1;while(m<=4){n=n*a;s=s+n;++m;}printf("s=%d",s);}

15.按照邏輯結(jié)構(gòu)分類,結(jié)構(gòu)可以分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),棧屬于______。

16.閱讀下列程序,則程序的輸出結(jié)果為【】。

#include"stdio.h"

structty

{intdata;

charc;};

main()

{structtya={30,′x′};

fun(a);

printf("%d%c",a.data,a.c);}

fun(structtyb)

{b.data=20;

b.c=′y′;}

17.設(shè)x、y、z為整型變量,且x=2,y=3,z=4,當執(zhí)行以下語句后,x的值是______。

x*=(y++)+(--z);

18.若有定義doublea[5];,則a數(shù)組元素下標的上限為______。

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

inta=5;

fun(intB)

{staticinta=10;

a+=b++;

printf("%d",A);

}

main()

{intc=20;

fun(C),

a+=C++;

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

}

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

main()

{

intx=15;

while(x>10&&x<50)

{

x++;

if(x/3){x++;break;}

elsecontinue;

}

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

}

21.在E-R圖中,矩形表示【】。

22.下面程序的功能是將字符串a(chǎn)下標值為偶數(shù)的元素由小到大排序,其他元素不變,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{chara[]="labchmfye",t;

inti,j;

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

for(j=i+2;j<9;【】)

if(【】)

{t=a[i];a[i]=a[j];a[j]=t;j++;}

puts(a);

printf("\n");

}

23.若有如下定義:

int[]={11,24,56,19,29,39),*t=s;

則不移動指針t,且通過指針t引用數(shù)組中值為29的元素的表達式是【】。

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

main()

{inta=3,b=4,c=5,t=99;

i[(b<a&&a<C)t=a;a=c;c=t;

if(a<c&&b<C)t=b;b=a;a=t;

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

}

三、3.程序設(shè)計題(10題)25.請編寫程序fun,函數(shù)的功能是:實現(xiàn)B=A+Aˊ,即把矩陣A加上A的轉(zhuǎn)置,存放在矩陣B中。計算結(jié)果在main函數(shù)中輸出。

例如,輸入下面的矩陣:其轉(zhuǎn)置矩陣為:

123147

456258

789369

程序輸出:

2610

61014

101418

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

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

26.函數(shù)fun的功能是:將a、b中的兩個兩位正整數(shù)合并形成一個新的整數(shù)放在c中。合并的方式是:將a中的十位和個位數(shù)依次放在變量c的千位和十位上,b中的十位和個位數(shù)依次放在變量c的個位和百位上。

例如,當a=45,b=12。調(diào)用該函數(shù)后,c=4251。

注意:部分源程序存在文件PROGl.C中。數(shù)據(jù)文件IN.DAT中的數(shù)據(jù)不得修改。

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

27.請編寫函數(shù)fun(),它的功能是計算:

s=(ln(1)+ln(2)+ln(3)+…+ln(m))0.5

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

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

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<math.h>

doublefun(intm)

{

}

main()

{

clrscr();

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

}

28.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun(),它的功能是:只刪除字符串前導(dǎo)和尾部的*號,串中字母之間的*號都不刪除。形參n給出了字符串的K度,形參h給出了字符串中前導(dǎo)*號的個數(shù),形參e給出了字符山中最后*號的個數(shù)。在編寫函數(shù)時,不得使用c語言提供的字符串函數(shù)。

例如,若字符串中的內(nèi)容為****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容則應(yīng)當是A*BC*DEF*G。

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

voidfun(char*a;intn,inth,inte)

{

}

main()

{

chars[81],*t,*f;

intm=0,tn=0,fn=0;

printf("Enterastring:\n");

gets(s);

t=f=s;

while(*t)

{t++;m++;}/*m為字符串的長度*/

t--;/*指針t指身字符串尾部*/

while(*t=='*')

{t--;tn++;}

/*指針t指向最后一個字母,tn統(tǒng)計尾部'*'的個數(shù)*/

while(*f=='*')

{f++;fn++;}

/*指針f指向第一個字母,tn統(tǒng)計導(dǎo)'*'的個數(shù)*/

fun(s,m,fn,tn);

printf("Thestringafterdeleted:\n");

puts(s);

}

29.m個人的成績存放在score數(shù)組中,請編寫函數(shù)fun,它的功能是:將低于平均分的人數(shù)作為函數(shù)值返回,將低于平均分的分數(shù)放在below所指的數(shù)組中。

例如,當score數(shù)組中的數(shù)據(jù)為:10、20、30、40、50、60、70、80、90時,函數(shù)返回的人數(shù)應(yīng)該是4,below中的數(shù)據(jù)應(yīng)為:10、20、30、40。

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

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

30.學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun(),它的功能是:函數(shù)返回指定學(xué)號的學(xué)生數(shù)據(jù),指定的序號在主函數(shù)中輸入。若沒找到指定的學(xué)號,在結(jié)構(gòu)體變量中給學(xué)號置空串,給成績置-1,作為函數(shù)值返回(用于字符串比較的函數(shù)是strcmp)。

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

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

試題程序:

#include<stdio.h>

#inctude<stdlib.h>

#defineN16

typedefstruct

{charnum[10];

ints;

}STREC;

STRECfun(STREC*a,char*b)

{

}

main()

{

STRECs[N]={{"GA005",85},{"GA003",76},

{"GA002",69},{"GA004",85},{"GA001",91},

{"GA007",72},{"GA008",64},{"GA006",87},

{"GA015",85},{"GA013",91},{"GA012",64},

{"GA014",91},{"GA011",77},{"GA017",64},

{"GA018",64},{"GA016",72}};

STRECh;

charre[10];

inti,n;

FILE*out;

printf("Theoriginaldata:\n");

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

{if(i%4==0)

printf("In");

/*每行輸出4個學(xué)生記錄*/

printf("%s%3d",s[i]num,s[i]s);

}

printf("\n\nEnterthenumber:");

gets(m);

h=fun(s,m);

printf("Thedata:");

printf("\n%s%4d\n",h.num,h.s);

printf("\n");

out=fopen("out80.dat","w");

h=fun(s,"GA013");

fprintf(out,"%s%4d\n",h.num,h.s);

fclose(out);

}

31.請編寫函數(shù)fun,函數(shù)的功能是:移動字符串中的內(nèi)容,移動的規(guī)則如下:把第1到第m個字符,平移到字符串的最后,把第m+l到最后的字符移到字符串的前部。

例如,字符串中原有的內(nèi)容為:ABCDEFGHIJK,m的值為3,則移動后,字符串中的內(nèi)容應(yīng)該是:DEFGHIJKABC。

注意:部分源程序在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

32.編寫一個函數(shù),從傳入的num個字符中找出最長的一個字符串,并通過形參指針max傳回該串地址(用****作為結(jié)束輸入的標志)。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

fun(char(*a)[81],intnum,char*max)

{

}

main()

{

charss[l0][81],*ps;

intn,i=0;

clrscr();

prlntf("輸入若干個字符串");

gets(ss[i]);

puts(ss[i]);

while(!strcmp(ss[i],"****")==0)

/*用****作為結(jié)束輸入的標志*/

{

i++;

gets(ss[i]);

puts(ss[i]);

}

n=i;

ps=fun(ss,n,&ps);

print~("\nmax=%s\n",ps);

}

33.請編寫函數(shù)fun(),它的功能是計算:s=(1-In(1)-In(2)-In(3)-…-1n(m))2

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

在C語言中可調(diào)用log(n)函數(shù)求In(n)。log函數(shù)的引用說明是doublelog(doublex)。

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

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<math.h>

doublefun(intm)

{

}

main()

{

clrscr();

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

}

34.請編寫函數(shù)fun,其功能是:計算并輸出

例如,在主函數(shù)中從鍵盤給n輸入20后,輸出為:s=534.188884。

注意:要求n的值大于1但不大于100。

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

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

四、單選題(0題)35.若已定義:inta[9],*p=a;并在以后的語句中未改變p的值,不能表示a[1]地址的表達式是_______。

A.p+1B.a+1C.a++D.++p

五、單選題(0題)36.有以下程序:main{chara=a,b;printf("%c,",++a);printf("%c\n",b=a++):)程序運行后的輸出結(jié)果是()。A.b,bB.b,cC.a,bD.a,c

六、單選題(0題)37.有以下程序:

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

A.45B.50C.60D.55

參考答案

1.B程序中,fun函數(shù)的功能是接收兩個數(shù)組a、b,以及數(shù)組a的元素個數(shù)n,然后通過for循環(huán)將數(shù)組a中下標為偶數(shù)的元素與后面相鄰的下標為奇數(shù)的元素兩兩相加,賦給數(shù)組b中下標為j的元素,最后返回數(shù)組b的個數(shù)。所以main函數(shù)中,通過調(diào)用fun函數(shù),將數(shù)組a的元素兩兩相加,得到數(shù)組b的各個元素,再通過for循環(huán)輸出,結(jié)果為:1593。故本題答案為B選項。

2.B

3.C

4.A解析:由于數(shù)據(jù)的集成性使得數(shù)據(jù)可為多個應(yīng)用所共享,特別是在網(wǎng)絡(luò)發(fā)達的今天,數(shù)據(jù)庫與網(wǎng)絡(luò)的結(jié)合擴大了數(shù)據(jù)關(guān)系的應(yīng)用范圍。數(shù)據(jù)的共享自身又可極大地減少數(shù)據(jù)冗余性,不僅減少了不必要的存儲空間,更為重要的是可以避免數(shù)據(jù)的不一致性。所謂數(shù)據(jù)的一致性是指在系統(tǒng)中同一數(shù)據(jù)的不同出現(xiàn)應(yīng)保持相同的值,而數(shù)據(jù)的不一致性指的是同一個數(shù)據(jù)在系統(tǒng)的不同拷貝處有不同的值。

5.C解析:C語言中字符常量是以單引號括起來的單個字符,或以“\\”與三位八進制數(shù)值或兩位十六進制數(shù)值代替單個字符。

6.C【答案】C

【知識點】C程序的函數(shù)

【解析】C程序必須有且只有一個主函數(shù)main()。一個C程序可以包含多個不重名的子函數(shù)。C程序在書寫時沒有嚴格的縮進要求,語句前的縮進隨意。

7.Breturn語句又稱為返回語句。該語句的格式如下:“return;”和“return(<表達式>);”。其中,return是關(guān)鍵字。該語句有兩種格式:不帶返回值格式和帶返回值格式。該語句用在被調(diào)用函數(shù)中,在被調(diào)用函數(shù)中執(zhí)行到該語句時,將結(jié)束對被調(diào)用函數(shù)的執(zhí)行,并把控制權(quán)返回給調(diào)用函數(shù),繼續(xù)執(zhí)行調(diào)用函數(shù)后邊的語句。在帶有返回值的情況下,將return語句所帶的表達武的值返回給調(diào)用函數(shù),作為被調(diào)用函數(shù)的值。在被調(diào)用函數(shù)中,可以用return語句,也可以不用return語句。如果要求被調(diào)用函數(shù)有返回值,則一定要用return語句,采用return(<表達式>);格式。如果被調(diào)用函數(shù)不需要返回值,并且當被調(diào)用函數(shù)的所有語句執(zhí)行完后進行返回,則被調(diào)用函數(shù)可以不用return語句。

8.D調(diào)用缸函數(shù)后,實參數(shù)組名sl傳給形參指針P,P也指向數(shù)組sl。m函數(shù)的功能是遍歷字符數(shù)組中的所有字符,如果某一個字符是空格并且前一個字符是小寫字母的話,就把前一個字符轉(zhuǎn)換為大寫。程序中語句P[i一1]=P[i—1]一ga’+-A‘;即P[i一1]=P[i一1]一32,意思是將P[i一1]中的字符轉(zhuǎn)換為大寫。因此D選項正確。

9.B解析:從工程管理解度來看,軟件設(shè)計分兩步完成:概要設(shè)計和詳細設(shè)計。概要設(shè)計(又稱結(jié)構(gòu)設(shè)計)將軟件需求轉(zhuǎn)化為軟件體系結(jié)構(gòu)、確定系統(tǒng)級接口、全局數(shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)庫模式。

10.D

11.CC語言中,函數(shù)名也是一個指針,是函數(shù)的人口地址。使函數(shù)指針f指向函數(shù)fun的入口地址,直接將函數(shù)名fun賦給指針f即可。故本題答案為C選項。

12.A

13.(x>10&&x<100)||x<0

14.s=30s=30解析:分析循環(huán)條件“m=1,m<=4”,所以循環(huán)4次。第1次:n=n*a=2,s=s+n=2;m=2。第2次:n=n*a=4,s=s+n=6;m=3。第3次:n=n*a=8,s=s+n=14;m=4。第4次:n=n*a=16,s=s+n=30。

15.線性結(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)有樹、二叉樹等。

16.30x30x解析:本題的參數(shù)傳遞屬于值傳遞,所以被調(diào)用函數(shù)內(nèi)不能改變調(diào)用函數(shù)中的數(shù)據(jù)。

17.12。12。解析:表達式x*=(y++)+(--z)相當于先進行z的自減運算,再執(zhí)行x=x*(y+z),最后y自加。因此,變量x的值為12,y和z的值分別是4和3。

18.44解析:一維數(shù)組元素的定義形式為:數(shù)組名[N],則該數(shù)組中元素的下限是0,上限是N-1。

19.30253025解析:本題考核的知識點是變量的存儲屬性和算術(shù)運算的應(yīng)用。本題涉及了自動變量、靜態(tài)變量和外部變量。外部變量是定義在所有函數(shù)之外的變量,本題中inta=5定義了一個外部變量a,它是一個全局變量,即作用域是從定義的位置開始到本文件的結(jié)束;靜態(tài)變量的存儲空間在程序的整個運行期間是固定的(static),本題函數(shù)fun()中staticinta=10定義個一個靜態(tài)變量a,此靜態(tài)變量a是個靜態(tài)的局部變量,即它的值只能在本函數(shù)中使用;自動變量是C程序中使用最多的一種變量,它的建立和撤消都是由系統(tǒng)在程序執(zhí)行過程中自動進行的,auto是自動變量的存儲類別標識符,如果省略auto,系統(tǒng)隱含認為此變量為auto,本題中main()中intc=20定義了一個自動變量c,此自動變量c是個靜態(tài)的局部變量.算術(shù)運算中a+=b++相當于a=a+b,b=b+1.所以,在第一個ptine('%d',a)中a=a+b=10+20=30,第二個printf('%d',a)中a=a+c=5+20=25,即輸出3025。

20.1717解析:break語句只能在循環(huán)體和switch語句體內(nèi)使用,當break出現(xiàn)在循環(huán)體中的switch語句體內(nèi)時,其作用只是跳出該switch語句體。當break出現(xiàn)在循環(huán)體中,但不在switch語句體內(nèi)時,則在執(zhí)行break后,跳出本層循環(huán)體。而continue語句的作用時結(jié)束本次循環(huán),即跳過本次循環(huán)中余下尚未執(zhí)行的語句,接著再一次進行循環(huán)的條件判定。本題中首先定義了一個變量x并賦初值15,然后判斷循環(huán)條件“x>5&&x<50”,即“x>5&&x<50”,為真,執(zhí)行循環(huán)體.語句“x++;”執(zhí)行后,x的值變?yōu)?6,“X/3”的值為5為真,執(zhí)行其后的語句“x++;”,x的值變?yōu)?7,執(zhí)行語句“break”,退出循環(huán),輸出。x的值為17。

21.實體實體解析:E-R模型中,有3個基本的抽象概念:實體、聯(lián)系和屬性。在E-R圖中,用矩形框表示實體,菱形框表示聯(lián)系,橢圓形框表示屬性。

22.j++a[i]>a[j]或a[j]<a[i]j++\r\na[i]>a[j]或a[j]<a[i]解析:題目要求排序的元素是下標值為偶數(shù)的元素,外循環(huán)循環(huán)4次,i的值分別為0、2、4、6,所以內(nèi)循環(huán)也循環(huán)4次,i的值就應(yīng)為2、4、6、8,在循環(huán)體中已經(jīng)有了對j加1的操作,因此for后括號中的語句應(yīng)再對j加1,保證下標為偶數(shù)。if語句的功能是如果后一個數(shù)比前一個數(shù)小則交換位置。

23.*(t+4)*(t+4)解析:本題定義了指針變量t,并用數(shù)組s的首地址給它賦初值。t+4代表數(shù)組第6個元素的地址,*(t+4)是取得該地址中的值即29,而此時并沒有移動指針t。

24.45994599解析:本題是一個陷阱題,以書寫格式來考查考生對if語句的理解.if語句只對緊跟其后的一條語句或語句塊產(chǎn)生作用。因此,題目中兩條if語句只有t=a;和t=b是if的子句。第1條if語句中b<a為假,所以跳過語句t=a;,執(zhí)行a=c;c=t;后,a=5、b=4、c=99。第2條if語句的判斷條件a<c&&b<c為真,所以后面三條語句都被執(zhí)行,這三條語句構(gòu)成一次a和b的內(nèi)容交換。所以最后輸出的結(jié)果是:4599。

25.

解析:該程序功能是實現(xiàn)B=A+Aˊ,即把矩陣A加上A的轉(zhuǎn)置。其中,所謂矩陣的轉(zhuǎn)置,是把行中的數(shù)據(jù)與列中的數(shù)據(jù)進行對調(diào)。解題過程中首先求得已給的矩陣的轉(zhuǎn)置,然后在循環(huán)過程中對矩陣與該矩陣的轉(zhuǎn)置對應(yīng)元素求和。

26.*c=(a/10)*1000+(b%10)*100+(a%10)*10+(b/10);*c=(a/10)*1000+(b%10)*100+(a%10)*10+(b/10);解析:該程序功能是將正整數(shù)a、b合并形成一個新整數(shù)。本題類型首先要考慮整數(shù)的位數(shù)分離,然后要進行位數(shù)合成。也就是先將數(shù)字的各位數(shù)拆開,改變排列順序后,再組合成新的數(shù)字。

27.doublefun(intm){inti;doubles=0.0;for(i=1;i<=m;i++)s=s+log(i);/*計算s=ln(1)+ln(2)+ln(3)+…+in(m)*/returnsort(s);/*對s求平方根并返回*/}doublefun(intm)\r\n{\r\ninti;\r\ndoubles=0.0;\r\nfor(i=1;i<=m;i++)\r\ns=s+log(i);/*計算s=ln(1)+ln(2)+ln(3)+…+in(m)*/\r\nreturnsort(s);/*對s求平方根并返回*/\r\n}解析:首先,題目要求計算從1到m的對數(shù)的和,可用從1到m的循環(huán),每次循環(huán)都累加求和。該題需要注意之處是,log()函數(shù)的形式參數(shù)應(yīng)當為double型變量,而用于循環(huán)的基數(shù)變量為整數(shù),需要進行強制轉(zhuǎn)換。在返回的時候求小平方根。

28.voidfun(char*aintninthinte){intij=0for(i=h;i<n-e;i++)/*第一個字母和最后一個字母之間的字符全不刪除*/a[j++]=a[i];a[j]='\0;/*在字符串最后加上結(jié)束標記*/}voidfun(char*a,intn,inth,inte)\r\n{\r\ninti,j=0\r\nfor(i=h;i<n-e;i++)/*第一個字母和最后一個字母之間的字符全不刪除*/\r\na[j++]=a[i];\r\na[j]='\\0;/*在字符串最后加上結(jié)束標記*/\r\n}解析:注意循環(huán)變量i的初值(h)和終止值(n-e),由于h和e分別是a中的前導(dǎo)*和尾部*的個數(shù),n是字符串的長度,所以從a[h])到a[n-e-1]之間的所有字符都要留下,而其他字符均刪除。刪除操作(即留下相應(yīng)字符)現(xiàn)己由循環(huán)完成。

本題技巧部分:

voidfun(char*a,intn,inth,inte)

{a[n-e]='\\0;

strcpy(a,a+h);}

另外,請注意,a(n-e]的作用是使最后一個字母后出現(xiàn)字符串結(jié)束符。木程序采用了strcpy()庫函數(shù)。

29.

解析:(1)該程序功能是返回低于平均分的人數(shù)。它的解題思路可以分解為以下幾步:求總分一求平均分一逐個元素與平均分比較一統(tǒng)計低于平均分的人數(shù)。

(2)從已給部分源程序的main主函數(shù)開始入手,核心函數(shù)fun(score,9,below)中的參數(shù)由題目可知,score存放著m個人的成績,below存放低于平均分的分數(shù)。另外,根據(jù)score的定義,可知9為score數(shù)組中元素的個數(shù),傳給函數(shù)fun中的參數(shù)m。

30.STRECfun(STREC*achar*b){inti;STRECstr={"\0"-1};/*若沒找到摜定的學(xué)號在結(jié)構(gòu)體變量中給學(xué)號置空串給成績置-1*/for(i=0;i<N;i++)if(strcmp(a[i].numb)==0)/*找到指定學(xué)號的學(xué)生數(shù)據(jù)*/str=a[i];returnstr;/*返回學(xué)生記錄*/}STRECfun(STREC*a,char*b)\r\n{\r\ninti;\r\nSTRECstr={'\\0',-1};/*若沒找到摜定的學(xué)號,在結(jié)構(gòu)體變量中給學(xué)號置空串,給成績置-1*/\r\nfor(i=0;i<N;i++)\r\nif(strcmp(a[i].num,b)==0)/*找到指定學(xué)號的學(xué)生數(shù)據(jù)*/\r\nstr=a[i];\r\nreturnstr;/*返回學(xué)生記錄*/\r\n}解析:本程序一開始先使結(jié)構(gòu)體變量str的學(xué)號為空串,成績?yōu)?1。題中循環(huán)體的功能是搜索所有學(xué)生的學(xué)號并判斷是否有學(xué)號與b所指字符串相同的(即找到),若找到則給str重新賦值(str=a[i]),若沒找到則str成員的值還是原有值(即未找到時學(xué)號返回空串,成績返回-1)。

題中已經(jīng)給出字符串的比較只能用strcmp()函數(shù),而不能直接進行比較,我們在改錯題分析中已經(jīng)詳細講述了字符串操作函數(shù),如strcmp(),strcat(),strcpy()和strlen()等,希望學(xué)習(xí)者能熟練掌握。

31.

解析:該程序功能是移動字符串中的內(nèi)容,第一個字符移動到最后,后面的字符往前移動一位,形成循環(huán)左移。移動m個字符的就是循環(huán)左移m次。

32.fun(char(*a)[81]intnumchar*max){inti=0;max=a[0];for(i=0;i<num;i++)/*找出最長的一個字符串*/if(strlen(max)<strlen(a[i]))max=a[i];returnmax;/*傳回最長字符串地址*/}fun(char(*a)[81],intnum,char*max)\r\n{\r\ninti=0;\r\nmax=a[0];\r\nfor(i=0;i<num;i++)/*找出最長的一個字符串*/\r\nif(strlen(max)<strlen(a[i]))\r\nmax=a[i];\r\nreturnmax;/*傳回最長字符串地址*/\r\n}解析:做本題之前,我們先應(yīng)該明白ss是一個指向一維數(shù)組的指針變量,max是指向指針變量的指針變量。所以引用時要注意加上*。我們不可能只用max,因為ss[0]是一個數(shù)組地址而不是一個指針的地址。

33.doublefun(intm){inti;doubles=1.0;for(i=1;i<=m;i++)s=s-log(i);/*計算s=l-In(1)-In(2)-In(3)-…-In(m)*/return(s*s);/*對s求平方并返回*/}doublefun(intm)\r\n{\r\n\u3000inti;\r\ndoubles=1.0;\r\nfor(i=1;i<=m;i++)\r\ns=s-log(i);/*計算s=l-In(1)-In(2)-In(3)-…-In(m)*/\r\nreturn(s*s);/*對s求平方并返回*/\r\n}解析:首先,題目要求計算1依次減去1到M的對數(shù),可用從1到M的循環(huán),每次循環(huán)都減一個數(shù)的對數(shù)。該題需要注意,log()函數(shù)的形式參數(shù)應(yīng)浩如煙海double型變量,用于循環(huán)的基數(shù)變量為整數(shù),需要進行強制轉(zhuǎn)換。最后在返回的時求平方。

34.

解析:該程序功能是對題干中給出的多項式的求解。根據(jù)題干中給出的數(shù)列,首先推出每一項的表達式,然后再對多項式進行累加求和。

35.C解析:數(shù)組名是指針常量,是個固定的指針,不能對數(shù)組名賦予一個新的地址值,也不能使這個指針常駐量“移動”,指向數(shù)組的其他元素。

36.A++a與a++的區(qū)別是前者先自加再運算,后者是先運算后自加。

37.C內(nèi)部靜態(tài)變量是始終存在的,當函數(shù)被調(diào)用退出后,內(nèi)部靜態(tài)變量會保存數(shù)據(jù),再次調(diào)用該函數(shù)時,以前調(diào)用時的數(shù)值仍然保留著。Fun(a,5)的值是l5,再次調(diào)用后slim=15,所以Fun(b,4)=45,s=45+15=60。2021-2022學(xué)年廣東省潮州市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(12題)1.有以下程序:#include<stdio.h>intfun(int*a,int*b,intn){inti=0,j=0,sum=0;for(;i<n;i++){sum+=a[i];if((i+1)%2==0){b[j++]=sum;sum=0;}}returnj;}main(){inta[8]={1,0,2,3,5,4,2,1},b[8],k,i;k=fun(a,b,8);for(i=0;i<k;i++)printf(“%d”,b[i]);}程序的運行結(jié)果是()。

A.0242B.1593C.1351D.286

2.一個遞歸的定義可以用遞歸過程求解,也可以用非遞歸過程求解,但單從運行時間來看,通常遞歸過程比非遞歸過程()。

A.較快B.較慢C.相同D.無法確定

3.二叉樹中第5層上的結(jié)點個數(shù)最多為________

A.8B.15C.16D.32

4.下述關(guān)于數(shù)據(jù)庫系統(tǒng)的敘中正確的是______。

A.數(shù)據(jù)庫系統(tǒng)減少了數(shù)據(jù)冗余

B.數(shù)據(jù)庫系統(tǒng)避免了一切冗余

C.數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的一致性是指數(shù)據(jù)類型的一致

D.數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù)

5.以下選項中,非法的字符常量是______。

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

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

A.一個C程序中可以包含多個不同名的函數(shù)

B.一個C程序只能有一個主函數(shù)

C.C程序在書寫時,有嚴格的縮進要求,否則不能編譯通過

D.C程序的主函數(shù)必須用main作為函數(shù)名

7.以下關(guān)于return語句的敘述中正確的是()。

A.一個自定義函數(shù)中必須有一條return語句

B.一個白定義函數(shù)中可以根據(jù)不同情況設(shè)置多條return語句

C.定義成void類型的函數(shù)中可以有帶返回值的return語句

D.沒有return語句的自定義函數(shù)在執(zhí)行結(jié)束時不能返回到調(diào)用處

8.有以下程序,程序中庫函數(shù)islower(ch)用以判斷ch中的字母是否為小寫字母:

程序運行后的輸出結(jié)果是()。

A.abcdEFg!B.AbCdEFg!C.abcdEFG!D.aBcDEFG!

9.在軟件開發(fā)過程中,軟件結(jié)構(gòu)設(shè)計是描述______。

A.數(shù)據(jù)存儲結(jié)構(gòu)B.軟件體系結(jié)構(gòu)C.軟件結(jié)構(gòu)測試D.軟件控制過程

10.

11.設(shè)有函數(shù)說明語句:intfun(int,int);以及函數(shù)指針定義語句:int(*f)(int,int);若要使函數(shù)指針指向函數(shù)fun的入口地址,以下選項中正確的是()。

A.f=fun();B.*f=fun;C.f=fun;D.*f=fun();

12.關(guān)于排序算法的以下說法,錯誤的是()

A.歸并排序的平均時間復(fù)雜度O(nlogn),最壞時間復(fù)雜度O(n^2)

B.堆排序平均時間復(fù)雜度O(nlogn),最壞時間復(fù)雜度O(nlogn)

C.冒泡排序平均時間復(fù)雜度O(n^2),最壞時間復(fù)雜度O(n^2)

D.快速排序的平均時間復(fù)雜度O(nlogn),最壞時間復(fù)雜度O(n^2)

二、2.填空題(12題)13.表示條件;10<x<100或x<0的C語言表達式是【】。

14.下面程序的運行結(jié)果是()。##include<stdio.h>main(){inta,s,n,m;a=2;s=0;n=1;m=1;while(m<=4){n=n*a;s=s+n;++m;}printf("s=%d",s);}

15.按照邏輯結(jié)構(gòu)分類,結(jié)構(gòu)可以分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),棧屬于______。

16.閱讀下列程序,則程序的輸出結(jié)果為【】。

#include"stdio.h"

structty

{intdata;

charc;};

main()

{structtya={30,′x′};

fun(a);

printf("%d%c",a.data,a.c);}

fun(structtyb)

{b.data=20;

b.c=′y′;}

17.設(shè)x、y、z為整型變量,且x=2,y=3,z=4,當執(zhí)行以下語句后,x的值是______。

x*=(y++)+(--z);

18.若有定義doublea[5];,則a數(shù)組元素下標的上限為______。

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

inta=5;

fun(intB)

{staticinta=10;

a+=b++;

printf("%d",A);

}

main()

{intc=20;

fun(C),

a+=C++;

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

}

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

main()

{

intx=15;

while(x>10&&x<50)

{

x++;

if(x/3){x++;break;}

elsecontinue;

}

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

}

21.在E-R圖中,矩形表示【】。

22.下面程序的功能是將字符串a(chǎn)下標值為偶數(shù)的元素由小到大排序,其他元素不變,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{chara[]="labchmfye",t;

inti,j;

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

for(j=i+2;j<9;【】)

if(【】)

{t=a[i];a[i]=a[j];a[j]=t;j++;}

puts(a);

printf("\n");

}

23.若有如下定義:

int[]={11,24,56,19,29,39),*t=s;

則不移動指針t,且通過指針t引用數(shù)組中值為29的元素的表達式是【】。

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

main()

{inta=3,b=4,c=5,t=99;

i[(b<a&&a<C)t=a;a=c;c=t;

if(a<c&&b<C)t=b;b=a;a=t;

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

}

三、3.程序設(shè)計題(10題)25.請編寫程序fun,函數(shù)的功能是:實現(xiàn)B=A+Aˊ,即把矩陣A加上A的轉(zhuǎn)置,存放在矩陣B中。計算結(jié)果在main函數(shù)中輸出。

例如,輸入下面的矩陣:其轉(zhuǎn)置矩陣為:

123147

456258

789369

程序輸出:

2610

61014

101418

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

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

26.函數(shù)fun的功能是:將a、b中的兩個兩位正整數(shù)合并形成一個新的整數(shù)放在c中。合并的方式是:將a中的十位和個位數(shù)依次放在變量c的千位和十位上,b中的十位和個位數(shù)依次放在變量c的個位和百位上。

例如,當a=45,b=12。調(diào)用該函數(shù)后,c=4251。

注意:部分源程序存在文件PROGl.C中。數(shù)據(jù)文件IN.DAT中的數(shù)據(jù)不得修改。

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

27.請編寫函數(shù)fun(),它的功能是計算:

s=(ln(1)+ln(2)+ln(3)+…+ln(m))0.5

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

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

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<math.h>

doublefun(intm)

{

}

main()

{

clrscr();

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

}

28.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun(),它的功能是:只刪除字符串前導(dǎo)和尾部的*號,串中字母之間的*號都不刪除。形參n給出了字符串的K度,形參h給出了字符串中前導(dǎo)*號的個數(shù),形參e給出了字符山中最后*號的個數(shù)。在編寫函數(shù)時,不得使用c語言提供的字符串函數(shù)。

例如,若字符串中的內(nèi)容為****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容則應(yīng)當是A*BC*DEF*G。

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

voidfun(char*a;intn,inth,inte)

{

}

main()

{

chars[81],*t,*f;

intm=0,tn=0,fn=0;

printf("Enterastring:\n");

gets(s);

t=f=s;

while(*t)

{t++;m++;}/*m為字符串的長度*/

t--;/*指針t指身字符串尾部*/

while(*t=='*')

{t--;tn++;}

/*指針t指向最后一個字母,tn統(tǒng)計尾部'*'的個數(shù)*/

while(*f=='*')

{f++;fn++;}

/*指針f指向第一個字母,tn統(tǒng)計導(dǎo)'*'的個數(shù)*/

fun(s,m,fn,tn);

printf("Thestringafterdeleted:\n");

puts(s);

}

29.m個人的成績存放在score數(shù)組中,請編寫函數(shù)fun,它的功能是:將低于平均分的人數(shù)作為函數(shù)值返回,將低于平均分的分數(shù)放在below所指的數(shù)組中。

例如,當score數(shù)組中的數(shù)據(jù)為:10、20、30、40、50、60、70、80、90時,函數(shù)返回的人數(shù)應(yīng)該是4,below中的數(shù)據(jù)應(yīng)為:10、20、30、40。

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

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

30.學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun(),它的功能是:函數(shù)返回指定學(xué)號的學(xué)生數(shù)據(jù),指定的序號在主函數(shù)中輸入。若沒找到指定的學(xué)號,在結(jié)構(gòu)體變量中給學(xué)號置空串,給成績置-1,作為函數(shù)值返回(用于字符串比較的函數(shù)是strcmp)。

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

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

試題程序:

#include<stdio.h>

#inctude<stdlib.h>

#defineN16

typedefstruct

{charnum[10];

ints;

}STREC;

STRECfun(STREC*a,char*b)

{

}

main()

{

STRECs[N]={{"GA005",85},{"GA003",76},

{"GA002",69},{"GA004",85},{"GA001",91},

{"GA007",72},{"GA008",64},{"GA006",87},

{"GA015",85},{"GA013",91},{"GA012",64},

{"GA014",91},{"GA011",77},{"GA017",64},

{"GA018",64},{"GA016",72}};

STRECh;

charre[10];

inti,n;

FILE*out;

printf("Theoriginaldata:\n");

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

{if(i%4==0)

printf("In");

/*每行輸出4個學(xué)生記錄*/

printf("%s%3d",s[i]num,s[i]s);

}

printf("\n\nEnterthenumber:");

gets(m);

h=fun(s,m);

printf("Thedata:");

printf("\n%s%4d\n",h.num,h.s);

printf("\n");

out=fopen("out80.dat","w");

h=fun(s,"GA013");

fprintf(out,"%s%4d\n",h.num,h.s);

fclose(out);

}

31.請編寫函數(shù)fun,函數(shù)的功能是:移動字符串中的內(nèi)容,移動的規(guī)則如下:把第1到第m個字符,平移到字符串的最后,把第m+l到最后的字符移到字符串的前部。

例如,字符串中原有的內(nèi)容為:ABCDEFGHIJK,m的值為3,則移動后,字符串中的內(nèi)容應(yīng)該是:DEFGHIJKABC。

注意:部分源程序在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

32.編寫一個函數(shù),從傳入的num個字符中找出最長的一個字符串,并通過形參指針max傳回該串地址(用****作為結(jié)束輸入的標志)。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

fun(char(*a)[81],intnum,char*max)

{

}

main()

{

charss[l0][81],*ps;

intn,i=0;

clrscr();

prlntf("輸入若干個字符串");

gets(ss[i]);

puts(ss[i]);

while(!strcmp(ss[i],"****")==0)

/*用****作為結(jié)束輸入的標志*/

{

i++;

gets(ss[i]);

puts(ss[i]);

}

n=i;

ps=fun(ss,n,&ps);

print~("\nmax=%s\n",ps);

}

33.請編寫函數(shù)fun(),它的功能是計算:s=(1-In(1)-In(2)-In(3)-…-1n(m))2

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

在C語言中可調(diào)用log(n)函數(shù)求In(n)。log函數(shù)的引用說明是doublelog(doublex)。

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

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<math.h>

doublefun(intm)

{

}

main()

{

clrscr();

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

}

34.請編寫函數(shù)fun,其功能是:計算并輸出

例如,在主函數(shù)中從鍵盤給n輸入20后,輸出為:s=534.188884。

注意:要求n的值大于1但不大于100。

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

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

四、單選題(0題)35.若已定義:inta[9],*p=a;并在以后的語句中未改變p的值,不能表示a[1]地址的表達式是_______。

A.p+1B.a+1C.a++D.++p

五、單選題(0題)36.有以下程序:main{chara=a,b;printf("%c,",++a);printf("%c\n",b=a++):)程序運行后的輸出結(jié)果是()。A.b,bB.b,cC.a,bD.a,c

六、單選題(0題)37.有以下程序:

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

A.45B.50C.60D.55

參考答案

1.B程序中,fun函數(shù)的功能是接收兩個數(shù)組a、b,以及數(shù)組a的元素個數(shù)n,然后通過for循環(huán)將數(shù)組a中下標為偶數(shù)的元素與后面相鄰的下標為奇數(shù)的元素兩兩相加,賦給數(shù)組b中下標為j的元素,最后返回數(shù)組b的個數(shù)。所以main函數(shù)中,通過調(diào)用fun函數(shù),將數(shù)組a的元素兩兩相加,得到數(shù)組b的各個元素,再通過for循環(huán)輸出,結(jié)果為:1593。故本題答案為B選項。

2.B

3.C

4.A解析:由于數(shù)據(jù)的集成性使得數(shù)據(jù)可為多個應(yīng)用所共享,特別是在網(wǎng)絡(luò)發(fā)達的今天,數(shù)據(jù)庫與網(wǎng)絡(luò)的結(jié)合擴大了數(shù)據(jù)關(guān)系的應(yīng)用范圍。數(shù)據(jù)的共享自身又可極大地減少數(shù)據(jù)冗余性,不僅減少了不必要的存儲空間,更為重要的是可以避免數(shù)據(jù)的不一致性。所謂數(shù)據(jù)的一致性是指在系統(tǒng)中同一數(shù)據(jù)的不同出現(xiàn)應(yīng)保持相同的值,而數(shù)據(jù)的不一致性指的是同一個數(shù)據(jù)在系統(tǒng)的不同拷貝處有不同的值。

5.C解析:C語言中字符常量是以單引號括起來的單個字符,或以“\\”與三位八進制數(shù)值或兩位十六進制數(shù)值代替單個字符。

6.C【答案】C

【知識點】C程序的函數(shù)

【解析】C程序必須有且只有一個主函數(shù)main()。一個C程序可以包含多個不重名的子函數(shù)。C程序在書寫時沒有嚴格的縮進要求,語句前的縮進隨意。

7.Breturn語句又稱為返回語句。該語句的格式如下:“return;”和“return(<表達式>);”。其中,return是關(guān)鍵字。該語句有兩種格式:不帶返回值格式和帶返回值格式。該語句用在被調(diào)用函數(shù)中,在被調(diào)用函數(shù)中執(zhí)行到該語句時,將結(jié)束對被調(diào)用函數(shù)的執(zhí)行,并把控制權(quán)返回給調(diào)用函數(shù),繼續(xù)執(zhí)行調(diào)用函數(shù)后邊的語句。在帶有返回值的情況下,將return語句所帶的表達武的值返回給調(diào)用函數(shù),作為被調(diào)用函數(shù)的值。在被調(diào)用函數(shù)中,可以用return語句,也可以不用return語句。如果要求被調(diào)用函數(shù)有返回值,則一定要用return語句,采用return(<表達式>);格式。如果被調(diào)用函數(shù)不需要返回值,并且當被調(diào)用函數(shù)的所有語句執(zhí)行完后進行返回,則被調(diào)用函數(shù)可以不用return語句。

8.D調(diào)用缸函數(shù)后,實參數(shù)組名sl傳給形參指針P,P也指向數(shù)組sl。m函數(shù)的功能是遍歷字符數(shù)組中的所有字符,如果某一個字符是空格并且前一個字符是小寫字母的話,就把前一個字符轉(zhuǎn)換為大寫。程序中語句P[i一1]=P[i—1]一ga’+-A‘;即P[i一1]=P[i一1]一32,意思是將P[i一1]中的字符轉(zhuǎn)換為大寫。因此D選項正確。

9.B解析:從工程管理解度來看,軟件設(shè)計分兩步完成:概要設(shè)計和詳細設(shè)計。概要設(shè)計(又稱結(jié)構(gòu)設(shè)計)將軟件需求轉(zhuǎn)化為軟件體系結(jié)構(gòu)、確定系統(tǒng)級接口、全局數(shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)庫模式。

10.D

11.CC語言中,函數(shù)名也是一個指針,是函數(shù)的人口地址。使函數(shù)指針f指向函數(shù)fun的入口地址,直接將函數(shù)名fun賦給指針f即可。故本題答案為C選項。

12.A

13.(x>10&&x<100)||x<0

14.s=30s=30解析:分析循環(huán)條件“m=1,m<=4”,所以循環(huán)4次。第1次:n=n*a=2,s=s+n=2;m=2。第2次:n=n*a=4,s=s+n=6;m=3。第3次:n=n*a=8,s=s+n=14;m=4。第4次:n=n*a=16,s=s+n=30。

15.線性結(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)有樹、二叉樹等。

16.30x30x解析:本題的參數(shù)傳遞屬于值傳遞,所以被調(diào)用函數(shù)內(nèi)不能改變調(diào)用函數(shù)中的數(shù)據(jù)。

17.12。12。解析:表達式x*=(y++)+(--z)相當于先進行z的自減運算,再執(zhí)行x=x*(y+z),最后y自加。因此,變量x的值為12,y和z的值分別是4和3。

18.44解析:一維數(shù)組元素的定義形式為:數(shù)組名[N],則該數(shù)組中元素的下限是0,上限是N-1。

19.30253025解析:本題考核的知識點是變量的存儲屬性和算術(shù)運算的應(yīng)用。本題涉及了自動變量、靜態(tài)變量和外部變量。外部變量是定義在所有函數(shù)之外的變量,本題中inta=5定義了一個外部變量a,它是一個全局變量,即作用域是從定義的位置開始到本文件的結(jié)束;靜態(tài)變量的存儲空間在程序的整個運行期間是固定的(static),本題函數(shù)fun()中staticinta=10定義個一個靜態(tài)變量a,此靜態(tài)變量a是個靜態(tài)的局部變量,即它的值只能在本函數(shù)中使用;自動變量是C程序中使用最多的一種變量,它的建立和撤消都是由系統(tǒng)在程序執(zhí)行過程中自動進行的,auto是自動變量的存儲類別標識符,如果省略auto,系統(tǒng)隱含認為此變量為auto,本題中main()中intc=20定義了一個自動變量c,此自動變量c是個靜態(tài)的局部變量.算術(shù)運算中a+=b++相當于a=a+b,b=b+1.所以,在第一個ptine('%d',a)中a=a+b=10+20=30,第二個printf('%d',a)中a=a+c=5+20=25,即輸出3025。

20.1717解析:break語句只能在循環(huán)體和switch語句體內(nèi)使用,當break出現(xiàn)在循環(huán)體中的switch語句體內(nèi)時,其作用只是跳出該switch語句體。當break出現(xiàn)在循環(huán)體中,但不在switch語句體內(nèi)時,則在執(zhí)行break后,跳出本層循環(huán)體。而continue語句的作用時結(jié)束本次循環(huán),即跳過本次循環(huán)中余下尚未執(zhí)行的語句,接著再一次進行循環(huán)的條件判定。本題中首先定義了一個變量x并賦初值15,然后判斷循環(huán)條件“x>5&&x<50”,即“x>5&&x<50”,為真,執(zhí)行循環(huán)體.語句“x++;”執(zhí)行后,x的值變?yōu)?6,“X/3”的值為5為真,執(zhí)行其后的語句“x++;”,x的值變?yōu)?7,執(zhí)行語句“break”,退出循環(huán),輸出。x的值為17。

21.實體實體解析:E-R模型中,有3個基本的抽象概念:實體、聯(lián)系和屬性。在E-R圖中,用矩形框表示實體,菱形框表示聯(lián)系,橢圓形框表示屬性。

22.j++a[i]>a[j]或a[j]<a[i]j++\r\na[i]>a[j]或a[j]<a[i]解析:題目要求排序的元素是下標值為偶數(shù)的元素,外循環(huán)循環(huán)4次,i的值分別為0、2、4、6,所以內(nèi)循環(huán)也循環(huán)4次,i的值就應(yīng)為2、4、6、8,在循環(huán)體中已經(jīng)有了對j加1的操作,因此for后括號中的語句應(yīng)再對j加1,保證下標為偶數(shù)。if語句的功能是如果后一個數(shù)比前一個數(shù)小則交換位置。

23.*(t+4)*(t+4)解析:本題定義了指針變量t,并用數(shù)組s的首地址給它賦初值。t+4代表數(shù)組第6個元素的地址,*(t+4)是取得該地址中的值即29,而此時并沒有移動指針t。

24.45994599解析:本題是一個陷阱題,以書寫格式來考查考生對if語句的理解.if語句只對緊跟其后的一條語句或語句塊產(chǎn)生作用。因此,題目中兩條if語句只有t=a;和t=b是if的子句。第1條if語句中b<a為假,所以跳過語句t=a;,執(zhí)行a=c;c=t;后,a=5、b=4、c=99。第2條if語句的判斷條件a<c&&b<c為真,所以后面三條語句都被執(zhí)行,這三條語句構(gòu)成一次a和b的內(nèi)容交換。所以最后輸出的結(jié)果是:4599。

25.

解析:該程序功能是實現(xiàn)B=A+Aˊ,即把矩陣A加上A的轉(zhuǎn)置。其中,所謂矩陣的轉(zhuǎn)置,是把行中的數(shù)據(jù)與列中的數(shù)據(jù)進行對調(diào)。解題過程中首先求得已給的矩陣的轉(zhuǎn)置,然后在循環(huán)過程中對矩陣與該矩陣的轉(zhuǎn)置對應(yīng)元素求和。

26.*c=(a/10)*1000+(b%10)*100+(a%10)*10+(b/10);*c=(a/10)*1000+(b%10)*100+(a%10)*10+(b/10);解析:該程序功能是將正整數(shù)a、b合并形成一個新整數(shù)。本題類型首先要考慮整數(shù)的位數(shù)分離,然后要進行位數(shù)合成。也就是先將數(shù)字的各位數(shù)拆開,改變排列順序后,再組合成新的數(shù)字。

27.doublefun(intm){inti;doubles=0.0;for(i=1;i<=m;i++)s=s+log(i);/*計算s=ln(1)+ln(2)+ln(3)+…+in(m)*/returnsort(s);/*對s求平方根并返回*/}doublefun(intm)\r\n{\r\ninti;\r\ndoubles=0.0;\r\nfor(i=1;i<=m;i++)\r\ns=s+log(i);/*計算s=ln(1)+ln(2)+ln(3)+…+in(m)*/\r\nreturnsort(s);/*對s求平方根并返回*/\r\n}解析:首先,題目要求計算從1到m的對數(shù)的和,可用從1到m的循環(huán),每次循環(huán)都累加求和。該題需要注意之處是,log()函數(shù)的形式參數(shù)應(yīng)當為double型變量,而用于循環(huán)的基數(shù)變量為整數(shù),需要進行強制轉(zhuǎn)換。在返回的時候求小平方根。

28.void

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論