




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45398-2025信息技術(shù)眾包服務(wù)平臺(tái)功能通用要求
- 江蘇省南京聯(lián)合體【棲霞、江寧、雨花】重點(diǎn)達(dá)標(biāo)名校2025年初三中考一模試卷化學(xué)試題含解析
- 湖南省長(zhǎng)沙市瀏陽(yáng)市2025屆數(shù)學(xué)三下期末綜合測(cè)試模擬試題含解析
- 寧夏葡萄酒與防沙治沙職業(yè)技術(shù)學(xué)院《大學(xué)英語(yǔ)Ⅱ(聽(tīng)力)》2023-2024學(xué)年第二學(xué)期期末試卷
- 武漢紡織大學(xué)外經(jīng)貿(mào)學(xué)院《新藥研究與開(kāi)發(fā)A》2023-2024學(xué)年第一學(xué)期期末試卷
- 遼寧省沈陽(yáng)市鐵西區(qū)達(dá)標(biāo)名校2025年下學(xué)期初三生物試題中考仿真模擬考試試卷(四)含解析
- 內(nèi)蒙古醫(yī)科大學(xué)《智能制造系統(tǒng)架構(gòu)》2023-2024學(xué)年第二學(xué)期期末試卷
- 延安大學(xué)《木版畫術(shù)科技能教學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 湛江幼兒師范專科學(xué)校《口腔臨床醫(yī)學(xué)概論(口腔修復(fù)學(xué))》2023-2024學(xué)年第一學(xué)期期末試卷
- 四川鐵道職業(yè)學(xué)院《鋼筋混凝土與砌體結(jié)構(gòu)設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- (二模)咸陽(yáng)市2025年高考模擬檢測(cè)(二)語(yǔ)文試卷(含答案)
- 2025高校教資《高等教育法規(guī)》核心備考題庫(kù)(含典型題、重點(diǎn)題)
- sl582-2012水工金屬結(jié)構(gòu)制造安裝質(zhì)量檢驗(yàn)通則
- 行政事業(yè)單位財(cái)務(wù)知識(shí)培訓(xùn)
- 眼科中醫(yī)診療方案圓翳內(nèi)障
- 路基路面壓實(shí)度評(píng)定自動(dòng)計(jì)算表-標(biāo)準(zhǔn)-
- 信息技術(shù)(基礎(chǔ)模塊)課件 模塊三 電子表格處理
- 2025中考英語(yǔ)熱點(diǎn)話題閱讀《哪吒2魔童鬧海》
- 《實(shí)施方法論》課件
- 瘧疾2025培訓(xùn)課件
- 流行性感冒診療方案(2025版)解讀課件
評(píng)論
0/150
提交評(píng)論