计算机等级考试三级C上机考试100题及答案.pdf
《计算机等级考试三级C上机考试100题及答案.pdf》由会员分享,可在线阅读,更多相关《计算机等级考试三级C上机考试100题及答案.pdf(154页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、计算机等级考试三级c上机考试100题及答案通过这次上机考试(2 0 0 4年4月)以及从各大论坛上考生朋友们所抽取的上机题来看,所有的上机考试题全来自南开1 0 0题,但网上所流传的以及正式书本上的解法也有不少的错误,因此也误导了一些基础不深的朋友们,为此我将2 0 0 4年版南开1 0 0题中所有的题都在无忧2 0 0 4年上半年版模拟系统中进行了测试(无忧模拟系统也安装了最新的补),将正确的、精华的解法采纳出来,其中有许多题也加入了我的编程思想,尽量照顾了 一些基础不深并对C语言中指针解法很畏惧的朋友们,做到容易理解及容易掌握。最终的目标是:祝所有准备考三级的朋友们顺利通过考试!题目前带号
2、的是在2 0 0 4年4月份上机考试中被考生们所确定了的上机题。题目中所提示的“无忧i d x x”指的是2 0 0 4年上半年版无忧模拟系统中的固定抽题序号题目中所提示的“捷成i d x x”指的是2 0 0 4年上半年版捷成模拟系统中的固定抽题序号题 目1 (无 忧i d 1 4、i d 2 7(提供i s P()函 数;捷 成i d 23题)请编写一个函数j s V a l u e(i nt m,i nt k,i nl x x口),该函数的功能是:将大于整数m且紧靠m的k个素数存入数组xx传回。最后调用函数w r i t e D a t。读 取1 0组数据,分别得出结果且把结果输出到文件
3、o u t.d a t中。部分源程序存在文件p r o g 1 .c中。例如:若输入175则应输出:1 9,2 3,2 9,3 1,3 7。请勿改动主函数m a i n。和写函数w r i t e D a t()的内容。#i nc l u d e#i nc l u d e v o i d r e a d w r i t e D a t();i nt i s P(i nt m)(i nt i;f o r(i=2;i 0;m+)i f(i s P(m)x x s+4-=m;k;)m a i n()i nt m,n,x x 1 0 0 0 ;c l r s c r();p r i nt f(n nP
4、 l e a s e e nt e r t w o i nt e g e r s:0);scanf(,%d%d,&m,&n);num(m,n,xx);for(m=0;mn;m+)printf(H%d H,xxm);printfCAn1);readwriteDat();)void readwriteDat()(int m,n,xx1000,i;FILErf=fopen(in.datu,rH);wf=fopen(,ouLdatn,wH);for(i=0;i 10;i+)fscanf(rf,H%d%d,&m,&n);num(m,n,xx);for(m=0;mn;m+)fprintf(wf,%d M,
5、xxm);fprintf(wf,nn);)fclose(rf);fclose(wf);无忧id 14题(无 isP()函数)#include void jsValue(int m,int k,int xx)int i,j,s=O;for(i=m+1;k0;i+)for(j=2;ji;j+)if(i%j=O)break;if(i=g)xxs+=i;k;)main()int m,n,zz100;printf(”n 请输入两个整数:”);scanf(d%d”,&m,&n);jsValue(m,n,zz);fbr(m=O;mn;m+)printf(,%d n,zzm);printfCAn1);writ
6、eDat();)writeDat()(int m,n,zz100,i;FILE*in,*out;in=fopen(,in.dat,V);out=fopen(out.datw);for(i=0;i10;i+)fscanf(in,%d%d*,&m,&n);jsValue(m,n,zz);for(m=0;mn;m+)fprintf(out,%d,zzml);fprimf(out,n);)fclose(in);fclose(out);)题目2(无 忧 id 143)已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat。把这些数存入数组 a 中,请考生编制一函数jsV al(),其
7、功能是:如果四位数各位上的数字均是0 或 2 或 4 或6 或 8,则统计出满足此条件的个数e n t,并把这些四位数按从大到小的顺序存入数组b 中。最 后 m ain()函数调用写函数writeDat()把结果e n t以及数组b 中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件progl.c中。程序中已定义数组:a200,b200,已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主 函 数 main。、读 函 数 readDat。和写函数writeDat。的内容。#include#define MAX 200int alMAX,bMAX,ent=0;voi
8、d jsVal()int i,j,qw,bw,sw,gw;for(i=0;iMAX;i+)qw=ai/1000;bw=ail/100%10;sw=ai%100/10;gw=ai%10;if(qw&qw%2=0&bw%2=0&sw%2=0&gw%2=0)bcnt+=ai;)for(i=0;icnt-l;i+)fbr(j=i+l;jcnt;j+)if(bib|j)qw=bi;bi=bfj;bfj=qw;)void readDat()(int i;FILE*fp;fp=fopen(Hin.datM,nrn);for(i=0;i MAX;i+)fscanf(fp,%d&a|i);fclose(fp);
9、)void main()(int i;readDat();jsVal();printf(满足条件的数=%dn,ent);for(i=0;i ent;i+)printf(n%d,bi);printf(nn);writeDat();)writeDat()(FILE*fp;int i;fp=fopen(1,out.datM,Mw);fprintf(fp,n%dn,ent);for(i=0;i ent;i+)fprintf(fp,u%dnn,bi);fclose(fp);题目3(无 忧 id 133题;捷成id 59、99题)函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数
10、组xx中;请编制函数 StrO R(),其函数的功能是:以行为单位依次把字符串中所有小写字母。左边的字符串内容移到该串的右边存放,然后把小写字母。删除,余下的字符串内容移到已处理字符串的左边存放,之后把己处理的字符串仍按行重新存入字符串数组XX中。最 后 main()函数调用函数 WriteDat。把结果xx输出到文件OUT5.DAT中。例如:原文:n any field.Yu can create an indexyou have the correct record.结果:n any field.Yu can create an indexrd.yu have the crrect rec
11、原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。注意:部分源程序存放在文件progl.c中。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数WriteDat()的内容。#include#include#include char xx50J80J;int maxline=0;/*文章的总行数*/int ReadDat(void);void WriteDat(void);void StrOR(void)int i,righto,j,s,k;char tem80;for(i=0;i=O;j-)k=0;memset(tem,0,80);if(xxij=,o1)
12、righto=j;for(s=righto+1 ;sstrlen(xxi);s+)temk+=xxis;for(s=0;srighto;s+)if(xxis!=o)temk+=xxis;strcpy(xxij,tem);)else continue;)void main()(clrscr();if(ReadDat()printf(数据文件IN.DAT不能打开!n007);return;StrOR();WriteDat();)int ReadDat(void)(FILE*fp;int i=0;char*p;if(fp=fopen(IN.DATn,nrn)=NULL)return 1 ;while
13、(fgets(xxi,80,fp)!=NULL)p=strchr(xxi,1n);if(p)*p=0;i+;)maxline=i;fclose(fp);return 0;)void WriteDat(void)(FILE*fp;in ti;clrscr();fp=fopen(MOUT5.DAT,nwn);for(i=0;i maxline;i+)printf(sn,xxi);fprintf(fp,%sn xxi);)fclose(fp);)解法二:void StrOR(void)int i;char a80,*p;for(i=0;imaxline;i+)p=strchr(xxi,o,);whi
14、le(p)memset(a,0,80);memcpy(a,xxi,p-xxi);strcpy(xxi,p+l);strcat(xxi,a);p=strchr(xxi,o);)()题目4(无忧id 24题 捷 成 id 9 题)函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx 中,请编制函数 StrO L(),其函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组x x 中,最后调用函数writeDat。把结果xx输出到文件OUT6.DAT中。例如:原文:You He MeI am
15、 a student.结果:Me He Youstudent a am I原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。部分源程序存在文件progl.c中。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数writeDat。的内容。#include#include#include#include char xx5080;int maxline=0;/*文章的总行数*/int ReadDat(void);void WriteDat(void);/*在无忧及捷成版模拟系统中都通过测试(输入文件句末有标点的在输出文件中句前有空格*/void StrOL(vo
16、id)int i,j,k,s,m,strl;char str80;for(i=0;i=O;j-)if(isalpha(xxifj)k+;else for(m=1 ;m=k;m+)strs+=xxij+m;k=0;if(!isalpha(xxij)strs+=*;)for(m=l;m=k;m+)strs+=xxij+m;st小strcpy(xxi,str);)void main()(clrscr();if(ReadDat()printf(数据文件IN.DAT不能打开!n007M);return;)StiOL();WriteDat();)int ReadDat(void)(FILE*fp;int
17、i=0;char*p;if(fp=fopen(IN.DAT,r)=NULL)return 1;while(fgets(xxi,80,fp)!=NULL)p=strchr(xxij,n,);if(p)*p=O;i+;)maxline=i;fclose(fp);return 0;)void WriteDat(void)FILE*fp;int i;clrscr();fp=fopen(,OUT6.DAT,nwn);for(i=0;imaxline;i+)printf(H%snM,xxi);fprimf(fp,sn”,xxi);)fclose(fp);)捷成版模拟系统中的解法/*在无忧模拟系统中没通过测
18、试(输入文件句末有标点的在输出文件中句前无空格*/void StrOL(void)(int i,j;char word21,yy8O,zz80,*p;for(i=0;i maxline;i+)p=xxi;j=0;memset(word,0,21);memset(yy,0,80);while(*p)if(isalpha(*p)wordj+l=*p+;if(*p)continue;)strcpy(zz,yy);sprintf(yy,%s%s,word,zz);j=0;memset(word,0,21);while(*p&(!isalpha(*p)p+;)strcpy(xxij,yy);)题目5(无
19、忧id 8 题)在文件in.dat中有200个正整数,且每个数均在1000至 9999之间。函数ReadDat。读取这200个数存放到数组a a 中。请编制函数jsSort(),其函数的功能是:要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10个数依次存入数组bb中,如果后三位的数值相等,则按原先的数值进行降序排列。最后调用函数WriteDat。把结果b b 输出到文件out.dat 中。例:处理前 6012 5099 9012 7025 8088处理后 9012 6012 7025 8088 5099部分源程序存在文件progl.c中。请勿改动主函数main。、读数据函数Re
20、adDat。和输出数据函数WriteDat。的内容。#include#include#include intaa200,bb10;void jsSort()(int ij,data;for(i=0;i199;i+)for(j=i+l;jaaj%1000llaai%1000=aafj%1000&aaiaaj)data=aai;aai=aaj;aaj=data;for(i=0;i10;i+)bbi=aai;)void main()(readDat();jsSort();writeDat();)readDat()(FILE*in;int i;in=fopen(,in.dat,r,);for(i=0;
21、i200;i+)fscanf(in,H%d,H,&aai);fclose(in);)writeDat()FILE*out;int i;c l r s c r();o u t=f o p e n(o u t.d a t,wn);f o r(i=0;i 1 0;i+)p r i n t f(n%dn,b b i );f p r i n t f(o u t,n%d n b b i l);)f c l o s e(o u t);)题目6:在文件i n.d a t中有200个正整数,且每个数均在1 0 0 0至9 9 9 9之间。函数R e a d D a t()读取这200个数存放到数组aa中。请编制
22、函数j s S o r t。,其函数的功能是:要求按每个数的后三位的大小进行降序排列,然后取出满足此条件的前10个数依次存入数组b中,如果后三位的数值相等,则按原先的数值进行升序排列。最后调用函数W r i t e D a t()把结果bb输出到文件o u t.d a t中。例:处理前 9 0 1 2 5 0 9 9 6 0 1 2 7 0 2 5 8 0 8 8处理后 5 0 9 9 8 0 8 8 7 0 2 5 6 0 1 2 9 0 1 2注意:部分源程序已给出。请勿改动主函数m a i n。、读数据函数R e a d D a t。和输出数据函数W r i l e D a t。的内容。
23、#i n c l u d e#i n c l u d e#i n c l u d e i n t a a 2 0 0 ,b b 1 0 1;v o i d j s S o r t()(i n t i,j,d a t a;f o r(i=0;i 1 9 9;i+)f o r(j=i+l ;j 2 0 0;j+)i f(a a i J%1 0 0 0 a a j J)d a t a=a a i ;a a i =a a j ;a a j =d a t a;f o r(i=0;i 1 0;i+)b b f i =a a i ;)v o i d m a i n()r e a d D a t();j s
24、S o r t();w r i t e D a t();system(npausen);)readDat()(FILE*in;int i;in=fopen(,in.dat,r,);for(i=0;i200;i+)fscanf(in,d,”,&aai);fclose(in);writeDat()(FILE*out;int i;clrscr();out=fopen(Hout.datH,wM);for(i=0;i10;i+)printf(,i=%d,%dn,i+l,bbi);fprintf(out,n%dn,bbi);)fclose(out);)题目7(无忧id 15题)已知在文件IN.DAT中存有
25、100个产品销售记录,每个产品销售记录由产品代码dm(字符型4 位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat。是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat。把结果输出到文件OUT6.DAT中。部分源程序存在文件progl.c中。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数WriteD
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机等级考试 三级 上机 考试 100 答案
限制150内