计算机三级上机试题总结_第1页
计算机三级上机试题总结_第2页
计算机三级上机试题总结_第3页
计算机三级上机试题总结_第4页
计算机三级上机试题总结_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

上机试题总结作者:GAME.JACK转自中国IT认证实验室IT社区

100个产品销售记录排序(此类共10题)

code:

/*

已知在文件IN.DAT中存有100个产品销售记录,每个产品销售

记录由产品代码dm(字符型4位),产品名称me(字符型10位),单价

dj(整型),数量si(整型),金额je(长整型)五部分组成。其中:

金额=单价*数量计算得出。函数ReadDat()读取这100个销售记录

并存入结构数组sell中。请编制函数SortDat(),其功能要求:

按金额从小到大进行排列,若金额相等,则按产品代码从小到大

进行排列,最终排列结果仍存入结构数组sell中。最后main()函

数调用函数WriteDatO把结果输出到文件OUTLDAT中。

注意:部分源程序存放在PR0G1.C中。

请勿改动主函数main()、读数据函数ReadDatO和输出数据函

数WriteDat()的内容。

*/

Sinclude<stdio.h>

#include<mem.h>

#include<string.h>

Sinclude<conio.h>

Sinclude<stdlib.h>

SdefineMAX100

typedefstruct{

chardm[5];/*产品代码*/

charmc[ll];/*产品名称*/

intdj;/*单价*/

intsi;/*数量*/

longje;/*金额*/

}PRO;

PROsell[MAX];

voidReadDat0;

voidWriteDat();

voidSortDat()

{/**/

inti,j,k;

PROtt;

for(i=0;i<MAX-1;i++)

{k=i;

for(j=i+l;j<MAX;j++)

if((sell[k].je>sell[j].je)||(sei1[k].je==sel1[j].je)&&(stremp(sell[k]

.dm,sell[j].dm)>0))

if(k!=i)

{tt=sell[k];sell[k]=sell[i];sellEi]=tt;}

}

/**/

)

voidmain()

(

memset(sell,0,sizeof(sell));

ReadDat();

SortDat();

WriteDat();

)

voidReadDat()

(

FILE*fp;

charstr[80],ch[l1];

inti;

fp=fopen(〃IN.DAT〃,〃r〃);

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

fgets(str,80,fp);

memcpy(sellEi],dm,str,4);

memcpy(sell[i].me,str+4,10);

memcpy(ch,str+14,4);ch[4]=0;

sell[i].dj=atoi(ch);

memcpy(ch,str+18,5);ch[5]=0;

sell[i].si=atoi(ch);

sell[i].je=(long)sellEi],dj*sell[i].si;

)

fclose(fp);

)

voidWriteDat()

(

FILE*fp;

inti;

fp=fopen(〃0UTLDAT”,〃w〃);

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

fprintf(fp,〃%s%s%4d%5d%101d\n〃,sell[i].dm,sell[i].me,sell[i].dj,

sell[i].si,sell[i].je);

fclose(fp)

)

100个产品销售记录排序其余9题说明

1)in.dat内容完全相同。

2)程序也基本雷同,仅排序的要求不一样。

3)考生应熟悉strcmpO函数,否则有的题相当不好处理。

之二

排序要求:

按金额从小到大进行排列,若金额相等,则按产品代码从大到小

进行排列

相应语句:

if(sell[k].je>sell[j].je||(sell[k].je==sell[j].je)&&

(strcmp(sell[k].dm,sell[j].dm)<0))

之三

排序要求:

按金额从大到小进行排列,若金额相等,则按产品代码从小到大

进行排列

相应语句:

if((sell[k].je<

sei1[j].je)||(sell[k].je==sel1[j].je)&&(strcmp(sell[k].dm,

sell[j].dm)>0))

之四

排序要求:

按金额从大到小进行排列,若金额相等,则按产品代码从大到小

进行排列

相应语句:

if((sell[k].je<

sell[j].je)||(sell[k].je==sell[j].je)&&(strcmp(sell[k].dm,sell[j].dm)

<0))

之五

排序要求:

按产品名称从小到大进行排列,若产品名称相同,则按金额从小

到大进行排列

相应语句:

if((strcmp(sell[k].me,

sei1[j].me)>0)||(strcmp(sell[k].me,sell[j].me)==0)&&(sell[k].je>sell[

j].je))

之六

排序要求:

按产品名称从小到大进行排列,若产品名称相同,则按金额从大

到小进行排列

相应语句:

if(strcmp(sell[i].me,sell[j].me)>0||(stremp(sell[i].me,

sell[j].mc)==0)&&.(sell[i].je<sell[j].je))

之七

排序要求:

按产品名称从大到小进行排列,若产品名称相同,则按金额从小

到大进行排列

相应语句:

if((stremp(sell[k].me,sell[j].me)<0)||

(stremp(sell[k].me,sell[j].mc)==0)&&(sell[k].je>sell[j].je))

之八

排序要求:

按产品名称从大到小进行排列,若产品名称相同,则按金额从大

到小进行排列

相应语句:

if((stremp(sell[k].me,sell[j].me)<0)|)(stremp(sei1[k].me,

sell[j].mc)==0)&&(sell[k].je<sell[j].je))

之九

排序要求:

按产品代码从小到大进行排列,若产品代码相同,则按金额从小

到大进行排列

相应语句:

if((stremp(sell[k].dm,

sell[j].dm)>0)||(stremp(sell[k].dm,sell[j].dm)==0)&&(sell[k].je>sell[

j].je

code:

/*

已知在文件IN.DAT中存有100个产品销售记录,每个产品销售

记录由产品代码dm(字符型4位),产品名称me(字符型10位),单价

dj(整型),数量si(整型),金额je(长整型)五部分组成。其中:

金额=单价*数量计算得出。函数ReadDat()读取这100个销售记

录并存入结构数组sell中。请编制函数SortDat(),其功能要求:

按产品代码从大到小进行排列,若产品代码相同,则按金额从大

到小进行排列,最终排列结果仍存入结构数组sell中。最后main。

函数调用函数WriteDatO把结果输出到文件OUT10.DAT中。

注意:部分源程序存放在PROG1.C中。

请勿改动主函数main()、读数据函数ReadDat。和输出数据函

数WriteDatO的内容。

*/

^include<stdio.h>

ttinclude<mem.h>

Sinclude<string.h>

Sinclude<conio.h>

Sinclude<stdlib.h>

#defineMAX100

typedefstruct{

chardm[5];/*产品代码*/

charme[11];/*产品名称*/

intdj;/*单价*/

intsi;/*数量*/

longje;/*金额*/

}PRO;

PROselHMAX];

voidReadDat();

voidWriteDat();

voidSortDat()

{/**/

inti,j;

PROtt;

for(i=0;i<MAX-1;i++)

for(j=i+l;j<MAX;j++)

{if(stremp(sell[i].dm,sell[j].dm)<0)

{tt=sell[i];sell[i]=sell[j];sell[j]=tt;}

if((stremp(sell[i].dm,sell[j].dm)==0)&&(sell[i].je<sell[j].je))

{tt=sell[i];sell[i]=sell[j];sell[j]=tt;}

)

/**/

)

voidmain()

(

memset(sell,0,sizeof(sell));

ReadDat();

SortDat();

WriteDat0;

)

voidReadDat()

(

FILE*fp;

charstr[80],ch[ll];

inti;

fp=fopen(〃IN.DAT”,〃r〃);

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

fgets(str,80,fp);

memcpy(sell[i].dm,str,4);

memcpy(sell[i].me,str+4,10);

memcpy(ch,str+14,4);ch[4]=0;

sell[i].dj=atoi(ch);

memcpy(ch,str+18,5);ch[5]=0;

sell[i].si=atoi(ch);

sell[i].je=(long)sell[i].dj*sell[i].si

)

fclose(fp);

)

voidWriteDat()

(

FILE*fp;

inti;

fp=fopen(“0UT10.DAT”,〃w〃);

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

fprintf(fp,,z%s%s%4d%5d%101d\nz,,sell[i].dm,sell[i].me,sell[i].dj,

sell[i],si,sell[i].je);

)

fclose(fp);

)

老枪

300个四位数问题(此类共10题)

本类10题中,五题产生数组B,并对B按一定要求排序;

其余五题是求平均值。我把它们分成两组五题来讨论。

以下为产生数组B之题一:

code:

/*

已知数据文件IN.DAT中存有300个四位数,并已调用读函数

readDat()把这些数存入数组a中,请编制一函数jsvalue(),其功

能是:求出个位数上的数减千位数上的数减百位数上的数减十位

数上的数大于零的个数ent,再把所有满足此条件的四位数依次

存入数组b中,然后对数组b的四位数按从大到小的顺序进行排序。

最后main()函数调用写函数writeDat()把数组b中的数输出到文

件OUT.DATo

例如:1239,9-1-2-3>0,则该数满足条件存入数组b中,且

个数cnt=cnt+lo

8129,9-8-1-2<0,则该数不满足条件忽略。

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

程序中已定义数组:a[300],b[300],已定义变量:ent

请勿改动数据文件IN.DAT中的任何数据、主函数main。、读

函数readDat()和写函数writeDat()的内容。

*/

Sinclude<stdio.h>

inta[300],b[300],cnt=0:

jsvalue()

{/**/

inti,j,k,t;

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

if(a[i]%10-a[i]/1000-a[i]/100%10-a[i]/10%10>0)

b[cnt++]=a[i];

for(i=0;i<cnt-1;i++)

{k=i;

for(j=i+l;j<ent;j++)

if(b[k]<b[j])k=j;

if(k!=i){t=b[k];b[k]=b[i];b[i]=t;}

)

/**/

)

main()

{

inti;

readDat();

jsvalue();

writeDat();

printf("cnt=%d\rT,ent);

for(i=0;i<ent;i++)printf(zzb[%d]=%d\nz,,i,b[i]);

)

readDat()

(

FILE*fp;

inti;

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

for(i=0;i<300;i++)fscanf(fp,"%d,",&a[i]);

fclose(fp);

)

writeDat()

(

FILE*fp;

inti;

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

fprintf(fp,"96d\n",ent);

for(i=0;i<ent;i++)fprintf(fp,"%d\n",b[i]);

fclose(fp);

)

要求:

求出所有这些四位数是素数的个数ent,再把所有满足此

条件的四位数依次存入数组b中,然后对数组b的四位数按从小到

大的顺序进行排序。

out.dat文件内容应当为:

30

1231

1277

1283

1319

2543

2609

3793

3911

4013

4549

4817

4933

5591

5843

5939

6733

6791

6841

6871

6917

7297

7369

7703

8101

8221

8941

9013

9461

9689

9887

之四

要求:

求出千位数上的数减百位数上的数减十位数上的数减个位

数上的数大于零的个数ent,再把所有满足此条件的四位数依次

存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序。

out.dat文件内容应当为:

20

4002

4102

5111

5400

6014

6302

7050

7105

7113

8101

8130

8203

8221

8303

8700

9013

9016

9052

9053

9800

之五

要求:

求出千位数上的数加百位数上的数等于十位数上的数加个

位数上的数的个数ent,再把所有满足此条件的四位数依次存入

数组b中,然后对数组b的四位数按从大到小的顺序进行排序。

out.dat文件内容应当为:

22

7795

7429

7328

7153

6978

6767

6556

6226

5591

5555

5427

4509

4013

3672

3663

3205

3131

2855

2763

2543

2507

1625

老枪

求满足条件的数的个数、平均值……

求满足条件的数的个数、平均值及不满足条件的数的平均

值等,此类也是五题。本处仅给出一个全题,其余题只给出不同

之处。

code:

/*

已知数据文件IN.DAT中存有300个四位数,并已调用读函数

readDatO把这些数存入数组a中,请编制一函数jsvalue(),其功

能是:求出千位数上的数减百位数上的数减十位数上的数减个位

数上的数大于零的个数ent,再求出所有满足此条件的四位数平

均值pjzl,以及所有不满足此条件的四位数平均值pjz2。最后

main()函数调用写函数writeDat()把结果ent,pjzl,pjz2输出到

OUT.DAT文件。

例如:9123,9T-2-3>0,则该数满足条件计算平均值pjzl,

且个数cnt=cnt+l0

9812,9-8-1-28,则该数不满足条件计算平均值pjz2。

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

程序中已定义数组:a[300],已定义变量:ent,pjzl,pjz2

请勿改动数据文件IN.DAT中的任何数据、主函数main。、读

函数readDat()和写函数writeDat()的内容。

*/

ttinclude

inta[300],cnt=O;

doublepjzl=0.0,pjz2=0.0;

jsvalue()

{/**/

inti;

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

if(a[i]/1000-a[i]/100%10-a[i]/10%10-a[i]%10>0)

{cnt++;pjzl+=a[i];}

elsepjz2+=a[i];

if(ent)pjzl/=cnt;

if(cnt<300)pjz2/=300-cnt;

/**/

)

mainO

(

inti;

readDat();

jsvalue();

writeDat();

printf(z,cnt=%d\n满足条件的平均值pzjl=%7.21f\n不满足条件的平均值

pzj2=%7.21f\n〃,ent,pjzl,pjz2);

}‘

readDat()

(

FILE*fp;

inti;

fp=fopen(〃in.dat〃,〃r〃);

for(i=0;i<300;i++)fscanf(fp,〃%d,〃,&aLi]);

fclose(fp);

)

writeDat()

(

FILE*fp;

inti;

fp=fopen(〃out.dat〃,〃w〃);

fprintf(fp,,z%d\n%7.21f\n%7.21f\nz,,ent,pjzl,pjz2);

fclose(fp);

in.dat与前面给出的完全相同,out.dat内容应当如下:

20

7389.55

5524.03

满足条件数的平均数……四题之说明

之二

要求:

求出千位数上的数加百位数上的数等于十位数上的数加个

位数上的数的个数ent,再求出所有满足此条件的四位数平均值

pjzl,以及所有不满足此条件的四位数平均值pjz2。

正确程序生成的out.dat文件内容应当如下:

22

4876.86

5709.46

之三

要求:

求出个位数上的数减千位数上的数减百位数上的数减十位

数上的数大于零的个数ent,再求出所有满足此条件的四位数平

均值pjzl,以及所有不满足此条件的四位数平均值pjz2。

正确程序生成的out.dat文件内容应当如下:

12

2926.08

5761.83

之四

要求:

求出所有这些四位数是素数的个数ent,再求出所有满足

此条件的四位数平均值pjzl,以及所有不满足此条件的四位数平

均值pjz2o

正确程序生成的out.dat文件内容应当如下:

30

5782.87

5633.46

之五

要求:

求出千位数上的数加个位数上的数等于百位数上的数加十

位数上的数的个数ent,再求出所有满足此条件的四位数平均值

pjzl,以及所有不满足此条件的四位数平均值Pjz2。

正确程序生成的out.dat文件内容应当如下:

18

6681.22

5582.48

老枪

200个四位数(此类共10题)

此部分题与300个数的题有相似之处。

之一

code:

/*

已知数据文件IN.DAT中存有200个四位数,并已调用读函数

readDat()把这些数存入数组a中,请考生编制一函数jsValO,其

功能是:把千位数字和十位数字重新组成一个新的十位数ab(新

十位数的十位数字是原四位数的千位数字,新十位数的个位数字

是原四位数的十位数字),以及把个位数字和百位数字组成另一

个新的十位数cd(新十位数的十位数字是原四位数的个位数字,

新十位数的个位数字是原四位数的百位数字),如果新组成的两

个十位数ab〉cd,ab必须是偶数且能被5整除,cd必须是奇数,同

时两个新数的十位数字均不为零,则将满足此条件的四位数按从

大到小的顺序存入数组b中,并要计算满足上述条件的四位数的

个数ent。最后main。函数调用写函数writeDat()把结果ent以

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

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

程序中已定义数组:a[200],b[200],已定义变量:ent

请勿改动数据文件IN.DAT中的任何数据、主函数main。、读

函数readDat。和写函数writeDat()的内容。

*/

Sinclude<stdio.h>

#defineMAX200

inta[MAX],b[MAX],ent=0;

voidjsVal()

{/**/

inti,j,k,A,B,C,D;

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

{A=a[i]/1000;B=a[i]/10%10;C=a[i]%10;D=a[i]/100%10;

if(A&&C&&(B==0)&&(D%2)&&(1O*A>10*C+D))

b[cnt++]=a[i];

for(i=0;i<cnt-l;i++)

{k=i;

for(j=i+l;j<ent;j++)

if(b[k]<b[j])k=j;

if(k!=i){A=b[k];b[k]=b[i];b[i]=A;}

)

/**/

voidreadDat()

(

inti;

FILE*fp;

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

for(i=0;i<MAX;i++)fscanf(fp,〃%d〃,&a[i]);

fclose(fp);

)

voidmain()

(

inti;

readDat();

jsVal();

printf(〃满足条件的数二%d\n〃,ent);

for(i=0;i<ent;i++)printf(z,%d",b[i]);

printf(〃\n〃);

writeDat();

)

writeDat()

{

FILE*fp;

inti;

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

fprintf(fp,〃%d\n〃,ent);

for(i=0;i<ent;i++)fprintf(fp,〃%d\n”,b[i]);

fclose(fp);

200个四位数题之其余九题说明

之二

要求:

把千位数字和十位数字重新组成一个新的十位数(新十

位数的十位数字是原四位数的千位数字,新十位数的个位数字是

原四位数的十位数字),以及把个位数字和百位数字组成另一个

新的十位数(新十位数的十位数字是原四位数的个位数字,新十

位数的个位数字是原四位数的百位数字),如果新组成的两个十

位数均是素数且新数的十位数字均不为零,则将满足此条件的四

位数按从大到小的顺序存入数组b中,并要计算满足上述条件的

四位数的个数cnto

out.dat的内容应当为:

10

9971

8398

7711

6375

4719

4173

2736

2398

2397

1997

之三

要求:

把个位数字和千位数字重新组成一个新的十位数(新十

位数的十位数字是原四位数的个位数字,新十位数的个位数字是

原四位数的千位数字),以及把百位数字和十位数字组成另一个

新的十位数(新十位数的十位数字是原四位数的百位数字,新十

位数的个位数字是原四位数的十位数字),如果新组成的两个十

位数必须是一个奇数,另一个为偶数并且两个十位数中至少有一

个数能被17整除,同时两个新数的十位数字均不为零,则将满足

此条件的四位数按从大到小的顺序存入数组b中,并要计算满足

上述条件的四位数的个数cnto

out.dat的内容应当为:

7

8656

8174

7781

7683

4313

4173

2513

之四

要求:

)把这些数存入数组a中,请考生编制一函数jsVal(),其

功能是:把千位数字和十位数字重新组成一个新的十位数ab(新

十位数的十位数字是原四位数的千位数字,新十位数的个位数字

是原四位数的十位数字),以及把个位数字和百位数字组成另一

个新的十位数cd(新十位数的十位数字是原四位数的个位数字,

新十位数的个位数字是原四位数的百位数字),如果新组成的两

个十位数ab-cd>=10且ab-cd<=20且两个数均是偶数,同时两个新

数的十位数字均不为零,则将满足此条件的四位数按从大到小的

顺序存入数组b中,并要计算满足上述条件的四位数的个数cnto

out.dat的内容应当为:

5

9068

5224

5024

3821

2281

之五

要求:

如果四位数各位上的数字均是0或2或4或6或8,则统计

出满足此条件的个数ent,并把这些四位数按从大到小的顺序存

入数组b中。

out.dat的内容应当为:

11

8448

6820

4488

4060

2888

2884

2686

2624

2484

2420

2042

之六

要求:

把千位数字和个位数字重新组成一个新的十位数(新十

位数的十位数字是原四位数的千位数字,新十位数的个位数字是

原四位数的个位数字),以及把百位数字和十位数字组成另一个

新的十位数(新十位数的十位数字是原四位数的百位数字,新十

位数的个位数字是原四位数的十位数字),如果新组成的两个十

位数均是奇数并且两个十位数中至少有一个数能被5整除,同时

两个新数的十位数字均不为零,则将满足此条件的四位数按从大

到小的顺序存入数组b中,并要计算满足上述条件的四位数的个

数cnto

out.dat的内容应当为:

10

9851

8275

6375

5755

5359

4951

4595

4395

3575

3135

之七

要求:

把个位数字和千位数字重新组成一个新的十位数(新十

位数的十位数字是原四位数的个位数字,新十位数的个位数字是

原四位数的千位数字),以及把百位数字和十位数字组成另一个

新的十位数(新十位数的十位数字是原四位数的百位数字,新十

位数的个位数字是原四位数的十位数字),如果新组成的两个十

位数均是偶数并且两个十位数中至少有•个数能被9整除,同时

两个新数的十位数字均不为零,则将满足此条件的四位数按从大

到小的顺序存入数组b中,并要计算满足上述条件的四位数的个

数cnto

out.dat的内容应当为:

13

8761

8724

8441

6722

6603

6545

6323

6181

4369

4285

4125

2724

2362

之八

要求:

把千位数字和十位数字重新组成一个新的十位数ab(新

十位数的十位数字是原四位数的千位数字,新十位数的个位数字

是原四位数的十位数字),以及把个位数字和百位数字组成另一

个新的十位数cd(新十位数的十位数字是原四位数的个位数字,

新十位数的个位数字是原四位数的百位数字),如果新组成的两

个十位数ab同时两个新数的十位数字均不为零,则将满足此条件的四位数按

从大到小的顺序存入数组b中,并要计算满足上述条件的四位数

的个数cnto

out.dat的内容应当为:

12

7878

5437

3897

2893

2877

2438

2039

2035

2033

1619

1494

1493

之九

要求:

如果四位数各位上的数字均是奇数,则统计出满足此条

件的个数ent并把这些四位数按从大到小的顺序存入数组b中。

out.dat的内容应当为:

13

9971

7973

7711

7511

5755

5359

5311

3575

3537

3135

1997

1979

1531

之十

要求:

把千位数字和十位数字重新组成一个新的十位数ab(新

十位数的十位数字是原四位数的千位数字,新十位数的个位数字

是原四位数的十位数字),以及把个位数字和百位数字组成另一

个新的十位数cd(新十位数的十位数字是原四位数的个位数字,

新十位数的个位数字是原四位数的百位数字),如果新组成的两

个十位数ab-cd>=0且ab-cd<=10且两个数均是奇数,同时两个新

数的十位数字均不为零,则将满足此条件的四位数按从大到小的

顺序存入数组b中,并要计算满足上述条件的四位数的个数cnto

out.dat的内容应当为:

5

8398

7996

5954

4313

2311

老枪

小于200个四位数之一(共四题)

code:

/*

已知在文件IN.DAT中存有若干个(个数〈200)四位数字的正整

数,函数ReadDat()读取这若干个正整数并存入数组xx中。请编

制函数Calvalue(),其功能要求:1.求出这文件中共有多少个

正整数totNum;2.求出这些数中的各位数字之和是奇数的数的个

数totCnt,以及满足此条件的这些数的算术平均值totPjz。最后

main()函数调用函数WriteDat。把所求的结果输出到OUT.DAT文

件中。

注意:部分源程序存放在PR0G1.C中。

请勿改动数据文件IN.DAT中的任何数据,主函数main。、读

数据函数ReadDatO和输出数据函数WriteDat()的内容。

*/

ttinclude<stdio.h>

Sinclude<conio.h>

#defineMAXNUM200

intxx[MAXNUM];

inttotNum=0;/*文件IN.DAT中共有多少个正整数*/

inttotCnt=0;/*符合条件的正整数的个数*/

doubletotPjz=0.0;/*平均值*/

intReadDat(void);

voidWriteDat(void);

voidCalvalue(void)

{/**/

while(xx[totNum])

{if((xx[totNum]/1000+xx[totNum]/100%10+xx[totNum]/10%10+xx[totNum])%

2)

{totCnt++;totPjz+=xx[totNum];}

totNum++;

)

if(totCnt)totPjz/=totCnt;

1**1

voidmain()

{

inti;

clrscr();

for(i=0;i<MAXNUM;i++)xx[i]=0;

if(ReadDat()){

printf(〃数据文件IN.DAT不能打开!\007\n〃);

return;

)

Calvalue();

printf(〃文件IN.DAT中共有正整数二%d个\n〃,totNum)

printf(〃符合条件的正整数的个数二%d个\n〃,totCnt);

printf(〃平均值二%.21f\n〃,totPjz);

WriteDat();

intReadDat(void)

FILE*fp;

inti=0;

if((fp=fopen("in.dat","r"))==NULL)return1;

while(!feof(fp)){

fscanf(fp,级d,”,&xx[i++]);

)

fclose(fp);

return0;

)

voidWriteDat(void)

{

FILE*fp;

fp=fopen("0UT.DAT","w");

fprintf(fp,z/%d\n%d\n%.21f\nz/,totNum,totCnt,totPjz)

fclose(fp);

)

in.dat文件内容如下:

6045,6192,1885,3580,8544,6826,5493,8415,3132,5841,

6561,3173,9157,2895,2851,6082,5510,9610,5398,5273,

3438,1800,6364,6892,9591,3120,8813,2106,5505,1085,

5835,7295,6131,9405,6756,2413,6274,9262,5728,2650,

6266,5285,7703,1353,1510,2350,4325,4392,7573,8204,

7358,6365,3135,9903,3055,3219,3955,7313,6206,1631,

5869,5893,4569,1251,2542,5740,2073,9805,1189,7550,

4362,6214,5680,8753,8443,3636,4495,9643,3782,5556,

1018,9729,8588,2797,4321,4714,9658,8997,2080,5912,

9968,5558,9311,7047,6138,7618,5448,1466,7075,2166,

4025,3572,9605,1291,6027,2358,1911,2747,7068,1716,

9661,5849,3210,2554,8604,8010,7947,3685,2945,4224,

7014,9058,6259,9503,1615,1060,7787,8983,3822,2471,

5146,7066,1029,1777,7788,2941,3538,2912,3096,7421,

9175,6099,2930,4685,8465,8633,2628,7155,4307,9535,

4274,2857,6829,6226,8268,9377,9415,9059,4872,6072,

out.dat文件内容应当如下:

160

69

5460.51

老枪

小于200个四位数之二(共四题)

code:

/*

已知在文件IN.DAT中存有若干个(个数<200)四位数字的正整

数,函数ReadDat()读取这若干个正整数并存入数组xx中。请编

制函数Calvalue(),其功能要求:1.求出这文件中共有多少个

正整数totNum;2.求出这些数中的各位数字之和是偶数的数的个

数totCnt,以及满足此条件的这些数的算术平均值totPjz。最后

main()函数调用函数WriteDatO把所求的结果输出到OUT.DAT文

件中。

注意:部分源程序存放在PR0G1.C中。

请勿改动数据文件IN.DAT中的任何数据,主函数main。、读

数据函数ReadDat()和输出数据函数WriteDat()的内容。

*/

Sinclude

#include

#defineMAXNUM200

intxx[MAXNUM];

inttotNum=0;/*文件IN.DAT中共有多少个正整数*/

inttotCnt=0;/*符合条件的正整数的个数*/

doubletotPjz=0.0;/*平均值*/

intReadDat(void);

voidWriteDat(void);

voidCalvalue(void)

{/**/

for(;xx[totNum];totNum++)

if((xx[totNum]/1000+xx[totNum]/100%10+xx[totNum]/10%10+xx[totNum]%10)

%2==0)

{totCnt++;totPjz+=xx[totNum];}

if(totCnt)totPjz/=totCnt;

/**/

voidmain()

(

inti;

clrscr();

for(i=0;i<MAXNUM;i++)xx[i]=0;

if(ReadDat()){

printf(〃数据文件IN.DAT不能打开!\007\n〃)

return;

Calvalue();

printf(〃文件IN.DAT中共有正整数二%d个\n〃,totNum)

printf(〃符合条件的正整数的个数二%d个\n〃,totCnt);

printf("平均值=%21f\n",totPjz)

WriteDat();

intReadDat(void)

(

FILE*fp;

inti=0;

if((fp=fopen("in.dat","r"))==NULL)return1;

while(!feof(fp)){

fscanf(fp,"%d,”,&xx[i++]);

)

fclose(fp);

return0;

)

voidWriteDat(void)

(

FILE*fp;

fp=fopen("0UT.DAT","w");

fprintf(fp,z,%d\n%d\n%.21f\nz/,totNum,totCnt,totPjz)

fclose(fp);

out.dat文件内容应当如下:

160

91

5517.16

200个四位数之三(共四题)

code:

/*

已知在文件IN.DAT中存有若干个(个数〈200)四位数字的正整

数,函数ReadDat()读取这若干个正整数并存入数组xx中。请编

制函数Calvalue(),其功能要求:1.求出这文件中共有多少个

正整数totNum;2.求这些数右移1位后,产生的新数是奇数的数

的个数totCnt,以及满足此条件的这些数(右移前的值)的算术平

均值totPjZo最后main。函数调用函数WriteDat。把所求的结果

输出到文件OUT.DAT中。

注意:部分源程序存放在PR0G1.C中。

请勿改动数据文件IN.DAT中的任何数据,主函数main。、读

数据函数ReadDat。和输出数据函数WriteDat()的内容。

*/

Sinclude

ttinclude

ttdefineMAXNUM200

intxx[MAXNUM];

inttotNum=0;/*文件IN.DAT中共有多少个正整数*/

inttotCnt=0;/*符合条件的正整数的个数*/

doubletotPjz=0.0;/*平均值*/

intReadDat(void);

voidWriteDat(void);

voidCalvalue(void)

{/**/

for(;xx[totNum];totNum++)

if((xx[totNum]»1)%2)

{totCnt++;totPjz+=xx[totNum];}

if(totCnt)totPjz/=totCnt;

/**/

)

voidmain()

(

inti;

clrscr();

for(i=0;i<MAXNUM;i++)xx[i]=0;

if(ReadDat()){

printf(〃数据文件IN.DAT不能打开!\007\n〃);

return;

}

Calvalue();

printf(〃文件IN.DAT中共有正整数二%d个\n〃,totNum)

printf(〃符合条件的正整数的个数二%d个\n〃,totCnt);

printf(〃平均值二%.21f\n〃,totPjz);

WriteDat();

)

intReadDat(void)

(

FILE*fp;

inti=0;

if((fp=fopen(〃in.dat〃,〃r〃))==NULL)return1

while(!feof(fp)){

fscanf(fp,"%d,”,&xx[i++]);

)

fclose(fp);

return0;

)

voidWriteDat(void)

{

FILE*fp;

fp=fopen("OUT.DAT","w");

fprintf(fp,z,%d\n%d\n%.21f\nz/,totNum,totCnt,totPjz)

fclose(fp);

}

out.dat文件内容应当如下:

160

80

5537.54

老枪

小于200个四位数之四(共四题)

code:

/*

已知在文件IN.DAT中存有若干个(个数<200)四位数字的正整

数,函数ReadDat()读取这若干个正整数并存入数组xx中。请编

制函数Calvalue(),其功能要求:1.求出这文件中共有多少个

正整数totNum;2.求这些数右移1位后,产生的新数是偶数的数

的个数totCnt,以及满足此条件的这些数(右移前的值)的算术平

均值totPjzo最后main()函数调用函数WriteDat()把所求的结果

输出到文件OUT.DAT中。

注意:部分源程序存放在PR0G1.C中。

请勿改动数据文件IN.DAT中的任何数据,主函数main。、读

数据函数ReadDat()和输出数据函数WriteDat()的内容。

*/

^include

Sinclude

#defineMAXNUM200

intxx[MAXNUM];

inttotNum=0;/*文件IN.DAT中共有多少个正整数*/

inttotCnt=0;/*符合条件的正整数的个数*/

doubletotPjz=0.0;/*平均值*/

intReadDat(void);

voidWriteDat(void);

voidCalvalue(void)

{/**/

for(;xx[totNum]>0;totNum++)

if((xx[totNum]»1)%2==0)

{totCnt++;totPjz+=xx[totNum];}

if(totCnt)totPjz/=totCnt;

/**/

}

voidmain()

(

inti;

clrscr();

for(i=0;i<MAXNUM;i++)xx[i]=0;

if(ReadDat()){

printf(〃数据文件IN.DAT不能打开!\007\n〃);

return;

)

Calvalue();

printf(〃文件IN.DAT中共有正整数二%d个\n〃,totNum)

printf(〃符合条件的正整数的个数二%d个\n〃,totCnt);

printf(〃平均值二%.21f\n〃,totPjz);

WriteDat();

intReadDat(void)

(

FILE*fp;

inti=0;

if((fp=fopenCin.dat",”「〃))==NULL)return1

while(!feof(fp)){

fscanf(fp,〃%d,〃,&xx[i++]);

)

fclose(fp);

return0;

voidWriteDat(void)

FILE*fp;

fp=fopen("OUT.DAT","w");

fprintf(fp,z/%d\n%d\n%.21f\nzz,totNum,totCnt,totPjz)

fclose(fp);

)

out.dat文件内容应当如下:

160

80

5447.93

老枪

英文文章——字符串处理(共10题)

之一

code:

/*

函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到

字符串数组xx中;请编制函数SortCharD(),其函数的功能是:以

行为单位对字符按从大到小的顺序进行排序,排序后的结果仍按行

重新存入字符串数组xx中。最后mainO函数调用函数WriteDatO把

结果xx输出到文件OUT2.DAT中。

例:原文:dAe,BfC.

CCbbAA

结果:fedCBA.,

bbCCAA

原始数据文件存放的格式是:每行的宽度均小于80个字符,含

标点符号和空格。

注意:部分源程序存放在PR0G1.C中。

请勿改动主函数main()、读数据函数ReadDat()和输出数据函

数WriteDat()的内容。

*/

^include<stdio.h>

Sinclude<string.h>

Sinclude<conio.h>

charxx[50][80];

intmaxiine=0;/*文章的总行数*/

intReadDat(void);

voidWriteDat(void);

voidSortCharD(void)

{/**/

inti,j,k,m,n;charch;

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

{j=strlen(xx[i]);

for(m=0;m<j-1;m++)

{k=m;

for(n=m+l;n<j;n++)

if(xx[i][k]<xx[i][n])k=n;

if(k!=m)

{ch=xx[i][k];xx[i][k]=xx[i][m];xx[i][m]=ch;}

)

)

/**/

}

voidmain()

(

clrscr();

if(ReadDat()){

printf(〃数据文件IN.DAT不能打开!\n\007〃);

return;

}

SortCharD();

WriteDat();

)

intReadDat(void)

(

FILE*fp;

inti=0;

char*p;

if((fp=fopenClN.DAV,〃r〃))==NULL)return1

while(fgets(xx[i],80,fp)!=NULL){

p=strchr(xx[i],'\n');

if(p)*p=0;

i++;

)

maxline=i;

fclose(fp);

return0;

)

voidWriteDat(void)

FILE*fp

inti;

clrscr();

fp=fopen(〃0UT2.DAT”,〃w〃);

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

printf(〃%s\n〃,xx[i]);

fprintf(fp,〃如\n〃,xx[i]);

)

fclose(fp);

}

in.dat文件内容为:

Youcancreateanindexonanyfield,onseveralfieldstobe

used

together,oronpartsthereof,thatyouwanttouseasakey.

The

keysinindexesallowyouquickaccesstospecificrecordsand

define

ordersforsequentialprocessingofaISAMfile.Afteryouno

longer

needanindex,youcandeleteit.Additionandindexeshaveno

effect

onthedatarecordsoronotherindexes.

Youmaywantafieldinfieldineachrecordtouniquely

identifythat

recordfromallotherrecordsinthefile.Forexample,the

Employee

Numberfieldisuniqueifyoudonotassignthesamenumberto

two

differentemployees,andyouneverreassignthesenumbersto

other

employees.Ifyouwishtofindormodifytherecordbelonging

toa

specificemployee,thisuniquefieldsavesthethoubleof

determining

whetheryouhavethecorrectrecord.

Ifyoudonothaveauniquefield,youmustfindthefirst

record

thematchesyourkeyanddeterminewhethertherecordisthe

oneyou

want.Ifitisnotthecorrectone,youmustsearchagainto

findothers.

Ifyouknowthatyouhaveauniquefieldwithinyourrecords,

you

canincludethisfactinthekeydescription,andISAMwill

allowonly

uniquekeys.Forexample,ifyouspecifythattheemployee

numbersare

unique,ISAMonlyletsyouaddrecordstothefilefor,or

change

numbersto,employeenumbersthatdonotalreadlyexistint

file.

out2.dat文件内容应当为:

yxvuuttsssrroooonnnnnnlHiiiffeeeeeeeeeddddccbaaaaaY,

yywuuttttttttsssrrrrpoooooonnkhhhhgfeeeeeeeaaaaaT.,,

yyxwuutssssssrrqpoooonnnnllkkiiiiiiffeeeeeeeeddddccccccaaa

yuuttssssrrrrrrqpooooooonnnnl1liiiggffffeeeeeeedcaaSMIAA.

yxxvuttttsooonnnnnnnnliiiiihffeeeeeeeeeeedddddddccaaaaA.,

xtttssrrrrooooonnnihheeeeedddcaa.

yyywuuutttttrrqooonnnnnmllliiiiiiihhfffeeeeeeddddccaaaaaY

yxtttsrrrrrrrppoooooonmmmllllliihhhffeeeeeeeeeeddccaaFE.,

ywuuuuuttttssssrrqooooonnnnmmmliiiiihgffeeeeeeddbbaaN

yyvuuttttsssssrrrrrpoooonnnnnmmliihhgffeeeeeeeeeeeeddbaa,

yyywutttssrrrpoooooooonnnmmlliiiihhggfffeeeeeedddcbal.

yvuuuttttssssrqppooonnnmmllliiiiiiihhhgfffeeeeeeeeeeeddccba,

ywvutttrrrrrooohhhheeeeeedccca.

yyvuuuuuttttssrrrqooooonnnmliiiihhffffeeeeeddddcaal,

yyywuuttttttssrrrrroooonnnmmkiihhhhhheeeeeeeeeeeedddccaa

ywuuttttttttssssrrrroooooonnnnnmiiiihhhgffeeeeedcccaaaal..,

yyyywvuuuuuutttsrrrqoooooonnnlkiiiihhhffeeeeddcaaal,

yywwuttttssrpooonnnnnnllllllkiiiiiihhfeeeedddccccaaaaSMIA,

yyyyxuuuutttsssrrrqpppooonnmmmlIkiiihhffeeeeeeeeeeecbaaaF.,

yyuuutttssrrrrqoooooonnnl11iihhgffeeeeeedddccaaSMIA,,

yyxuuttttttsssrrrpoooonnnnmmmlIlliiihfeeeeeeeeddbbaaa.,

字符串处理之二

code:

/*

函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入

到字符串数组xx中;请编制函数ConvertCharAO,其函数的功能

是:以行为单位把字符串中的所有小写字母改写成该字母的下一

个字母,如果是字母z,则改写成字母a,大写字母和其它字符保

持不变。把已处理的字符串仍按行重新存入字符串数组xx中。最

后main()函数调用函数WriteDat()把结果xx输出到文件OUT3.DAT

中。

例:原文:Adb.Bcdza

abck.LLhj

结果:Aec.Bdeab

bcdl.LLik

原始数据文件存放的格式是:每行的宽度均小于80个字符,含

标点符号和空格。

注意:部分源程序存放在PR0G1.C中。

请勿改动主函数main()、读数据函数ReadDat。和输出数据函

数WriteDat()的内容。

*/

Sinclude

Sinclude

Sinclude

charxx[50][80];

intmaxiine=0;/*文章的总行数*/

intReadDat(void);

voidWriteDat(void);

voidConvertCharA(void)

{/**/

inti,j;

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

for(j=0;j<strlen(xx[i]);j++)

if(xx[i][j]==,T!)xx[i][j]=,;

elseif((xx[i]a')&&(xx[i][j]<'z'))xx[i][j]++;

1**1

)

voidmain()

(

clrscr();

if(ReadDat()){

printf(〃数据文件IN.DAT不能打开!\n\007〃);

return;

)

ConvertCharA();

WriteDat();

)

intReadDat(void)

FILE*fp

inti=0;

char*p;

if((fp=fopenClN.DAV,〃/))==NULL)return1

while(fgets(xx[i],80,fp)!=NULL){

p=strchr(xx[i],'\n');

if(p)*p=0;

i++;

)

maxline=i;

fclose(fp);

return0;

}

voidWriteDat(void)

(

FILE*fp;

inti;

clrscr();

fp=fopenC0UT3.DAV,Vz);

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

printf(级s\n〃,xx[i]);

fprintf(fp,xx[i]);

)

fclose(fp);

温馨提示

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

评论

0/150

提交评论