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

下载本文档

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

文档简介

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

(共9套)

(共9题)

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

1套

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

1、文件IN.DAT中存有200个销售记录,每个记录均由产品代码ID(字符型4

位)、产品名称name(字符型10位)、单价price(整型)、数量amount(整型)、金额

value(长整型)几部分组成。其中;金额=单价x数量,函数ReadDaia。负贡将

IN.DAT中的数据读到结构数组sell□中。请编制函数sortData。,将各个记录按产

品代码从小到大进行排列,若产品代码相同,则按金额从大到小进行排列,并将排

列后的结果存放到sell」中。函数WriieDala。负责将sell」中的数据输出到文件

OUT.DAT中。注意;部分源程序已给出。请勿改动主函数main。、读函数

ReadDala。和写函数WriteData。的内容。试题程序;#include#include#include

#include#defineMAX100typcdefstruct{charID|5J;//产品代码char

name(11];//产品名称intprice;//单价intamount;//数量longvalue;/

/金额}PRODUCT;PRODUCTsell[MAX];voidReadDalaO;void

WritcData();voidsonData(){}voidRcadData(){FILE*fp:charstr(80],ch[l1];

inti:fp=fopen("IN.DAT",T);for(i=0;i

标准答案:voidsorlDala。|PRODUCTtemp;int\,j;memset(&temp,0,

sizeof(temp));for(i=0;iO||(strcmp(sell[i].ID,sell[j].ID)==0&&sell[i]value

知识点解析:本题考查的主要是结构数组排序的问题。所谓结构数组排序就是以结

构某一元素为依据对结构数组进行排序。本题排序的思想是(以从小到大为例);将

当前数据与其后的各个数据相比较,如果当前数据比其后的数据大,则将两数据进

行交换,从而使得前面的数据小于后面的数据,最终达到从小到大排序的H的。但

是由于结构不像变量那样可以通过简单的赋值来交换变最(如果要赋值的话需要对

结构里的所有元素进行赋值替换,比较麻烦),所以在进行两个相邻结构交换时,

要用到内存拷贝函数memcpy()来对内存的内容整体进行操作。

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

2套

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

某级数的前两项A产I.A,=l.以后各项共有如F关系:

&=A^z+2A1M

程序test.c的功能是।要求依次对于整数M,求出线数

前n的和S»=Ai+A[+…+&小于M的项数n.并依次把n

值存入数组单元b(0],b[l]和b{2]中,请考生侦制jsVdueO

函数来实现此功能,最后调用函数writeDaKHC数组b[]中的

值输出到outdat文件中.

注意।部分源程序存放在g.c文件中.

请勿改动主函数main。和看出数据函数writeDAT。的

内容.

♦include<3tdio.h>

2intb(3J;〃定义全局♦加一傅数用t>[3]

3voidwriteDATO;//■出由敏iriteDAT。的

说明语句

4voidjsValueO

5

6

7

8main()

9(

10jsValueO;〃辑用房敷”value。,实现题目

要求的功能

printf("hHlOO,n-%d\nM-1000,n-%d\nH-

10000,n=%d\nH,b[0],b[lhb(2));

12writeDATO;

)

/•AftwriteD<HWMb(]中的值■出到outat文件中•/

14voidwriteDATO

15(

16FILE*fp;

17fp-fopen("out.dat","w");

,

18fprintf(fp,,%d\n%d\n%d\n"/b[0],

b[l],b(2]);

19fclose(fp);

1、20

1iintala2-121,m

i10,i,t;

2•ford-0;i<3;〃・环交从

\0开始,忸次逢・1,收到其值小于3

3!(

4m*-10;Z/m的值夕大10倍后,左慎等于100

while(s<m)〃当•的值小于»时,执行

;whileH环诵句

6\(

!/•交量t寰示第n鼻,al我示第n-2鼻,a2哀示第

•n-1不♦/

7t-al*2*«2;//根据线政第。项的通

;僮美系,制n*等于务n-2H与2倍的第n-1瑁的加

8s-sft;〃,<1彳的和等于。11・1瑁的和

加上第nH的值

91;〃求蜴数第n鼻的S一“,即第

♦IX

al-a2;〃把当前的Xn-1RX始第n-24

a2-t;〃圮当II的第n项映纶第n-1R

12

printf("m-%d,n-%d\n",m,n);/,当ii

出while・环,把m值和京的n值在屏幕上■示出耒

b(i)-n;〃相求的n值存入数蛆元索b(i】中

标准答案:)

知识点解析:①首先定义变量并赋值,包括表示级数的整型变量al、a2,赋初值

1,表示级数前n项的和s,其初值为2,表示级数的第n项3循环变量i,级数n

项赋初值1。②采用for循环,循环变量i从0开始依次递增到2。在循环体中对

m的值扩大10倍,当级数前n项的和s小于01时・,根据级数的第n项等于第n-2

项与2倍的第n-1项的和,把表达式al+2*a2的值赋给变最t。然后把级数前n-1项

的和s加上第n项的值t赋给变量s,求得级数前n项的和赋给变量s。把n的值加

1,在下次循环中计算级数第n+1项的值,把变量当前级数第n-1项的值a2赋给第

n-2项al,把当前的第n项t的值赋给第n-1项a2.当级数前n项的和s大于或等

于m时,退出while循环。在屏幕上输出变量m和n的值,并把求的n值赋给数

组元素b[i],进入下一次for循环。

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

3刁

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

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

数存入数组a中,请编制一函数isVakieO,其功能是:求出这些4位数是素数的个

数ent,再求出所有满足此条件的4位数的平均值pjzl,以及所有不满足此条件的

4位数的平均值pjz2,最后调用函数writeDat。把结果cnt,pjzl,pjz2,输出到

oul82.dat文件中。例如:5591是素数,则该数满足条件,计算平均值pjzl,且个

数cnt=cnt+l。9812是非素数,则该数不满足条件,计算平均值pjz2。注意:部分

源程序已给出。程序中已定义数组:a[300],b[300],已定义变量:ent,pjzl,

pjz2<,请勿改动主函数main。、读函数readDatO和写函数wriieDalO的内容。试题

程序:#include<stdio.h>inta[300],cnt=O;doublepjz1=0.0,pjz2=0.0;intisP(intm)

{inti;for(i=2;i<m;i++)if(m%i==0)return0;return1;}voidjsValue()

{}main(){inti;readDat();jsValue();writeDat();printf("cnt=%d\n满足

条件的平均值pjzl=%7.21f\n不满足条件的平均值pjz2=%7.21f\n",ent,pjzl,pjz2);}

readDat(){FILE*fp;inti;fp=fopen("in82.dai”;T');for(i=0;i<300;i++)fscanf(fp,

"%d,",&a[i]);fclose(fp);}writeDat(){FILE*fp;inti;fp=fopen(Hout82.dat",',w");

fprintf(fp,"%d\n%7.2lf\n%7.21f\n",cnt,pjzl,pjz2);fclose(fp);}

标准答案:voidjsValue(){inti;for(i=0;f<300;i++)if(isP(a[i]))/*如果该数为素数*/

{pjzl+=a[i];/*将满足条件的数求和*/cnt++;/*统计满足条件的数的个数*/}else

pjz2+=a[i];/*将不满足条件的数求和*/pjzl=pjzl/cnt;/*求满足条件的数的平均值*/

pjz2=pjz2/(3OO-cnt);/*求不满足条件的数的平均值*/}

知识点解析:本题考查的知识点如下:(1)循环结构的使用。(2)判断结构的使用。

在本题中,已给出判断素数的函数isPO,只要依次将数据带入即可。300个数据依

次存入数组中,可以使用循环实现对数据的访问。当数是素数时,求其和pjzl,并

统计素数的个数。不是素数时,求和pjz2。最后将和除以个数,即可得其平均值。

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

4套

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

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

些数存入数组a中,请编制一函数jsVal(),其功能是:把个位数字和千位数字重新

组合成一个新的十位数ab(新十位数的十位数字是原4位数的个位数字,新十位数

的个位数字是原4位数的千位数字),以及把百位数和十位数组成另一个新的十位

数cd(新十位数的十位数字运原4位数的百位数字,新十位数的个位数字是原4位

数的十位数字),如果新组成的两个十位数必须是一个奇数,另一个为偶数且两个

十位数中至少有一个数能被17整除,问时两个新十位数字均不为0,则将满足此

条件的4位数按从大到小的顺序存入数组b中,并要计算满足上述条件的4位数的

个数ent,最后调用写函数wfiteDat。把结果ent及数组b中符合条件的4位数输出

到OUT76.DAT文件中。注意:部分源程序已给出。程序中已定义数组:a[200],

b[200],己定义变量:ent。清勿改动主函数main。、读函数madDat()和写函数

writeDat。的内容。试题程序:#include<stdio.h>#defineMAX200inta|MAX],

b[MAX],cnt=O;voidjsVal(){}voidreadDat(){inti;FILE*fp;fp=fopen

("IN76.DAT,\"r");for(i=0;i<MAX;i++)fscanf(fp,"%d",&a[i]);fclose(fp);}main

(){inti;readDat();jsVal();printf("满足条件的数二%d\n",ent);for(i=0;i<cnt;i++)

printf("%d",b[i]);printf("\n");writcDat();}writeDat(){FILE*fp;inti;fp=fopcn

("OUT76.DAT",“w");fprintf(fp,"%d\n",ent);for(i=0;i<cnt;i++)fprintf(fp,

"%d\n",b[i]);fclose(fp);}

标准答案:voidjsVal(){inti,thou,hun,ten,data,j;intab.cd;for(i=0;i<200;i++)

{thou二a[i]/1000;/*求四位数的千位数字刃hun=a[i]%1000/100;/*求四位数的百位数

字*/len=a[i]%100/10;/*求四位数的十位数字号dsta=a[i]%10;/*求四位数的个位数

字*/ab=data*lO+thou;/*把人位数和T•位数组合成一个新的十位数ab*/

cd二hun*10+ten;/*把百位数和十位数组成另一个新的十位数cd*/if((ab%17==0

||cd%17==0&&((ab%2!=l&&cd%2==l)||(ab%2==l&&cd%2!=1))&&ab!=0&&

cd!=0){/*如果新组成的两个十位数必须是一个奇数,另一个为偶数且两个十位数

中至少有一个数能被17整除,同时两个新十位数字均不为0*/b[cnt]=a[i];/*则将

满足条件的数存入数组b中*/cnt++;/*统计满足条件的数的个数*/}}for(i=0;i<

cnt-1;i++)/*将数组b中的数按从大到小的顺序排列*/for(j=i+l;j<cnt;j++)if(b[i!<

b[j]){data=b[i];b[i]=b[j];b[j]=data;}}

知识点解析:本题考查的知识点如下:(1)将一个4位整数各位上的数转变成单独

的个位数。(2)判断结构中多个条件的布尔运算。(3)循环的使用。(4)数据的排

序。在本题中,首先要将一个4位数的千位、百位、十位、个位拆成独立的数

字。这里借助特殊运算符号“%”(取余)和“尸(整除)。将一个4位数整除1000则可

得到其千位一卜的数字,除以1000取余再整除100则可得百位。上的数字,除以

100取余再整除10则可得十位卜的数字,除以10取余则得个位上的数字。若一个

数除以2取余为0,则这个数是偶数,否则为奇数。两个数必须•个为奇数,另•

个为偶数,这就有两种情况:ad为奇数,cd为偶数:或者ab为偶数,cd为奇数。

两者满足一种即可,所以这两种情况间用"或''运算。两个数中至少有1个能被17

整除,ab能被17整除与cd能被17整除两个条件满足一个即可,所以这两个条件

之间用“或”运算。但这个条件与其他条件必须同时满足,所以此条件与其他条件之

间用“与”运算。先将满足条件的数存入数组b中,再对数组中的数据进行排序。最

后的排序采用“选择排序法工

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

5套

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

1、已知数据文件in80.dat中存有300个4位数,并已调用函数readDat。把这些数

存入数组a中,请编制一函数isValue。,其功能是:求出个位数上的数减千位数上

的数减百位数上的数减十位数上的数大于0的个数ent,再求出所有满足此条件的

4位数平均值pjzl,以及所有不满足此条件的4位数平均值pjz2,最后调用函数

wrileDal。把结果cnt,pjzl,pjz2输出到out80.dal文件。例如:1239,9-1-2-3>0,

则该数满足条件,计算平均值pjzl,且个数cnt=cnt+l。8129,9-8-1-2<0,则该

数不满足条件,计算平均值pjz2。注意:部分源程序已给出。程序中已定义数

组:a[300].b[300],定义变量:ent,pjzl,pjz2o请勿改动主函数main。、读函数

readDat()和写函数writeDa(()的内容。试题程序:#includc<stdio.h>inta[300],

cnt=O;doublepjzl=0.0,pjz2=0.0;voidjsValuc(){Imain(){inti;readDat();jsValue();

writeDat。;printf("cnt=%d\n满足条件的平均殖pjzl=%7.2If\n不满足条件的平均值

pjz2=%7.2If\n",cnt,pjz1,pjz2);}readDat(){FILE*fp;inti;fp=fopen{"in80.dat","r");

for(i=0;i<300;i++)fscanf(fp,"%d,",&a[i]);fclose(fp);}writeDat(){FILE*fjp;inti;

fp=fopen("out80.dat";,w");fprintf(fp;'%d\n%7.2lf\n%7.21f\n",cnl,pjzl,pjz2);

fclose(fp);}

标准答案:voidjsValuc(){inti,thou,hun,ten,data,n=0;fdr(i=0;i<300;i++){thou=a

[i]/1000;/*求四位数的千位数字*/hun=a[i]%1000/100;/*求四位数的百位数字列

(en=a[i]%100”0;/*求四位数的十位数字*/data=a[i]%10;/*求四位数的个位数字四

if(data-thou-hun-tcn>0)/*如果个位数减千位数减白位数大十0*/{cnt++;/*统计满

足条件的数的个数*/pjzl+=a[i];/*将满足条件的数求和*/}else{n++;/*否则统计

不满足条件的数的个技*/pjz2+=a1”;/*将不满足条件的数求和*/)pjzl/=cnl;/求满

足条件的数的平均值*/pjz2Un;/*求不满足条件的数的平均值*/}

知识点解析:本题考查的知识点如下:⑴特殊运算符“%”及“广的使用。(2)循环结

构及选择结构的使用?在本题中,首先要将一个4位数的千位、百位、十位、个位

拆成独立的数字。这里借助特殊运算符号"%''(取余)和“尸(整除),拆分方法略。然

后判断“个位数-千位数-百位数-卜位数”的值是否大于0。依次求得符合条件的数的

和及其平均值。

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

6,

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

1、请编写函数findVahie(int*result,int*amount),其功能是;求出1到1000之内

能被7或11整除但不能同时被7和11整除的所有整数并存放在数组result中,并

通过amount返回这些数的个数。注意;部分源程序已给出。请勿改动主函数

main。和写函数wriieDaia。的内容。试题程序;include#includevoid

writeData();voidfindValue(int*result»int*amount){}voidmain(){int

result[1000],amount,k;system("CLS");findVa!ue(result,&amount);

printf("amount=%d",amount);for(k=0;k

标准答案:voidfindValue(int*result。int*amount){inti;*amount=0://将

计数器清零for(i=l;i<=1000;i++)//在1〜1000中循环if((i%7==0&&i%

11!=0)||(i%11==0&&i%7!=0))//如果满足条件{result[*amount]=i;//将数据

放人数组result中的第*amount位(然amount)++;//计数器加1)}

知识点解析:若一个数m能被n整除,则有m%n==0。另外本题也考查了通过指

针传递数据的方法。主函数将所要求子函数返回的变量的指针*result,*amount传

给子函数,子函数通过对指针的操作直接将数据传到变量当中,这也为子函数返回

多值提供了一种方法。

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

7?

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

由敷RH)实现从文件tn.dat中读取•■奂文文♦存

入到字符串数tflorig•1中.请0与款我StjCMrMovcO.X

0依的功能是:以行为单位把字符率中所百字符的ASCH

也右移4位,然后把右售后的字符ASCII值再加上承字符

的ASCII值,得到新的字符仍存入原字符中对应的位置匕

♦后把己处H的字符中仍按行重新存入字符库敷taorigml

中,♦后,用(*敷WDttiO.纪站果origiial,出到文件

ouedat中.

原始数抠文件存放的格式是।每h■的宽度均小于80个

字符(含标点符号和空格).

注意,毫分程序已注恰出・

请匆改动主豳心0皿)、RDM)和.出效

费躺敏WD90的内

<include<stdio.h>

2,include<8trlng.h>

•include<conio.h>

charoriginal(50)[80J;

intmaxline-0j

intRData(void);

voidWData(void);

voidStrCh*rMov<O

10

11

12voidmainC)

RDataO;

StrCharMoveO;

WD«ta();

/•从文件中金双・英文文・存入一字冷

中■,

18intRData(void)

19

20FILE*fp;

21int1-0;

char*p;

23If(<fp-fopen(*ln.dat*r'L))~

NULL)

return1;

while(fgots(original(1]«80,fp)!-

NULL)

p-strchr(original(i|»*\n*);

28if(p)

29•p-0;

30

31

32aaxline-1;

33fclose(fp);

34return0;

35

八七博察・出H文件in中•/

36voidWData()

37

38FILE^tp;

39int1;

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

for(i>0;l<Mxlin«;

printforiglral(i]);

fprlntf(fp^"%s\n"r

or£g$nal(i】)J

4S

46fclose(fp);

1、47

1!intifjtstrl;

2»for(i»0;i<maxline;i++)

3iI

4strl-strlen(original[i]);〃计算

字符申original的长度

5for(j-0;j<strl;j*+)

/,«!字符original9】(j】的ASCII码值右移4位后所

和到值与第字符original[ij的ASCII码值相加.

仍存入原字符印对应的位置上•/

6original[i][j]♦-

original(i)[j]»4;

7

标准答案:

知识点解析:①首先定义循环变量i、j和表示字符串长度的整型变量strl。②在

第一层for循环中,循环变量i从。开始,依次递增直到其值等于或大于maxline,

在循环体中,首先用函数slrlen(original[i])计算字符串original^]的长度,把这个值

赋给整型变量和1。在第二层for循环中,循环变量j从0开始,依次递增直到其值

等于或大于strl,利用表达式original[i|[jl+=original[i][j1>>4实现对字符

original[i皿的ASCII码值右移4位后所得到值与原字符Original[i]W的ASCH码值

相加,仍存入原字符串对应的位置上的功能。

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

8套

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

已如敷褥文件indax中存有200个四位敷,并已用用谟

函数rwdDatO把这些数存入数组a中,请考生幄制一函数

j«VWO.其功能是:若一个四位敷的千位数位置上的值小于等

于百位数位置上的值.百位数位置上的值小于等于十位数位

量上的值,以及十位数位置上的值小于等于个位数位置上的

值,并且原四位数是偶数,则统计出满足此条件的个数cm

并把这些四位数接从小到大的廉序存入败蛆b中,量后调用

耳函畋writeDmOJC结果cm以及数组b中符合条件的四位数

■出到文件ouedat中.

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

程序中已定义数组:a(200J.b(200),已定义型量ient

调勿改动数盘文件in.d«中的任何效揖、主函数m*n()、

读语数readDatO和写福CtwritcD3。的内存.

1;9includo<stdio.h>

2!IdefineMAX200〃比义宏支*MAX,其值,于

I200

3;inta【MAX],b(MAX),ent-0;〃定义整

•a|KAX),bIMAXl*)$tent,entM

•初值为0

voidwriteDat();

void

7

8

9voidreadDat()

10

int1;

FILE*fp;

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

ford-0;i<MAX;1♦♦)

15fscanf(fp,"%d-,(a(i));

16fclose(fp);

18voidmain。

19

20inti;

21readDat();

22jsValO;〃调用”•我实SUtUJ!求的

功能

23prictf满足条件的数ent)i

24for(i»0;1<ent;i++)

25printf(-%d-,

26printf("\n");

27writeDat();

28

29voidwrlteDat()

30

31FILE«fp;

32inti;

33fp-fopen("out.dat","w")/

fprlntf(fp,"tdXn",ent);

for(i-0;i<ent;i++)

36fprintf<fp,-%d\n-,b(i]);

37fclose(fp);

1、38

1Intqw,bw,sw,gw,i,j,ab;

2For(i-0;i<MAX;if)

3{・

4qw-a(i)/1000;〃&⑴除以l00。超

到al?的干位上的败值,井M培变■qv

5gw-a(i]%10;〃,㈠)对1。求余得到all]

的个位上的数值,并M怆曳

6bw■(a(i]-qw•1000)/100;//a[i]

与其千位我的箱除以100,得加笈百位上的改值

7sw-(a(i)-qw•1000-bw•100)

/10;〃a【i;减去其干位我再硬去其白但S值内除以

1。,得到其十位上的数值

8if((qw<-bw&&bw<-swnsw<-

gw)“(a(i]%2—0))〃如果•【外干

位依小于等于百位总,百位■(小于等5H位依,十位数小

于等于个位数,并且a[i]是偈数

9b[cnt+*]-a(i];//K,a[i)K

b[cnt],HK®taF标变量cmHD1

for(i«0;i<ent-1;1+♦)//#环交

・幺从。开妁,每次加1,J(到其值大于等于ent-1

12for(j-i,♦1;j<ent;〃■环

受从i♦1开她,♦次加1,就■玄(1大于等于cnc

13if(b(i]>b(j])〃如果敷蜗元KbC)大于

bij],射进行酉者互换

14

15ab=b(j];〃把b【力的值M给变・ab

16b[j]-b[ij;〃把b【M的回・蛤b[j)

17b[i]-ab;〃把岫的值M纶

温馨提示

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

评论

0/150

提交评论