版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
上机试题总结作者: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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农村宅基地建房合同样本
- 妊娠高血压综合征:孕期护理要点
- 供应链管理会议指南
- 老年公寓推广:让晚年生活更美好
- 上海国际医院感染控制药品安全论坛
- 病毒科感染防控指南
- 农业生产:大蒜病虫害防治指南
- 公司内部管理的协议书
- 公司员工劳动合同
- 报告类应用案例-关于报告日后调整事项的会计处理
- 建筑抗震设计规范的发展沿革和最新修订
- 轴类零件进厂检验标准
- 林下种植基地项目建议书范文
- 《2保护眼睛课件》小学综合实践豫海燕课标版五年级下册课件6256
- 全市公开课专题复习:化学方程式的计算
- MFI认证资料整理
- RPN风险评估及降低
- 高空作业施工安全技术交底(共5页)
- 注塑车间卫生管理制度
- 资产清查工作报告范文5篇
- 《计量经济学》期末考试题库及答案(完整版)
评论
0/150
提交评论