三级网络技术份上机题库1.docx
《三级网络技术份上机题库1.docx》由会员分享,可在线阅读,更多相关《三级网络技术份上机题库1.docx(95页珍藏版)》请在冰豆网上搜索。
![三级网络技术份上机题库1.docx](https://file1.bdocx.com/fileroot1/2023-1/24/0f68812a-db29-45c5-ae1c-47bb568a350e/0f68812a-db29-45c5-ae1c-47bb568a350e1.gif)
三级网络技术份上机题库1
1.在文件in.dat中有200组数据,每组有3个数,每个数均是三位数。
函数ReadDat()读取这200组数据存放到结构数组aa中,请编制函数jsSort(),其函数的功能是:
要求在200组数据中找出条件为每组中的第一个数大于第二个数加第三个数的和,其中满足条件的组数作为函数jsSort()的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第一个数加第三个之和的大小进行升序排列(第一个数加第三个数的和均不相等),排序后的结果仍重新存入结构数组bb中,最后调用函数writeDat()把结果bb输出到
文件out.dat中。
部分源程序存在文件prog1.c中。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
#include
#include
#include
typedefstruct{
intx1,x2,x3;
}data;
dataaa[200],bb[200];
intjsSort()
{inti,j,cnt=0;
dataxy;
for(i=0;i<200;i++)
if(aa[i].x1>(aa[i].x2+aa[i].x3))bb[cnt++]=aa[i];
for(i=0;ifor(j=i+1;jif(bb[i].x1+bb[i].x3>bb[j].x1+bb[j].x3){xy=bb[i];bb[i]=bb[j];bb[j]=xy;}
returncnt;
}
voidmain()
{
intcount;
readDat();
count=jsSort();/*返回满足条件的个数*/
writeDat(count);
}
readDat()
{
FILE*in;
inti;
in=fopen("in.dat","r");
for(i=0;i<200;i++)
fscanf(in,"%d%d%d",&aa[i].x1,&aa[i].x2,&aa[i].x3);
fclose(in);
}
writeDat(intcount)
{
FILE*out;
inti;
clrscr();
out=fopen("out.dat","w");
for(i=0;iprintf("%d,%d,%d第一个数+第三个数=%d\n",bb[i].x1,bb[i].x2,bb[i].x3,bb[i].x1+bb[i].x3);
fprintf(out,"%d%d%d\n",bb[i].x1,bb[i].x2,bb[i].x3);
}
fclose(out);
}
*****************************************************************************
2.请编制函数ReadDat()实现从文件IN.DAT中读取1000个十进制整数到数组xx中;请编制函数Compute()分别计算出xx中奇数的个数odd,奇数的平均值ave1,偶数的平均值ave2以及所有奇数的方差totfc的值,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。
计算方差的公式如下:
N-12
totfc=1/N∑(xx[i]-ave1)
i=0
设N为奇数的个数,xx[i]为奇数,ave1为奇数的平均值。
原始数据文件存放的格式是:
每行存放10个数,并用逗号隔开。
(每个数均大于0且小于等于2000)
部分源程序存在文件prog1.c中。
请勿改动主函数main()和输出数据函数writeDat()的内容。
#include
#include
#include
#defineMAX1000
intxx[MAX],odd=0,even=0;
doubleave1=0.0,ave2=0.0,totfc=0.0;
voidWriteDat(void);
intReadDat(void)
{
inti;
FILE*fp;
if((fp=fopen("IN.DAT","r"))==NULL)return1;
/*********编制函数ReadDat()的部分************/
for(i=0;i{fscanf(fp,"%d,",&xx[i]);
if((i+1)%10==0)
fscanf(fp,"\n");
}
/*******************************************/
fclose(fp);
return0;
}
voidCompute(void)
{inti,yy[MAX];
for(i=0;iyy[i]=0;
for(i=0;iif(xx[i]%2){yy[odd++]=xx[i];ave1+=xx[i];}
else{even++;ave2+=xx[i];}
if(odd==0)ave1=0;
elseave1/=odd;
if(even==0)ave2=0;
elseave2/=even;
for(i=0;itotfc+=(yy[i]-ave1)*(yy[i]-ave1)/odd;
}
voidmain()
{
inti;
for(i=0;iif(ReadDat()){
printf("数据文件IN.DAT不能打开!
\007\n");
return;
}
Compute();
printf("ODD=%d\nAVE1=%f\nAVE2=%f\nTOTFC=%f\n",odd,ave1,ave2,totfc);
WriteDat();
}
voidWriteDat(void)
{
FILE*fp;
inti;
fp=fopen("OUT.DAT","w");
fprintf(fp,"%d\n%f\n%f\n%f\n",odd,ave1,ave2,totfc);
fclose(fp);
}
*************************************************************************
3.请编制函数ReadDat()实现从文件IN.DAT中读取1000个十进制整数到数组xx中;请编制函数Compute()分别计算出xx中偶数的个数even,奇数的平均值ave1,偶数的平均值ave2以及方差totfc的值,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。
计算方差的公式如下:
N-12
totfc=1/N∑(xx[i]-ave2)
i=0
设N为偶数的个数,xx[i]为偶数,ave2为偶数的平均值。
原始数据文件存放的格式是:
每行存放10个数,并用逗号隔开。
(每个数均大于0且小于等于2000)
部分源程序存在文件prog1.c中。
请勿改动主函数main()和输出数据函数writeDat()的内容。
#include
#include
#include
#defineMAX1000
intxx[MAX],odd=0,even=0;
doubleave1=0.0,ave2=0.0,totfc=0.0;
voidWriteDat(void);
intReadDat(void)
{inti;
FILE*fp;
if((fp=fopen("IN.DAT","r"))==NULL)return1;
/*********编制函数ReadDat()的部分************/
for(i=0;i{fscanf(fp,"%d,",&xx[i]);
if((i+1)%10==0)
fscanf(fp,"\n");}
/*******************************************/
fclose(fp);
return0;
}
voidCompute(void)
{inti,yy[MAX];
for(i=0;iyy[i]=0;
for(i=0;iif(xx[i]%2==0){yy[even++]=xx[i];ave2+=xx[i];}
else{odd++;ave1+=xx[i];}
if(odd==0)ave1=0;
elseave1/=odd;
if(even==0)ave2=0;
elseave2/=even;
for(i=0;itotfc+=(yy[i]-ave2)*(yy[i]-ave2)/even;
}
voidmain()
{
inti;
for(i=0;iif(ReadDat()){
printf("数据文件IN.DAT不能打开!
\007\n");
return;
}
Compute();
printf("OVEN=%d\nAVE1=%f\nAVER2=%f\nTOTFC=%f\n",even,ave1,ave2,totfc);
WriteDat();
}
voidWriteDat(void)
{
FILE*fp;
inti;
fp=fopen("OUT.DAT","w");
fprintf(fp,"%d\n%f\n%f\n%f\n",even,ave1,ave2,totfc);
fclose(fp);
}
4.函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS5.DAT中。
替代关系:
f(p)=p*11mod256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符是小写字母或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。
部分源程序存在文件prog1.c中。
原始数据文件存放的格式是:
每行的宽度均小于80个字符。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
#include
#include
#include
#include
unsignedcharxx[50][80];
intmaxline=0;/*文章的总行数*/
intReadDat(void);
voidWriteDat(void);
voidencryptChar()
{inti,j;
for(i=0;ifor(j=0;jif(xx[i][j]*11%256<=32||xx[i][j]>='a'&&xx[i][j]<='z')continue;
elsexx[i][j]=xx[i][j]*11%256;
}
voidmain()
{
clrscr();
if(ReadDat()){
printf("数据文件ENG.IN不能打开!
\n\007");
return;
}
encryptChar();
WriteDat();
}
intReadDat(void)
{
FILE*fp;
inti=0;
unsignedchar*p;
if((fp=fopen("eng.in","r"))==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)
{
FILE*fp;
inti;
fp=fopen("ps5.dat","w");
for(i=0;iprintf("%s\n",xx[i]);
fprintf(fp,"%s\n",xx[i]);
}
fclose(fp);
}
*************************************************************************
5.程序prog1.c的功能是:
把s字符串中的所有字符左移一个位置,串中的第一个字符移到最后。
请考生编写函数chg(char*s)实现程序要求,最后调用函数readwriteDAT()把结果输出到bc2.out文件中。
例如:
s字符串中原有内容为:
Mn.123xyZ,则调用该函数后,结果为:
n.123xyZM。
注意:
部分源程序存在文件prog1.c文件中。
请勿改动主函数main()和输出数据函数readwriteDAT()的内容。
#include
#include
#defineN81
voidreadwriteDAT();
voidchg(char*s)
{inti;
charch=*s;
for(i=0;is[i]=s[i+1];
s[strlen(s)-1]=ch;
}
main()
{
chara[N];
clrscr();
printf("Enterastring:
");gets(a);
printf("Theoriginalstringis:
");puts(a);
chg(a);
printf("Thestringaftermodified:
");
puts(a);
readwriteDAT();
}
voidreadwriteDAT()
{
inti;
chara[N];
FILE*rf,*wf;
rf=fopen("bc2.in","r");
wf=fopen("bc2.out","w");
for(i=0;i<50;i++){
fscanf(rf,"%s",a);
chg(a);
fprintf(wf,"%s\n",a);
}
fclose(rf);
fclose(wf);
}
************************************************************************
6.程序PROG1.C的功能是:
将大于整数m且紧靠m的k个素数存入数组xx。
请编写一个函数num(intm,intk,intxx[])实现程序的要求。
最后调用函数readwriteDat()把结果输出到文件out.dat中。
例如:
若输入175则应输出:
19,23,29,31,37。
请勿改动主函数main()和写函数PROG1.C的内容。
#include
#include
voidreadwriteDat();
intisP(intm)
{
inti;
for(i=2;iif(m%i==0)return0;
return1;
}
voidnum(intm,intk,intxx[])
{ints=0;
for(m=m+1;k>0;m++)
if(isP(m)){xx[s++]=m;k--;}
}
main()
{
intm,n,xx[1000];
clrscr();
printf("\nPleaseentertwointegers:
");
scanf("%d%d",&m,&n);
num(m,n,xx);
for(m=0;mprintf("%d",xx[m]);
printf("\n");
readwriteDat();
}
voidreadwriteDat()
{
intm,n,xx[1000],i;
FILE*rf,*wf;
rf=fopen("in.dat","r");
wf=fopen("out.dat","w");
for(i=0;i<10;i++){
fscanf(rf,"%d%d",&m,&n);
num(m,n,xx);
for(m=0;mfprintf(wf,"\n");
}
fclose(rf);
fclose(wf);
}
7.下列程序的功能是:
寻找并输出11至999之间的数m,它满足m,m2和m3均为回文数。
所谓回文数是指其各位数字左右对称的整数,例如121,676,94249等。
满足上述条件的数如m=11,m2=121,m3=1331皆为回文数。
请编制函数intsvalue(longm)实现此功能,如果是回文数,则函数返回1,反之则返回0。
最后把结果输出到文件out.dat中。
注意:
部分源程序已给出。
请勿改动主函数main()的内容。
#include
intjsValue(longn)
{inti,strl,half;
charxy[20];
ltoa(n,xy,10);/*注意这里不能使用itoa()函数,因为n是long型的*/
strl=strlen(xy);
half=strl/2;
for(i=0;iif(xy[i]!
=xy[--strl])break;
if(i>=half)return1;
elsereturn0;
}
main()
{longm;
FILE*out;
out=fopen("out.dat","w");
for(m=11;m<1000;m++)
{if(jsValue(m)&&jsValue(m*m)&&jsValue(m*m*m))
{printf("m=%4ld,m*m=%6ld,m*m*m=%8ld\n",m,m*m,m*m*m);
fprintf(out,"m=%4ld,m*m=%6ld,m*m*m=%8ld\n",m,m*m,m*m*m);
}
}
fclose(out);
8.函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS7.DAT中。
替代关系:
f(p)=p*11mod256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符是大写字母或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。
部分源程序存在文件prog1.c中。
原始数据文件存放的格式是:
每行的宽度均小于80个字符。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
#include
#include
#include
#include
unsignedcharxx[50][80];
intmaxline=0;/*文章的总行数*/
intReadDat(void);
voidWriteDat(void);
voidencryptChar()
{inti,j;
for(i=0;ifor(j=0;jif(xx[i][j]*11%256<=32||xx[i][j]>='A'&&xx[i][j]<='Z')continue;
elsexx[i][j]=xx[i][j]*11%256;
}
voidmain()
{
clrscr();
if(ReadDat()){
printf("数据文件ENG.IN不能打开!
\n\007");
return;
}
encryptChar();
WriteDat();
}
intReadDat(void)
{
FILE*fp;
inti=0;
unsignedchar*p;
if((fp=fopen("eng.in","r"))==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)
{
FILE*fp;
inti;
fp=fopen("ps7.dat","w");
for(i=0;iprintf("%s\n",xx[i]);
fprintf(fp,"%s\n",xx[i]);
}
fclose(fp);
}
*****************************************************************************
9.将文件IN.DAT中读取200个整数至数组xx中,求出最大数max及最大数的个数cnt和数组xx中能被3整除或能被7整除的算术平均值pj(保留2位小数)。
结果max,cnt,pj输出到OUT.DAT中。
部分程序、读数据函数read_dat(intxx[200])及输出格式已给出。
#include
#include
#defineN200
voidread_dat(intxx[N])
{
inti,j;
FILE*fp;
fp=fopen("in.dat","r")