国家三级(网络技术)机试模拟试卷24_第1页
国家三级(网络技术)机试模拟试卷24_第2页
国家三级(网络技术)机试模拟试卷24_第3页
国家三级(网络技术)机试模拟试卷24_第4页
国家三级(网络技术)机试模拟试卷24_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

国家三级(网络技术)机试模拟试卷第

1套

一、程序设计题(本题共7题,每题7.0分,共]分。)

1、补充函激,要求实现如下功能:寻找并输出11〜999之间的数m,它满足m、

n?、n?均为回文数(回文数是指各位数字左右对称的整数),例如;12321,505,

1458541等。满足上述条件的数如m=ll时,n】2=121,n】3=133I都是回文数。请编

写jsValue(longm)实现此功能。如果是回文数,则函数返回1,不是则返回0。最

后,把结果输出到文件OUT.DAT中。注意;部分源程序已经给出。请勿改动

主函数main()中的内容。试题程序;#includc#include#includcintjsValue(longm)

{}main(){longm;FILE*out;out=fopen("OUT.DAT","w");for(m=11:

m<IOOO;m++)if(jsValue(m)&&jsValue(m*m)&&jsValue(m*m*m)){printf("m=%

41d,m*m=%61d,m*ni*ir=%81d\n",m,ni*m,fprintf(out,"m=%

41d,m*m=%61d,m*m*rr=%81d\n",m,m*m,m*m*m):}fclose(out);}

标准答案:inijsVluc(lungni){inti,sir;half;charlenip[20];koa(m>lenip,

10);str=strlen(temp);half=str/2:for(i=0;i=half)return1;elsereturn0;)

知识点解析:判断回文数,即比对该数字位置上的数是否相等,此时使用Itoa函数

将数字进行拆分,拆分为各个单独的数字并放入字符数组中,然后进行比对。如果

首位位置不相等,则退出循环,如果相等则继续比对,直到比较到中间位置时都相

等,则是回文数,此时返叵1。

国家三级(网络技术)机试模拟试卷第

2套

一、程序设计题(本题共[题,每题上0分,共/分。)

巳知数据文件imdat中存有2004四位数.并已调用读

函敷reidDW比这些故存入数生a中.请考生S制一函敷

jiVWOr其功能是,把个位数字和千位数字重新笆成一个新

的含有两位数字的数(新数的十位数字是原四位数的个位数

字,新数的个位数字是原四位数的千位数字),以及把百位

数字和十位数字蛆成另一个新的含有百位数字的做《新收的

十位效字是原四位数的百位数字,折敛的个位数字是原四位

数的十位数字),如果两个新蛆成的我均是儡散并且至少有

•个数能被9整除,同时两个断数的十位依字均不为零,JM

将消足此条件的四位数按从大到小的顺序存入数钮b中•并

要计年满足卜.述条件的四位数的个败ent.■后miino*ft

调用写话IKwritcDatO把结果ent以及敷蛆b中符合条件的

四位敷*出到。utdit文件中.

注意:部分源程序存在teste文件中.

程序中已定义般flha(200J,b(28]・已定义变量,ent

请勿改动数掘文件加山中的任何数据、主函数main().

读函敷retdDitO和写函数writeDatO的内容.

1tinclude<stdio.h>

2•defineMAX200

3inta(MAX],b(MAX]r=nt-0;

4voidjsVal()

5

6

7

8voidreadDatO〃从la.cut文件中iMl200

个Bl位故存入数均a中

<

10int1;

11FILE•fp;

12fp-fopen(-in.dat","r");

13ford-0;1<MAX;

14fscanf(fp,Fd”.

15fclose(fp);

16}

17writeDatO〃忆”算给果cm以及敷ifib中符合条

件的四位数■出到OULdM文件中

18(

19FILE*fp;

20int1;

21fp-fopen("out.dat*r*w*);

22fprintf<fp,**Qd\nRrent)/

23for(i-0;i<ent;

24fprintf(fpr-%d\r.-,b(i));

25fclose(fp);

265)

voidMin()

28

29inti;

30readDat();

31jsValO;〃胃用・依”v—()实取■目要求的

功能

32prlntfLill足条件的敷八d\n,.ent);

33ford-0;i<ent;

34printf("%d・,b⑴);

35printf("\n");

36writeDat();

1、37

1intqw,bwrsw/gw,i,newVl,newV2,

j;

2for(i-0;i<MAX;i++)

3(

4qw-a(i]/1000;

5gw-a[l]%10;

6bw-(&[1]-qw*1000)/100;

7sw-(a[i]-qw*1000-bw*100)

/10;

8newVl-gw*10♦qw;〃W个位上的

0字与千位上的效字翻成第一个新效newvi

9newV2-bw*10-♦­sw;百位上

的数字与十位上的数字忸成第二个新数newV2

10if(gw&&bw&&(newVl%2-■0)“

(newV2%2—0)”(newVl%9—0

I|newV2%9—0))〃如果■⑴个位上的

数字与百位上的依?•不为军且新组成的两个故■为偶

敏旦至少有一个效能被9•除

11b(cnt+*]-a(1);

12}

13for(i-0;i<ent-1:

14for(j-i♦1;j<ent;j++)

15if(b[i]<b[j])

16(

17newVl-b[j);

18b(j]-b(i);

19b[i]-newVl;

标准答案:20

知识点解析:通过审题可以发现主要是对四位数的筛选条件有所不同,体现在两个

方面:①分解后重新组合成两位数的方式不同,参考答案的第8、9条语句重新指

定两位数的组合方式;②新组合的两位数的偶数的判断及,整除判断,参考答案

的第10条语句。注意,两个整除关系表达式要用或运算符(II)连接,且用括号括

起来先进行整除运算(因为或运算级别比与运算级别低,因此要括起来),再与奇偶

性判断表达式进行与(&&)运算。

国家三级(网络技术)机试模拟试卷第

3套

一、程序设计题(本题共I题,每题上0分,共1分。)

1、文件IN.DAT中存有300个四位整型数,函数ReadDataO负责将IN.DAT中

的数读到数组inBuf[]中。请编写函数findValue(),其功能是;求出千位数上的数

减百位数上数减十位数上的数减个位数上的数大于零的个数count,再求出所有满

足此条件的数的平均值averagel,以及所有不满足此条件的数的平均值average?,

最后调用函数WriieData。把结果count、averagel>average2输出到OUT.DAT文

件中。注意;部分源程序已给出。程序中已定义数组;inBuf[300],已定义变量;

count,averagel,average2o请勿改动主函数main。、读函数ReadDataO和写函数

WriieDalaO的内容。试题程序:include#defineNUM3G0intinBuflNUMl,

count=0;doubleaverage1=0,average2=0;voidReadDataO;voidWriteData();

voidfindVakie(){}voidmain(){ReadDataO;findVaiue();WriteData();

printf("count=%d\naverag1=%7.21f\naverag2=%7.21f\n",count,average1,

average?);)voidReadDataO{FILE*fp;inti;fp=fopen("IN.DAT","r");

for(i=0;i

标准答案:voidfindValue(){inti»j,k,d[4],temp,count_no=0;for(i=0;iO)

{count++;//符合条件项的计数器加1//averagel*(count-l)得到前count-1个

数的总和averagel=(averagel*(counl-l)+(double)inBuni])/count;}else

{count_no++;//不符合条件项的计数器加1avcragc2=(avcragc2*(count_no-

1)+(donhle)inRiif[i])/connt_no:}}}

知识点解析:本题主要考算数位分解及数据平均值的求法。程序步骤;1.将数值

送入temp中o2.数位分解;由temp%10得到个位数;(temp/10)%10得到十位

数……如此可得到各位上优数值。3.按照题目所给的条件选出数据。4.对选出的

数据求平均值;由于本题中的数据量比较大,若采用先将各个值加起来再除以总个

数来取平均的话,变量不能存储那么大的数据而导致溢出。本题的程序采用的方法

是;N个数的平均值二[前(N-1)个数的平均值*(N-1)+第N个数]/N,采用这种递推

的方法就避免了将大的数据存入变量中而产生溢出。

家三级(网络技术)机试模拟试卷第

4?

一、程序设计题(本题共1题,每题上0分,共1分。)

1、下列程序的功能是:把,字符串中的所有字母改成该字母的下一个字母,字母

Z改成字母a。要求大写字母仍为大写字母,小写字母仍为小写字母,其他字符不

做改变。请编写函数chg(char*s)实现程序要求,最后调用函数readwriteDAT。,读

取in36.dat中的字符串,并把结果输出到文件out36.dat中。例如:s字符串中原有

的内容为Mn123Zxy,则调用该函数后,结果为Nol23Ayz。注意:部分源程序

已给出。请勿改动主函数main。和输入输出函数readwriteDAT。的内容。试题程

序:#include<stdio.h>#include<string.h>#include<conio,h>#include<ctype,

h>#defineN81voidreadwriteDAT();voidchg(charas){jmain(){chara[N];

clrscr();printf("Enterastring:");gets(a);printf("Theoriginalstringis:puls(a);chg

(a);printf("Thestringaftermodifiedputs(a);readwriteDAT();}voidreadwriteDAT

(){inti;chara[N];FILE*rf,*wf;rf=fopen("in36.dat'\"r");wf=fopen("out36.dat",

"w");for(i=0;i<10;i++){fgets(a,81,rf);chg(a);fprintf(wf,H%s",a);}fclose(rf);

fclose(wf);}

标准答案:voidchg(char*s){while(*s)if(*s==,z”|*s='z,)/*字母z改成字母a,字

母z改成字母A*/{*s-=25;s++:/*取下一个字母*/}elseif(*s>=,a,&&*sV=y)字

把小写字母改成该字母的下一个字母*/{*s+=l;s++;/*取下一个字母*/}elseif(*s

*sV=V)/*把大写字母改成该字母的下一个字母*/{*s+=l;s++;/*取下

一个字母*/}elses++;/*取下一个字母*/}

知识点解析:本题考查的知识点如下:(1)英文字母对应的ASCII码的排列规律。

(2)指针的操作。(3)选择结构中多个条件的布尔运算。在ASCII码中,大、小写字

母的ASCII码是连贯的,a〜z对应97〜122,A〜Z对应65〜90。z的ASCII码减

去25即得至IJa的ASCII码,对Z同样适合。所以我们要对字符串中的字符依次进

行判断,若是大(小)写字母,则按照ASCII码的规律和题意要求对字符进行转换。

在这里,使用指针完成对字符的依次访问,每次将指针的地址加1直至指针为空即

可。在选择结构的多个条件中,若需同时满足,则用“与"i云算,否则.用“或”运

算。

盟家三级(网络技术)机试模拟试卷第

5套

一、程序设计题(本题共7题,每题7.0分,共7分。)

1、已知数据文件IN53.DAT中存有200个4位数,并已调用读函数readDal。把这

些数存入数组a中,请编制一函数isVal(),其功能是:依次从数组a中取出一个4

位数,如果该4位数连续大于该4位数以前的5个数且该数是偶数,则统计出满足

此条件的数个数cm并把这些4位数按从大到小的顺序存入数组b中,最后调用写

函数writeDat()把结果ent及数组b中符合条件的4位数输出到文件OUT53.DAT

中。请勿改动主函数main。、读函数readDat。和写函数wiltedat。的内容。试题程

序:#include<stdio.h>#defineMAX200inta[MAX],b|MAX],cnt=0;voidjsVal()

{}voidreadDat(){{inti;FILE*fp;fp=fopen("in53.dat",,'r");for(i=0;i<MAX;i++)

fscanf(fpj%d”,&a[i]);fclose(fp);}voidmain(){inti;readDat。;jsVal。;prinlf("满足

条件的数二%(1\壮',ent);for(i=0;i<cnt;i++)printf("%d",b[i]);printf("\n");writeDat();}

writeDat()(FILE*fp;inti;fp=foPen("out53.dat","w");fprintf(fp,"%d\n",cnt);for(i=0;i

<cnt;i++)fprintf(fp,"%d\n",blil);fclose(fp);}

标准答案:voidjsVal(){inti,j,flag;for(i=5;i<MAX;i++){for(j=i-5;j<i;j++)

{if(明〉如果该4位数连续大于它以前的5个数*则置flag为1*/

elseflag=O;/*否则置flag为0*/if(a[i]%2!=0)/*如果该四位数为奇数*/flag=O;/*则

置flag为0*/if(flag==O)break;/*如果flag为0,则退出循环*/}if(flag==l){b[cnt]

/*把满足条件的数存入数组b中*/cnt++;/*统计满足条件的数的个数*/}}for

(i=0;i<cnt-l;i++)/*将数组b中的数按从大到波折顺序排列*/for(j=i+l;j<cnt;j

++)if(b[i]<b[j]){flag=b[i]:b[i]=b[j];b[j]=flag;}}

知识点解析:本题考查的知识点如下:(1)使用循环对数组的元素进行比较和排

序。(2)强行退出循环结构。在本题中,数组b中的数据要满足的条件有两个。在

这里,不再使用判断结构中条件的布尔运算,而采用一种新的方法——设置标志变

量flag。当数据不满足某一条件时,如数据不是偶数,将flag设置为0:当flag等

于0时,可直接退出本层循环结构,进入外层的循环中。否则,根据题意要求,将

数据存入数组b中。对数组b中的数据排序,使用“选择排序法”。

盟家三级(网络技术)机试模拟试卷第

6套

一、程序设计题(本题共[题,每题7.0分,共]分。)

1、已知数据文件IN15.DAT中存有200个4位数,并已调用读函数readDat。把这

些数存入数组a中。请编制函数jsVal(),其功能是:依次从数组a中取出一个4位

数,如果该4位数连续小于该4位数以后的5个数且该数是偶数,则统计出满足此

条件的数的个数ent,并把这些4位数按从小到大的顺序存入数组b中,最后调用

写函数\vriteDat()把结果ent及数组b中符合条件的4位数输出到OUT15.DAT文件

中。注意:部分源程序已给出。程序中已定义数组:a|200],612001,已定义变

帝:ent。请勿改动主函数main。、读函数readDat。和写函数writcDat。的内容。

试题程序:include<Stdio.h>#defineMAX200inta[MAX],b[MAX],cnt=0:

voidjsVal(){}voidreadDat(){inti;FILE*fp;fp=fopen("IN15.DAT","r");for(i=0;

i〈MAX;i++)fscanf(fp,"%d",&a|i]);fclose(fp);)main(){inti;readDat();jsVal();

printf("满足条件的数=%<1\11",ent);for(i=0;i(ent;i++)printf("%d",b[i]);printf

("lnH);writeDat();)writeDat(){FILE*fp;inti;fp=fopen("OUT15.DAT'\"wn);

fprintf(fp,"%d\n",ent);for(i=0;i<ent;i++)fprintf(fp,"%d\n",b[i]);fclose(fp);}

标准答枭:voidjsVal(){inti,j,flag=O;for(i=0;i〈MAX-5;i++)/*如果该4位

数连续小于该4位数以后的5个数米/{for(j=i+1;j<=i+5:j++){if(a[i]<a[j])

flag=l:/*则置flag为1*/elseflag=0;/*否则置flag为0:Vif(a[il%2!=0)/*如果该

数是奇数则置flag为0*/flag=O;if(flag==O)/*如果flag为0,则退出循环*/

break;)if(flag==l)/#如果flag为土,则将该数存入数组b中,井统计满足条件的

数的个数*/{b[cnt]=a[i]:cnt++;})for(i=0;i<cnt-l;i++)/*将数组b中的数按

从小到大的顺序排序*/for(j=i+l;j<cnt;j++)if(b[i]>b[j]){flag=b[i]:b[i]=b[j];

b[j]=flag;})

知识点解析:根据题意可知,要编制函数的功能有两部分:一是找出满足条件的4

位数;二是对找出的数进行从小到大排序。首先利用一个foi•循环来依次从数组中

取得4位数,接着用当前得到的4位数与该数后面的5个数(可以用循环次数来控

制)依次进行比较,如果该数比它后面的5个数都小,则给标志变量flag赋值1。

接着对flag进行判断,如果不为I,则该数肯定不符合条件,直接去取下一个数;

若flag值为1,再来判断该数是否是偶数,如果恰好该数又是偶数,则把该数加入

到数组b中。这样就可以依次取出符合条件的数,然后利用选择法对b数组中的元

索进行从小到大的排序。

家三级(网络技术)机试模拟试卷第

7?

一、程序设计题(本题共7题,每题3分,共/分。)

1、文件IN.DAT中存有一篇英文文章,函数ReadData。负责将IN.DAT中的数

据读到数组中。请编制函数replaceChar。,该函数的功能是;以行为单位把

字符串中所有字符的ASCH值右移4位,然后把右移后字符的ASCII值再加上原

字符的ASCH值,得到新的字符,并存人原字符相对应的位置上。把己处理的字

符串仍按行重新存人字符串数组inBufn中,函数WrileData。负责将inBuf[]中的数

据输出到文件OUT.DAT中并且在屏幕上打出。原始数据文件存放的格式是;每

行的宽度均小于80个字符,含标点符号和空格。注意;部分源程序已给出。请勿

改动主函数main。、读函数ReadData。和写函数WriteDalaO的内容。试题程序;

/include#include/include#include#defineLINE50#defmeCOL80char

inBuf[LINE][COL+1];inttotlcLinc=0://文章的总行数intReadData(void);

voidWriteData(void);voidreplaceChar(){}voidmain(){system("CLS");

if(ReadData()){printf("IN.DATcan'tbeopen!\n\007");return;}

rcplaceChar();WritcData();}intReadData(void){FILE*fp;inti=0;char*P;

if<(fp=fopen("IN.DAT","r"))==NULL)retuin1:while(fgets(inBufIi],COL+L

fp)!=NULL){P=strchr(inBufli],*\n,);if(p)*p='\O';i++;}totleLine=i;

fclose(fp);return0:}voidWriteData(void){FILE*fp;inti:

fp=fopen("OUT.DAT","w");for(i=0;i

标准答案:voidrcplaccCliar(){inti,j,y;for(i=0;i

知识点解析:木题主要考查字符与其对应的ASCII码之间的转换及对ASCII码进

行操作。程序步骤;1.依据条件选择inB

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论