计算机三级网络技术上机试题Word文件下载.docx
《计算机三级网络技术上机试题Word文件下载.docx》由会员分享,可在线阅读,更多相关《计算机三级网络技术上机试题Word文件下载.docx(23页珍藏版)》请在冰豆网上搜索。
conio.h>
stdio.h>
voidreadwriteDAT();
intisP(intm)
{inti;
for(i=2;
i<
m;
i++)
if(m%i==0)return0;
return1;
{
main()
{intm,n,xx[1000];
clrscr();
printf("
\nPleaseentertwointegers:
"
);
scanf("
%d,%d"
&
m,&
n);
num(m,n,xx);
for(m=0;
m<
n;
m++)
%d"
xx[m]);
\n"
readwriteDAT();
system("
pause"
);
voidreadwriteDAT()
{intm,n,xx[1000],i;
FILE*rf,*wf;
rf=fopen("
in.dat"
"
r"
wf=fopen("
out.dat"
w"
for(i=0;
10;
i++){
fscanf(rf,"
%d%d"
n);
m++)fprintf(wf,"
fprintf(wf,"
}
fclose(rf);
fclose(wf);
IN.DAT
175
1017
3215
324
556
766
994
7815
226
663
OUT.DAT
1923293137
103107109113127131137
331337347349353
37414347
596167717379
79838997101103
101103107109
787797809811821
232931374143
677173
2题目:
题目2:
已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:
如果四位数各位上的数字均是0或2或4或6或8,则统计出满足此条件的个数cnt,并把这些四位数按从大到小的顺序存入数组b中。
最后main()函数调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。
注意:
部分源程序存在文件PROG1.C文件中。
程序中已定义数组:
a[200],b[200],已定义变量:
cnt
请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。
-------------------------
voidjsVal()/*标准答案*/
{intbb[4];
intI,j,k,flag;
for(I=0;
200;
{bb[0]=a[I]/1000;
bb[1]=a[I]%1000/100;
bb[2]=a[I]%100/10;
bb[3]=a[I]%10;
for(j=0;
4;
{if(bb[j]%2==0)
flag=1;
else
{flag=0;
break;
if(flag==1)
{b[cnt]=a[I];
cnt++;
for(I=0;
cnt-1;
for(j=I+1;
cnt;
if(b[I]<
b[j])
{k=b[I];
b[I]=b[j];
b[j]=k;
PROG1.C
#defineMAX200
inta[MAX],b[MAX],cnt=0;
voidjsVal()
voidreadDat()
FILE*fp;
fp=fopen("
MAX;
i++)fscanf(fp,"
%d"
a[i]);
fclose(fp);
voidmain()
readDat();
jsVal();
满足条件的数=%d\n"
cnt);
cnt;
i++)printf("
b[i]);
writeDat();
writeDat()
{FILE*fp;
inti;
fprintf(fp,"
%d\n"
i++)fprintf(fp,"
6012
5099
9012
7025
8088
7055
5334
7607
8145
5795
2896
3019
7747
7090
4140
8626
7905
3735
9620
8714
9496
3640
5249
7671
5925
4687
2982
6227
6478
2638
2793
8298
8246
5892
9861
9110
2269
6951
9800
2439
5339
1064
9994
6762
5752
1001
1030
7989
2845
2958
3820
3010
9486
9798
4014
2783
1604
1628
6466
4101
4128
7127
3262
6332
2076
1860
5834
4580
9057
2614
7852
3789
2897
9194
6317
6276
4285
5610
6945
9137
8348
5434
9162
4303
6779
5025
5137
4630
3535
4048
2697
2438
9791
3903
3650
4899
1557
4745
2573
6288
5421
1563
9385
6545
5061
3905
1074
7840
4596
7537
5961
8327
2104
1055
3317
1282
5368
6571
5440
8274
1919
6789
4542
3570
1500
7044
9288
5302
7577
4018
4619
4922
3297
5898
1699
9276
4439
2729
8725
7507
6736
2566
3227
7901
2973
2353
4805
2546
3406
4824
2060
8645
5886
7549
9279
3310
5429
6344
4100
9604
1146
9234
6202
3477
1492
4800
2194
9937
1304
3454
5477
9230
5382
4064
8472
8262
6724
7219
9968
3398
10
3题目:
题目3:
函数READDAT()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组XX中;
请编制函数STROR(),其函数功能是:
以行为单位把字符串中的所有小写字母O左边的字符串内容移到该串的右边存放,然后并把小写字母O删除,余下的字符串内容移到已处理字符串的左边存放.最后把已处理的字符串仍按行重新存入字符串数组XX中,最后调用函数WRITEDAT()把结果XX输出到文件OUT.DAT中.
例如:
原文:
Youcancreateanindexonanyfield.
youhavethecorrectrecord.
结果:
nanyfield.Youcancreateanindex
rd.yuhavethecrrectrec
原始数据文件存放的格式是:
每行的宽度均小于80个字符,含标点符号和空格.
-------------------
字符串(单词)的倒置和删除。
答案:
voidStrOR(void)/*标准答案*/
{intI,j,k,index,strl;
charch;
for(I=0;
maxline;
{strl=strlen(xx[I]);
index=strl;
for(j=0;
strl;
if(xx[I][j]=='
o'
)
{for(k=j;
k<
strl-1;
k++)
xx[I][k]=xx[I][k+1];
xx[I][strl-1]='
'
;
index=j;
for(j=strl-1;
j>
=index;
j--)
{ch=xx[I][strl-1];
for(k=strl-1;
k--)
xx[I][k]=xx[I][k-1];
xx[I][0]=ch;
voidStrOR(void)
{inti;
chara[80],*p;
for(i=0;
i<
{p=strchr(xx[i],'
while(p)
{memset(a,0,80);
memcpy(a,xx[i],p-xx[i]);
strcpy(xx[i],p+1);
strcat(xx[i],a);
p=strchr(xx[i],'
voidStrOR(void)/*我的非指针解法*/
{inti,righto,j,k;
chartem[80];
for(i=0;
{k=0;
righto=0;
memset(tem,0,80);
for(j=strlen(xx[i])-1;
=0;
{if(xx[i][j]=='
){righto=j;
for(j=righto+1;
strlen(xx[i]);
j++)tem[k++]=xx[i][j];
righto;
{if(xx[i][j]!
='
)tem[k++]=xx[i][j];
strcpy(xx[i],tem);
}}
注:
题目要求的字符串中所有小写字母o左边的字符串内容移到该串的右边存放,即
将串中“最后”一个字母o左右两侧的内容互换。
题中第一个while()特环的作用是让p1
指向最后一个字母'
。
第一个ctrcat()函数的作用是将p1以后的字符都放到新串t中
,第二个strcat()函数的作用是将p1以前的字符连接到新串t的后面(注意:
在些之前要
让p1所指的单元成为p1前面字符串的结束位置*p1='
\0'
)。
这时完成左右互换。
最后
一个while()循环的作用是删除新串中的所有小写字母'
,采用的删除方法是不是'
的字母一律留下,否则不留(即相当于删除。
{inti;
char*p1,*p2,t[80];
{t[0]='
p2=xx[i];
while(*p2)
{if(*p2=='
)p1=p2;
p2++;
strcat(t,p1+1);
*p1='
strcat(t,xx[i]);
p1=xx[i];
p2=t;
{if(*p2!
)*p1++=*p2;
该题的主要算法是先让两字符指针都指向串尾,然后使一指针(p1)往前移动,当
出现不是字母时则表示在p1+1与p2之间是一个单词,并将该单词存入一变量(t1),最后
将t1连接到新串中(t);
接着再往前找第二个单词,依次类推直到字符串头。
由此可知
新串就是原串中各单词的倒排。
voidStr0L(void)
inti,k;
char*p1,*p2;
chart[80],t1[80];
{p2=p1=strchr(xx[i],'
)-'
t[0]=t1[0]='
k=1;
while(k)
while(isalpha(*p1)==0&
&
p1!
=xx[i]){p1--;
p2=p1;
while(isalpha(*p1)&
p1>
=xx[i])p1--;
memcpy(t1,p1+1,p2-p1);
t1[p2-p1]=0;
strcat(t,t1);
strcat(t,"
"
if(p1<
xx[i])k=0;
strcpy(xx[i],t);
#include"
stdio.h"
string.h"
conio.h"
charxx[50][80];
intmaxline=0;
intReadDat(void);
voidWriteDat(void);
voidStrOR(void)
{clrscr();
if(ReadDat())
{printf("
Can'
topenthefile!
return;
StrOR();
WriteDat();
intReadDat(void)
{FILE*fp;
inti=0;
char*p;
if((fp=fopen("
"
))==NULL)return1;
while(fgets(xx[i],80,fp)!
=NULL)
{p=strchr(xx[i],'
\n'
if(p)*p=0;
i++;
maxline=i;
fclose(fp);
return0;
voidWriteDat(void)
inti;
fp=fopen("
%s\n"
xx[i]);
fprintf(fp,"
youhavethecorrectrecord.
Youcancreateanindexonanyfield,onseveralfieldstobeused
together,oronpartsthereof,thatyouwanttouseasakey.The
keysinindexesallowyouquickaccesstospecificrecordsanddefine
ordersforsequentialprocessingofaISAMfile.Afteryounolonger
needanindex,youcandeleteit.Additionandindexeshavenoeffect
onthedatarecordsoronotherindexes.
Youmaywantafieldinfieldineachrecordtouniquelyidentifythat
recordfromallotherrecordsinthefile.Forexample,theEmployee
Numberfieldisuniqueifyoudonotassignthesamenumbertotwo
differentemployees,andyouneverreassignthesenumberstoother
employees.Ifyouwishtofindormodifytherecordbelongingtoa
specificemployee,thisuniquefieldsavesthethoubleofdetermining
whetheryouhavethecorrectrecord.
Ifyoudonothaveauniquefield,youmustfindthefirstrecord
thematchesyourkeyanddeterminewhethertherecordistheoneyou
want.Ifitisnotthecorrectone,youmustsearchagaintofindothers.
Ifyouknowthatyouhaveauniquefieldwithinyourrecords,you
canincludethisfactinthekeydescription,andISAMwillallowonly
uniquekeys.Forexample,ifyouspecifythattheemployeenumbersare
unique,ISAMonlyletsyouaddrecordstothefilefor,orchange
numbersto,employeenumbersthatdonotalreadlyexistintfile.
nanyfield.Yucancreateanindex
rd.yuhavethecrrectrec
beusedYucancreateanindexnanyfield,nseveralfieldst
useasakey.Thetgether,rnpartstheref,thatyuwantt
rdsanddefinekeysinindexesallwyuquickaccesstspecificrec
ngerrdersfrsequentialprcessingfaISAMfile.Afteryunl
effectneedanindex,yucandeleteit.Additinandindexeshaven
therindexes.nthedatarecrdsrn
uniquelyidentifythatYumaywantafieldinfieldineachrecrdt
yeerecrdfrmalltherrecrdsinthefile.Frexample,theEmpl
Numberfieldisuniqueifyudntassignthesamenumberttw
therdifferentemplyees,andyuneverreassignthesenumberst
aemplyees.Ifyuwishtfindrmdifytherecrdbelngingt
fdeterminingspecificemplyee,thisu