《二级C语言上机题.docx》由会员分享,可在线阅读,更多相关《二级C语言上机题.docx(84页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、题目1请编写一个函数jsvahie(intm,intk,intxx),该函数的功能是:将大于整数m且 紧靠m的k个素数存入数组xx传回。最后调用函数writedat。读取10组数据,分别得出结果且把结果输出到文件 out.dat 中 o部分源程序存在文件progl.c中。例如:若输入17 5则应输出:19, 23, 29, 31, 37。请勿改动主函数main。和写函数writedat()的内容。# include# includevoid readwritedat();intisp(int m)int i;for(i=2;i if(m % i=0)retum 0;return 1;void
2、num(int m,int kJ nt xx)# int s=0;for(m=m+l ;k0;m+)if(isp(m) xxs+=m; k-;# ain 0int m,n,xx100();clrscr();printfCAnpIease enter two integers:1);scanf(,%d%d&m,&n);num(m,n,xx);for(m=0;m printf(M%d H,xx(m);printf)readwritedat();void readwritedat()int m,n,xx 1000, i;file *rf,*wf;rf=fopen(,in.dat,;,rH);wf=f
3、open(out.dat,/w);for(i=0;i 10;i+) fscanf(rf,n%d %dn,&m,&n);num(m,n,xx);for(m=0;m fclose(rf);fclose(wf);题目2已知数据文件in.dat中存有200个四位数,并已调用读函数readdat。把这些数存 入数组a中,请考生编制一函数jsval(),其功能是:如果四位数各位上的数字均是0 或2或4或6或8,则统计出满足此条件的个数ent,并把这些四位数按从大到小的 顺序存入数组b由最后main()函数调用写函数writedat。把结果ent以及数组b中符 合条件的四位数输出到out.dat文件中。注意
4、:部分源程序存在文件progl.c中。程序中已定义数组:a200, b200,已定义变量:ent请勿改动数据文件in.dat中的任何数据、主函数main。、读函数readdat。和写函 数writedat()的内容。#include#define m ax 200intam ax, bin ax, cnt= 0 ;void jjvalO intijqw ,bw,sw,gw ;forG=0;iM AX ;I+) qw=ai/l000; bw=ai/100;sw=ai0/10; gw=ai;ifGw& & qw% 2=0& & bw% 2=0& & sw% 2=0& & gw% 2=0) bcnt
5、+=ai;for(F0;iCNT-l;I+)for(j=i+l;jCNT;J+)if缶田)void readdatOinti;fie*fp ;= fopen Cin.daC Y);for(i= 0 ; i m ax ;计+) fscanf(fp,,z% d”, & a00) fclose (ft);void main()int i;readdat();jsval();pri ntf(满足条件的数=%dn,cnt);for(i=0;icnt;i+) printf(d”,bi); printf(n);writedat()file *fp;int i; fp=fopenC4out.dafMw,);f
6、printf(fp,M%dn,cnt); for(i=0;i=O;j)k=0;m em set(tem ,0,80);if(xx 国righto=j;for(s=righto+l;s tem k+=xxis;for(s=0;sif(xx is !=o)tem k+=xxis;stn2py(xxi,tem);)else continue;)void main()clrscr();if(ReadDat() printf(数据文件IN.DAT不能打开!n00件);return ;StrOR();WriteDat();in tRe ad D at(voi d)(FILE *fp ;int i = 0
7、;char *p ;if(fp = fopenCTN.DAT, 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;clrscr();fp = fopen(,OUT5.DATM, w);fbr(i = 0 ; i =0; j) if (isalpha(xxi j) k+;else for(m=1;m=k;m+) strs+
8、=xxij+m;k=0;if(!isalpha(xxi j) strs+=,,;for(m=1;m=k;m+)strs+=xxij+m;strs=, 0;strcpy(xxi, str); clrscr ();if (ReadDat () printf (数据文件IN. DAT不能打开! n007); return;StrOL();WriteDat ();int ReadDat(void)FILE *fp;int i=0;char *p;if (fp=fopen CIN. DAT*, r*) =NULL) return 1 while(fgets(xxi, 80, fp) !=NULL) p=
9、strchr(xxi, 9 nf );if (p)*p=0;i+;maxline=i;fclose (fp);return 0;void WriteDat(void)FILE *fp;int i;clrscr ();fp=fopen (,z0UT6. DAT”, w);for (i=0; iprintf (/,%sn/,, xxi)fprintf (fp,%sn,xxi);)fclose(fp);题目5在文件in. dat中有200个正整数,且每个数均在1000至9999 之间。函数ReadDat ()读取这200个数存放到数组aa中。请编制函数jsSort (), 其函数的功能是:要求按每个
10、数的后三位的大小进行升序排列,然后取出满足 此条件的前10个数依次存入数组bb中,如果后三位的数值相等,则按原先的 数值进行降序排列。最后调用函数WriteDatO把结果bb输出到文件out. dat 中。例:处理前 6012 5099 9012 7025 8088处理后 9012 6012 7025 8088 5099部分源程序存在文件progl. c中。请勿改动主函数main。、读数据函数ReadDat ()和输出数据函数 WriteDatO 的内容。#includettinclude#includeint aa200, bb10;void jsSort ()int i, j, data;
11、for(i=0;i199;i+)for (j=i+l; jaaj00 | | aai00=aaj00&aaifor (i=0;i10;i+)bbi=aai;void main()readDat ();jsSort (); writ eDat ();readDat ()FILE *in; int i;in=fopen( in. dat , r );for(i=0; i200; i+) fscanf (in,,z%d,&aai); fclose(in);FILE *out; int i;clrscr ();out=fopen(out. dat, w);for(i=0; i10; i+) print
12、f (/z %d”, bbi);fprintf (out, %dn, bbi);fclose(out);题目6在文件in.dat中有200个正整数,且每个数均在1000至9999之间。函数ReadDat() 读取这200个数存放到数组aa中。请编制函数jsSort(),其函数的功能是:要求按每个数 的后三位的大小进行降序排列,然后取出满足此条件的前10个数依次存入数组b中,如 果后三位的数值相等,则按原先的数值进行升序排列。最后调用函数WriteDat。把结果 bb输出到文件out.dat中。例:处理前 9012 5099 6012 7025 8088处理后 5099 8088 7025 60
13、129012注意:部分源程序已给出。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数WriteDat。的内 容。# include# include# includeintaa200,bbI0;void jsSort()int i,j,data;for(i=0;i199;i+)for(j=i+l;j200;j+)if(aai00aa(j)data=aai;aai=aaj;aaj=data;for(i=0;i10;i+) bbi=aai;一,readD atO ;SortO;writeD atO; system Cpaused;)readD atOFILE *in;inti;i
14、n=fope n( in.dat , );for(i=0; i200; i+) fscanf(in9M%d,M,&aai);fclose (in);w riteD atOFILE *out; inti;ckscrO ; outFfopenCoutdat/w ) for(i=0; i10; i+) printfCn% d,% dnn,i+l,bbi); ftrintffout,M%dnM,bbi);)fc lose foul);题目7已知在文件IN. DAT中存有100个产品销售记录,每个产品销售记录由产 品代码dm(字符型4位),产品名称me(字符型10位),单价dj(整型),数量 si (整
15、型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。 函数ReadDatO是读取这100个销售记录并存入结构数组sell中。请编制函 数SortDatO,其功能要求:按产品代码从大到小进行排列,若产品代码相同, 则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调 用函数WriteDatO把结果输出到文件0UT6. DAT中。部分源程序存在文件progl. c中。请勿改动主函数main。、读数据函数ReadDat ()和输出数据函数 WriteDatO 的内容。#include#include ttinclude ttinclude ttincludettde
16、fine MAX 100 typedef struct char dm5 ; /*产品代码*/ char mcll; /*产品名称*/ int dj; /*单价*/ int si; /*数量*/ long je; /*金额*/PRO;PRO sellMAX;void ReadDat ();void WriteDat ();void SortDat ()int i, j;PRO xy;for(i=0;i99;i+)for(j=i+l;j100;j+)if(strcmp(selli. dm, sellj. dm)01 |strcmp(selli. dm,sellj.dm )=0&selli.je
17、xy=selli; sell i=sellj; sellj=xy;一memset(sell, 0,sizeof(sell);ReadDat ();SortDat ();WriteDatO ;void ReadDat ()FILE *fp;char str80, chll;int i;fp=fopen(z,IN. DAT, r);for(i=0;i100;i+) fgets(str, 80, fp);memcpy (selli. dm, str, 4);memcpy (selli. me, str+4, 10);memcpy(ch, str+14,4);ch4=0;selli. dj=atoi
18、(ch);memcpy(ch, str+18,5);ch5=0;sell i. sl=atoi(ch);selli. je=(long)selli. dj*selli.si;fclose(fp);void WriteDat(void) (FILE *fp; int i;fp=fopen(0UT6. DA,w);for(i=0;i100;i+) printf (/z%s %s M n, selli. dm, sell i. me, selli. dj, selli .si, selli. je);fprintf(fp, w%s %s M n, selli. dm, selli. me, sell
19、i. dj, sei 1 i. si, selli. je);)fclose(fp);题目8函数ReadDatO实现从文件ENG. IN中读取一篇英文文章,存入 到字符串数组xx中;请编制函数encryptCharO ,按给定的替代关系对数组 xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数 WriteDat ()把结果xx输出到文件PSI. DAT中。替代关系:f(p)=P*H mod 256 (p是数组中某一个字符的ASCII值, f (p)是计算后新字符的ASCI I值),如果计算后f (p)值小于等于32或大于130, 则该字符不变,否则将f(p)所对应的字符进行替
20、代。(注意中间变量用无符 号整型),部分源程序存在文件progl.c中。原始数据文件存放的格式是:每 行的宽度均小于80个字符。请勿改动主函数main。、读数据函数ReadDat ()和输出数据函数 WriteDat ()的内容。#include#includeincludeincludeunsigned char xx5080;int maxline=0;/*文章的总行数*/int ReadDat(void);void WriteDat(void);void encryptChar() int i, j;for(i=0;ifor(j=0;jif (xxi j*ll%6130) continu
21、e else xxi j=xxi j*ll%6;clrscr ();if (ReadDat () printf (数据文件ENG. IN不能打开! n007);return;encryptChar ();WriteDat();int ReadDat(void)FILE *fp;int i=0;unsigned char *p;if (fp=fopen(cng. 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;FILE
22、 *fp; int i;fp=fopen(z,psl. dat,w);for(i=0;iprintf (z,%sn,z, xxi)fprintf (fp, sn, xxi);)fclose(fp); 题目9函数ReadDat ()实现从文件IN. DAT中读取一篇英文文章存入到字符串数 组xx中,请编制函数SortCharDO,其函数的功能是:以行为单位对字符按 从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中, 最后调用函数writeDatO把结果xx输出到文件OUT2. DAT中。例:原文:dAe, BfC.CCbbAA结果:fedCBA.bbCCAA原始数据文件存放的格
23、式是:每行的宽度均小于80个字符,含标点符号 和空格。部分源程序存在文件progl. c中。请勿改动主函数main。、读数据函数ReadDat ()和输出数据函数 writ eDat ()的内容。ttinclude#include#includechar xx5080;int maxline=0;/*文章的总行数*/int ReadDat(void);void WriteDat(void);void SortCharD(void)int i, j, k, strl;char ch;for(i=0;i strl=strlen(xxi);for(j=0;j for(k=j+l ;k if(xxij
24、ch=xxi j; xxij=xxi k; xxik=ch;void main()clrscr ();if (ReadDatO) printf (数据文件IN. DAT不能打开! n007); return;SortCharDO ;WriteDatO ;int ReadDat(void)FILE *fp;int i=0;char *p;if(fp=fopen(IN. DAT, 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
25、;void WriteDat(void)(FILE *fp;int i;fp=fopenC0UT2. DAT, w);for (i=0; i printf (%sn”, xxi);fprintf (fp, %sn, xxi);fclose(fp);一函数ReadDat。实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中, 请编制函数ConveilCharA。,其函数的功能是:以行为单位把字符串中的所有小写字 母改写成该字母的下一个字母,如果是字母z,则改写成字母ao大写字母仍为大写 字母,小写字母仍为小写字母,其他字符不变。把已处理的字符串仍按行重新存入字 符串数组xx中,最后调用
26、函数writeDat。把结果xx输出到文件OUT1.DAT中。例:原文:Adb.Bcdzaabck.LLhj结果:Aec.Bdeabbcdl.LLik原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。 部分源程序存在文件progl.c中。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数writeDat。的内容。# include# include# includecharxx5080;intmaxline=0;/*文章的总行数*/int ReadDat( void);void WriteDat(void);void ConvertCharA(void)i
27、nt ij;for(i=0;i for(j=0;j if(xxij=z,) xxij=,a,;else if(xxij=,a,&xxil|j=,a,&si=A,&si=,Y,) si+=l;m ain()char a|N;clrscr();printf(Enter a string : ); gets(a);printf(*The original string is : ); puts(a);chg(a);printf(The string after modified : );puts (a);readwriteDAT();void readwriteDAT()inti;char aN;F
28、ILE *rf, *wf;rf = fopen(,bcl.in, V);wf = fopen(bcl.out“,w) for(i = 0; i 50 ; i+) fscanf(rf, a);chg(a);fprintf(wf, ,%sn, a);)fclose(rf);fclose(wf);# 题目12:已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm (字符型4位),产品名称me (字符型10位),单价dj (整型),金额je (长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat。是读取这100个销 售记录并存入结构数组shell中。请编制
29、函数SortDatO,其功能要求:按产品名称从小到大进行排列,若产品名称相等,则按金额从小到大进行排列,最终 排列结果仍存入结构数组sell中,最后调用函数WriteDat。把结果输出到文件OUT5。 DAT 中。部分源程序存在文件progl.c中。请勿改动主函数main。,读数据函数ReadDarQ和 输出数据函数WriteDate。中的 内容。# include# include# include# include# include#define MAX 100lypedef struct char dm5;/* 产品代码 */char产品名称*/intdj;/* 单价*/int数量*/l
30、ongje; /* 金额*/PRO ;PRO sellMAX;void ReadDat();void WriteDat();void SortDat()intij;PRO xy;for(i=0;i99;i4-+)for(j=i+ l;jOllstrcmp(sell i.me,sellj.mc)=O&selli.jesellj.je)xy=selli;sell i=sell j ;sell j=xy;memset(selhO,sizeof(sell);ReadDat();SortDat();WriteDat();void ReadDat()FILE *fp;char str8O,chll;int
31、i;fp=fopen(IN.DAT,;,rH);for(i=0;i100;i+)fgets(str,8O,fp);memcpy(selli.dm,str,4);memcpy(selli.mc,str+4,10);memcpy(ch,str+ 14,4);ch4=0;sellij.dj=atoi(ch);memcpy(ch,str+18,5);ch5=0;seili.sl=atoi(ch);selli.je=(long)selli.dj*selli.sl;fclose(fp);void WriteDat() (FILE *fp;int i;fp=fopen(,OUT5.DAT,w);for(i=
32、0;i100;i+)printf(n%s %s M nn,selli.dm,selli.mc,selli.dj,selli.sl,selli.je); fprintf(fp,H%s %s M n, selli.dm,selli.mc,selli.dj,selli.sl,selli.je); )fclose(fp);题目13已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码 dm(字符型4位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长 整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat。是读取这100个销售 记录并
33、存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从小到大进行排列,若产品代码相等,则按金额从大到小进行排 列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件 OUT9.DAT 中 o部分源程序存在文件progl.c中。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数WriteDat。的内 容。# include# include# include# include# includedefine MAX 100typedef struct char dm5;/* 产品代码*/char mcl 1; /*产品名称
34、*/intdj;/* 单价 */int si;/* 数量*/long je; /* 金额 */PRO ;PRO sellMAX;void ReadDat();void WriteDat();void SortDat()inti,j;PRO xy;for(i=0;i99;i-H-)for(j=i+l;jOllstrcmp(selli.dm,sellj.dm)=O&selli.je xy= selli;selli=sell|j;sell|j=xy;memset(sell,0,sizeof(sell);ReadDat();SortDat();WriteDat();void ReadDat()FILE
35、 *fp;charstr8O,chll;int i;fp二fopen(IN.DAT“Jr);for(i=0;i100;i+)fgets(str,8O,fp);memcpy (sell i .dm,str,4);memcpy(selli.mc,str4-4,IO);memq)y(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=f
36、ope n(HOUT9.D AT J w );for(i=0;i100;i+)printf(H%s %s M nH, selli.dm,selli.mc,selli.dj,selli.sl,selli.je);fprintf(fp,n%s %s M nM, selli.dm,selli.mc,selli.dj,selli.sl,selli.je);fclose(fp); 题目14已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat。把这些数 存入数组a中,请考生编制函数jsVal(),其功能是:依次从数组a中取出个四位 数,如果该四位数连续大于该四位数以后的五个数且该数是奇数(该四位数以后不满 五个数,则不统计),则统计出满足此条件的个数ent并把这些四位数按从小到大的 顺序存入数组b中,最后调用写函数writeDat()把结果ent以及数组b中符合条件的