2021年江蘇省徐州市全國計算機等級考試C語言程序設計真題(含答案)_第1頁
2021年江蘇省徐州市全國計算機等級考試C語言程序設計真題(含答案)_第2頁
2021年江蘇省徐州市全國計算機等級考試C語言程序設計真題(含答案)_第3頁
2021年江蘇省徐州市全國計算機等級考試C語言程序設計真題(含答案)_第4頁
2021年江蘇省徐州市全國計算機等級考試C語言程序設計真題(含答案)_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021年江蘇省徐州市全國計算機等級考試

C語言程序設計真題(含答案)

學校:班級:姓名:考號:

一、2.填空題(10題)

1.在關系運算中,【】運算是對兩個具有公共屬性的關系所進行的運算。

2.數(shù)據(jù)庫技術的主要特點為數(shù)據(jù)的集成性、數(shù)據(jù)的高【】和低冗余性、

數(shù)據(jù)獨立性和數(shù)據(jù)統(tǒng)一管理與控制。

3.已知字母A的ASCII碼為65。以下程序運行后的輸出結果是____°

main()

{chara,b;

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

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

)

4.下面程序的輸出是【】。

main()

{intarr[10],i,k=0;

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

arr[i]=i;

for(i=l;i<4;i++)

k+=arr[i]+i;

printf("%d\n"k);}

5.若有定義inta=10,b=9,c=8;,接著順序執(zhí)行下列語句,變量b中的值

是【】。

c=(a-=(b-5));

c=(a%ll)+(b=3);

6.若已知a=10,b=20,則表達式!a<b的值為[]o

7.下面程序的功能是將一個字符串str的內(nèi)容顛倒過來,請?zhí)羁铡?/p>

#include<string.h>

main()

{infi,j,[13];charstr[]={"1234567");

for(i=0,j=strlen(str)[14];i<j;i++,j—)

{k=str[i];str[i]=str[i];str[j]=k;}

printf("%s\n",str);}

8.fun函數(shù)的功能是:首先對a所指的N行N列的矩陣,找出各行中的

最大數(shù),再求這N個最大值中最小的那個數(shù)并作為函數(shù)值返回。請?zhí)?/p>

空。

#include<stdio.h>

#defineN100

intfun(int(*a)[N])

{introw,col,max,min;

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

{for(max=a[row][01,col=l;col<N;col++)

if([])max=a[row][col];

if(row==0)min=max;

elseif([])min=max;

)

returnmin;

)

9.設函數(shù)findbig已定義為求3個數(shù)中的最大值,以下程序將利用函數(shù)

指針調(diào)用findbig函數(shù)。請?zhí)羁铡?/p>

main()

{intfindbig(int,int,int);

int(*f)(),x,y,z,big;

f=[lo

scanf("%d%d%d",&x,&y,&z);

big=(*f)(x,y,z);

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

)

10.表示""整數(shù)x的絕對值大于5""時值為""真””的C語言表達式是【】。

二、單選題(10題)

11.以下程序的輸出結果是()。

#defineM(x,y,z)x*y+z

main()

{inta=l,b=2,c=3;

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

A.19B.17C.15D.12

12.數(shù)據(jù)處理的最小單位是0。

A.數(shù)據(jù)B.數(shù)據(jù)元素C.數(shù)據(jù)項D.數(shù)據(jù)結構

13.設有如下定義和語句:

FILE*fp;

intdata[10],i,n;

fp=fopen(€tabc.txt","r");

文本文件abc.txt中的數(shù)據(jù)為58192765190,其中第1個數(shù)據(jù)代表的

是它后面數(shù)據(jù)的個數(shù)。若文件已正確打開,則以下程序段中能將文件

的最后5個數(shù)據(jù)依次正確讀入數(shù)組data[0]?data[4]中的是()。

A.fscanf(fjD,“%d",&n);

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

fscanf(小,“%d“,&data[i]);

B.i=0;

while(!feof(fp))

{fscanf(電“%d”,&data[i]);

i++;

C.for(i=0;!feof(fp);i++)

fscanf(%"%d”,&data[i]);

D.i=0;

fscanf(中,"%d",&n);

i++;

while(!feof(fp))

(

fscanf(中,"%d”,&data[i]);

i++;

14.(7-63541-2)堆排序,升序排列,3的位置改變幾次()

A.lB.2C.3D.4E.5F.6

15.以下程序運行后,輸出結果是()

#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\rT,i);}

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

16.以下不能作為合法常量的是()。

A.'cd'B.1.234e04C.”\a"DAO11'

,,

17.若變量已經(jīng)定義且正確賦值,則針對程序段“temp=a;a=b;b=temp;1

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

A.C語言的順序結構不允許將多條語句寫在一行里

B.程序順序結構對于此段程序是從左至右依次執(zhí)行的

C.此程序段的執(zhí)行順序是,先執(zhí)行"b=temp;",再執(zhí)行“a=b;",最后執(zhí)行

"temp=a;"

D.將此段程序的前兩個分號改成逗號,后面一個不變,則不能實現(xiàn)a和

b值的交換

18.有以下程序段:

inti,n;

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

{n=rand()%5;

switch(n)

{case1:

case3:printf("%d\n",n);break;

case2:

case4:print?("%d\n",n);continue;

case():exit(O);

)

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

)

以下關于程序段執(zhí)行情況的敘述,正確的是()。

A.for循環(huán)語句固定執(zhí)行8次

B.當產(chǎn)生的隨機數(shù)n為4時結束循環(huán)操作

C.當產(chǎn)生的隨機數(shù)n為1和2時不做任何操作

D.當產(chǎn)生的隨機數(shù)n為0時結束程序運行

19.為非法的字符串常量()。

A.“case”B.""C."056''D/123,

20.有以下定義和語句:

structworkers

{intnum;charname[20];charC;

struct

{intday;intmonth;intyear;)S;

};

structworkersw,*pw;

pw=&w;

能給w中year成員賦1980的語句是()。

A.*pw.yeai-1980;

B.w.year=1980;

C.pw->year=1980

D.w.S.year=1980;

三、程序設計題(10題)

21.請編寫函數(shù)proc(),其功能是:計算并輸出下列多項式的值。

S=l+1/(1+2)+1/(1+2+3)+...+1/(1+2+3+…+m)

例如,若主函數(shù)從鍵盤給m輸入20后,則輸出為s=l.904762c

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

請勿改動main。函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括

號中填入所編寫的若干語句。

試題程序:

二include<sidio.h>

doubleproc(intm)

voidmain()

(

ininu

doublest

printf(*\nlnputms*)i

scanf("%d"?&,m)?

Aproc(m)i

print(("\n\nn-*-%f\n\n"?5>i

\

22.n個人的成績存放在score數(shù)組中,請編寫函數(shù)proc(),它的功能是

將低于平均分的人數(shù)作為函數(shù)值返回,將低于平均分的分數(shù)放在down

所指的數(shù)組中。例如,當score數(shù)組中的數(shù)據(jù)為{99,80,40,56,59,

84,60,76,100}時,函數(shù)返回的人數(shù)應該是4,down中的數(shù)據(jù)應為

40565960。注意:部分源程序給出如下。請勿改動main()函數(shù)和其

他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干

語句。試題程序:

9aneludek>

9inriudeVcooio.h>

Sinclude<Ndxxk>

SincludeVntrtng.h>

uMproc(miscorrf;.mt???m4owrCl>

raidmainC)

(

inil?n?down[9]t

mi9H9]-{”,>0?40.”?5九弘?

?o.re.iooh

<ywtrm(*CLS*)i

fl*pfoHMOfv*9?down>?

pnntf(*\ndowntotbeaverage?corraret*)?

for<i,Oiynii+?>

pnntf(*%d*?downfQ>i

prmt"*\a*)t

j

23.請編一個函數(shù)voidproc(intintpp[N]),tt指向一個M行N

列的二維數(shù)組,求出二維數(shù)組每行中最大元素,并依次放入pp所指的

一維數(shù)組中。二維數(shù)組中的數(shù)已在主函數(shù)中給出。

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

請勿改動main。函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括

號中填入所編寫的若干語句。

試題程序:

UmcludvVHdso.b>

UinclydrVemo.h>

sinclude<adlib.h>

9defineM3

■defixN4

votdproc<mttt[p^[N])

vmdmain(>

Ml?vCMKN]T(34*M?84.fth

tn.14.93.1??

(28?M.”?”小

Milp[N]*t?j?ki

*CI-S>)?

prwtf("Thrn<inaldata?

loKi-0itVMit++)

foHj-0>j<Ni>4-+)

pnntfC?%6d"..lr[iXj]》.

prinrfC

pnxizr.p)i

prtciiK*\ttThtresult

(or,卜+)

pnnlhtfX4d"?pCll])|

24.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方案

的項目中包含一個源程序文件progl.c。在此程序中,請編寫函數(shù)fun(),

其功能是找出2xM整型二維數(shù)組中最大元素的值,并將此值返回調(diào)用

函數(shù)。

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

請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花

括號中填入你編寫的若干語句。

試題程序:

#defineM4

#include<stdio.h>

intfun(inta[][m])

(

)

voidmain()

{

intarr[2][M]={5,8,3,45,76,-4,12,82);

printf("max=%d\n",fiin(arr));

)

25.請編寫函數(shù)fun,其功能是:找出2XM整型二維數(shù)組中最大元素的

值,并將此值返回調(diào)用函數(shù)。

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

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括

號中填入你編寫的若干語句。

#include<stdio.h>

WdrHneM4

intfun(int](M;)

rnaint)

intarr[2]jM]=5.76.-4.12.82:voidNONO():

printf("max=%d\n*'.fun(arr));

NONO();

voidN()NO()

”?本雨效用于打開文件,■人數(shù)據(jù),調(diào)用函數(shù),輸出敷爆?關時文件??/

FILE?wf;

intarr;1[M]=15.8.3,90.76,-4,12,82|:

wf=fopen('*(Mil.?"ww);

fprintf(wf.Mmax=%d\nw,fun(anr));

frlc?c(wf);

26.N名學生的成績已在主函數(shù)中放人一個帶頭節(jié)點的鏈表結構中,h指

向鏈表的頭節(jié)點。請編寫函數(shù)fun,其功能是:求出平均分,并由函數(shù)

值返回。

例如,若學生的成績是:8576698591726487,則平均分應當是:

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

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括

號中填入你編寫的若干語句。

include<stdio.h>

Windude<atdlib.h>

#dc£neN8

stnictdisl

)doubleg;

Stractalia!?next;

11

typcdcfstructslistSTRECj

doublefun(STREC■h)

STREC?creat(double?s)

ISTREC?h.?p,?q;inti=0;

h?p?(STREC?)malloc(sizeof(STREC));p->?=0;

while(i<N)

|q=(STREC?)malloc(sizeo((STREC));

q->???[i];i??;p->next=q;p=q:

I

p->next=0;

returnh;

I

outlist(STRECeh)

|STREC?p;

psh->next;printf(*head");

do

Iprintf(w->%4.IP,p->?);p=p->neirt;|

while(p!?0);

printf("\n\n*)(

I

main()

|doubles[N]?(85.76,69,85,91,72.64,871,?ve;

voidNONO()s

STREC?h|

h=creai(?)ioutlist(h);

ave=fun(h);

printf(wave=%6.3An".ave);

NONO();

I

voidNONO()

1/?本麗效用于打開文件.輸入數(shù)據(jù),調(diào)用函數(shù)出數(shù)據(jù),關閉文件。?/

FILE?in,?out?

intitj;doublea[N],ave;

STREC,h;

in=(open("in.dat",*r*);

out=fopen("out.

for(is0;i<10;i)

I

for(卜0;j<N;?)fscanf(in."%lfj.

h=creai(s);

ave=fun(b);

fjpnnl£(outt"%6.31f\n",?ve);

I

£cloee(in);

fdo?e(out);

27.

假定輸入的字符串中只包含字母和*號。請編寫函數(shù)proc(),它的功能

是:只刪除字符串前導和尾部的*號,串中字母之間的*號都不刪除。形

參m給出了字符串的長度,形參h給出了字符串中前*號的個數(shù),形參

e給出了字符串中最后*號的個數(shù)。在編寫函數(shù)時,不得使用C語言提

供的字符串函數(shù)。例如,若字符串中的內(nèi)容為****a*bc*de伴g****,刪

除后,字符串中的內(nèi)容則應當是a*bc*def*g。注意:部分源程序給出如

下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc

()的花括號中填入所編寫的若干語句。試題程序:

MtnHude〈MdaO.h>

?indudcVeomah>

voedprocCduir?a?mitn?inth?inte)

voedIMM><>

char?f.?li

pnnlf(*Et)tcrastringAn*)i

whilc<?t>

?—/■>如宇用?翁長才

I一一?。告計t指向字件地尾恁

wtulcX?)

(1-----

/一個字統(tǒng)If/那?'的

個e

whde<

(什?ifn*?■)

/指汁f■的■一個字■/?施什一/'」,個做

proc<??m.(n?m)i

print"*The?tnn<afterdeleted?\n*>t

puw(?)I

28.

編寫函數(shù)proc,它的功能是:計算和輸出下列級數(shù)的和。S=1/(12)

+1/(23)+...+1/(n(n+1))例如,當n=20時,函數(shù)值為0.952381°

注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的

任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試

題程序:

smdudeV

uinciiMic<cocuo.h>

9include<widxx.b>

doubleproH加1n>

voidauiin<>

??YiUrtn<*C1-S*)i

pnni??proc(101)

29.請編寫函數(shù)proc,該函數(shù)的功能是:將M行N列的二維數(shù)組中的

數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個數(shù)存放

在形參n所指的存儲單元中。

例如,若二維數(shù)組中的數(shù)據(jù)為

13233343

14243444

15253545

則一維數(shù)組中的內(nèi)容應該是132333431424344415253545。

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

請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括

號中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

voidproc(int(*s)[103,int*b,int*n,intrain,intnn)

(

)

voidmain

(

intarr[10][10]={{33,33,33,33),{44,44,44,44},

{55,55,55,55}),i,j;

inta[100]={o),n=o;

printf("Thematrix:\n");

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

(

fbr(=O;j<4;j++)

printf("%3d",arr[i][j]):

printf("\n");

)

proc(arr,a,&n,3,4):

printf("TheAarray:\n");

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

prmtf("%3d",a[i]):

printf("\n\n");

)

30.請編寫函數(shù)proc(),對長度為9個字符的字符串,除首、尾字符外,

將其余7個字符按ASCH碼值降序排列。例如,原來的字符串為

HabcdefA,則排序后輸出為HfedcbaA.注意:部分源程序給出如下。

請勿改動main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()中填入

所編寫的若干語句。試題程序:

二mdud*V.Atrin<.h>

Sinclude<Ndbb.h>

&mcludeVsidio.h>

*mrludrVctyp*.h>

9mcludr<emo.h>

voidproc<cimr?m?m<num)

voidaMin<)

chart(103i

?yuteoiC*CLS*)t

prinik?■人9個,符的字用事J)?

fvlMth

proc(t?9)t

pnntfC*\nS?*<t)i

四、2.程序修改題(10題)

31.下列給定程序中函數(shù)fun()的功能是:將長整型數(shù)中每一位上為偶數(shù)

的數(shù)依次逆向取出,構成一個新數(shù)放在t中。高位在低位,低位在高位。

例如當s中的數(shù)為25846513時,t中的數(shù)為6482。請改正函數(shù)fun()

中的錯誤,使它能得出正確的結果。

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

試題程序:

#include<stdio.h>

#include<conio.h>

voidfun(longS,long*t)

(

intd;

longsl=l,i=l;

*t=0;

while(s/i>0)

i=i*10;

i=i/10;

while(s>0)

d=s/i

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

if(d%2!=0)

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

t=d*sl+t;

sl*=10;

)

S=S%i;

i=i/10;

)

)

main()

(

longS,t;

clrscr();

pr血f("\nPleaseenterS:");

scanf("%ld",&s);

fun(S,&t);

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

32.下列給定程序中,函數(shù)fun()的作用是,將字符串tt中的大寫字母都

改為對應的小寫字母,其他字符不變。例如,若輸入"Ab,cD”,則輸出

"ab,cd"o

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

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

試題程序:

#include<stdio.h>

#include<string.h>

#include<conio.h>

char*fun(chartt[])

(

inti;

for(i=0;tt[i];i++)

/*****不**不*不***found***不**********/

{if(('A,<=tt[i]||(tt[i]<='z'))

叫+=32;}

return(tt);

)

main()

{inti;

chartt[81];

clrscr();

printf("\nPleaseenterastring:");

gets(tt);

printf("\nTheresultstringis:\n%s",fun(tt));

)

33.下列給定程序中,函數(shù)fun()的功能是:用冒泡法對6個字符串按由

小到大的順序進行排序。

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

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構.

試題程序:

#include<conio.h>

#include<stdio.h>

#defineMAXLINE20

/*************^Qund**************/

fun(char*pstr[6])

{inti,j;

char*p;

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

{for(j=i+l;j<6;j++)

/*************found**************!

{if(strcmp(*(pstr+i),pstr+j)>0)

p=*(pstr+i);

/*************^Qund**************/

*(pstr+i)-pstr+j;

*(pstr+j)=p;

)

}

main()

{inti;

char*pstr[6],str[6][MAXLINE];

clrscr();

for(i=0;i<6;i++)pstr[i]=str[i];

printf("\nEnter6string(lstringateach

line):\n");

for(i=0;i<6;i++)scanf("%s",pstr[i]);

fun(pstr);

printf("Thestringsaftersorting:\n");

for(i=0;i<6;i++)printf("%s\n",pstr[i]);

34.下列給定程序中,是建立一個帶頭結點的單向鏈表,并用隨機函數(shù)

為各結點數(shù)據(jù)域賦值。函數(shù)fun的作用是求出單向鏈表結點(不包括頭結

點)數(shù)據(jù)域中的最大值,并且作為函數(shù)值返回。

請改正程序指定部位的錯誤,使它能得到正確結果。

[注意]不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構。

[試題源程序]

#include<stdio.h>

#include<stdlib.h>

typedefstructaa

intdata;

structaa*next;

}NODE;

fun(NODE*h)

intmax=-l;

NODE*p;

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

p=h;

while(p)

if(p->data>max)

max=p->data;

/************&^und************/

p=h->next;

)

returnmax;

}

outresult(ints,FILE*Pf)

fprintf(pf,"\nThemaxinlink:%d\n",s);

)

NODE*creatlink(intn,intm)

(

NODE*h,*p,*s,*q;

inti,x;

h=p=(NODE*)malloc(sizeof(NODE));

h->data=9999;

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

(

s=(NODE*)malloc(sizeof(NODE));

s->data=rand()%m;s->next=p->next;

p->next=s;p=p->next;

)

p->next=NULL;

returnh;

)

outlink(NODE*h,FILE*pf)

{

NODE*p;

p=h->next;

fprintf(Pf,"\nTHELIST:\n\nHEAD");

while(P)

(

fprintf(pf,>%d",P->datA);p=p->next;

)

fprintf(pf,"\n");

)

main()

(

NODE*head;intm;

head=cteatlink(12,100);

outlink(head,stdout);

m=fun(head);

printf("\nTHERESULT"");

outresult(m,stdout);

35.給定程序中,函數(shù)fun()的功能是:求輸入的兩個數(shù)中較小的數(shù)。

例如:輸入510,結果為minis50

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

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

試題程序、

#include<stdio.h>

#include<conio.h>

/*************^Qund**************/

intfun(intx,y)

{intz;

z=x<y?x:y;

return(z);

)

main()

{inta,b,c;

scanf("%d,%d\n",&a,&b);

c=fun(a,b);

printf("minis%d",c);

)

36.給定程序M0D11.C中函數(shù)fun的功能是:首先將大寫字母轉換為

對應小寫字母;若小寫字母為a?u,則將其轉換為其后的第5個字母;

若小寫字母為v?z,使其值減21。轉換后的小寫字母作為函數(shù)值返回。

例如,若形參是字母A,則轉換為小寫字母f若形參是字母W,則轉換

為小寫字母b。

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

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

finclude<stdio.h>

2*include<ctype.h>

3charfun(charc)

4{if(c>-fA'&&c<-Z)

5/…………round

6OC+32;

7if(O-^,&&c<?tut)

8w<rw****wfouncj*****?*??????/

9c-c-5;

10elseif(c>-'v'z?)

11c?c-21;

12!returnc;

13i)

14;main()

{charclrc2;

16printf(w\nEnteraletter(A-Z):

);cl-getchar();

17if(isupper(cl))

18(c2-fun(cl);

19printf(w\n\nTheletter\1%c\1

changeto\'%c\'\n”,clrc2);

20}

21elseprintf(R\nEnter(A-Z)!\nw);

22)

37.下列給定程序中,函數(shù)fun()的功能是;利用插入排序法對字符串中

的字符按從小到大的順序進行排序。插入法的基本方法是:先對字符串

中的頭兩個元素進行排序,然后把第3個字符插入到前兩個字符中,插

入后前3個字符依然有序;再把第4個字符插入到前3個字符中,待排

序的字符串已在主函數(shù)中賦予。

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

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構.

試題程序:

#include<String.h>

#include<stdio.h>

#defineN80

voidinsert(char*aa)

{ihti,j,n;charch;

n=strlen(aa);

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

{c=aa[i];

j=i-l;

while((j>=0)&&(ch<aa[j]))

{aa[j+l]=aa[j];

j-s

}

aa[j+l]=ch;

)

main()

{chara[N1="QWERTYUIOPASDFGHJKIMNBVCXZ";

inti;

printf("Theoriginalstring:%s\n",a);

insert(a);

printf("Thestringaftersorting:

%s\n\n",a);

38.下列給定程序中,函數(shù)fun()的功能是::求k!(k<13),所有階乘的

值作為函數(shù)值返回。例如:若k=10,則應輸出3628800。

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

注意:不要改動main函數(shù),不得增行或刪行,也不得更

改程序的結構。

試題程序:

#include<conio.h>

#include<stdio.h>

longfun(intk)

/*************^Qund**************/

ifk>0

return(k*fun(k-1));

/*************^Qund**************/

elseif(k=0)

return1;

}

main()

{intk=10;

clrscr();

print,("%d!=%ld\n",k,fun(k));

39.給定程序中,函數(shù)fun()的功能是:使數(shù)組中的元素的值縮小5倍。

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

floatm[10];

/*************fk)und**************/

intfun(void)

(

intj;

printf("Insubfuncaftercalling\n");

for(j=O;j<10;j++)

/*************■^Qund**************/

print("%f",m[j]%5);

)

main()

inti;

printf("Inmainbeforecalling\n");

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

m[i]=i+20;

printf("%f",m[i]);

)

fun();

printf("\nlnmainaftercalling\n");

for(i=O;i<10;i++)

printf("%f",m[i]/5);

)

40.下列給定程序中,函數(shù)fun()的功能是;求S的值。設

S=(22/l*30))*(42/(3*5))*(62/(5*7))*...*(2k)2/((2k-l)*(2k+l))

例如,當k為10時,函數(shù)的值應為1.533852。

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

注童;不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構。

試題程序:

#include<conio.h>

#include<stdio.h>

#include<math.h>

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

fun(intk)

{ihtn;floats,w,p,q;

n=l;

s=1.0;

while(n<=k)

{w=2.0*n;

p=w-1.0;

q=w+1.0;

s=s*w*w/p/q;

n++;

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

returns

)

main()

{clrscr();

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

}

五、程序改錯題(2題)

41.

下列給定程序中,函數(shù)fun的功能是:計算整數(shù)n的階乘。

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

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結

構。

試題程序:

#include<stdlib.h>

#inclu<ie<stdio.h>

doublefunfintn)

(doubleresuh=J.0;

while(n>l&&n<170)

/*****************Cund*********K*******/

result*--n;

/*****************%umj*****************/

Retum;

voi<imain()

fintn;

systein(,,CLS,t);

printf(MEnteraninteger:r,);

3canf("%d",&n);

printf("\n\n%d!=%IdXnXn11,nJnn(n)):

)

42.下列給定程序中,fun()函數(shù)的功能是:求3個數(shù)的最小公倍數(shù),

例如,給變量a、b、c、分別輸入15、11、2,則輸出結果應當是330。

請修改函數(shù)中的錯誤,得出正確的結果。注意:不要改動main()函

數(shù),不能增行或減行,也不能更改程序的結構。試題程序:

stnclvdcb>

mtlun<inty?imt>

mli.irmp.a-nu

//????found????

,■11

letup—m1?一11

//????foufui????

whiie<irrnp?■(>&&?!—0>

tiT如.

rviumh

voidITUIMIC)

ini??b?c?h

pnntf<*laput?bci*)?

?canf(*Md%dSr.&a.&b.(.c)i

pntitffKd?bw%d?c-Hd\n**B?b?c)i

i*(ua(a?l>?€)i

^nnifCThrfmosmn!eonxnoDmultiple訪K<f\n**i>t

六、操作題(2題)

43.請補充main()函數(shù),該函數(shù)的功能是:從鍵盤輸入一個長整數(shù),如

果這個數(shù)是負數(shù),則取它的絕對值,并顯示出來。例如,輸入>123456,

結果為:123456o注意:部分源程序給出如下。請勿改動main()函

數(shù)和其他函數(shù)中的任何內(nèi)容,僅在橫線上填入所編寫的若干表達式或語

句。試題程序:

Paiclud*

9mrludr<Mdio.h>

0MiciudeVenio.h>

voidm*in<)

longintBum

?y?tcfn<eCLS*>i

printf(aEDICTtbcdafaiVB*)?

tcaafc<1J>?

p>nnff(*???theabeolutrrtivr???\B>>i

if(nuni<CO)

m

prmtfl13】>?

44.下列給定程序中,函數(shù)fun()的功能是:應用遞歸算法求某數(shù)a的平

方根。求平方根的迭代公式如下:

x,=(xe+-)/2

Xo

例如,2的平方根為1.414214。

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

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

試題程序:

#include<math,h>

#include<stdio.h>

/*************^Qund**************/

fun(doublea,doublexO)

{doublexl,y;

xl=(x0+a/x0)/2.0;

/*************fk)und**************!

if(fabs(xl-xO)>0.00001)

y=fun(a,xl);

elsey=xl;

returny;

main()

{doublex;

printf("Enterx:");scanf("%lf',&x);

printf("Thesquarerootof%lfis

x,fun(x,l.O));

參考答案

1.自然連接自然連接解析:在關系運算中,自然連接運算是對兩個具有

公共屬性的關系所進行的運算。

2.共享性共享性解析:數(shù)據(jù)庫技術的主要特點有以下幾個方面:數(shù)據(jù)的

集成性,數(shù)據(jù)的高共享性與低冗余性,數(shù)據(jù)的獨立性,數(shù)據(jù)統(tǒng)一管理與

控制。

3.67G67G解析:字符型變量中保存的是某個字符的ASCII碼值,是一

個整數(shù),因此字符型變量的算術運算和整型變量并無區(qū)別。所以。a=

'A'+'5'-3='A'+('5'=3)='A'+2=65+2=67:b=a+'6'=2='C'+('6'-2)='C'+4='G'。

最后分別按十進制整數(shù)和字符形式輸出a和b的值為:67G。

4.1212解析:本題通過第一個for循坪將數(shù)組arr[0]-arr[9]分別賦值為0-

9,通過第二個for循環(huán)的三次循環(huán)累加,求出結果為12,具體分析如

下:

i=l:k=0+arr[l]+l即k=2;

i=2:k=2+arr[2]+2即k=6;

i=3:k=6+arr[3]+3即k=12;

5.33解析:這里:b-5=4,a-=4之后a的值為6,并把它賦給c。此時b

的值并未被改變。在第2個表達式中,也只有賦值表達式b=3改變了b

的值。所以兩行語句執(zhí)行完畢,b的值應該為3。

6.11解析:計算表達式!a<b,先計算!a,因a的值為10,!a的值為0,

而關系表達式0<20為真,所以表達式!a<b的值為1。

7.

顛倒一個字符串中的字符,就是首尾對應的元素兩兩交換。簡單地可

用兩個游標變量i和j,i是前端元素的下標,j是后端元素的下標,交

換以這兩個變量值為下標的元素str[i]和開始時,i的值為0,j

的值為字符串末元素的下標(字符串長度減1)。每次交換后,i增1,j

減1。繼續(xù)交換的條件是str[i]位于str[j]的前面,即i<j字符串末元素

的下標是它的長度減1,所以在第二個空框處應填入-1。程序為了交換

str[i]和使用了變量k,該變量應在程序的變量定義部分中一起

定義,所以在第一個空

\r\n

\r\n

8.a[row][c01]>max或max<a[row][col]max<min或min>

maxafrow][c01]>max或max<a[row][co1]\r\nmax<min或min>max解

析:本題有兩層for循環(huán),函數(shù)首先定義了整型變量row、col、max和

min,其中row用于外循環(huán)的循環(huán)變量,col用于內(nèi)循環(huán)的循環(huán)變量,max

記錄每行中的最人值,min記錄所有行最大值中的最小值。在內(nèi)循環(huán)中,

首先給max賦初值為每行的第0個元素值,然后從第一個開始依次與

max進行比較。如果大于max則將其值賦給max,當每一行循環(huán)結束,

max記錄了每一行的最大值。所以第一個空應該填a[row][col]>max或

max<a[row][col)o退出內(nèi)循環(huán),在第一次退出內(nèi)循環(huán)時,將min賦初

值為第。行的max,然后在每次退出內(nèi)循環(huán)時,將min和每行的max比

較,如果大于max,則將max值賦min,所以第二個空應該填max<min

或min〉max,當退出外循環(huán)時,rain為所有行中的最大值的最小值。

9fndbigfindbig解析:f是指向函數(shù)的指針變量,根據(jù)題意要求,空格

處應填入findbigo

本題目考查:C語言中指向函數(shù)的指針變量定義的一般形式為;

數(shù)據(jù)類型標識符(時旨針變量名X);

“數(shù)據(jù)類型標識符”表示函數(shù)返回值的類型。

函數(shù)的調(diào)用可以通過函數(shù)名調(diào)用,也可以通過函數(shù)指針調(diào)用。在給函數(shù)

指針變量賦值時,只需給出函數(shù)名而不必給出參數(shù)。(*p)()表示定義一個

指向函數(shù)的指針變量,專門用來存放函數(shù)的入口地址,可以先后指向不

同的指針變量。用函數(shù)指針調(diào)用函數(shù)時,只需要將(*p)代替函數(shù)名即可,

在(*可之后的括號中,根據(jù)需要寫上參數(shù)。

10.x>5||x<-5x<-5或x<-5||x>5x>5||x<-5,x<-5或x<-5||x>5解

析:要使整數(shù)x的絕對值大于5,則x大于5或x小于5,用C語言表

示即為:x>5||x<-5或者x<-5||x>50故本題答案為;x>5||x<-5或者

x<-5||x>50

11.D

M(a+b,b+C,c+a)=a+b*b+c+c+a=l+2*2+3+3+l=12,注意x*y+z而不

是(x)*(y)+z。

12.C解析:數(shù)據(jù)處理的最小單位是數(shù)據(jù)項油若干數(shù)據(jù)項組成數(shù)據(jù)元素;

而數(shù)據(jù)是指能夠被計算機識別、存儲和加工處理的信息載體;數(shù)據(jù)結構

是指數(shù)據(jù)之間的相互關系和數(shù)據(jù)運算。故正確答案為選項C)。

13.A由題意可知,文件abc.txt中存放了6個整數(shù)。其中第1個表示后

續(xù)數(shù)據(jù)的個數(shù)。要將最后5個數(shù)據(jù)讀入數(shù)組data中,需要讀取數(shù)據(jù)的個

數(shù)為5,所以首先調(diào)用fscanf函數(shù),將5讀入整型變量n中;接著通過

for循環(huán),i分別取值O-n-I,調(diào)用fscanf函數(shù)將n個整數(shù)讀入

data[0]?data[n-l]中。故本題答案為A選項。

14.B

15.D

16.A字符常量是使用單引號標注的單個字符,選項A錯誤;選項B屬于

浮點數(shù)常量,正確;選項C屬于轉義字符常量,正確;選項D屬于轉義字

符,代表八進制數(shù)011的ASCII值的字符,正確。本題答案為A選項。

17.BC語言允許將多條語句寫在一行,選項A錯誤;題干中的語句是從

左至右依次執(zhí)行的,選項B正確,選項C錯誤。題干中的程序前兩個分

號改成逗號,就構成了逗號表達式。逗號表達式會依次從左到右計算各

個表達式,整個表達式的值是最后一個表達式的值,所以此例也可以實

現(xiàn)a和b值的交換,選項D錯誤。故本題答案為B選項。

18.A

程序中的if循環(huán)是固定地執(zhí)行8次,屬于計數(shù)器,程序是從中隨機抽

取一個數(shù),然后對5進行求余再輸出,共抽取8個數(shù)。所以答案為

Ao

19.D

20.D

結構workers中的成員s是一個嵌套的結構類型定義,因此在給year

賦值時,要用運算在深入一層訪問到最基本的成員year,只有D

項反映出了這一點。

21.

【解析】由題目中所給公式可知,多項式的值為m項的和。多項式每

一項的分子均為1,第i項的分母為1?i所有整數(shù)的和。根據(jù)這個特

點,通過m次循環(huán)求出多項式的每一項并求和。最后將多項式的和返

回到主函數(shù)中。

22.

【解析】要找到所有學生中成績低于平均分數(shù)的人數(shù),首先需要算出所

有學生的平均成績。然后將所有學生的成績與平均成績相比較。將低于

平均分數(shù)學生的記錄存放在新的數(shù)組中,并將低于平均分數(shù)的學生數(shù)返

回給主函數(shù)。

23.

【解析】按照題目中要求,求出二維數(shù)組每行中最大元素,并依次放

入pp所指的一維數(shù)組中。首先比較二維數(shù)組中每一行的元素,然后找

出每一行中的最大元素,放入一維數(shù)組pp中,最后返回到主函數(shù)當

中。

24.intfun(inta[][m])

(

inti,j,max=a[O][O];

/*對二維數(shù)組進行遍歷*/

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

for(j=0;j<=""p="">

if(max<a[i][j])<p=""></a[i][j])<>

/*將最大值保存在max中*/

max=a[i皿;

returnmax;

)

因為數(shù)組是二維數(shù)組,所以應使用兩層for循環(huán)嵌套。使用for循環(huán)語

句時需注意循環(huán)變量的取值范圍。

此類求最大值或最小值的問題,可以采用逐個比較的方式。遍歷數(shù)組

中所有元素,從中找出數(shù)組的最大值或最小值。首先定義變量max來

存放數(shù)組的第1個元素的值,然后利用for循環(huán)逐個找出數(shù)組中的元

素,并與變量max比較。如果元素值大于max,則將該值賦給max。

循環(huán)結束后max的值即為數(shù)組最大值。最后將該值返回。

該類題目考查較多,需要掌握逐個比較的方法。對于m*n二維數(shù)組,

采用逐個查找的方法,代碼實現(xiàn)如下:

for(i=0;i<=""p="">

for(j=0;j<=""p="">

25.

【考點分析】

本題考查:求數(shù)組的最大值,需要運用循環(huán)語句,因為數(shù)組是二維數(shù)

組,所以應使用二層for循環(huán)嵌套。使用for循環(huán)語句時需要注意循環(huán)

變量的取值范圍。

【解題思路】

此類求最大值或最小值的問題,我們可以采用逐個比較的方式,要求

對數(shù)組中所有元素遍歷一遍,并且從中找出數(shù)組最大值或最小值。首

先定義變量max存放數(shù)組中的第一個元素的值,然后利用for循環(huán)逐

個找出數(shù)組中的元素,并與max比較,如果元素值大于max,則將該

值賦予max,循環(huán)結束后max的值即為數(shù)組最大值,最后將該值返

回。

【解題寶典】

該類題目考查較多,要掌握逐行比較的方法。對于m*n二維數(shù)組,如

采用逐行查找方法,代碼實現(xiàn)為:

26.

【考點分析】

本題考查:鏈表的操作,對鏈表的主要操作有以下幾種:建立鏈表、

結構的查找與輸出、插入一個結點、刪除一個結點。

【解題思路】

題目要求求鏈表中數(shù)據(jù)域的平均值,應首先使用循環(huán)語句遍歷鏈表,

求各結點數(shù)據(jù)域中數(shù)值的和,再對和求平均分。遍歷鏈表時應定義一

個指向結點的指針P,因為“頭結點”中沒有數(shù)值,所以程序中讓P直接

指向“頭結點”的下一個結點,使用語句STREC+P-h-nexto

27.

【解析】題目要求不能用C語言提供的字符串函數(shù),可以利用移動字符

串指針來實現(xiàn),首先移動字符串指針到第一個不是*的位置,通過指針

的移動,來實現(xiàn)把第一個不是星號的字符與最后一個不是星號的字符放

到a數(shù)組中,最后用‘\0'來作為字符串結束的標志。

28.

【解析】首先定義一個變量來表示其和s,通過n次循環(huán)求出n項的和,

最后將所得到各項的和值返回給主函數(shù)。

29.\r\n\tvoidproc(int(*s)[10],int*b,int*n,intmm,intnn)

{

inti,j,k=0;

for(i=0;i<mm;i++)//i是表示其行的下標

for(j=0;j<nn;j++)//j是表示其列的下標

b[k++]=s[i][j];//把其放到b的一維數(shù)組中

*n=k;//把b數(shù)組的長度通過形參n傳回到主函數(shù)中

【解析】要將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一

維數(shù)組中,可以通過首先行循環(huán),然后列循環(huán)取出二維數(shù)組中的每一

個元素,并將其放入一維數(shù)組中。最后,將一維數(shù)組的長度通過形參

返回到主函數(shù)當中。

30.

【解析】按照題目中要求,求除首、尾字符外,將其余7個字符按ASCH

碼值降序排列。首先需要判斷除首、尾字符之外,其余7個字符ASCH

碼值的大小,將不符合順序要求的字符互換。

31.⑴錯誤:if(d%2!=0)正確:if(d%2==0)(2)錯誤:t=d*sl+t;正確:

*t=d*sl+*t;(l)錯誤:if(d%2!=0)正確:if(d%2==0)\r\n

溫馨提示

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

評論

0/150

提交評論