《计算机三级机试C语言南开一百题.pdf》由会员分享,可在线阅读,更多相关《计算机三级机试C语言南开一百题.pdf(133页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1已 知 数 据 文 件 IN 1.DAT中 存 有 200个 4位 数,并 已 调 用 读 函 数 readDat。把 这 些 数 存 入 数 组 a中,请 编 制 一 函 数 jsVal(),其 功 能 是:如 果 4位 数 各 位 上 的 数 字 均 是 奇 数,则 统 计 出 满 足 此 条 件 的 个 数 e n t,并 把 这 些 4位 数 按 从 大 到 小 的 顺 序 存 入 数 组 b中。最 后 调 用 函 数 writeDat。把 结 果 ent及 数 组 b中 符 合 条 件 的 4位 数 输 出 到 OUT1.DAT文 件。注 意:部 分 源 程 序 已 给 出。程 序
2、 中 已 定 义 数 组:a200,b 2 0 0,已 定 义 变 量:ent.请 勿 改 动 主 函 数 main。、读 函 数 readDat。和 写 函 数 writeDal。的 内 容。试 题 程 序:#in c lu d e#d e fin e M A X 200i n t aMAX,bMAX,cn t=0;v o id w r ite D a t();v o id js V a l()(int iJ;int al,a2,a3,a4;int temp;for(i=0;i200;i+)(a4=ai/1000;a3=ai%1000/100;a2=ai%100/10;al=ai%10;if
3、(a4%2!=0&a3%2!=0&a2%2!=0&al%2!=0)bcnt=ai;cnt+;for(i=0;icnt-1;i+)for(j=i+l;jcnt;j+)if(bibU)(temp=bi;bi=bU;bj=temp;)v o id re a d D a t()(i n t i;FILE*fp;fp=fo p en(IN I.D A T,nrn);for(i=0;i M A X;i+)fs c a n f(fp,n%d,&a i);f c l o s e(f p);v o id m a in()(i n t i;re a d D a t();js V a l();p r i n t f
4、(满 足 条 件 的 数=%dn”,e n t);for(i=0;icnt;i+)printf(%dnnzbi);printf(Mn);writeDat();1void writeDat()(FILE*fp;int i;fp=fopen(noutl.dat,nwn);fprintf(fp,%dnn,ent);for(i=0;icnt;i+)fprintf(fp,n%dnn,bi);fclose(fp);)2已 知 IN2.DAT中 存 有 200个 4位 数,并 已 调 用 读 函 数 readDat。把 这 些 数 存 入 数 组 a中,请 编 制 一 函 数 jsVal(),其 功 能 是
5、:依 次 从 数 组 a中 取 出 一 个 数,如 果 该 4位 数 连 续 大 于 该 4位 数 以 后 的 5个 数 且 该 数 是 奇 数,则 统 计 出 满 足 此 条 件 的 数 的 个 数 c m,并 把 这 些 4位 数 按 从 小 到 大 的 顺 序 存 入 数 组 6 3 最 后 调 用 写 函 数 w riteDat()把 结 果 cm及 数 组 b中 符 合 条 件 的 4位 数 输 出 到 OUT2.DAT文 件 中。注 意:部 分 源 程 序 已 给 出。程 序 中 已 定 义 数 组:a200,b 2 0 0,已 定 义 变 量:ent。请 勿 改 动 主 函 数
6、main。、链 函 册 eadDat()和 写 函 数 writeDat。的 内 容。试 题 程 序:#include#define MAX 200int aMAX,bMAX,ent=0;void writeDat();void jsVal()(int ij;int temp;for(i=0;iMAX-5;i+)if(ai%2!=0)for(j=i+l;j=i+5;j+)if(aiaj)break;else if(j=i+5)bcnt=ai;cnt+;for(i=0;icnt-l;i+)for(j=i+l;jbj)(temp=bi;bi=bU;bjl=temp;)oid readDat()in
7、t i;FILE*fp;fp=fopen(IN2.DATn,”r);for(i=0;i MAX;i+)fscanf(fpz%dn,&ai);fclose(fp);void main()(int i;readDat();jsVal();printf(满 足 条 件 的 数=%dn”,ent);for(i=0;i ent;i+)printf(%d,bi);printf(nnn);writeDat();Ivoid writeDat()FILE*fp;int i;fp=fopen(nOUT2.DATnz w);fprintf(fp,ent);for(i=0;i ent;i+)fprintf(fp,%d
8、n,bi);fclose(fp);)3已 知 在 文 件 IN3.DAT中 存 有 100个 产 品 销 售 记 录,每 个 产 品 销 售 记 录 由 产 品 代 码 dm(字 符 型 4位)、产 品 名 称 me(字 符 型 10位)、单 价 dj(整 型)、数 量 si(整 型)、金 额 je(长 整 型)几 部 分 组 成。其 中:金 额=单 价 X数 量。函 数 ReadDal()的 功 能 是 读 取 这 100个 销 售 记 录 并 存 入 结 构 数 组 sell中。请 编 制 函 数 SortDal。,其 功 能 要 求:按 产 品 名 称 从 小 到 大 进 行 排 列,若
9、 产 品 名 称 相 同,则 按 金 额 从 小 到 大 进 行 排 列,最 终 排 列 结 果 仍 存 入 结 构 数 组 seH中,最 后 调 用 函 数 WriteDalO把 结 果 输 出 到 文 件 OUT3.DAT中。注 意:部 分 源 程 序 已 给 出。清 勿 改 动 主 函 数 main。、读 函 数 ReadDat。和 写 函 数 WriteDat。的 内 容。试 题 程 序:#include#include#include#include#define MAX 100typedef struct(char dm5;char me11;int dj;int si;long
10、je;PRO;PRO sell MAX;void ReadDat();void WriteDat();/*产 品 代 码*/*产 品 名 称*/*单 价*/*数 量*/*金 额*/void SortDat()int ij;PRO temp;for(i=0;i99;i+)for(j=i+l;j0)(temp=selli;sell i=sellj;sellj=temp;)else if(strcmp(selli.mc,sellj.mc)=O)if(selli.jesellj.je)(temp=selli;selli=sellj;sellj=temp;)void main()(memset(sell
11、,0,sizeof(sell);ReadDat();SortDat();WriteDat();void ReadDat()FILE*fp;char str80,ch11;int i;fp=fopen(,IN3.DAT,nrn);for(i=0;i 100;i+)fgets(str,80,fp);memcpy(selli.dm,str,4);memcpy(selli.me,str+4,10);memcpy(ch,selli.djmemcpy(ch,selli.siselli.jestr+14,4);ch4=0;=atoi(ch);str+18,5);ch 5=0;=atoi(ch);=(long
12、)sell i.dj*selli.sifclose(fp);void WriteDat()(FILE*fp;int i;fp=fopen(,OUT3.DAT,/uwn);for(i=0;i 100;i+)f p r i n t f(f p,”%s%s%4d%5d%1 0 1 d n,s e l l i.dm,s e l l i.m e,s e l l i.d j,s e l l s e l l i.j e);)f c l o s e(f p);14函 数 ReadDatO的 功 能 是 实 现 从 文 件 ENG4.IN中 读 取 一 篇 英 文 文 章,存 入 到 字 符 串 数 组 xx中
13、。请 编 制 函 数 encryptChar(),按 给 定 的 替 代 关 系 对 数 组 xx中 的 所 有 字 符 进 行 替 代,结 果 仍 存 入 数 组 xx对 应 的 位 置 上,最 后 调 用 函 数 WriteDat()把 结 果 xx输 出 到 文 件 PS4.DAT中。替 代 关 系:f(p)=p*ll mod256(p是 数 组 xx中 某 一 个 字 符 的 ASCII值,f(p)是 计 算 后 新 字 符 的 ASCII值),如 果 计 算 后 f(p)的 值 小 于 等 于 32或 大 于 1 3 0,则 该 字 符 不 变,否 则 将 f(p)所 对 应 的 字
14、 符 进 行 替 代。注 意:部 分 源 程 序 已 给 出。原 始 数 据 文 件 存 放 的 格 式 是:每 行 的 宽 度 均 小 于 80个 字 符。请 勿 改 动 生 函 数 main。、读 函 数 ReadDat。和 写 函 数 WriteDat。的 内 容。试 题 程 序:#in c l u d e#in c l u d e#in c l u d e#in c l u d eu n s ig n e dc h a r x x 5 0 8 0;i n t m a x lin e=0;/*文 章 的 总 行 数*/i n t R e a d D a t(v o i d);v o id
15、 W r i t e D a t(v o i d);v o id e n c r y p t C h a r()(int ij;int str;char ch;for(i=0;imaxline;i+)(str=strlen(xxi);for(j=0;jstr;j+)ch=xxij*ll%256;if(ch130)continue;elsexxij=ch;v o id m a i n()(s y s t e m(“CLS”);i f(R e a d D a t()(p r i n t f(数 据 文 件 ENG4.工 N不 能 打 开!n 0 0 7n);r e t u r n;e n c r
16、y p t C h a r();W rite D a t();)int ReadDat(void)(FILE*fp;int i=0;unsigned char*p;if(fp=fopen(ENG4.INU,1 1 rH)=NULL)return 1;while(fgets(xxi,80,fp)!=NULL)p=strchr(xxi,n1);if(P)*P=0;i+;)maxline=i;fclose(fp);return 0;)void WriteDat(void)(FILE*fp;int i;fp=fopen(MPS4.DAT,nwH);for(i=0;i maxline;i+)(print
17、f(%snHz xx i);fprintf(fp,%sn,xx i);)fclose(fp);15函 数 ReadDat。的 功 能 是 实 现 从 文 件 IN5.DAT中 读 取 篇 英 文 文 章 存 入 到 字 符 串 数 组 xx中。请 编 制 函 数 ConvertCharAO,该 函 数 的 功 能 是:以 行 为 单 位 把 字 符 串 中 的 所 有 小 写 字 母 改 写 成 该 字 母 的 下 一 个 字 母,如 果 是 字 母 z,则 改 写 成 字 母 a。大 写 字 母 仍 为 大 写 字 母,小 写 字 母 仍 为 小 写 字 母,其 他 字 符 不 变。把 已
18、处 理 的 字 符 串 仍 按 行 重 新 存 入 字 符 半 数 组 xx中,最 后 调 用 函 数 WriteDat。把 结 果 xx输 出 到 文 件 OUT5.DAT中。例 如,原 文:Adb.Bcdzaabck.LLhj结 果:Aec.BdeabbcdLLLik原 始 数 据 文 件 存 放 的 格 式 是:每 行 的 宽 度 均 小 于 80个 字 符,含 标 点 符 号 和 空 格。注 意:部 分 源 程 序 已 给 出。请 勿 改 动 主 函 数 main()、读 函 数 RcadDat()和 写 函 数 WriteDat()的 内 容。试 题 程 序:#include#inc
19、lude#include char xx 50 80;int maxline=0;/*文 章 的 总 行 数*/int ReadDat(void);void WriteDat(void);void ConvertCharA(void)(int ij;int str;for(i=0;imaxline;i+)(str=strlen(xxi);for(j=0;jstr;j+)if(xxiLj=a&xxij=R)if(xxij=z)xxij=a;elsexxij+=l;void main()(system(nCLSH);if(ReadDat()printf(数 据 文 件 工 N5.DAT不 能 打
20、开!n007”);return;)ConvertCharA();WriteDat();int ReadDat(void)(FILE*fp;int i=0;char*p;if(fp=fopen(IN5.DATnr)=NULL)return 1;while(fgets(xxi,80,fp)!=NULL)p=strchr(xxi,n1);if(p)*p=0;i+;maxline=i;fclose(fp);return 0;Ivoid WriteDat(void)(FILE*fp;int i;system(CLS);fp=f open(M OUT 5.DAT*,”w”);for(i=0;i maxli
21、ne;i+)(printf(H%sn,xxi);fprintf(fp,sn”,xx i);1fclose(fp);)6在 文 件 IN6.DAT中 有 200个 正 整 数,且 每 个 数 均 在 1000至 9999之 间。函 数 readDat。的 功 能 是 读 取 这 200个 数 存 放 到 数 组 aa中。请 编 制 函 数 jsS o rt(),该 函 数 的 功 能 是:要 求 按 每 个 数 的 后 3位 的 大 小 进 行 降 序 排 列,将 排 序 后 的 前 10个 数 存 入 数 组 别,如 果 数 组 b中 出 现 后 3位 相 等 的 数,则 对 这 些 数 按
22、原 始 4位 数 据 进 行 升 序 排 列。最 后 调 用 函 数 writeDat。把 结 果 bb输 出 到 文 件 OUT6.DAT中。例 如:处 理 前 9012 5099 6012 7025 8088处 理 后 5099 8088 7025 6012 9012注 意:部 分 源 程 序 已 给 出。请 勿 改 动 主 函 数 main。、读 函 数 readDat。和 写 函 数 wrileDal。的 内 容。试 题 程 序:#include#include string.h#include int aa200,bb10;void readDat();void writeDat()
23、;void jsSort()(int ij;int temp;for(i=0;i199;i+)for(j=i+l;j200;j+)(if(aai%1000aaj)(temp=aai;aai=aaLj;aaj=temp;)for(i=0;i10;i+)bbi=aai;Ivoid main()(readDat();jsSort();writeDat();)void readDat()(FILE*in;int i;in=fopen(HIN6.DAT,nrn);for(i=0;i 200;i+)fscanf(in,”d,”,&aai);fclose(in);)void writeDat()(FILE*
24、out;int i;out=fopen(“OUT6.DAT”,nwn);system(nCLS”);for(i=0;i 10;i+)printf(i=%dz%dnH r i+1,bbi);fprintf(out,dn”,bbi);)fclose(out);)7函 数 ReadDaK)的 功 能 是 实 现 从 文 件 IN7.DAT中 读 取 一 篇 英 文 文 章 存 入 到 字 符 串 数 组 xx中。清 编 制 函 数 SortCharD(),该 函 数 的 功 能 是:以 行 为 单 位 对 字 符 按 从 大 到 小 的 顺 序 进 行 排 序,排 序 后 的 结 果 仍 按 行 重
25、 新 存 入 字 符 串 数 组 xx中,最 后 调 用 函 数 WriteDat()把 结 果 xx输 出 到 文 件 OUT7.DATL|J。例 如,原 文:dAe,BfCCCbbAA结 果:fedCBA,bbCCAA原 始 数 据 文 件 存 放 的 格 式 是:每 行 的 宽 度 均 小 于 80个 字 符,含 标 点 符 号 和 空 格。注 意:部 分 源 程 序 已 给 出。请 勿 改 动 主 函 数 main()、读 函 数 ReadDat()和 写 函 数 WriteDal()的 内 容。试 题 程 序:#include#include string.h#include cha
26、r xx 50 80;int maxline=0;int ReadDat(void);void WriteDat(void);void SortCharD()(int ij,k;int str;char temp;for(i=0;imaxline;i+)str=strlen(xxi);for(j=0;jstr-l;j+)for(k=j+l;kstr;k+)if(xxijxxik)(temp=xxij;xxij=xxik;xxik=temp;void main()(system(*CLS,*);if(ReadDat()printf(数 据 文 件 工 N7.DAT不 能 打 开!n007);re
27、turn;SortCharD();WriteDat();1int ReadDat(void)(FILE*fp;int i=0;char*p;if(fp=fopen(IN7.DATn,nrn)=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()(FILE*fp;int i;system(nCLS);fp=fopen(“OUT7.DAT“,“w“);for(i=0;imaxline;i+)printf(%snn
28、zxxi);fprintf(fp,*%snn,xx i);)fclose(fp);)8对 10个 候 选 人 进 行 选 举,现 有 一 个 100条 记 录 的 选 票 数 据 文 件 IN 8.D A T,其 数 据 存 放 的 格 式 是 每 条 记 录 的 长 度 均 为 10位,第 一 位 表 示 第 个 人 的 选 中 情 况,第 二 位 表 示 第 二 个 人 的 选 中 情 况,依 次 类 推。每 一 位 内 容 均 为 字 符 0或 1,1表 示 此 人 被 选 中,0表 示 此 人 未 被 选 中,若 一 张 选 票 选 中 人 数 小 于 等 于 5个 人 时 则 被 认
29、 为 是 无 效 的 选 票。给 定 函 数 ReadDat。的 功 能 是 把 选 票 数 据 读 入 到 字 符 串 数 组 xx中。请 编 制 函 数 CountRs。来 统 计 每 个 人 的 选 票 数 并 把 得 票 数 依 次 存 入 yyO到 yy 中,最 后 调 用 函 数 WriieDat。把 结 果 yy输 出 到 文 件 OUT8.DAT中。注 意:部 分 源 程 序 已 给 出。请 勿 改 动 生 函 数 main。、读 函 数 ReadDat。和 写 函 数 WriteDat。的 内 容。试 题 程 序:#include#include char xx10011;i
30、nt yy10;int ReadDat(void);void WriteDat(void);void CountRs(void)(int i j;int ent;for(i=0;i10;i+)yyi=o;for(i=0;i100;i+)cnt=O;for(j=0;j5)(for(j=0;j10;j+)if(xxij=T)yyj+;void main()(int i;for(i=0;i10;i+)yyi=o;if(ReadDat()printf(选 票 数 据 文 件 工 N8.DAT不 能 打 开!00八 n”);return;)CountRs();WriteDat();int ReadDat
31、(void)(FILE*fp;int i;char tt(13;if(fp=fopen(nIN8.DAT*r)=NULL)return 1;for(i=0;i 100;i+)if(fgets(tt,13,fp)=NULL)return 1;memcpy(xxi,tt,10);)fclose(fp);return 0;void WriteDat(void)(FILE*fp;int i;fp=fopen(“OUT8.DAT”,nwn);for(i=0;i 10;i+)(fprintf(fp,%dnn,yyi);printf(第 d个 人 的 选 票 数=%dn”,i+1,yy i);fclose(
32、fp);下 列 程 序 的 功 能 是:利 用 以 下 所 示 的 简 单 迭 代 方 法 求 方 程:cos(x)-x=0的 个 实 根。xn+1=cos(xn)迭 代 步 骤 如 下:(1)取 x l初 值 为 0.0。(2)x O=x l,把 x l的 值 赋 给 x0。(3)xl=cos(xO),求 出 一 个 新 的 x l。(4)若 x d x l的 绝 对 值 小 于 0.000001,执 行 步 骤(5),否 则 执 行 步 骤(2).(5)所 求 x l就 是 方 程 cos(x)-x=0的 个 实 根,作 为 函 数 值 返 回。请 编 写 函 数 counWalue()实
33、 现 程 序 要 求,最 后 调 用 函 数 writeDAT()把 结 果 输 出 到 文 件 oul9.dat。注 意:部 分 源 程 序 已 给 出。请 勿 改 动 主 函 数 main。和 写 函 数 writeDAT。的 内 容。试 题 程 序:#include#include#include void writeDAT();float countvalue()(float x0,xl=0.0;while(l)(x0=xl;xl=cos(x0);if(fabs(x()-x 1)1 e-6)break;)return xl;void main()(system(nCLS);printf
34、(nn,countvalue();printf(n%f nn,cos(countValue()-countValue();writeDAT();1void writeDAT()(FILE*wf;wf=fopen(out9.dat,w”);fprint f(wf,n,countValue();fclose(wf);)10请 编 写 函 数 丫(:01111比(31*2,int*n),它 的 功 能 是:求 出 1到 1 000之 内 能 被 7或 11整 除 但 不 能 同 时 被 7和 11整 除 的 所 有 整 数 并 存 放 在 数 组 a中,并 通 过 n返 回 这 些 数 的 个 数。
35、注 意:部 分 源 程 序 已 给 出。请 勿 改 动 主 函 数 main()和 写 函 数 writeDAT。的 内 容。试 题 程 序:include#include void writeDAT();void countvalue(int*arint*n)(int i;*n=0;for(i=l;i=1000;i+)if(i%7=0&i%ll!=0)ll(i%7!=0&i%ll=0)(*a=i;*n=*n+l;a+;void main()(int aa1000,n,k;system(nCLS);countvalue(aa,&n);for(k=0;kn;k+)if(k+1)%10=0)(pr
36、intf(w%5dnr aak);printf(nnn);)else printf(H%5d,aa k);writeDAT();)void writeDAT()(int aa1000,n,k;FILE*fp;fp=fopen(out 10.dat,nw);countvalue(aa,&n);for(k=0;kn;k+)if(k+l)%10=0)(fprintf(fpz%5d,aak);fprintf(fp,nn);1else fprintf(fp,%5d,aa k);fclose(fp);111已 知 在 文 件 IN11.DAT中 存 有 若 干 个(个 数 2()0)4位 数 字 的 正
37、整 数,函 数 ReadDal。的 功 能 是 读 取 这 若 干 个 正 整 数 并 存 入 数 组 xx中。请 编 制 函 数 CalValue(),其 功 能 要 求:(1)求 出 该 文 件 中 共 有 多 少 个 正 整 数 lolNum:(2)求 这 些 数 右 移 1位 后,产 生 的 新 数 是 偶 数 的 数 的 个 数 to tC n t,以 及 满 足 此 条 件 的 这 些 数(右 移 前 的 值)的 算 术 平 均 值 to tP jz,最 后 调 用 函 数 WrileDat()把 所 求 的 结 果 输 出 到 文 件 OUT11.DAT中。注 意:部 分 源 程
38、 序 已 给 出。请 勿 改 动 主 函 数 main。、读 函 数 RcadDat。和 写 函 数 WriteDat。的 内 容。试 题 程 序:#include#include#define MAXNUM 200int xxMAXNUM;int totNum=0;/*文 件 工 Nil.DAT中 共 有 多 少 个 正 整 数*/int totCnt=0;/*符 合 条 件 的 正 整 数 的 个 数*/double totPjz=0.0;/*平 均 值*/int ReadDat(void);void WriteDat(void);void CalValue(void)(int i;int
39、 data;for(i=0;i0)(totNum+;data=xxil;if(data%2=0)(totCnt+;totPjz+=xxi;totPjz/=totCnt;void main()(int i;system(rtCLS);for(i=0;i MAXNUM;i+)xxi=0;if(ReadDat()printf(数 据 文 件 工 Nll.DAT不 能 打 开!00八 n”);return;)CalValue();printf(文 件 Nil.DAT中 共 有 正 整 数=%d j n”,totNum);printf(符 合 条 件 的 正 整 数 的 个 数=%d 个 值”,totC
40、nt);printf(平 均 值=%.21fn,totP jz);WriteDat();1int ReadDat(void)(FILE*fp;int i=0;if(fp=fopen(工 Nil.DAT”,“r)=NULL)return 1;while(!feof(fp)(fscanf(fp,”d,”,&xx i+);)fclose(fp);return 0;void WriteDat(void)(FILE*fp;fp=fopen(MOUT11.DAT,nwK);fprintf(fp,%dn%dn%.21fn,totNum,totCnt,totPjz);fclose(fp);)12已 知 数 据
41、 文 件 IN12.DAT中 存 有 300个 4位 数,并 已 调 用 读 函 数 readDat。把 这 些 数 存 入 数 组 a中。请 编 制 函 数 jsV alueQ,其 功 能 是:求 出 千 位 数 上 的 数 加 个 位 数 上 的 数 等 于 百 位 数 上 的 数 加 十 位 数 上 的 数 的 个 数 e n t,再 把 所 有 满 足 此 条 件 的 4位 数 依 次 存 入 数 组 别,然 后 对 数 组 b的 4位 数 按 从 小 到 大 的 顺 序 进 行 排 序,最 后 调 用 写 函 数 writeDat。把 数 组 b中 的 数 输 出 到 OUT12.D
42、AT文 件 中。例 如:6712,6+2=7+1,则 该 数 满 足 条 件,存 入 数 组 b中,且 个 数 cnt=cnt+l。8129,8+9 W 1+2,则 该 数 不 满 足 条 件,忽 略。注 意:部 分 源 程 序 已 给 出。程 序 中 已 定 义 数 组:a300,b 3 0 0,已 定 义 变 量:ento请 勿 改 动 主 函 数 main。、读 函 数 readDat。和 写 函 数 writeDat。的 内 容。试 题 程 序:#include int a 300,b300,cnt=0;void readDat();void writeDat();void jsVal
43、ue()(int ij;int al,a2,a3,a4;int temp;for(i=0;i300;i+)(a4=ai/1000;a3=ai%1000/100;a2=ai%100/10;al=ai%10;if(a4+al=a3+a2)(bcnt=ai;cnt+;for(i=0;icnt-l;i+)for(j=i+l;jblj)(temp=bi;bi=bj;bj=temp;void main()int i;readDat();jsValue();writeDat();printf(ncnt=%dn,ent);for(i=0;icnt;i+)printf(b%d=%dn,iz bi);)void
44、readDat()(FILE*fp;int i;fp=fopen(MIN12.DATn,r);for(i=0;i300;i+)fscanf(fp,”d,&a i);fclose(fp);1void writeDat()(FILE*fp;int i;fp=fopen(nOUT12.DATn,nw);fprintf(fp,%dn,ent);for(i=0;icnt;i+)fprintf(fp,”d,n”,b i);fclose(fp);)已 知 数 据 文 件 IN13.DAT中 存 有 200个 4位 数,并 已 调 用 读 函 数 readDat。把 这 些 数 存 入 数 组 a中,请 编
45、制 一 函 数 js V a l(),其 功 能 是:如 果 4位 数 各 位 上 的 数 字 均 是 0或 2或 4或 6或 8,则 统 计 出 满 足 此 条 件 的 数 的 个 数 e n t,并 把 这 些 4位 数 按 从 大 到 小 的 顺 序 存 入 数 组 b中,最 后 调 用 写 函 数 writeDat。把 结 果 皿 及 数 组 b中 符 合 条 件 的 4位 数 输 出 到 OUT13.DAT文 件 中。注 意:部 分 源 程 序 已 给 出。程 序 中 已 定 义 数 组:a200,b 2 0 0,已 定 义 变 量:e n t。请 勿 改 动 主 函 数 main。
46、、读 函 数 readDat()和 写 函 数 wri tcDat()的 内 容。试 题 程 序:include#define MAX 200int aMAX,bMAX,ent=0;void writeDat();void jsVal()(intij;int al,a2,a3,a4;int temp;for(i=0;i200;i+)(a4=ai/1000;a3=ai%1000/100;a2=ai%100/10;al=ai%10;if(a4%2=0&a3%2=0&a2%2=0&al%2=0)bcnt=ai;cnt+;)for(i=0;icnt-l;i+)for(j=i+l;jcnt;j+)if(
47、bibU)(temp=bi;bi=b|j;bj=temp;void readDat()(int i;FILE*fp;fp=fopen(MIN13.DATn,nrn);for(i=0;i MAX;i+)f scanf(fp,n%dn,&a i);fclose(fp);void main()(int i;readDat();jsVal();print f(满 足 条 件 的 数=%dn”,ent);for(i=0;i ent;i+)printf(n%d,bi);printf(nnn);writeDat();void writeDat()(FILE*fp;int i;fp=fopen(nOUT13.
48、DAT,w);fprint f(fp,%dn,ent);for(i=0;i ent;i+)fprintf(fp,%dnH,bi);fclose(fp);)14已 知 数 据 文 件 IN14.DAT中 存 有 300个 4位 数,并 已 调 用 读 函 数 readDat。把 这 些 数 存 入 数 组 a中,请 编 制 一 函 数 jsValue。,其 功 能 是:求 出 千 位 数 上 的 数 加 百 位 数 上 的 数 等 于 十 位 数 上 的 数 加 个 位 数 上 的 数 的 个 数 c n i,再 把 所 有 满 足 此 条 件 的 4位 数 依 次 存 入 数 组 b中,然 后
49、 对 数 组 b的 4位 数 从 大 到 小 进 行 排 序,最 后 调 用 写 函 数 writeDat。把 数 组 b中 的 数 输 出 到 OUT14.DAT文 件。例 如:7153,7 4-1=5+3,则 该 数 满 足 条 件,存 入 数 组 b中,且 个 数 cnt=cnt+l。8129,8+1 六 2+9,则 该 数 不 满 足 条 件,忽 略。注 意:部 分 源 程 序 已 给 出。程 序 中 已 定 义 数 组:a300,b 3 0 0,己 定 义 变 量:ent。请 勿 改 动 主 函 数 main()、读 函 数 readDat。和 写 函 数 writeDat。的 内
50、容。试 题 程 序:#include int a 300,b300,cnt=0;void readDat();void writeDat();void jsValue()(int ij;int al,a2,a3,a4;int temp;for(i=0;i300;i+)(a4=ai/1000;a3=ai%1000/100;a2=ai%100/10;al=ai%10;if(a4+a3=a2+al)(bcntj=ai;cnt+;)for(i=0;icnt-1;i+)for(j=i+l;jcnt;j+)if(bibj)(temp=bi;bi=bU;bj=temp;void main()(int i;r