2023年计算机三级考试南开题上机题库_第1页
2023年计算机三级考试南开题上机题库_第2页
2023年计算机三级考试南开题上机题库_第3页
2023年计算机三级考试南开题上机题库_第4页
2023年计算机三级考试南开题上机题库_第5页
已阅读5页,还剩96页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

全国计算机三级考试南开100题上机题库

题目1:下列程序的功能是:将不小于整数m且紧靠ml内k个素数存入数组xx。请编写函数num(inl

k,intxx[|)实现函数的规定.最终调用函数readwriteDAT。把成果输出到文献out.dat中。

原则答案*/

{intdata=m+1;

inthalf.n=0.I;

whiled)

{half=daUi/2:for(I=2:I<=hilf;l++)

if(data%I=O)break;

if(I>half)

{xx(n]=data;n++;)

if(n>=k)break;

data++;

})

题目2:已知数据文献N.DAT中存有200个四位数.并已调用读函数readDat。把这些数存入数组a

中,请考生编制一函数j$Val(),其功能是:假如四位数各位上的数字均是0或2或4或6或8,则记录出满足

此条件的个数加、并把这些四位数按从大到小的次序存入数组b中。最终main。函数调用写函数writeDat()

把成果ent以及数组b中符合条件的四位数输出到OUT.DAT文献中。

voidjsVal。/*原则答案*/

{intbb(4];

iniI,j,k,flag;

for(I=0;I<200;I++)

{bb[O]=a[I]/l00():bb[Il=a[I]%l000/100;

bb[2]=aII|%100/l0;bb(3]=a[I|%10;

for(j=0;j<4;j++)

{if(bb[jl%2==0)

flag=l;

else

{flag=0;break;}

)

if(flag==l)

{b[cnt]=a[I];

cnt++;|}

for(I=0;I<CNT-l;I++)

for(j=I+l;j<CNT;J++)

(k=b[i];b[i]=b[j];bU]=k;)

)

题目3:函数READDAT()实现从文献IN.DAT中读取一篇英文文章存入到字符串数组XX4;请编

制函数STROR(),其函数功能盘以行为单位把字符串中的所有小写字母O左边的字符串内容移到该串的右

边寄存,然后并把小写字母0删除,余下的字符串内容移到已处理字符串的左边寄存.最终把已处理的字符串

仍按行重新存入字符串数组XX中,最终调用函数WRITEDAT。把成果XX输出到文献OUT.DAT中.

voidSlrOR(void)/*原则答案*/

{intI.j,k,index,strl;

charch;

for(I=0;I<MAXLINE;I++)

{str)=strlen(xx[Il):

index=strl:

for(j=0:j<STRL:J++)

if(xx[I][j]=='o')

{for(k=j;k<STRL-l;K++)

xx(IJ[k]=xx[I][k+I];

index=j;}

for(j=strl-1;j>=indexj—)

(ch=xx[I][strl-l];

for(k=strl-l;k>0;k-)

xx(I][k]=xx[I][k-l];

xx[I][O]=ch;)

)

)

题目4:函数ReadDaK)实现从文献IN.DAT中读取一篇英又文章存入到字符串数组xx中;请编制函

数SirOLQ,其函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排,同步去

除标点符号,之后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中。最终main()

函数调用困数WriteDat。把成果xx输出到义航(JUI6.DA1中。

voidSirOL(void)六原则答案*/

(intl.j.k,strl.l:charc;

for(I=0;I<MAXLINE;I++)

for(j=0;j<STRLEN(XXn|)J++)

{c=xx[I]Ul;

if((c>='A'&&c<=,Z')||(c>=,a'&&c<=,z,)||c==,');

elsexx[I][j]='}

foi-(l=0:l<MAXLINE:L++)

(charch[80]={0};charpp[80]={0};

strl=strlen(xx[l]);

I=strl-1;k=l;

whilc(l)

{while(((xx(i][I]'>='a'&&xx[l](I)^=,z,)||(xx[l]|I>='A'&&xx[l][IK=,z'))&&I^=O)

{for(i=k;j>=0;j-)

PPlj+l]=PPlil;pp[O]=xx[ll|I];k++;I-;)

strcat(ch,pp);strcpy(pp,.....);k=l;

if(I==-l)break;while((xx|l][I]<'A'||xx[l](I]>'z,)&&I>=O)

(for(j=kj>=0u-)

PP[j+n=PPU];pp[O]=xx[ll|I];k++;I-;)

strcat(ch.pp);strcpy(pp."""'^);

k=0;

if(I==-l)break;}

strcpy(xx[l],ch);

))

题目5:在文献in.dal中有200个正整数,且每个数均在100。至9999之间。函数RcadDal()读取这200

个数寄存到数组aa中。请编制函数jsSort。,其函数的功能是:规定按每个数的后三位的大小进行升序排列,

然后取出满足此条件的前10个数依次存入数组b中,假如后三位的数值相等,则按原先的数值进行降序排

列。最终调用函数WriieDat。把成果bb输出到文献out.dat中。

voidjsSort。/*原则答案*/

{intl.j.data:

for(l=0;I<199;I++)

for(j=I+I;j<200;j++)

{if(aa[Ij%100()>aa|jJ%1000)

{data=aalI];aa[I]=aa[jj;aaj]=dala;}

elseif(aa(I]%1000==aa|j]%1000)

if(aa[I]<AA[J])

{data=aa[I];aa[I]=aa[j];aaj]=data;}

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

bb(I]=aa(I];

)

题目6:在文献in.dat中有200个正整数,且每个数均在100D至9999之间。函数ReadDat。读取这200

个数寄存到数组aa中。请编制函数jsSortO,其函数的功能是:规定按每个数口勺后三位的大小进行降序排列,

然后取出满足此条件的前10个数依次存入数组b中,假如后三位的数值相等,则按原先的数值进行升序排

列。最终调用函数WriicDal。把成果bb输出到文献oul.dai中。

voidjsSort()/*原则答案*/

{intI,j,data;

for(I=0;I<199;I++)

for(j=I+I;j<200;j+4-)

{if(aa(I]%1000<AA[J]%l000)

{data=aa[I]:aa[I|=aa[j];aaj]=data;)

elseif(aa[I]%1000==aa[j]%1000)

if(aarn>aa(jl)

{data=aa[I]:aa[Il=aa[jJ:aaj]=data:)

)

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

bb[I]=aalIJ;

)

题目7:已知在文献IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4

位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)四部分构成。其中:金额=单

价*数量计算得出。函数ReadDatO是读取这100个销售记录并存入均造数组sell中。请编制困数SoriDai。,其

功能规定:按产品代码从大到小进行排列,若产品代码相似,则按金额从大到小进行排列,最终排列成果仍

存入构造数组sell中,最终调用函数WrileDal。把成果输出到文献OUT10.DAT中。

voidSortDaK)」原则答案*/

{intIj;

PROxy;

foHI=0:I<99;I++)

foi-(j=I+l:j<IOO;j++)if(strcnip(seII[I].dm.sell[j].dm)<O)

{xy=sell[I];sell[I]=sell[j];selHj]=xy;}

elseif(strcmp(sell[I].dm.s5ll[jJ.dm)==0)

if(sellll].je<SELLlJ]JE)

{xy=seH[IJ;sell[I]=sell[j];sell[j]=xy;}

)

题目8:函数ReadDat。实现从文献ENGIN中读取一篇英文文章,存入到字符串数组xx中:请编制函

数encryptCharQ,按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xxII勺对应H勺位置上,最

终调用函数WrileDaH)把成果xx输出到文献PSLDAT中。

替代关系:f(p)=p*IImod256(p是数纲中某一种字符的ASCII值,f(p)是计算后新字符的ASCH值),假

如计算后f(p)值不不小T等于32或不小于130,则该字符不变,否则将f(p)所对应的字符进行替代。

voidencryp〔Char()原则答案*/

{intI;

char*pf:

for(I=0;I<MAXLINE;I++)

lpf=xx[I];

\vhile(*pf!=O)

{II%256>130||*pf*ll%256<=32);

else

*pf=*pt*ll%256;

pf++;}

)

)

9题目:

题目9:函数ReadDaK)实现从文献IN.DAT中读取一篇英义文章存入到字符串数组xx中;请编制函

数SortCharD(),其函数口勺功能是:以行为单位对字符按从大到小II勺次序进行排序,排序后的成果仍投行市

新存入字符串数组xx中。最终main。函数调用函数WriteDat。把成果xx输出到文献OUT2.DAT中。

voidSortCharD(void)/*原则答案*/

{intl.j,k,strl;

charch;

for(I=0;I<MAXLINE;I++)

{strl=strlen(xx[I]);

for(j=0;j<STRL-l;J++)

for(k=j+l;k

if(xx(I]|j]<XX[I][K])

{ch=xx[I][jl;xx|I][j|=xx[I]|kl:xx[I][k]=ch;}

)}

题目10:请编制函数ConverlCharAO.其函数的功能是:以行为单位把字符串中的所有小写字母改写

成该字母的下•种字母,假如是字母z,则改写成字母a,大写字母和其他字符保持不变。把己处理的字符串

仍按行重新存入字符串数组xx中。。最终main。函数调用函数WriicDaiO把成果xx输出到文献OUT3.DAT

中。

voidConvertCharA(void)/*原则答案*7

{intI.j,str;

for(I=0:I<MAXLINE:I++)

{str=strlen(xx(I]);

for(j=0:j<STR:J++)

if(xx[I][j]==,z')xx[I][j]=,a';

elseif(xx[I]Ul>-a'&&xx|i||j]<=y)xxll]|j]+=l;

)

}

题目11:下列程序的功能是:把S字符串中的所有字母改写成该字母H勺下一种字符,字母Z改写成字

母a。规定大写字母仍为大写字母,小写字母仍为小写字母,其他字符不做变化。请编写函数chg(char*s)

实现程序口勺规定,最终调用函数rcadwriicDal。把成果输出到文献out.dat中。

voidchg(char*s)/*原则答案*/

{while(*s)

if(*s==,z'||*s=='Z')

{*s-=25;s++;}

elseif(*s>-a'&&*s<=,y')

{*s+=l;s++;}

elseif(*s>='A'&&*s<='Y)

{*s+=1;s++;}

elses++;

)

或者:

voidchg(char*s)

k=strlen(s);

for(i=0;i<K;I++)

{if(s[i]=='z'||s[i]=='Z')

s|i]-=25;

else

if(isalpha(s[i]))

州++;)

)

题目12:已知在文献IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型

4位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)四部分构成。其中:金额=

单价*数量计算得出。函数ReadDatO是读取这100个销售记录并存入构造数组sell中。请编制函数SoriDat(),

其功能规定:按产品名称从小到大进行排列,若产品名称相似,财按金额从小到大进行排列.最终排列成果

仍存入构造数组sell中,最终调用函数WriteDaK)把成果输出到文献OUT5,DAT中。

voidSortDat()/*原则答案*/

(intI.j:

PROxy;

for(I=0;I<99;I++)

for(j=I+l:j<iOO;j++)

if(strcmp(sell[I].dm,sell|j|.dm)<0)

(xy=sell[I];sell[I]=sellU];selHj]=xy;}

elseif(slrcmp(sell[I|.dm,S2ll(j].clm)==0)

if(sell[I].je<SELL[J].JE)

{xy=sell[I];sell[I]=sell[j]:sell[j]=xy;}

J

题目13:已知在文献IN.DAT中存有100个产品梢告记录,母个产品销售记录由产品代码dm(字符型

4位).产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)四部分构成。其中:金额=

单价*数量计算得出。函数ReadDat。足读取这100个销售记录并存入构造数组sell中。请编制函数SoriDa((),

其功能规定:按产品代码从小到大进行排列,若产品代码相似,则按金额从大到小进行排列,最终排列成果

仍存入构造数组sell中,最终调用函数WriteDat。把成果输出到文献OUT6.DAT中。

voidSortDal。/*原则答案*/

{intIj;

PROxy;

for(I=0;I<99;I++)

for(j=I+l:j<100:j++)

if(strcmp(sell[I].me,sellU].mc)>0)

{xy=sell[IJ;sell|I]=sell|j|;sell[j]=xy;)

elseif(strcmp(sell[I|.mc.sell[j].mc)==O)

if(sell[I].je<SELL[J]JE)

{xy=sell[I];sell[I]=sen(j];sell[j]=xy;}

}

题目14:已知数据文献IN.DAT中存有200个四位数,并已调用读函数readDal。把这些数存入数组a

中,请考生编制•函数jsValO,其功能是:依次从数组a中取出•种四位数,假如该数持续不小于该四位数后

来口勺5个数且该数是奇数,则记录出满足此条件的个数cm,并把这些四位数按从小到大的次序存入数组b

中。并要计算满足上述条件的四位数的个数ent。最终main。函数调用写函数writeDat()把成果ent以及数

组b中符合条件的四位数输出到OUT.DAT文献中。

voidjsVal。/*原则答案*/

{intI,j,flag=O;

intk;

for(I=0;I<MAX-5;I++)

{for(j=I+1;j<=I+5;j++)

{if(a[I]>a[jl)

flag=l;

else{flag=O:break:I

if(a[I]%2=0)

flag=O;}

if(flag==l)

{b[cnt]=a|IJ;cnt++;)}

for(I=0;I<CNT-l:I++)

for(j=I+l;j<CNT;J++)

if(b|I]>b[j])

{k=b[l];b[ii=b[j];bU]=k;!

J

题目15:己知数据文献IN.DAT中存有200个四位数,并己调用读函数readDai。把这些数存入数组a

中,请考生编制一函数jsVa】(),其功能是:若一种四位数的千位数字上口勺值不不小于等于百位数字上的值、百

位数字上的值不不小于等于十位数字上的值,十位数字上的值不不小于等于个位数字上H勺值,并且此四位

数是偶数,则记录出满足此条件的个数cm,并把这些四位数按从大到小的次序存入数组b中。最终main。

函数调用写函数writeDat()把成果ent以及数组b中符合条件的四位数输出到OUT.DAT文献中。

voidjsVal。/*原则答案*/

{intIj;

intal.a2,a3.a4.k;

for(I=0;I<MAX:I++)

{al=a[Il/1000:a2=a[I]%1000/100:

a3=a[I]%100/I0;a4=a[I]%10;

if((al<=a2)&&(a2<=a3)&&(a3<=a4)&&(a[I]%2==0))

{b[cnt]=a|I];

cnt++;)

)

for(I=0;I<CNT-l;I++)

foi-(j=I+I;j<CNT;J++)

if(b|I]>b|j])

{k=b[I];blI]=bUJ;bUl=k;}

J

1题目:

题目16:函数ReadDat。实现从文献IN.DAT中读取•篇英文文章存入到字符串数组xx中,请编制函

数SuCharJR。,其函数的功能是:以行为单位把字符串中所有字符的ASCI【值右移4位,然后把右移后II勺字

符ASCII值再加上原字符的ASCII值,得到新的字符仍存入原字符串对应的位置上。最终把已处理的字符

串仍按行重新存入字符串数组xx中,最终调用函数wriicDai。把成果xx输出到文献OUT8.DAT中。原始数

据文献寄存啊格式是:每行的宽度均不不小于80个字符,含标点符号和空格。

voidSirCharJR(void)/*原则答案*/

{intI.j,strl;

foi-(I=0;I<MAXLINE;I++)

(strl=strlen(xx[i]);

for(j=0;j<STRL;J++)

xx(IHj|+=xxlI]|j]»4;

J

)

题目17:函数READDATC)实现从文献IN.DAT中读取一篇英文文章存入到字符串数组XX中;请编

制函数CHAO,其函数功能是:以行为单位把字符串中时第一种字符的ASCII值加第二个字符日勺ASCH值,得

到第•种亲朋字符,第二个字符的ASCII值加第三个字符的ASCII值,得到第二个新字符,依此类推•直处

理到最终第二个字符,最终一种字符的ASCII值加原第一种字符的ASCII值,得到最终一种新的字符,得到

的新字符分别寄存在原字符串对应的位置匕最终把己处理的字符串逆转后按行重新存入字符串数纽XX

中,最终调用函数WRITEDAT。把成果XX输出到文献OUT9.DAT中.原始数据文献寄存R勺格式是:每行口勺宽

度均不不小于80个字符,含标点符号和空格.

voidChA(void)/*原则答案。

{intI.j,k.str;

charch:

for(I=0;I<MAXLINE;I++)

{str=strlen(xx[i]);

ch=xx|I]lO];

for(j=0;j<STR-IJ++)

xx(I]Li]+=xx[JJ(j+lJ;

xx[I][str-l]+=ch;

for(j=0,k=str-ly

{ch=xx(I][j];

xx[IJ[j]=xx[I][k];

xx(I][k]=ch;}

)

)

voidChA(void)

{iniij;

charp,c;

for(i=0;i<MAXLINE:I++)

{P=xx[i][。];

c=xx[i][strlen(xx[i])-l];

for(j=OJ<STRLEN(XX[I])-l;J++)

xxli][j]+=xx[i][j+l];

xxli][strlen(xx[ij)-1J=p+c;

strrev(xxlij);}

)

题目18:函数ReadDal()实现从文献ENGIN中读取一篇英叉文章,存入到字符串数组xx中:请编制

函数encryptCharO,按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xxH勺对应的位置上,

最终调用函数WriteDatO把成果xx输出到文献PS10.DAT中。

替代关系:f(p)=p*llmod256(p是数组中某一种字符的ASCII值,f(p)是计算后新字符的ASCII值),假

如原字符口勺ASCII值是偶数或计算后f(p)值不不小于等于32,则该字符不变,否则将f(p)所对应口勺字符进行

替代。

voidencryptCharQ/*原则答案*/

{inti;

char*pf;

foitI=0;I<MAXLINE;I++)

lpf=xxlU;

while(*pf!=O)

{if(*pf%2==0||*pf*11%256<=32)

else

*pf=*p#ll%256;

pf++;

})

)

题目19:编写一种函数findsirO,该函数记录一种长度为2的子字符串在另一种字符串中出现的次数。

例如:假定输入的字符串为"asdasasdfgasdaszx67asdmklo”,子字符串为“as",函数返回值为6。

函数readwrileDal。的功能是实现从文献in.dat中读取两个字符穿4,并调用函数findstr(),最终把成果

输出到文献oul.dai中。

/*原则答案*/

intfindStr(char*str,char4substr)

{intn;

char*p,*r;

n=0;

while(*str)

{p=str:

r=subslr;

whilc(*r)

if(*r==*p){r++;p++;}

elsebreak;

if(*r=='\O')

n++;

str++;}

returnn:

)

题目20:编写函数jsvalue,它时功能是:求Fibonacci数列中不小于IH勺最小的一种数,成果由函数返

回。其中Fibonacci数列F(n)的定义为:

F(0)=0,F(l)=l

F(n)=F(n-1)+F(n-2)

最终调用函数wrileDat。读取10个数据t,分别得出成果且把成果输出到文献。ul.dal中。

intjsValue(init)/*原则答案*/

{intfl=0.f2=I,fn;

fn=fl+f2;

whilc(fn<=t)

{fl=f2;

f2=fn;

fn=fl+f2;}

returnfn;

)

题目21:下列程序口勺功能是:运用发下所示II勺简朴迭代措施求方程:cos(x)-x=0的一种实根。

xn+l=cos(xn)

floatcountValue。/*原则答案*/

(floatx(),x1=0.0;

while(l)

{x0=xl;

xl=cos(x0);

if(fabs(xO-x1)<1e-6)break;

returnx1;

)

题目22:请编写函数countvalueO,它的)功能是:求n以内(不包括n)同步能被3和7整数的所有自

然数之和的平方根s,并作为函数值返回,最终成果s输出到文献疝i.dal中。

doublecountValuc(intn)/*原则答案*/

{doublexy=0.0;

intI;

for(I=l;I<N;I++)

if(I%3==0&&!%7==0)xy+=I;

xy=sqrt((double)xy);

returnxy;

)

doublecountvalue(intn)

{inti,j=0;

doublek;

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

if(i%3==0&&i%7==0)

j+=i;

k=sqrt(j);

returnk;}

题目23:已知在文献in.dal中存有N个(个数<200)四位数字的正整数,函数readdat。读取这N个正

整数并存入数组xx中。请编制函数calvalue。,其功能规定:1.求出这N个实数的平均值aver;2.分别求出

这N个实数H勺整数部分之和sumini以及小数部分之和sumdec,最终调用函数wri〔cdal()把所求H勺成果输出

到文献out.dat中。

voidCalValue(void)/*原则答案*/

{inti;

doublex.sum=0:

for(I=0:I<MAXNUM:I+-)

(sumint=sumint+(int)xx[I];

x=xx[I|-(int)xx[I|;

sumdec=sumdec+x;

sum=sum+xx|l|;

}

aver=sum/MAXNUM;

)

题目24:在三位整数(100至999)中寻找符合条件的整数并依次从小到大存入数组中:它既是完全平

方数,乂是两位数字相似,例如144.676等。请编制函数实现此功能、满足该条件的整数的个数通过所编制

的函数返回。最终调用函数wrileDal。把成果输出到文献out.dat中。

jsValuc(inla[10|⑼)芦原则答案*/

{intI,j,k=O;

inthun,ten,data;

for(I=100J<=999;I++)

{j=10;

whiie(j*j<=I)

{if(I=j*j)

{hun=I/lOO:data=I-hun*li)O;

ten=data/10;data=data-ten*10;

if(hun——ten||hun——data||ten——data)

{bb[k]=I;k++;}

J

j++;)}

returnk;

题目25:下列程序的功能是:寻找并输出II至999之间的数m、它满足mm2和m3均为回文数。所

调回文数是指其各位数字左右对称的整数,例如121,676,94249等。满足上述条件的数如

m=ll.m2=121,m3=1331皆为回文数。请编制函数intsvalue(longm)实现此功能,假如是回文数,则函数返回

I,反之则返回0。最终把成果输出到文献。ui.dal中。

inijsValuc(longn)/*原则答案*/

{intI,strl,half;

charxy[20];

ltoa(iLxy,IO);

strl=strlen(xy);

half=strl/2:

foiXI=0;I<HALF:I++)

if(xy[I]!=xy[-strl])break:

if(I>=half)returnI;

elsereturn0;

)

题目26:已知在文献in.dai中存有若干个(个数<200)四位数字的正整数,函数readdal。读取这若干个

正整数并存入数组xx中。请编制函数calvalue。,其功能规定:I.求出这文献C.P有多少个正整数lotnum:

2.求这些数右移1位后,产生的新数是偶数的数的个数totcnt,以及满足此条件的这些数(右移前的值)的

算术平均值lotpjz,最终调用函数writedal。把所求的成果输出到文献oul.dat'I10

voidCalValue(void)/*原则答案*/

(intl.data;

for(I=0;I<MAXNUM;I++)

{if(!xx[I])break;

if(xx(I]>0)totNum++;

data=xx[I]»l;

if(data%2==0){totCnt++:totPjz+=xx[I];)

)

totPjz/=totCnt;

I

题目27:已知数据文献IN.DAT中存有300个四位数,并已调用读函数ReadDat。把这些数存入数组a

中,请编制一函数jsvalue。,其功能是:求出千位数上的数减百位数减十位数上的数减个位数上H勺数不小于

零I内个数ent,再求出所有满足此条件的四位数平均值pjzl,以及不满足此条件的四位数平均值pjz2,最终

调用写函数writeDat。把成果输出到OUT.DAT文献。例如:9123.9-i-2-3>0,则该数满足条件计算平均值

pjzl,且个数cnl=cni+l。

9812.9-8-1-2<0,则该数不满足条件计算平均值pjz2.

voidjsValue()/*原则答案*/

{iniI,thou,hun,lcn,data,j;

foi-(I=0:I<300:I++)

{thou=a[Il/1000;hun=a[I]%1000/100;

ten=a|IJ%100/10;data=a[l|%10;

if(thou-hun-ten-data>0){b[cnt]=a[I];cnt++;}

)

for(I=0;I<CNT-l;I++)

foiXj=I+l;j<-CNT;J++)

{data=b[I];b[I]=b[j];b[j]=data;)

题目28:已知数据文献【N.DAT中存有200个四位数,并已调用读函数readDat。把这些数存入数组a

中,请考生编制一函数jsVal(),其功能是:把千位数字和十位数字重新构成一种新的十位数ab(新十位数的十

位数字是原四位数的千位数字,新十位数H勺个位数字是原四位数的十位数字),以及把个位数字和百位数字

构成另一种新的十位数cd(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的

百位数字),假如新构成的两个十位数ab-cd>=0且ab-cd<=10且两个数均是奇数,同步两个新数H勺十位数字

均不为零,则将满足此条件的四位数按从大到小的次序存入数组b中,并要计算满足上述条件的四位数的个

数cni。最终main。函数调用写函数wriieDaK)把成果cnl以及数组b中符合条件的四位数输出到OUT.DAT

文献中.

voidjsVal。/*原则答案*/

{intI.thou.hun.ten.data.j;

intab.cd;

foi-(I=0:I<200:I++)

{thou=a|I]/l000;hun=a[I]%1000/100;

ten=a|IJ%100/10;data=a[l|%10;

ab=10*thou+len;cd=10*data+hun;

if((ab-cd)>=0&&(ab-cd)<=10&&ab%2==1&&cd%2==l&&ab;=0&&cd!=0)

{b[cnt]=a[I];cnt++;)

)

for(I=0;I<CNT-l;I++)

for(j=I+l;j<CNT;J++)

if(b[I]<B[J])

{data=bfll:b(l]=b|j];b[j]=data;}

)

题目29:已知数据文献IN.DAT中存有200个四位数,并已调用读函数readDat。把这些数存入数组a

中,请考生编制一函数jsVal(),其功能是:把「•位数字和十位数字重新构成一种新的十位数ab(新十位数的十

位数字是原四位数的千位数字,新十位数H勺个位数字是原四位数的十位数字),以及把个位数字和百位数字

构成另•种新的十位数cd(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的

百位数字),假如新构成的两个卜位数ab-cd>=10且ab-cd<=20且两个数均是偶数,同步两个新数的卜位数字

均不为零,则将满足此条件的四位数按从大到小的次序存入数组b中,并要计算满足上述条件的四位数的个

数cnto最终main。函数调用写函数wrileDat()把成果ent以及数组b中符合条件的四位数输出到OUT.DAT

文献中。

voidjsVal。/*原则答案*/

{intI.thou.hun.ten.data.j;

intab.cd;

for(I=0;I<200;I++)

{thou=a|I]/1000:hun=a(I]%1000/100:

tcn=a|Il%100/l0;data=a[l]%10;

ab=10*thou+lcn;cd=10*data+hun;

if((ab-cd)'>=O&&(ab-cd)<=10&&ab%2==1&&cd%2==1&&ab;=0&&cd!=0)

{b[cnt]=a[I];cnt++;)

)

for(I=0;I<CNT-l;I++)

for(j=I+l;j<CNT;J++)

if(b[Il<B[J])

{data=b|I]:b|I]=b|jl;b[j]=data;}

)

题目30:已知数据文献【N.DAT中存有200个四位数,并已调用读函数readDal。把这些数存入数组a

中,请考生编制•函数JsValO,其功能是:依次从数组a中取出•种四位数,假如该数持续不不小于该四位数

后来的5个数且该数是偶数,则记录出满足此条件的个数cni,并把这些四位数按从小到大的次序存入数组

b中。并要计算满足上述条件的四位数『'J个数cnto最终main。函数调用写函数wriieDat()把成果ent以及

数组h中符合条件的四位数输出到0UT.DAT文献中。

voidjsVal()六原则答案七

{intIj,flag=O;

for(I=0:I<MAX-5;I++)

{for(j=I+l;j<=I+5;j++)

{if(a[I]<A|JD

flag=l;

elseflag=O;

if(a[I]%2!=0)

flag=0;

if(flag==O)

break;}

if(flag==l){b[cnt]=a|I];c:n++;}

)

foi-(I=0;I<CNT-l;I++)

foi-(j=I+I;j<CNT:J++)

if(b[I]>b[j])

{flag=b[I];b[n=bO];bUl=flag;}

)

题目31:已知在文献IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码山n(字符型

4位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)四部分构成。其中:金额=

单价*数量计算得出。函数ReadDat。是读取这100个销售记录并存入构造数组sell中。请编制函数SonDa((),

其功能规定:按产品代码从大到小进行排列、若产品代码相似,则按金额从大到小进行排列,最终排列成果

仍存入构造数组sell中,最终调用函数WriteDatO把成果输出到文献OUT6.DAT中。

voidSortDalO产原则答案*/

{intIj;

PROxy;

for(I=0;I<99;I++)

for(j=I+l;j<100;j++)

if(sell[Ilje<SELL[J].JE)

{xy=se!l[I];sell[I]=sell|j];sell|j]=xy:}

elseif(sell(I].je==sell[j].je)

if(strcmp(sell[I].dm,selHj].dm)<O)

{xy=selUl|:sell[l|=sell|jl;sell|j]=xy;}

)

题目32:已知在文献IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型

4位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)四部分构成。其中:金额=

单价*数量计算得出。函数ReadDatO是读取这100个销售记录并存入构造数组sell中。请编制困数SortDat(),

其功能规定:按产品名称从大到小进行排列,若产品名称相似,贝J按金额从小到大进行排列.最终排列成果

仍存入构造数组sen中,最终调用函数WriteDat。把成果输出到文献OUT7.DAT中。

voidSortDaK)产原则答案*/

{intI.j;

PROxy;

for(I=0;I<MAX-l;I++)

for(j=I+Iu<MAX;J++)

if(strcmp(sell[I].mc,sell[jJ.mc)<O)

{xy=sell[IJ;sell[I|=sell[j]:sell[j]=xy;)

elseif(strcmp(sel1[1].me,sell|j].mc)==0)

if(sell[I].je>sellU].je)

{xy=scll[I];scll(I]=scll|j];sell|j]=xy;}

)

题目33:请编制函数ReadDat。实现从文献IN.DAT中读取1000个十进制整数到数组xx中:请编制

函数CompuleO分别计算出xx中奇数H勺个数odd,奇数的平均值avel,偶数的平均值ave2以及所有奇数的

方差totfc的值,最终调用函数WriteDatO把成果输出到OUT.DAT文献中。计算方差的公式如下:totfc=l/N

E(xx[i]-avel)2

intReadDat(void)建原则答案"/

{HLE*fp;

intI.j;

if((fp=fopen(""IN.DAT"":",r""))==NULL)return1;

for(I=0;I<100;I++)

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

fscanf(fp,&xx[IMO+j]);

fscanf(fp,…n"");

if(feof(fp))break;}

fclose(fp);

return0;}

voidCompute(void)

{intI,yy[MAX];

for(I=0;I<1000;I++)

if(xx[Il%2){odd++:aveI+=xx[I];}

else{even++;ave2+=xx[I];yy[even-!l=xx|I];}

avel/=odd;

ave2/=even;

foi-(I=0:I<EVENJ++)

totfc+=(yy|I]-ave2)*(yy|I]-ave2)/even;

J

J

题目34:下列程序的功能是:选用出100以上1000以内所有个位数字与十位数字之和被10除所得余

数恰是百位数字日勺素数(如293)。计算并输出上述这些素数的个数CNT以及这些素数值的和SUM。请编

写函数COUNTvalue()实现程序规定,最终调用函数WRITEDAT()把成果CNT和SUM输出到文献

OUT.DAT中.

voidcountValue。/*原则答案*/

{intl,j,half.hun,ten.data;

for(I=10I;I<1000;I++)

{hun=I/100;

ten=I%100/10;

data=I%10;

if(hun==(ten+data)%10)

{half=I/2;

for(j=2J<HALF;J++)

if(I%j==O)break;

if(j>=ha!f)

{cn【++;sum+=I;}}}

)

题目35:某级数的前两项AI=I.A2=I.后来各项具有如下关系:An=An-2+2An-l.

下列程序的功能是:规定依次对于•整数M=100.1000和10000求出对应孙]值,使其满足:Sn=M,这里

Sn=Al+A2+...+An.

并依次把n值存入数组单元b[0].b⑴和b⑵中,请编制jsvalue。函数来实现此功能,最终调用函数

wrilcDai。把数组b[]中的值输出到oul.dat文献中。

voidjsvalue。产原则答案*/

{intal=l,a2=l,n=l,an;

inisum0,sum;

sufnO=al+a2;

whilc(1)

{an=al+a2*2;

suin=suinO+an;

al=a2;a2=an;n++;

if(sum0<100&&sum>100)b|O]=n;

if(sumO<IO(X)&&sum>IO(X))b[l]=n:

if(sum0<l0000&&sum>10000){b[2]=n;break;}

sumO=sum;

)

J

jsvalue()

{inial=l.a2=l,a12,sn,k=2;

sn=al+a2;

whilc(l)

{a12=al+2*a2;

if(sn<100&&sn+a12>=100)b[O]=k;

if(sn<1000&&sn+a12>=1000)b[l]=k;

if(sn<10000&&sn+a12>=10000){b[2]=k;break;}

sn=sn+al2;

al=a2;a2=a!2;

k++;

)

)

题目36:函数RcadDal。实现从文献ENGIN中读取一篇英叉文章,存入到字符串数组xx中:请编制

函数encryptCharO.按给定时替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,

最终调用函数WriieDal。把成果xx输出到文献PS6.DAT中。

替代关系:f(p)=p*l1mod256(p是数组中某一种字符的ASCI!值,f(p)是计算后新字符的ASCII值),假

如计算后f(p)值不不小于等于32或f(p)对应II勺字符是数字0至9,则该字符不变,否则将f(p)所对应的字符

进行替代。

voidcncryplChar。/*原则答案*/

{inti;

char*pf;

for(I=0;I<MAXLINE;I++)

{pf=xx[Il;

whiie(*pf!=O)

(if((*pf*11%256>='0'&&*pf*11%256<='9')||*pf*11%256<=32)

{pf++;c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论