2023年遼寧省撫順市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)預(yù)測(cè)試題(含答案)_第1頁(yè)
2023年遼寧省撫順市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)預(yù)測(cè)試題(含答案)_第2頁(yè)
2023年遼寧省撫順市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)預(yù)測(cè)試題(含答案)_第3頁(yè)
2023年遼寧省撫順市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)預(yù)測(cè)試題(含答案)_第4頁(yè)
2023年遼寧省撫順市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)預(yù)測(cè)試題(含答案)_第5頁(yè)
已閱讀5頁(yè),還剩35頁(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)介

2023年遼寧省撫順市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)預(yù)測(cè)試題(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、2.填空題(10題)1.關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)能實(shí)現(xiàn)的專門關(guān)系運(yùn)算包括選擇、連接和【】。

2.若fp已正確定義為—‘個(gè)文件指針,d1.dd為二進(jìn)制文件,請(qǐng)?zhí)羁?,以便為“讀”而打開此文件:fp=fopen(______);。

3.以下程序由終端鍵盤輸入一個(gè)文件名,然后把從終端鍵盤輸入的字符依次放到該文

件中,用井作為結(jié)束輸入的標(biāo)志。請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

main()

{FILE*fp;

charch,fname[10];

printf("Inputthenameoffile\n");

gets(fname);

if((fp=【】)==NULL)

{printf("Cannotope\n");exit(O);}

printf("Enterdata\n");

while((ch=getchar())!='#')

fputc(【】,fp);

fclose(fp);

}

4.以下程序中函數(shù)f的功能是在數(shù)組x的n個(gè)數(shù)(假定n個(gè)數(shù)互不相同)中找出最大最小數(shù),將其中最小的數(shù)與第一個(gè)數(shù)對(duì)換,把最大的數(shù)與最后一個(gè)數(shù)對(duì)換。請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

voidf(intx[],intn)

{intp0,p1,i,j,t,m;

i=j=x[0];p0=p1=0;

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

{if(x[m]>i){i=x[m];p0=m;}

elseif(x[m]<j){j=x[m];p1=m;}

}

t=x[p0];x[p0]=x[n-1];x[n-1]=t;

t=x[p1];x[p1]=【】;【】=t;

}

main()

{inta[10],u;

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

f(a,10);

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

printf("\n");

}

5.若有定義inta[4][4]={{1,2,3,4},{0},{4,6,8,10},{1,3,5,7}},則初始化后,a[1][1]得到的初值是______。

6.下列程序執(zhí)行后輸出的結(jié)果是【】。

main()

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

for(i=0;i<10;i++)arr[i]=i;

for(i=1;i<4;i++)k+=arr[i]+i;

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

7.有下列程序;

#include<stdio.h>

main()

{charc;

while((c=getchar())!=',')putchar(++C);

}

程序運(yùn)行時(shí),如果從鍵盤輸入:A,B,<CR>,則輸出結(jié)果為______。

8.下面程序的功能是:計(jì)算1~10之間的奇數(shù)之和與偶數(shù)之和,請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

main()

{inta,b,c,i;

a=c=0;

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

{a+=i;

【】;

c+=b;}

printf("偶數(shù)之和=%d\n",a);

printf("奇數(shù)之和=%d\n",c-11);}

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

#include<stdio.h>

main()

{chars[20];

scanf("%s",s);

printf("%s",s);

}

運(yùn)行程序,輸入HOWAREYOU。

10.若有以下程序

main()

{chara;

a='H'-'A'+'0';

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

}

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

二、單選題(10題)11.有以下程序段:charstr[4][12]={“aaa”,“bbb”,“ccc”,“ddd”},*p[4];inti;for(i=0;i<4;i++)p[i]=str[i];以下選項(xiàng)中不能正確引用字符串的是()。

A.*p[3]B.p[3]C.str[2]D.*p

12.下列程序的運(yùn)行結(jié)果是()。#include<stdio.h>#defineADD(x)x+xmain(){intm=1,n=2,k=3;ints=ADD(m+n)*k;printf("s=%d",s);}

A.sum=18B.sum=10C.sum=9D.sum=25

13.

14.以下程序的主函數(shù)中調(diào)用了在其面前定義的fun函數(shù)#include<stdio.h>...main(){doublea[15],k;k=fun(a);...}則以下選項(xiàng)中錯(cuò)誤的fun函數(shù)首部是()。、A.doublefun(doublea[l5])

B.doublefun(double*a)

C.doublefun(doublea[])

D.doublefun(doublea)

15.下列敘述中錯(cuò)誤的是()。

A.用戶定義的函數(shù)中可以沒(méi)有return語(yǔ)句

B.用戶定義的函數(shù)中可以有多個(gè)return語(yǔ)句,以便調(diào)用一次返回多個(gè)函數(shù)值

C.用戶定義的函數(shù)中若沒(méi)有return語(yǔ)句,則應(yīng)當(dāng)定義函數(shù)為void類型

D.函數(shù)的return語(yǔ)句中可以沒(méi)有表達(dá)式

16.結(jié)構(gòu)化分析方法是面向()的自頂向下、逐步求精進(jìn)行需求分析的方法

A.對(duì)象B.數(shù)據(jù)結(jié)構(gòu)C.數(shù)據(jù)流D.目標(biāo)

17.若i和k都是int類型變量,有以下for語(yǔ)句:for(i=0,k=-1;k=1;k++)printf("*****\n");下面關(guān)于語(yǔ)句執(zhí)行情況的敘述中正確的是()。

A.循環(huán)體執(zhí)行兩次B.循環(huán)體執(zhí)行一次C.循環(huán)體一次也不執(zhí)行D.構(gòu)成無(wú)限循環(huán)

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

A.C語(yǔ)句必須以分號(hào)結(jié)束

B.復(fù)合語(yǔ)句在語(yǔ)法上被看作一條語(yǔ)句

C.空語(yǔ)句出現(xiàn)在任何位置都不會(huì)影響程序運(yùn)行

D.賦值表達(dá)式末尾加分號(hào)就構(gòu)成賦值語(yǔ)句

19.在一個(gè)帶頭結(jié)點(diǎn)的單鏈表HL中,若要在第一個(gè)元素之前插入一個(gè)由指針p指向的結(jié)點(diǎn),應(yīng)該使用的語(yǔ)句為()

A.HL=p;p->next=HL;

B.p->next=HL;HL=p;

C.p->next=HL->next;HL->next=p;

D.p->next=HL;p=HL;

20.以下程序中,while循環(huán)的循環(huán)次數(shù)是main(){inti=0;while(i<10){if(i<1)continue;if(i==5)break;i++;}}

A.1B.10C.6D.死循環(huán),不能確定次數(shù)

三、程序設(shè)計(jì)題(10題)21.請(qǐng)編寫函數(shù)proc(),該函數(shù)的功能是:將str所指字符串中ASCⅡ值為偶數(shù)的字符刪除,串中剩余字符形成一個(gè)新串放在t所指的數(shù)組中。例如,若str所指字符串中的內(nèi)容為aBcdef9789,其中字符8的ASCⅡ碼值為偶數(shù)……字符8的ASCⅡ碼值為偶數(shù)……都應(yīng)當(dāng)刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是ace979。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:

22.編寫一個(gè)函數(shù),該函數(shù)可以統(tǒng)計(jì)一個(gè)長(zhǎng)度為2的字符串在另一個(gè)字符串中出現(xiàn)的次數(shù)。例如,假定輸入的字符串為abcdefabcdeabceabcdef,子字符串為cd,則應(yīng)當(dāng)輸出3。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:

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

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

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

試題程序:

24.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個(gè)數(shù)存放在形參n所指的存儲(chǔ)單元中。例如,若二維數(shù)組中的數(shù)據(jù)為333333334444444455555555則一維數(shù)組中的內(nèi)容應(yīng)該為333333334444444455555555。注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:

25.請(qǐng)編寫函數(shù)proc,其功能是將兩個(gè)兩位數(shù)的正整數(shù)a、b合并形成一個(gè)整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)個(gè)位和十位上,b數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的百位和千位上。例如,當(dāng)a=25,b=43,實(shí)際輸入時(shí)個(gè)數(shù)之間以Enter鍵分隔,調(diào)用該函數(shù)后,c=3452。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:

26.使用VC++2010打開考生文件夾析下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,編寫程序,實(shí)現(xiàn)矩陣(3行、3列)的轉(zhuǎn)置(即行列互換)。例如,若輸入下面的矩陣:100200300400500600700800900則程序輸出:100400700200500800300600900注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:11#include<stdio.h>2#include<conio.h>3#include<stdlib.h>4voidfun(intarray[3][3])5{67}8voidmain()9{10FILE*wf;11inti,j;12intarray[3][3]={{100,200,300},{400,500,600},{700,800,900}};13system("CLS");14for(i=0;i<3;i++)15{for(j=0;j<3;j++)16printf("%7d",array[i][j]);17printf("\n");18}19fun(array);20printf("Convertedarray:\n");21for(i=0;i<3;i++)22{for(j=0;j<3;j++)23printf("%7d",array[i][j]);24printf("\n");25}26/*********found*********/27wf=fopen("out.datn,"w");28for(i=0;i<3;i++)29{for(j=0;j<3;j++)30fprintf(wf,"%7dn,array[i][j]);31fprintf(wf,"\n");32}33fclose(wf);34/*********found********/35}

27.有一個(gè)一維數(shù)組,內(nèi)放10個(gè)學(xué)生成績(jī),寫一個(gè)函數(shù),求出平均分。

28.輸出1900~2000年中所有的閏年。每輸出3個(gè)年號(hào)換一行。(判斷閏年的條件為下面二者之一:能被4整除,但不能被100整除?;蛘吣鼙?00整除。)

29.編寫函數(shù)如n,其功能是:刪除一個(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ù)丘m的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:

30.某學(xué)生的記錄由學(xué)號(hào)、8門課程成績(jī)和平均分組成,學(xué)號(hào)和8門課程的成績(jī)已在主函數(shù)中給出,請(qǐng)編寫函數(shù),其功能是:求出該學(xué)生的平均分,并放入記錄的ave成員中。例如,學(xué)生的成績(jī)是:85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應(yīng)為78.875。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun部位中填入你編寫的若干語(yǔ)句。試題程序:#include<stdio.h>#defineN8typedefstruct{charnum[10];doubles[N];doubleave;}STREC;voldfun(STREC*a){}voidmainSTRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5};inti;fun(&s);printf("The%ssstudentdata:\n",s.num);for(i=0;i<N;i++)printf("%4.1fkn",s.s[i]);printf("\nknave=%7.3fkn",s.aVe);printf("\n");}四、2.程序修改題(10題)31.下列給定程序中,函數(shù)fun()的功能是:依次取出字符串中所有的數(shù)字字符,形成新的字符串,并取代原字符串。

請(qǐng)改正函數(shù)fun()中的錯(cuò)誤,使它能得出正確的結(jié)果。

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

試題程序:

#include<stdio.h>

#include<conio.h>

voidfun(char*s)

{inti,j;

for(i=0,j=0;s[i]!='\0';i++)

if(s[i]>='0'&&s[i]<='9')

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

s[j]=s[i];

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

s[j]="\0";

}

main()

{charitem[80];

clrscr();

printf("\nEnterastring:");gets(item);

printf("\n\nThestringis:\%s\n",item);

fun(item);

printf("\n\nThestringofchangingis:

\%s\n",item);

}

32.給定程序MODll.C中函數(shù)fun的功能是:為一個(gè)偶數(shù)尋找兩個(gè)素?cái)?shù),這兩個(gè)素?cái)?shù)之和等于該偶數(shù),并將這兩個(gè)素?cái)?shù)通過(guò)形參指針傳回主函數(shù)。

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

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

33.給定程序MODll.C中函數(shù)fun的功能是:將s所指字符串中的字母轉(zhuǎn)換為按字母序列的后續(xù)字母(但z轉(zhuǎn)換為A,z轉(zhuǎn)換為a),其他字符不變。

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

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

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

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

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

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

35.給定程序MODll.C中函數(shù)fun的功能是:對(duì)N名學(xué)生的學(xué)習(xí)成績(jī),按從高到低的順序找出前m(m≤10)名學(xué)生來(lái),并將這些學(xué)生數(shù)據(jù)存放在一個(gè)動(dòng)態(tài)分配的連續(xù)存儲(chǔ)區(qū)中,此存儲(chǔ)區(qū)的首地址作為函數(shù)值返回。

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

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

36.下列給定程序中,函數(shù)fun()的功能是:通過(guò)某種方式實(shí)現(xiàn)兩個(gè)變量值的交換,規(guī)定不允許增加語(yǔ)句和表達(dá)式。例如變量a中的值原為8,b中的值原為3,程序運(yùn)行后a中的值為3,b中的值為8。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

intfun(int*x,inty)

{

intt;

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

t=x;x=y;

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

return(y);

}

main()

{inta=3,b=8;

clrscr();

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

b=fun(&a,b);

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

}

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

請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。

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

試題程序:

#include<stdio.h>

#include<conio.h>

intfun(intk)

{

intm=0,mc=0,j;

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

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

{

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

if((k%7=0)||(k%ll=0))

{

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

m=k;

mc++;

}

k--;

}

returnm;

}

main()

{

clrscr();

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

}

38.給定程序MODll.C中函數(shù)fun的功能是:計(jì)算n的5次方的值(規(guī)定n的值大于2、小于8),通過(guò)形參指針傳回主函數(shù);并計(jì)算該值的個(gè)位、十位、百位上數(shù)字之和作為函數(shù)值返回。

例如,7的5次方是16807,其低3位數(shù)的和值是15。

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

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

39.給定程序MODll.C中函數(shù)fun的功能是:從低位開始取出長(zhǎng)整型變量s中奇數(shù)位上的數(shù),依次構(gòu)成一個(gè)新數(shù)放在1中。高位仍在高位,低位仍在低位。

例如,當(dāng)s中的數(shù)為:7654321時(shí),t中的數(shù)為:7531。

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

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

40.給定程序MODll.C中函數(shù)fun的功能是:將s所指字符串的正序和反序進(jìn)行連接,形成一個(gè)新串放在t所指的數(shù)組中。

例如,當(dāng)s所指字符串為:“ABCD”時(shí),則t所指字符串中的內(nèi)容應(yīng)為:“ABCDDCBA”。

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

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

五、程序改錯(cuò)題(2題)41.下列給定程序中,函數(shù)fun()的功能是:將tt所指字符串中的小寫字母全部改為對(duì)應(yīng)的大寫字母,其他字符不變。例如,若輸入“Ab,cD”,則輸出“AB,CD”。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:

42.以下程序可把輸入的十進(jìn)制數(shù)以十六進(jìn)制數(shù)的形式輸出。請(qǐng)?jiān)跈M線上填上適當(dāng)?shù)膬?nèi)容并把橫線刪除,使它能得出正確的結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、操作題(2題)43.以下程序的功能是:輸出a、b、c三個(gè)變量中的最小值。

#include<stdio.h>

main()

{inta,b,c,t1,t2;

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

t1=a<b?【】;

t2=c<t1?【】;

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

}

44.請(qǐng)編寫一個(gè)函數(shù)intfun(int*s,intt,int*k),用來(lái)求出數(shù)組的最小元素在數(shù)組中的下標(biāo)并存放在k所指的存儲(chǔ)單元中。

例如,輸入如下整數(shù):

234345753134436458100321135760

則輸出結(jié)果為6,100。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

intfun(int*s,intt,int*k)

{

}

main()

{

inta[10]={234,345,753,134,436,458,

100,321,

135,760),k;

clrscr();

fun(a,10,&k);

printf("%dr%d\n",k,a[k]);

}

參考答案

1.投影專門關(guān)系運(yùn)算包括對(duì)單個(gè)關(guān)系進(jìn)行垂直分解(投影操作)或水平分解(選擇操作)和對(duì)多個(gè)關(guān)系的結(jié)合(連接操作)等。

2.d1.dat""rb"或"d1.dat""r+b”或"d1.dat""rb+"d1.dat','rb'或'd1.dat','r+b”或'd1.dat','rb+'解析:本題考查的知識(shí)點(diǎn)是二進(jìn)制文件的打開方式。打開文件的函數(shù)為fopen('文件名''mode'),其中'mode'表示文件的打開方式.如果打開的是二進(jìn)制文件,其mode字符串可以是:'rb''wb'、'ab'、'rb+'、'wb+'、'ab+'。'r'表示以只讀方式打開。'w'表示以寫方式打開,如果已有在該文件名的文件,文件中的內(nèi)容將被清空。若文件名不存在,則將創(chuàng)建該文件.'a'為追加方式打開。若文件存在時(shí),將打開這個(gè)文件并且在文件的末尾進(jìn)行追加.當(dāng)文件不存在,將創(chuàng)建新文件。'r='打開一個(gè)已有在文件用于更新(可讀可寫)。'w+'創(chuàng)建一個(gè)新文件用于更新,如果文件存在,文件被重寫(可讀可寫)。'a+'打開用于追加,當(dāng)文件不存在時(shí),創(chuàng)建新文件,并在文件末尾進(jìn)行追加(可讀可寫)。根據(jù)題意,應(yīng)該填'd1.dat','rb'或其他等價(jià)的表達(dá)法。

3.fopen(fname:"w")

4.x[0]x[0]x[0],x[0]解析:函數(shù)f()通過(guò)for循環(huán)逐個(gè)比較數(shù)組x中的元素,循環(huán)結(jié)束后,p0和p1分別表示最大值和最小值在數(shù)組中的下標(biāo)位置,然后按照題意將最大值x[p0]和數(shù)組的最后一個(gè)元素x[n-1]交換位置,再將最小值x[p1]和第一個(gè)元素(x[0])進(jìn)行交換,所以空白處應(yīng)該填入x[0]。

5.00解析:二維數(shù)組可以看成是按矩陣形式排列的,題目中給二維數(shù)組賦初值是按行分段賦值的,a[4][4]可以分解為4個(gè)一維數(shù)組,其數(shù)組名分別為a[0]、a[1]、a[2]、a[3],這4個(gè)一維數(shù)組都有4個(gè)元素,a[0]的元素為a[0][0]、a[0][1]、a[0][2]、a[0][3]。

6.1212解析:本題的第一個(gè)for循環(huán)用于給數(shù)組arr賦初值,第二個(gè)for循環(huán)用于求和運(yùn)算。由于第二個(gè)for循環(huán)初始值為1,而循環(huán)條件為i<4,所以求的是arr[1]到arr[3]及i的和,所以輸出結(jié)果為12。

7.BB解析:因?yàn)閏是字符類型變量,它只能接收一個(gè)字符,所以c=A,字符型變量在參與算術(shù)運(yùn)算的時(shí)候是用其相應(yīng)的ASCII碼參與運(yùn)算的,這樣++c得到字母B的ASCII碼,用putchar函數(shù)輸出是輸出其相應(yīng)的字符,所以是B。

8.b=i+1b=i+1解析:本題考查了for循環(huán)語(yǔ)句的執(zhí)行過(guò)程。i+=2是修正表達(dá)式,執(zhí)行一次循環(huán)體后i的值就增加2,i的初始值為0,每次加2之后和累加至a,所以a的值就是1~10之間的偶數(shù)之后;b的值是1~11之間的奇數(shù)和,但在輸出b值時(shí)c去掉多加的11,即為1~10之間的奇數(shù)之和。

9.HOWHOW解析:在scanf()函數(shù)中,使用空格作為分隔符,如果輸入含有空格的字符中,則不能使用scanf()數(shù),所以本題中輸入空格就返回了'\\0\\,s數(shù)組也就確定了,后面的輸入就不再讀入數(shù)組s中。

10.77解析:本題考核的知識(shí)點(diǎn)是字符類型變量的運(yùn)算。字符型數(shù)據(jù)可作為整型參加算術(shù)運(yùn)算,其值為其對(duì)應(yīng)的ASCII碼。'H'-'A'的結(jié)果是7,加'0'后是'7'的ASCII碼,所以輸出的是字符'7'。

11.A“*P[3]”是一個(gè)字符,也就是str[3][0],不是字符串,選項(xiàng)A錯(cuò)誤?!癙[3]”“str[2]”和“*p”分別代表了ddd、ccc、aaa。故本題答案為A選項(xiàng)。

12.B解析:本題考查帶參數(shù)的宏的定義及相關(guān)運(yùn)算:S=m+n+m+n*k=1+2+1+2*3=10。

13.D

14.A由題可知fun的參數(shù)為變量,而a[15]為常量,所以答案為A。

15.B函數(shù)的值只能通過(guò)return語(yǔ)句返回主調(diào)函數(shù)。函數(shù)中允許有多個(gè)return語(yǔ)句,但每次只能調(diào)用一個(gè)return語(yǔ)句,因此只能返回一個(gè)函數(shù)值。不返回函數(shù)值的函數(shù),可以明確定義為“空類型”,類型說(shuō)明符為void。故本題答案為B選項(xiàng)。

16.CC?!窘馕觥拷Y(jié)構(gòu)化分析方法是面向數(shù)據(jù)流進(jìn)行需求分析的方法,采用自頂向下、逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模型。

17.D此題考查的是基本的循環(huán),答案為D。

18.C解析:C語(yǔ)句必須以分號(hào)結(jié)束,選項(xiàng)A是正確的。復(fù)合語(yǔ)句在語(yǔ)法上被看作一條語(yǔ)句,選項(xiàng)B也是正確的??照Z(yǔ)句也算是一條語(yǔ)句,因此如果空語(yǔ)句出現(xiàn)在條件或者循環(huán)語(yǔ)句中,一樣會(huì)被當(dāng)作條件子句或者循環(huán)體來(lái)看待,所以選項(xiàng)c是錯(cuò)誤的。賦值表達(dá)式末尾加分號(hào)就構(gòu)成賦值語(yǔ)句,選項(xiàng)D正確。故本題應(yīng)該選擇C。

19.C

20.D解析:break語(yǔ)句只能在循環(huán)體和switch語(yǔ)句體內(nèi)使用,當(dāng)break出現(xiàn)在switch語(yǔ)句體內(nèi)時(shí),其作用只是跳出該switch語(yǔ)句體。當(dāng)break出現(xiàn)在循環(huán)體中,但不在switch語(yǔ)句體內(nèi)時(shí),則在執(zhí)行break后,跳出本層循環(huán)體.而continue語(yǔ)句的作用是結(jié)束本次循環(huán),即跳過(guò)本次循環(huán)中余下尚未執(zhí)行的語(yǔ)句,接著再一次進(jìn)行循環(huán)的條件判定。本程序中,變量i的初始值為0,判斷while后面括號(hào)內(nèi)表達(dá)式的值為真,執(zhí)行循環(huán)體內(nèi)的if語(yǔ)句,判斷if后面括號(hào)內(nèi)表達(dá)式的值為真,執(zhí)行“continue;”語(yǔ)句.因continue的作用是結(jié)束本次循環(huán),即跳過(guò)本次循環(huán)體中余下尚未執(zhí)行的語(yǔ)句,接著再一次進(jìn)行循環(huán)的條件判斷,所以i的值未發(fā)生變化,循環(huán)條件仍然為真,if語(yǔ)句也仍然成立,因此循環(huán)將無(wú)止境地進(jìn)行下去。所以,4個(gè)選項(xiàng)中D為所選。

21.

【解析】要把字符串str中ASCⅡ碼值為偶數(shù)的字符刪除,需要判斷字符串str中每一個(gè)字符的ASCⅡ值,將ASCⅡ碼值為奇數(shù)的字符放入字符串t中,ASCⅡ碼值為偶數(shù)的字符不予處理。最后為新的字符串t加上結(jié)束符。

22.

【解析】要計(jì)算出主字符串中包含子字符串的個(gè)數(shù),應(yīng)該檢查主字符串中從第一個(gè)到最后一個(gè)字符。每出現(xiàn)一個(gè)計(jì)數(shù)變量加1,最后將得到的個(gè)數(shù)返回給主函數(shù)。

23.

【解析】要使數(shù)組左下半三角元素中的值全部置成0,先要找出數(shù)組的下半三角元素,再將其值全部賦值為0。二維數(shù)組中下半三角元素的特點(diǎn)為,其列下標(biāo)小于其行下標(biāo)。根據(jù)這個(gè)特點(diǎn),將二維數(shù)組的下半三角元素都賦值為0。

24.1voidfun(int(*s)[10],intint*n,intmm,intnn)2{3inti,j,k=0;4for(i=0;i<mm;i++)/*將二維數(shù)組s中的數(shù)據(jù)按行的順序依次存放到一維數(shù)組b中*/5for(j=0;j<nn;j++)6b[k++]=s[i][j];7*n=k;/*通過(guò)指針?lè)祷卦貍€(gè)數(shù)*/8}本題可以用兩個(gè)循環(huán)來(lái)處理。由于是按行的順序取出,因此第1個(gè)for循環(huán)用于控制行下標(biāo),第2個(gè)循環(huán)用于控制列下標(biāo)。若改成按列的順序取出,則循環(huán)應(yīng)改成:for(i=0;i<mm;jp)b[k++]=s[j][i];要注意s[j][i]的下標(biāo),不能用s[i][j]。若按行取出則列下標(biāo)變化較快,若按列取出則行下標(biāo)變化較快,即循環(huán)嵌套時(shí),越在內(nèi)層的循環(huán),其循環(huán)變量變化就越快。<mm;jp)

25.

【解析】按題目中的要求,要得到整數(shù)c,首先要得到整數(shù)a和b的個(gè)位和十位上的數(shù),可以通過(guò)取余和整除來(lái)實(shí)現(xiàn),再將其分別乘以1000,100,10,1就可以得到所要求的整數(shù)c。

26.1voidfun(intarray[3][3])2{3inti,j,t;4for(i=0;i<3;i++)/*將上三角和下三角對(duì)換,實(shí)現(xiàn)行列互換*/5for(j=i+l;j<3;j++)6{t=array[i][j];7array[i][j]=array[j][i];8array[j][i]=t;9}10}要實(shí)現(xiàn)矩陣轉(zhuǎn)置,即將上三角數(shù)組元素和下三角數(shù)組元素對(duì)換,本題通過(guò)數(shù)組元素交換方法,完成矩陣轉(zhuǎn)置操作。因?yàn)閷?duì)矩陣轉(zhuǎn)置后仍然存回其本身,所以只能循環(huán)矩陣中的一本程序選擇的是上三角)??刂粕先堑姆椒ㄊ窃趦?nèi)層循環(huán)中從i+1或i開始循環(huán)變量j。

27.\nfloataverage(floatarray[],intn)

\n{intI;

\nfloataver,sum=array[0];

\nfor(I=1;Isum=sum+array[I];

\naver=sum/n;

\nreturn(aver);}

\nmain

\n{floatave,score[10];

\nintI;

\nfor(I=0;I<10;I++)

\nscanf('%f',&score[I]);

\nave=average(score,10);

\nprintf('%f\\n',ave);}

\n

28.\n#include”stdio.h”

\nmain

\n{intI,n;

\nfor(n=0,I=1900;I<=2000;I++)

\n{if(I%4==0I0!=0||I@0==0)

\n{printf(“%d”,I);n++;}

\nif(n%3==0)

\nprintf(“\\n”);}}}

\n

29.30.voidfun(STREC*a){inti;a->ave=0.0;for(i=0;i<N;i++)a->ave=a->ave+a->s[i];/*求各門課程成績(jī)的總和*/a->ave=a->ave/N;/*求平均分*/}【解析】本題考查的是指向結(jié)構(gòu)體類型的指針變量做參數(shù)和結(jié)構(gòu)體類型成員的運(yùn)算。fun函數(shù)中求出平均成績(jī),要帶回主函數(shù)則必須定義一個(gè)指針類型的形參STREC*a,同時(shí)引用成員使用指向運(yùn)算符,a->ave和a->s[i]。

31.(1)錯(cuò)誤;s[j]=s[i];正確:s[j++]=s[i];(2)錯(cuò)誤:s[j]="\0";正確:s[j]='\0';(1)錯(cuò)誤;s[j]=s[i];正確:s[j++]=s[i];\r\n(2)錯(cuò)誤:s[j]='\\0';正確:s[j]=\'\\0\';解析:有循環(huán)條件if(s[i]>=\'0\'&&s[i]<=\'9\')以及題目要求“依次取出字符串中所有的數(shù)字字符”可知,s[j]=s[i];表述錯(cuò)誤。s[j]='\\0';中是一個(gè)常識(shí)性語(yǔ)法錯(cuò)誤,學(xué)習(xí)者只要在平時(shí)訓(xùn)練的時(shí)候注意一下就可以了。

32.(1)y=1;(2)d=a-i;(1)y=1;(2)d=a-i;解析:本題中函數(shù)的功能是為一個(gè)偶數(shù)查找兩個(gè)素?cái)?shù),這兩個(gè)素?cái)?shù)之和等于該偶數(shù)。其中,函數(shù)fun用形參a放偶數(shù),指針b和c放兩個(gè)素?cái)?shù)。把一個(gè)偶數(shù)分解成1和(x-1)兩個(gè)數(shù)是否是素?cái)?shù),再分解為3和(x-3)這兩個(gè)數(shù),判斷是否是素?cái)?shù),依此類推,直到找出這兩個(gè)素?cái)?shù)為止。本題中把偶數(shù)分解為i和d兩個(gè)素?cái)?shù)。判斷i是否是素?cái)?shù),如果i不是素?cái)?shù),則i+2再循環(huán);如果i是素?cái)?shù),則d=x-i,然后判斷d是否是素?cái)?shù)。

33.(1)while(*s)或while(*s!=ˋ\0ˊ)或while(*s!=0)(2)s++;(1)while(*s)或while(*s!=ˋ\0ˊ)或while(*s!=0)(2)s++;解析:本題中函數(shù)的功能是將字符串中的字母改為該字母序列的后續(xù)字母。首先判斷字母是否為字母,如果是字母則進(jìn)行轉(zhuǎn)換。

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

35.(1)t=(STU*)calloc(sizeof(sTu)m);(2)t[k]=b[j];(1)t=(STU*)calloc(sizeof(sTu),m);(2)t[k]=b[j];解析:本題中函數(shù)的功能是按學(xué)習(xí)成績(jī)從高到低的順序找出前m(m≤10)名學(xué)生。利用循環(huán)結(jié)構(gòu)實(shí)現(xiàn)對(duì)定義的結(jié)構(gòu)體中的成績(jī)域進(jìn)行排序。

36.(1)錯(cuò)誤:t=x;x=y;正確:t=*X;*x=y;(2)錯(cuò)誤;return(y);正確:return(t);(1)錯(cuò)誤:t=x;x=y;正確:t=*X;*x=y;\r\n(2)錯(cuò)誤;return(y);正確:return(t);解析:本題考查指針變量做函數(shù)參數(shù)。同樣,這里也涉及到一個(gè)“交換規(guī)則”,另外,根據(jù)題目主函數(shù)中fun()函數(shù)的調(diào)用方式說(shuō)明fun()函數(shù)的參數(shù)應(yīng)當(dāng)為指針類型。交換結(jié)束后返回變量t。

37.(1)錯(cuò)誤:while(k>=2)&&(mc<6)正確:while((k>=2)&&(mc<6))(2)錯(cuò)誤:if((k%7=0)||(k%11=0))正確:if((k%7==0)||(k%11=0))(3)錯(cuò)誤:m=k正確:m=m+k;(1)錯(cuò)誤:while(k>=2)&&(mc<6)正確:while((k>=2)&&(mc<6))\r\n(2)錯(cuò)誤:if((k%7=0)||(k%11=0))正確:if((k%7==0)||(k%11=0))\r\n(3

溫馨提示

  • 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)論