2020年度全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言上機(jī)考試題庫(kù)4160套_第1頁(yè)
2020年度全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言上機(jī)考試題庫(kù)4160套_第2頁(yè)
2020年度全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言上機(jī)考試題庫(kù)4160套_第3頁(yè)
2020年度全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言上機(jī)考試題庫(kù)4160套_第4頁(yè)
2020年度全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言上機(jī)考試題庫(kù)4160套_第5頁(yè)
已閱讀5頁(yè),還剩138頁(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)介

全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言上機(jī)考試題庫(kù)

4160套

資料僅供參考

全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言上機(jī)考試題庫(kù)

學(xué)生練習(xí)用第41套至第60套

第四十一套

1、程序填空

下列給定程序中,函數(shù)fun的功能是:將形參s所指字符串中的所有字母字符

順序前移,其它字符順序后移,處理后將新字符串的首地址作為函數(shù)值返回。

例如,若s所指字符串為:"asdl23fgh543df”,處理后新字符串為:

"asdfghdf123543”。

請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。

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

不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

ttinclude<stdio.h>

ttinclude<stdlib.h>

#include<string.h>

char*fun(char*s)

{inti,j,k,n;char*p,*t;

n=strlen(s)+l;

t=(char*)malloc(n*sizeof(char));

p=(char*)malloc(n*sizeof(char));

j=0;k=0;

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

資料僅供參考

{if(((s[i]>=a)&&(s[i]<=,Z,))||((s[i]>

='A')&&(s[i]<='Z'))){

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

j++;}

else

{p[k]=s[i];k++;}

)

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

for(i=0;i<_2—;i++)t[j+i]=p[i];

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

t[j+k]=_3_;

returnt;

}

main()

{chars[80];

printf(^Pleaseinput:");

scanf("%s",s);

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

}

資料僅供參考

【參考答案】

⑴s[i](2)k(3)'\0'或0

【考點(diǎn)分析】

本題考查:數(shù)組元素賦值操作;for循環(huán)語(yǔ)句中循環(huán)變量的取值范圍;字符串結(jié)

束標(biāo)識(shí)'\0'。

【解題思路】

填空1:將字符串s中所有字母元素賦給數(shù)組to

填空2:字符串中所有非字母元素放到字母元素后面,因此取值范圍是。?k。

填空3:最后給字符串加入結(jié)束標(biāo)識(shí)'\0'。

2、程序修改

下列給定程序中函數(shù)fun的功能是:將s所指字符串中最后一次出現(xiàn)的與tl所

指字符串相同的子串替換成t2所指字符串,所形成的新串放在w所指的數(shù)組中。

要求tl和t2所指字符串的長(zhǎng)度相同。

例如,當(dāng)s所指字符串中的內(nèi)容為:"abcdabfabc”,tl所指串中的內(nèi)容為"ab”,

t2所指子串中的內(nèi)容為"99〃時(shí),結(jié)果在w所指的數(shù)組中的內(nèi)容應(yīng)為

"abcdabf99c”。

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

注意:部分源程序在文件M0DI1.C中,不得增行或刪行,也不得更改的程序的結(jié)

構(gòu)!

#include<stdio.h>

#include<string.h>

voidfun(char*s,char*tl,char*t2,

char*w)

(

char*p,*r,*a;

strcpy(w,s);

/************foiind************/

資料僅供參考

while(w)

{p=w;r=tl;

while(*r)

/************fourid************/

IF(*r==*p)

{r++;p++;}

elsebreak;

if(*r='\0')a=w;

w++;

)

r=t2;

while(*r){*a=*r;a++;r++;}

}

main()

(

chars[100],tl[100],t2[100],w[100];

printf("\nPleaseenterstringS:");

scanf("%s”,s);

printf(^\nPleaseentersubstringtl:");

scanf(,z%s,z,tl);

資料僅供參考

printf(^XnPleaseentersubstring

scanf("%s”,t2);

if(strlen(tl)==strlen(t2))

{fun(s,tl,t2,w);

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

)

elseprintf("\nError:strlen(tl)!=

strlen(t2)\n,z);

【參考答案】

(l)while(*w)

(2)if(*r==*p)

【考點(diǎn)分析】

本題考查:while循環(huán)語(yǔ)句,C語(yǔ)言中的關(guān)鍵字。

【解題思路】

(1)這藕判斷的是值的真假,而不是地址,因此改為while(*w)o

(2)C語(yǔ)言中關(guān)鍵字區(qū)分大小寫,只需運(yùn)行程序,就能夠根據(jù)錯(cuò)誤提示找到。

3、程序設(shè)計(jì)

編寫函數(shù)fun,其功能是:將s所指字符串中ASCH值為奇數(shù)的字符刪除,剩余

字符形成的新串放在t所指數(shù)組中。

例如,若s所指字符串中的內(nèi)容為:"ABCDEFG12345”,其中字符A的ASCII碼

值為奇數(shù),字符1的ASCII碼值也為奇數(shù),都應(yīng)當(dāng)刪除,其它依此類推。最后t

所指的數(shù)組中的內(nèi)容應(yīng)是:"BDF24"。

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

請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入

你編寫的若干語(yǔ)句。

資料僅供參考

ttinclude<stdio.h>

ttinclude<string.h>

voidfun(char*s,chart[])

(

)

main()

(

chars[100],t[100];voidNONO();

printf(^XnPleaseenterstringS:");

scanfs);

fun(s,t);

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

NONO();

資料僅供參考

voidNONO()

{/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),

輸出數(shù)據(jù),關(guān)閉文件。*/

chars[100],t[100];

FILE*rf,*wf;

inti;

rf=fopen("in.dat",〃r");

wf=fopen("out?dat",〃w");

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

fscanf(rf,"%s",s);

fun(s,t);

fprintf(wf,"%s\n",t);

)

fclose(rf);

fclose(wf);

)

^include<stdio.h>

ttinclude<string.h>

voidfun(char*s,chart[])

資料僅供參考

}

main()

(

chars[100],t[100];voidNONO();

printf(^XnPleaseenterstringS:");

scanf("%s",s);

fun(s,t);

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

NONO();

voidNONO()

{/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),

輸出數(shù)據(jù),關(guān)閉文件。*/

chars[100],t[100];

FILE*rf,*wf;

inti;

資料僅供參考

rf=fopen("in.dat","r");

wf=fopen("out?dat","w");

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

fscanf(rf,"%s",s);

fun(s,t);

fprintf(wf,"%s\n",t);

)

fclose(rf);

fclose(wf);

)

【參考答案】

voidfun(char*s,chart[])

(

inti,j=0,n;

n=strlen(s);

for(i=0;i<n;i++)/*找出ASCII碼值為偶數(shù)的字符依次存入數(shù)組中*/

if(s[i]%2=0)

(

t[j]=s[i];

j++;

資料僅供參考

t[j]=\0*;

)

【考點(diǎn)分析】

本題考查:ASCH碼值為奇數(shù)或偶數(shù)的判定方法,同時(shí)掌握刪除字符的思想,即

重新保留非刪除字符。

【解題思路】

要?jiǎng)h除ASCH碼值為奇數(shù)的字符,也就是要保留ASCII碼值為偶數(shù)的字符,由

于最終是要求出剩余字符形成的新串,因此本題的算法是對(duì)原字符串從頭到尾

掃描,并找出ASCH碼值為偶數(shù)的字符依次存入數(shù)組中。

第四十二套

1、程序填空

給定程序中,函數(shù)fun的功能是將參數(shù)給定的字符串、整數(shù)、浮點(diǎn)數(shù)寫到文本

文件中,再用字符串方式從此文本文件中逐個(gè)讀入,并調(diào)用庫(kù)函數(shù)atoi和atof

將字符串轉(zhuǎn)換成相應(yīng)的整數(shù)、浮點(diǎn)數(shù),然后將其顯示在屏幕上。

請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。

注意:部分源程序在文件BLANKLC中。

請(qǐng)勿改動(dòng)main函數(shù)和其它函數(shù)中的任何內(nèi)容,僅在main函數(shù)的橫線上填入所

編寫的若干表示式或語(yǔ)句。

ttinclude<stdio.h>

^include<stdlib.h>

voidfun(char*s,inta,doublef)

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

—1—fp;

charstr[100],strl[100],str2[100];

intal;doublefl;

資料僅供參考

fp=fopen("filel.txt","w");

fprintf(fp,"%s%d%f\nz,,s,a,f);

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

―2—;

fp=fopen("filel,txt","r");

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

fscanf(_3—,,,%s%s%s,z,str,strl,str2);

fclose(fp);

al=atoi(strl);

fl=atof(str2);

printf(z,\nTheresult:\n\n%s%d%f\nz,,

str,al,fl);

}

main()

{chara[10]="Hello!”;intb=12345;

doublec=98.76;

fun(a,b,c);

)

【參考答案】

(1)FILE*(2)fclose(fp)(3)fp

【解題思路】

填空1:從使用fp=fopen("filel.txt〃,〃w〃)可知fp應(yīng)該是文件類型指針,因

資料僅供參考

此本空因該填寫FILE*0

填空2:當(dāng)對(duì)fp作打開(kāi)操作的時(shí)候,并進(jìn)行不同的操作前,應(yīng)該對(duì)其關(guān)閉,因

為在第一次打開(kāi)時(shí)是對(duì)fp進(jìn)行寫操作,而在第二次打開(kāi)后進(jìn)行的是讀操作,因

此應(yīng)該先對(duì)fp進(jìn)行關(guān)閉,本空填fclose(fp)o

填空3:fscanf()是把文本文件輸出,因此本空只能填寫fp。

2、程序修改

下列給定程序中,函數(shù)fun的功能是:對(duì)N名學(xué)生的學(xué)習(xí)成績(jī),按從高到低的

順序找出前m(mW10)名學(xué)生來(lái),并將這些學(xué)生的數(shù)據(jù)存放在一個(gè)動(dòng)態(tài)分配的連

續(xù)存儲(chǔ)區(qū)中,此存儲(chǔ)區(qū)的首地址作為函數(shù)值返回。

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

注意:部分源程序在文件MODILC中,不得增行或刪行,也不得更改程序的結(jié)

構(gòu)。

^include<stdlib.h>

ttinclude<conio.h>

ttinclude<string.h>

#include<stdio.h>

ttinclude<malloc.h>

ttdefineN10

typedefstructss

{charnum[10];

ints;

}STU;

STU*fun(STUa[],intm)

{STUb[N],*t;

資料僅供參考

inti,j,k;

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

*t=calloc(m,sizeof(STU));

for(i=0;i<N;i++)b[i]=a[i];

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

{for(i=j=0;KN;i++)

if(b[i].s>b[j].s)j=i;

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

t[k].num=b[j].num;

t[k].s=b[j].s;

b[j].s=0;

returnt;

}

outresult(STUa[],FILE*pf)

{inti;

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

fprintf(pf,"No=%sMark=%d\n”,

a[i].num,a[i].s);

fprintf(pf,〃\n\n〃);

voidmain()

資料僅供參考

{STUa[N]二{{〃A01〃,81},{〃A02〃,89},{〃A03

〃,66},{"A04”,87},{"A05〃,77},

{〃A06〃,90},{〃A07〃,79},{〃A08

〃,61},{〃A09〃,80},{〃A10〃,71}};

STU*pOrder;

inti,m;

system("CLS");

printf(〃*****THERESULT*****\n");

outresult(a,stdout);

printf("\nGivethenumberofthestudents

whohavebetterscore:");

scanf(〃%d〃,&m);

while(m>10)

{printf(^\nGivethenumberofthe

studentswhohavebetterscore:");

scanf&m);

)

pOrder=fun(a,m);

printf("*****THERESULT*****\n");

printf("Thetop:\n〃);

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

資料僅供參考

printf("%s%d\n”,pOrder[i].num,

pOrder[i],s);

free(pOrder);

)

【參考答案】

(l)t=calloc(m,sizeof(STU));

⑵t[k]=b[j];

【解題思路】

(1)clloc應(yīng)用于分配內(nèi)存空間。調(diào)用形式為(類型說(shuō)明符

*)calloc(n,size),功能:在內(nèi)存動(dòng)態(tài)存儲(chǔ)區(qū)中分配n塊長(zhǎng)度為"size"字節(jié)的

連續(xù)區(qū)域,函數(shù)的返回值為該區(qū)域的首地址,(類型說(shuō)明符*)用于強(qiáng)制類型轉(zhuǎn)換。

calloc函數(shù)與malloc函數(shù)的區(qū)別在于calloc函數(shù)一次能夠分配n塊區(qū)域。

例如,ps=(structstu*)calloc(2,sizeof(structstu));,其中的

sizeof(structstu)是求stu的結(jié)構(gòu)長(zhǎng)度。該語(yǔ)句的意思是:按stu的長(zhǎng)度分

配兩塊連續(xù)區(qū)域,強(qiáng)制轉(zhuǎn)換為stu類型,并把其首地址賦予指針變量ps。在本

題中不用考慮那么復(fù)雜,根據(jù)定義類型STU就能夠看出

*t=calloc(m,sizeof(STU))中的錯(cuò)誤。

(2)t[k].num=b[j].num的錯(cuò)誤旨在考查對(duì)結(jié)構(gòu)體概念的掌握和靈活應(yīng)用程度。

3、程序設(shè)計(jì)

請(qǐng)編寫函數(shù)fun,該函數(shù)的功能是:刪除一維數(shù)組中所有相同的數(shù),使之只剩一

個(gè)。數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)返回刪除后數(shù)組中數(shù)據(jù)的個(gè)數(shù)。

例如,若一維數(shù)組中的數(shù)據(jù)是:

2223445666677899101010

刪除后,數(shù)組中的內(nèi)容應(yīng)該是:

2345678910

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

請(qǐng)勿改動(dòng)main函數(shù)和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所

編寫的若干語(yǔ)句。

資料僅供參考

ttinclude<stdio.h>

ttdefineN80

intfun(inta[],intn)

}

voidmain()

FILE*wf;

int

a[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10

,10,10,10},i,n=20;

printf(^Theoriginaldata:\n");

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

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

n=fun(a,n);

printf(〃\n\nThedataafterdeleted:\n");

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

printf("%3d”,a[i]);

printf(〃\n\n〃);

//

/[

wf=fopen(/zout.dat","w");

資料僅供參考

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

fprintf(wf,,z%3d,z,a[i]);

fclose(wf);

//

//

}

【參考答案】

intfun(inta[],intn)

inti,j=l;

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

if(a[j-l]!=a[i])/*若該數(shù)與前一個(gè)數(shù)不相同,則要保留*/

a[j++]=a[i];

returnj;/*返回不相同數(shù)的個(gè)數(shù)*/

)

【解題思路】

該程序的流程是:定義變量i和j,其中j用于控制刪除后剩下的數(shù)在數(shù)組中的

下標(biāo),i用于搜索原數(shù)組中的元素。j始終是新數(shù)組中最后一個(gè)元素的下一個(gè)元

素的下標(biāo),因此if語(yǔ)句中的條件是a[j-l]!=a[i],其中a[j-L]就是新數(shù)組中的

最后一個(gè)元素,若條件成立,則表示出現(xiàn)了不同的值,因此a[i]要保留到新數(shù)組

中。注意本題中i和j的初值都要從1開(kāi)始,該算法只能用于數(shù)組已排序的題

目中。

第四十三套

1、程序填空

下列給定程序中,函數(shù)fun的功能是:計(jì)算NXN矩陣的主對(duì)角線元素和反向?qū)?/p>

角線元素之和,并作為函數(shù)值返回。要求先累加主對(duì)角線元素中的值,再累加

資料僅供參考

反向?qū)蔷€元素中的值。

例如,若N=3,有下列矩陣:

123

456

789

首先累加1、5、9,然后累加3、5、7,函數(shù)返回值為30。

請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。

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

不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

ttinclude<stdio.h>

ttdefineN4

fun(intt[][N],intn)

{inti,sum;

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

—1—;

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

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

sum+=2___;

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

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

sum+=t[i][n-i-3];

returnsum;

main()

資料僅供參考

{int

t[][N]={21,2,13,24,25,16,47,38,29,11,32,5

4,42,21,3,10},i,j;

printf(,z\nTheoriginaldata:Xn^);

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

{for(j=0;j<N;j++)

printf("%4d”,t[i][j]);

printf(〃\n〃);

)

printf("Theresultis:%d”,fun(t,N));

)

【參考答案】

(1)sum=0(2)(3)1

【考點(diǎn)分析】

本題考查:變量初始化;NXN矩陣對(duì)角線下標(biāo)如何表示;累加操作。

【解題思路】

填空1:變量sum用來(lái)儲(chǔ)存〃和"結(jié)果,因此將其初始化為0。

填空2:從題目中我們能夠了解到,主對(duì)角線元素的行和列下標(biāo)是相同的,因此

應(yīng)填入

填空3:對(duì)于反向?qū)蔷€元素的行和列的下標(biāo),它們的關(guān)系是相加和為n—L

因此應(yīng)填入1?

2、程序修改

下列給定程序中函數(shù)fun和funx的功能是:用二分法求方程

2

2/-4x+3x-6=0的一個(gè)根,并要求絕對(duì)誤差不超過(guò)0.001o

例如,若給m輸入-100,n輸入90,則函數(shù)求得的一個(gè)根為2.000。

資料僅供參考

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

注意:部分源程序在文件M0DI1.C中,不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

ttinclude<stdio.h>

#include<math.h>

doublefunx(doublex)

{return(2*x*x*x-4*x*x+3*x-6);}

doublefun(doublem,doublen)

/************fourid************/

intr;

r=(m+n)/2;

/************fourid************/

while(fabs(n-m)<0.001)

{if(funx(r)*funx(n)<0)m=r;

elsen=r;

r=(m+n)/2;

)

returnr;

}

main()

{doublem,n,root;

資料僅供參考

printf("Entermn:\n");

scanf”,&m,&n);

root=fun(m,n);

printf("root=%6.3f\n”,root);

}

【參考答案】

(1)doubler;

(2)while(fabs(n-m)>0.001)

【考點(diǎn)分析】

本題考查:變量數(shù)據(jù)類型;while循環(huán)語(yǔ)句。

【解題思路】

(1)程序中我們會(huì)發(fā)現(xiàn)r=(m+n)/2,而m和n都是double型的,而且根據(jù)題意

可知,變量r需要定義為double型。

(2)絕對(duì)誤差不超過(guò)0.001,因此循環(huán)條件應(yīng)為fabs(n-m)>0.001o

3、程序設(shè)計(jì)

規(guī)定輸入的字符串中只包含字母和*號(hào)。編寫函數(shù)fun,其功能是:除了字符串

前導(dǎo)和尾部的*號(hào)外,將串中其它的*號(hào)全部刪除。形參h已指向字符串中第一

個(gè)字母,形參p指向字符串的中最后一個(gè)字母。在編寫函數(shù)時(shí),不得使用C語(yǔ)

言提供的字符串函數(shù)。

例如,若字符串中的內(nèi)容為****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容

應(yīng)當(dāng)是:****ABCDEFG********。

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

注意:部分源程序在文件PR0GLC中。

請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入

所編寫的若干語(yǔ)句。

ftinclude<stdio.h>

資料僅供參考

voidfun(char*a,char*h,char*p)

}

main()

{chars[81],*t,*f;

voidNONO();

printf("Enterastring:\n");gets(s);

t=f=s;

while(*t)t++;

t—;

while(*t==,*')t一;

while(*f==,*,)f++;

fun(s,f,t);

printf("Thestringafter

deleted:\nz/);puts(s);

NONO();

}

voidNONO()

資料僅供參考

{/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),

輸出數(shù)據(jù),關(guān)閉文件。*/

FILE*in,*out;

inti;chars[81],*t,*f;

in=fopen(in.dat,r);

out=fopen("out,dat〃,"w");

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

fscanf(in,"%s",s);

t=f=s;

while(*t)t++;

t—;

while(*t==,*')t一;

while(*f==,*')f++;

fun(s,f,t);

fprintf(out,s);

)

fclose(in);

fclose(out);

)

【參考答案】

voidfun(char*a,char*h,char*p)

資料僅供參考

inti=0;

char*q=a;

while(q<h)

(

a[i]=*q;q++;i++;

)

while(q<p)

(

if(*q!=,*')

(

a[i]=*q;i++;

}

q++;

)

while(*q)

(

a[i]=*q;i++;q++;

)

a[i]=\0';

)

【考點(diǎn)分析】

本題考查:while循環(huán)語(yǔ)句,注意循環(huán)條件的設(shè)定;指針型變量。

【解題思路】

本題的重點(diǎn)是要選擇好判斷條件,首先是需要判斷前導(dǎo)*的結(jié)束,然后判斷是否

指向最后一個(gè)字母,最后補(bǔ)充尾部*,只要思路對(duì)了就可正確解答。

第四十四套

1、程序填空

下列給定程序中,函數(shù)fun的功能是:找出100到x(x/999)之間各位上的數(shù)字

之和為15的所有整數(shù),并在屏幕輸出;將符合條件的整數(shù)的個(gè)數(shù)作為函數(shù)值返

資料僅供參考

回。

例如,當(dāng)n值為500時(shí),各位數(shù)字之和為15的整數(shù)有:159、168、177、186、

195>249、258、267、276、285、294、339、348、357、366、375、384、393、

429、438、447、456、465、474、483、492。共有26個(gè)。

請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。

注意:部分源程序在文件BLANKLC中。

不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include<stdio.h>

intfun(intx)

{intn,si,s2,s3,t;

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

n=_1_

t=100;

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

while(t<=_2_)

{sl=t%10;s2=(t/10)%10;s3=t/100;

if(sl+s2+s3==15)

{printf("%d”,t);

n++;

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

3

)

資料僅供參考

returnn;

)

main()

{intx=-l;

while(x>999||x<0)

{printf("Pleaseinput(0<x<=999):");

scanf&x);}

printf("\nTheresultis:%d\n”,fun(x));

【參考答案】

(1)O(2)x(3)t++

【考點(diǎn)分析】

本題考查:變量賦初值;while循環(huán)語(yǔ)句。

【解題思路】

填空1:變量n用于存放符合條件的整數(shù)的個(gè)數(shù),應(yīng)賦初值為0。

填空2:根據(jù)題目要求,確定循環(huán)變量t的取值范圍僅=x。

填空3:循環(huán)變量t自增1操作。

2、程序修改

下列給定程序中函數(shù)fun的功能是:先將s所指字符串中的字符按逆序存放到t

所指字符串中,然后把s所指串中的字符按正序連接到t所指串之后。

例如:當(dāng)s所指的字符串為"ABCDE”時(shí),t所指的字符串應(yīng)為"EDCBAABCDE”。

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

注意:部分源程序在文件M0DI1.C中,不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

資料僅供參考

ttinclude<stdio.h>

ttinclude<string.h>

voidfun(char*s,char*t)

/************foiind************/

inti;

si=strlen(s);

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

/************foiind************/

t[i]=s[sl-i];

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

t[sl+i]=s[i];

t[2*sl]='\0';

}

main()

{chars[100],t[100];

printf(^XnPleaseenterstrings:〃);

scanf("%s”,s);

fun(s,t);

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

資料僅供參考

)

【參考答案】

(1)inti,si;

(2)t[i]=s[sl-i-l];

【考點(diǎn)分析】

本題考查:變量定義;字符串操作。

【解題思路】

(1)變量si沒(méi)有定義。

(2)該循環(huán)實(shí)現(xiàn)將s串中的字符逆序存入t串中,t[i]對(duì)應(yīng)s串中的so

3、程序設(shè)計(jì)

函數(shù)fun的功能是:將a、b的兩個(gè)兩位正整數(shù)合并成一個(gè)新的整數(shù)放在c中。

合并的方式是:將a中的十位和個(gè)位數(shù)依次放在變量c的百位和個(gè)位上,b中的

十位和個(gè)位數(shù)依次放在變量c的千位和十位上。

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

注意:部分源程序在文件PROGLC中。

數(shù)據(jù)文件IN.DAT中的數(shù)據(jù)不得修改。

請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入

你編寫的若干語(yǔ)句。

#include<math.h>

^include<stdio.h>

floatfun(floatnum)

{ints;

floatn,t,pi;

資料僅供參考

t=l;pi=O;n=l;s=1;

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

while(t>=num)

pi=pi+t;

n=n+2;

s-s;

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

t=s%n;

)

pi=pi*4;

returnpi;

main()

{floatnl,n2;

printf("Enterafloatnumber:");

scanf("%f”,&nl);

n2=fun(nl);

printf("%6.4f\n”,n2);

資料僅供參考

【參考答案】

voidfun(inta,intb,long*c)

*c=a%10+(b%10)*10+(a/10)*100+(b/10)*1000;

)

【考點(diǎn)分析】

本題考查:如何取出數(shù)值n的各個(gè)位;知道數(shù)值n的各個(gè)位,又如何表示該數(shù)

值;指針型變量的使用。

[解題思路]

本題的工要問(wèn)題是如何取出a和b的個(gè)位數(shù)和十位數(shù),取出后如何表示成c中

相應(yīng)的位數(shù)。由于a和b都是只有兩位的整數(shù),因此分別對(duì)它們除10可得到它

們的十位數(shù),分別用10對(duì)它們求余可得到它們的個(gè)位數(shù)。得到后對(duì)應(yīng)乘以1000、

100、10、1就可得到c的千位數(shù)、百位數(shù)、十位數(shù)和個(gè)位數(shù)。注意:使用c時(shí)

要進(jìn)行指針運(yùn)算。

第四十五套

1、程序填空

下列給定程序中,函數(shù)fun的功能是:在形參ss所指字符串?dāng)?shù)組中,將所有串

長(zhǎng)超過(guò)k的字符串中后面的字符刪除,只保留前面的k個(gè)字符。ss所指字符串

數(shù)組中共有N個(gè)字符串,且串長(zhǎng)小于M。

請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。

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

不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

ttinclude<stdio.h>

ttinclude<string.h>

^defineN5

#defineM10

資料僅供參考

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

voidfun(char(*ss)_1_,intk)

{inti=0;

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

while(i<_2_){

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

ss[i][k]=—3—;i++;}

)

main()

{char

x[N][M]={"Create","Modify","Sort","skip",

“Delete"};

inti;

printf("\nTheoriginalstring\n\n");

for(i=0;i<N;i++)puts(x[i]);

printf(〃\n〃);

fun(x,4);

printf("\nThestringafter

deleted:\n\n");

for(i=0;i<N;i++)puts(x[i]);

printf(〃\n〃);

資料僅供參考

【參考答案】

⑴[M](2)N⑶’\0'

【考點(diǎn)分析】

本題考查:函數(shù)定義;while循環(huán)語(yǔ)句;字符串結(jié)束標(biāo)識(shí)'\0'。

【解題思路】

填空1:根據(jù)main函數(shù)中函數(shù)調(diào)用語(yǔ)句,確定函數(shù)定義時(shí)的形式參數(shù),因此填

入[M]。

填空2:while循環(huán)語(yǔ)句需要對(duì)所有字符串進(jìn)行操作,因此循環(huán)條件是十比

填空3:字符串結(jié)尾加入字符串結(jié)束標(biāo)識(shí)'\0'。

2、程序修改

下列給定程序中函數(shù)fun的功能是:根據(jù)以下公式求“值,并作為函數(shù)值返回。

例如,當(dāng)給指定精度的變量eps輸入0.0005時(shí),應(yīng)輸出Pi=3.140578。

IT,I12123I2v34

2■'3353573579

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

注意:部分源程序在文件M0DI1.C中,不得增行或刪行,也不得更改的程序的結(jié)

構(gòu)!

^include<math.h>

ttinclude<stdio.h>

doublefun(doubleeps)

{doubles,t;intn=l;

s=0.0;

/************foiind************/

t=0;

資料僅供參考

while(t>eps)

{s+=t;

t=t*n/(2*n+l);

n++;

/************foiind************/

return(s);

)

main()

{doublex;

printf(,z\nPleaseenteraprecision:");

scanf("%lf",&x);

printf(,,\neps=%lf,

Pi=%lf\n\nz,,x,fun(x));

}

【參考答案】

(l)t=l.o;

(2)return(s*2);

【考點(diǎn)分析】

本題考查:根據(jù)給定公式求值,因此需要確定變量定義的數(shù)據(jù)類型以及如何對(duì)

其進(jìn)行初始化;函數(shù)返回值。

【解題思路】

該題中,我們首先檢查變量數(shù)據(jù)類型前后是否一致,因?yàn)樽兞縯定義為double

型,因此賦值時(shí)要賦以實(shí)型數(shù)值。return(s)是一個(gè)數(shù)學(xué)錯(cuò)誤,應(yīng)該返回

return(s*2)。

資料僅供參考

3、程序設(shè)計(jì)

規(guī)定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫函數(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ù)中輸入。

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

請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入

你編寫的若干語(yǔ)句。

#include<stdio.h>

voidfun(char*a,intn)

main()

{chars[81];intn;voidNONO();

printf("Enterastring:\n");gets(s);

printf("Entern:");scanf&n);

fun(s,n);

資料僅供參考

printf(zzThestringafter

deleted:\n^);puts(s);

NONO();

)

voidNONO()

{/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),

輸出數(shù)據(jù),關(guān)閉文件。*/

FILE*in,*out;

inti,n;chars[81];

m=fopen(in.dat,r);

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

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

fscanf(in,〃%s",s);

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

fun(s,n);

fprintf(out,"%s\n〃,s);

)

fclose(in);

fclose(out);

}

資料僅供參考

【參考答案】

voidfun(char*a,intn)

(

inti=0;

intk=0;

char*p,*t;

p=t=a;/*開(kāi)始時(shí),p與t同時(shí)指向數(shù)組的首地址*/

while(*t=-**)/*用k來(lái)統(tǒng)計(jì)前部星號(hào)的個(gè)數(shù)*/

{k++;t++;}

if(k>n)/*如果k大于n,則使p的前部保留n個(gè)星號(hào),其后的字符依次存

入數(shù)組a中*/

{while(*p)

{a[i]=*(p+k-n);

i++;

P++;

)

a[i]='\0';/*在字符串最后加上結(jié)束標(biāo)識(shí)位*/

)

)

【考點(diǎn)分析】

本題考查:循環(huán)判斷語(yǔ)句;字符串的操作。

【解題思路】

字符串中前導(dǎo)*號(hào)不能多于n個(gè),多余的刪除。首先需要經(jīng)過(guò)while循環(huán)統(tǒng)計(jì)字

符串前導(dǎo)*號(hào)的個(gè)數(shù),然后經(jīng)過(guò)if條件語(yǔ)句完成前導(dǎo)*號(hào)的個(gè)數(shù)和n的比較,如

果前導(dǎo)*號(hào)多于n個(gè),需要把n個(gè)*號(hào)和其余字符重新保留。

第四十六套

資料僅供參考

1、程序填空

下列給定程序中,函數(shù)fun的功能是:將自然數(shù)1?10及其平方根寫到名為

myfile3.txt的文本文件中,然后再順序讀出顯示在屏幕上。

請(qǐng)?jiān)诔绦蛳庐嬀€處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。

注意:部分源程序在文件BLANKLC中。

不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include<math.h>

ttinclude<stdio.h>

intfun(char*fname)

{FILE*fp;inti,n;float

if((fp=fopen(fname,"w"))==NULL)

return0;

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

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

fprintf(1,"%d%f\n,z,i,sqrt((double)

i));

printf(^XnSucceed!!\n");

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

資料僅供參考

printf("\nThedatainfile:\n");

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

if((fp=fopen(3,"r"))==NULL)

return0;

fscanf(fp,&n,&x);

while(!feof(fp))

{printf("%d%f\n,z,n,x);

fscanf(fp,&n,&x);}

fclose(fp);

return1;

)

main()

{charfname[]=,zmyfile3.txt7,;

fun(fname);

【參考答案】

(l)fp(2)fclose(fp)(3)fname

【考點(diǎn)分析】

本題考查:文件的相關(guān)操作,fprintf函數(shù)與前printf功能相似,區(qū)別在于

fprintf函數(shù)的對(duì)象不是鍵盤和顯示器,而是磁盤文件;文件打開(kāi)和關(guān)閉函數(shù)

fopen和fclose的使用。

【解題思路】

填空1:fprintf函數(shù)的形式是:fprintf(文件指針,格式字符串,輸出表列)一

因此填入文件指針fp.

填空2:文件一旦使用完畢,應(yīng)使用關(guān)閉函數(shù)fclose。將文件關(guān)閉,以避免發(fā)

資料僅供參考

生文件數(shù)據(jù)丟失等錯(cuò)誤。

填空3:fopen函數(shù)用來(lái)打開(kāi)一個(gè)文件,其一般形式為:文件指針名=fopen(文

件名,使用文件方式);因此應(yīng)填入文件名fname。

2、程序修改

下列給定程序中fun函數(shù)功能是:將n個(gè)無(wú)序整數(shù)從小到大排序。

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

注意:部分源程序在文件M0DI1.C中,不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

ttinclude<stdio.h>

ftinclude<stdlib.h>

fun(intn,int*a)

{inti,j,p,t;

for(j=0;j<n-l;j++)

{P=J;

/************fourid************/

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

if(a[p]>a[i])

/************fourid************/

t=i;

if(p!=j)

{t=a[j];a[j]=a[p];a[p]=t;}

)

資料僅供參考

)

putarr(intn,int*z)

{inti;

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

{printf("%4d”,*z);

if(!(i%10))printf("\n");

}printf('\n");

)

main()

{intaa[20]={9,3,0,4,1,2,5,6,8,10,7},

n=ll;

printf("\n\nBeforesorting%d

numbers:\n",n);putarr(n,aa);

fun(n,aa);

printf("\nAftersorting%dnumbers:\n”,

n);putarr(n,aa);

)

【參考答案】

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

⑵P=i;

【考點(diǎn)分析】

資料僅供參考

本題考查:for循環(huán)語(yǔ)句;需明確各個(gè)變量含義。

[解題思路]

該程序£對(duì)n個(gè)無(wú)序數(shù)實(shí)現(xiàn)從小到大的排序,先找出整數(shù)序列的最小項(xiàng),置于

指針第1個(gè)元素的位置;再找出次小項(xiàng),置于第2個(gè)元素的位置;之后順次處

理后續(xù)元素。

(1)數(shù)組的長(zhǎng)度為n,因此最后一個(gè)元素的下標(biāo)值為n—l,i的取值范圍應(yīng)該包

括此下標(biāo)值。

(2)p是中間變量,存放值較小的元素下標(biāo)。

3、程序設(shè)計(jì)

編寫函數(shù)fun,其功能是:將兩個(gè)兩位數(shù)的正整數(shù)a、b合并成一個(gè)整數(shù)放在c

中。合并的方式是:將a數(shù)的十位和個(gè)位數(shù)依次在c數(shù)的個(gè)位和百位上,b數(shù)的

十位和個(gè)位數(shù)依次放在c數(shù)的十位和千位上。

例如,當(dāng)a=45,b=12時(shí),調(diào)用該函數(shù)后c=2514。

注意:部分源程序在文件PR0GLC中。

數(shù)據(jù)文件IN.DAT中的數(shù)據(jù)不得修改。

請(qǐng)勿動(dòng)改主函數(shù)的main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)填入

你編寫的若干語(yǔ)句。

ftinclude<stdio.h>

voidfun(inta,intb,long*c)

main()

{inta,b;longc;

voidNONO();

資料僅供參考

printf("Inputa,b:");

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

fun(a,b,&c);

printf(,zTheresultis:%ld\n”,c);

NONO();

}

voidNONO()

{/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),

輸出數(shù)據(jù),關(guān)閉文件。*/

FILE*rf,*wf;

inti,a,b;longc;

rf=fopen("in.dat","r");

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

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

fscanf(rf,"%d,%d",&a,&b);

fun(a,b,&c);

fprintf(wf,"a=%d,b=%d,c=%ld\n”,a,b,

c);

)

fclose(rf);

fclose(wf);

資料僅供參考

)

【參考答案】

voidfun(inta,intb,long*c)

*c=a/10+(b/10)*10+(a%10)*100+(b%10)*1000;

)

【考點(diǎn)分析】

本題考查:如何取出數(shù)值n的各個(gè)位;知道數(shù)值n的各個(gè)位,又如何表示該數(shù)

值;指針型變量的使用。

【解題思路】

本題的主要問(wèn)題是如何取出a和b的個(gè)位數(shù)和十位數(shù),取出后如何表示成c中

相應(yīng)的位數(shù)。由于a和b都是只有兩位的整數(shù),因此分別對(duì)它們除10可得到它

們的十位數(shù),分別用10對(duì)它們求余可得到它們的個(gè)位數(shù)。得到后對(duì)應(yīng)乘以1000、

100、10、1就可得到c的千位數(shù)、百位數(shù)、十位數(shù)和個(gè)位數(shù)。注意:使用c時(shí)

要進(jìn)行指針運(yùn)算。

第四十七套

1、程序填空

下列給定程序中,函數(shù)fun的功能是:將形參n所指變量中,各位上為偶數(shù)的

數(shù)去掉,剩余的數(shù)按原來(lái)從高位到低位的順序組成一個(gè)新數(shù),并經(jīng)過(guò)形參指針n

傳回所指變量。

例如,若輸入一個(gè)數(shù)27638496,則新數(shù)為739。

請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。

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

不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

ttinclude<stdio.h>

voidfun(unsignedlong*n)

{unsignedlongx=0,i;intt;

資料僅供參考

i=l;

while(*n)

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

{t=*n%_1_;

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

if(t%2!=_2_)

{x=x+t*i;i=i*10;}

*n=*n/10;

)

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

*n=_3—;

}

main()

{unsignedlongn=-l;

while(n>99999999||n<0)

{printf("Pleaseinput(0<n<):");

scanf("%Id",&n);}

fun(&n);

printf("\nTheresultis:%ld\n”,n);

}

資料僅供參考

【參考答案】

(1)10(2)0(3)x

【考點(diǎn)分析】

本題考查:求余運(yùn)算;if語(yǔ)句條件表示式。

【解題思路】

填空1:經(jīng)過(guò)t對(duì)10求余,取出該數(shù)值的各個(gè)位。

填空2:經(jīng)過(guò)if條件語(yǔ)句實(shí)現(xiàn)奇偶數(shù)的判定。如果條件表示式對(duì)2求余為0即

是偶數(shù),反之是奇數(shù)。

填空3:最后將剩余的數(shù)賦給n指問(wèn)的元素。

2、程序修改

下列給定程序中函數(shù)fun的功能是:計(jì)算n!。

例如,給n輸入5,則輸出120.000000。

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

注意:部分源程序在文件M0DI1.C中,不得增行或刪行,也不得更改的程序的結(jié)

構(gòu)!

ttinclude<stdio.h>

doublefun(intn)

{doubleresult=1.0;

/************fourid************/

ifn==0

return1.0;

while(n>1&&n<170)

/************fourid************/

result=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)論