1、全国计算机等级考试三级网络技术南开上机100题3140题目31(结构体运算题)已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按金额从大到小进行排列,若金额相同,则按产品代码从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat() 把结果输出到文件OUT4.DAT中。部分源程序
2、存在文件prog1.c中。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。#include #include #include #include #include #define MAX 100typedef structchar dm5; /*产品代码*/char mc11; /*产品名称*/int dj; /*单价*/int sl; /*数量*/long je; /*金额*/PRO;PRO sellMAX;void ReadDat();void WriteDat();void SortDat()int i,j;PRO xy;for(i=0;
3、i99;i+)for(j=i+1;j100;j+) if(selli.jesellj.je|selli.je=sellj.je&strcmp(selli.dm,sellj.dm)0) xy=selli;selli=sellj;sellj=xy;void main()memset(sell,0,sizeof(sell);ReadDat();SortDat();WriteDat();void ReadDat()FILE *fp;char str80,ch11;int i;fp=fopen(IN.DAT,r);for(i=0;iMAX;i+) fgets(str,80,fp); memcpy(sel
4、li.dm,str,4); memcpy(selli.mc,str+4,10); memcpy(ch,str+14,4);ch4=0; selli.dj=atoi(ch); memcpy(ch,str+18,5);ch5=0; selli.sl=atoi(ch); selli.je=(long)selli.dj*selli.sl;fclose(fp);void WriteDat(void)FILE *fp;int i;fp=fopen(OUT4.DAT,w);for(i=0;iMAX;i+)printf(%s %s %4d %5d %5dn, selli.dm,selli.mc,selli.d
5、j,selli.sl,selli.je);fprintf(fp,%s %s %4d %5d %5dn, selli.dm,selli.mc,selli.dj,selli.sl,selli.je);fclose(fp);*题目32(结构体运算题)已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从大到小
6、进行排列,若产品名称相等,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT7.DAT中。部分源程序存在文件prog1.c中。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。#include #include #include #include #include #define MAX 100typedef structchar dm5; /*产品代码*/char mc11; /*产品名称*/int dj; /*单价*/int sl; /*数量*/long je; /*金额*/
7、PRO;PRO sellMAX;void ReadDat();void WriteDat();void SortDat()int i,j;PRO xy;for(i=0;i99;i+)for(j=i+1;j100;j+) if(strcmp(selli.mc,sellj.mc)sellj.je) xy=selli;selli=sellj;sellj=xy;void main()memset(sell,0,sizeof(sell);ReadDat();SortDat();WriteDat();void ReadDat()FILE *fp;char str80,ch11;int i;fp=fopen
8、(IN.DAT,r);for(i=0;i100;i+) fgets(str,80,fp); memcpy(selli.dm,str,4); memcpy(selli.mc,str+4,10); memcpy(ch,str+14,4);ch4=0; selli.dj=atoi(ch); memcpy(ch,str+18,5);ch5=0; selli.sl=atoi(ch); selli.je=(long)selli.dj*selli.sl;fclose(fp);void WriteDat()FILE *fp;int i;fp=fopen(OUT7.DAT,w);for(i=0;i100;i+)
9、printf(%s %s %4d %5d %5dn, selli.dm,selli.mc,selli.dj,selli.sl,selli.je);fprintf(fp,%s %s %4d %5d %5dn, selli.dm,selli.mc,selli.dj,selli.sl,selli.je);fclose(fp);*题目33(方差运算题)请编制函数ReadDat()实现从文件IN.DAT中读取1000个十进制整数到数组xx中;请编制函数Compute()分别计算出xx中偶数的个数even,奇数的平均值ave1,偶数的平均值ave2以及方差totfc的值,最后调用函数WriteDat()把
10、结果输出到OUT.DAT文件中。 计算方差的公式如下: N 2 totfc=1/N(xxi-ave2) i=1设N为偶数的个数,xxi为偶数,ave2为偶数的平均值。原始数据文件存放的格式是:每行存放10个数,并用逗号隔开。(每个数均大于0且小于等于2000)部分源程序存在文件prog1.c中。请勿改动主函数main()和输出数据函数writeDat()的内容。#include #include #include #define MAX 1000int xxMAX,odd=0,even=0;double ave1=0.0,ave2=0.0,totfc=0.0;void WriteDat(voi
11、d);int ReadDat(void)int i;FILE *fp;if(fp=fopen(IN.DAT,r)=NULL) return 1;/*编制函数ReadDat()的部分*/for(i=0;iMAX;i+) fscanf(fp,%d,&xxi);if(i+1)%10=0)fscanf(fp,n); /*/fclose(fp);return 0;void Compute(void) int i,yyMAX;for(i=0;iMAX;i+) yyi=0;for(i=0;iMAX;i+) if(xxi%2=0) yyeven+=xxi; ave2+=xxi; else odd+; ave1
12、+=xxi;if(odd=0) ave1=0;else ave1/=odd;if(even=0) ave2=0;else ave2/=even;for(i=0;ieven;i+) totfc+=(yyi-ave2)*(yyi-ave2)/even;void main()int i;for(i=0;iMAX;i+)xxi=0;if(ReadDat() printf(数据文件IN.DAT不能打开!007n); return;Compute();printf(OVEN=%dnAVE1=%fnAVER2=%fnTOTFC=%fn,even,ave1,ave2,totfc);WriteDat();voi
13、d WriteDat(void)FILE *fp;int i;fp=fopen(OUT.DAT,w);fprintf(fp,%dn%fn%fn%fn,even,ave1,ave2,totfc);fclose(fp);*题目34(素数题)无忧id 102 题提供了求素数isPrime()函数程序prog1.c的功能是:选出100以上1000之内所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数(如293)。计算并输出上述这些素数的个数cnt以及这些素数值的和sum。 请考生编写函数countValue( )实现程序要求,最后调用函数writeDAT()把结果cnt和sum输出到文件bc
14、10.out中。注意:部分源程序存放在文件prog1.c中。请勿改动主函数main( )和输出数据函数writeDAT()的内容。#include int cnt, sum ;int isPrime(int m)int i;for(i=2;im;i+) if(m % i=0)return 0;return 1;void countValue() int i,j,bw,sw,gw;for(i=100;i1000;i+) bw=i/100; sw=i%100/10; gw=i%10; if(isPrime(i)&(gw+sw)%10=bw) cnt+; sum+=i; void main()cnt
15、=sum=0;countValue() ;printf(素数的个数=%dn, cnt) ;printf(满足条件素数值的和=%d, sum) ;writeDAT() ;writeDAT()FILE *fp ;fp = fopen(bc10.out, w) ;fprintf(fp, %dn%dn, cnt, sum) ;fclose(fp) ;*题目35(级数运算题)某级数的前两项A1=1,A2=1,以后各项具有如下关系: An=An-2+2An-1(注:n-2与n-1为下标)下列程序prog1.c的功能是:要求依次对于整数M=100,1000和10000求出对应的n值,使其满足:Sn=M,这里
16、Sn=A1+A2+.+An,并依次把n值存入数组单元b0,b1和b2中,请编制jsValue()函数来实现此功能, 最后调用函数writeDat()把数组b中的值输出到out.dat文件中。请勿改动主函数main()和写函数writeDat()的内容。#include int b3;jsValue()int a1=1,a2=1,a12,sn,k=2;sn=a1+a2;while(1)a12=a1+2*a2; if(sn=100) b0=k; if(sn=1000) b1=k; if(sn=10000) b2=k;break; sn=sn+a12; a1=a2;a2=a12; k+;main()
17、jsValue();printf(M=100,n=%dnM=1000,n=%dnM=10000,n=%dn,b0,b1,b2);writeDat();writeDat()FILE *fp;fp=fopen(out.dat,w);printf(%dn%dn%dn,b0,b1,b2);fprintf(fp,%dn%dn%dn,b0,b1,b2);fclose(fp);运行结果为:M=100,n=6M=1000,n=9M=10000,n=11题目36(字符替换题)函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代
18、关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件pS6.DAT中。替代关系:f(p)=p*11 mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或f(p)对应的字符是数字0至9,则该字符不变,否则将f(p)所对应的字符进行替代。部分源程序存在文件prog1.c中。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。#include #include #
19、include #include unsigned char xx5080;int maxline=0;/*文章的总行数*/int ReadDat(void);void WriteDat(void);void encryptChar() int i,j;for(i=0;imaxline;i+) for(j=0;jstrlen(xxi);j+) if(xxij*11%256=0&xxij*11%256=9) continue; else xxij=xxij*11%256;void main()clrscr();if(ReadDat()printf(数据文件ENG.IN不能打开!n007);ret
20、urn;encryptChar();WriteDat();int ReadDat(void)FILE *fp;int i=0;unsigned char *p;if(fp=fopen(eng.in,r)=NULL) return 1;while(fgets(xxi,80,fp)!=NULL) p=strchr(xxi,n); if(p)*p=0; i+;maxline=i;fclose(fp);return 0;void WriteDat(void)FILE *fp;int i;fp=fopen(ps6.dat,w);for(i=0;imaxline;i+)printf(%sn,xxi);fp
21、rintf(fp,%sn,xxi);fclose(fp);*题目37(字符替换题)函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS7.DAT中。替代关系:f(p)=p*11 mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符是大写字母或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。部分源程序存在文件p
22、rog1.c中。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。#include #include #include #include unsigned char xx5080;int maxline=0;/*文章的总行数*/int ReadDat(void);void WriteDat(void);void encryptChar() int i,j;for(i=0;imaxline;i+) for(j=0;jstrlen(xxi);j+) if(xxij*11%256=A&xxij=Z)
23、 continue; else xxij=xxij*11%256;void main()clrscr();if(ReadDat()printf(数据文件ENG.IN不能打开!n007);return;encryptChar();WriteDat();int ReadDat(void)FILE *fp;int i=0;unsigned char *p;if(fp=fopen(eng.in,r)=NULL) return 1;while(fgets(xxi,80,fp)!=NULL) p=strchr(xxi,n); if(p)*p=0; i+;maxline=i;fclose(fp);retur
24、n 0;void WriteDat(void)FILE *fp;int i;fp=fopen(ps7.dat,w);for(i=0;imaxline;i+) printf(%sn,xxi); fprintf(fp,%sn,xxi);fclose(fp);*题目38(结构体运算题)已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT6.DAT中。部分源程序存在文件prog1.c中。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。#include #incl
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1