三级网络技术.docx
《三级网络技术.docx》由会员分享,可在线阅读,更多相关《三级网络技术.docx(69页珍藏版)》请在冰豆网上搜索。
![三级网络技术.docx](https://file1.bdocx.com/fileroot1/2023-2/23/56c50c19-4ee4-4906-b1cd-1b7a31a7fb1b/56c50c19-4ee4-4906-b1cd-1b7a31a7fb1b1.gif)
三级网络技术
☆题目2
已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:
如果四位数各位上的数字均是0或2或4或6或8,则统计出满足此条件的个数cnt,并把这些四位数按从大到小的顺序存入数组b中。
最后main()函数调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。
voidjsVal()
{inti,j,qw,bw,sw,gw;
for(i=0;i{qw=a[i]/1000;bw=a[i]/100%10;
sw=a[i]%100/10;gw=a[i]%10;
if(qw&&qw%2==0&&bw%2==0&&sw%2==0&&gw%2==0)b[cnt++]=a[i];
}
for(i=0;ifor(j=i+1;jif(b[i]
}
★题目15(整数各位数字运算排序题)
已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:
若一个四位数的千位数字上的值小于等于百位数字上的值,百位数字上的值小于等于十位数字上的值,以及十位数字上的值小于等于个位数字上的值,并且原四位数是偶数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。
voidjsVal()
{inti,j;
intqw,bw,sw,gw;
for(i=0;i{qw=a[i]/1000;bw=a[i]%1000/100;
sw=a[i]%100/10;gw=a[i]%10;
if((qw<=bw)&&(bw<=sw)&&(sw<=gw)&&(a[i]%2==0))b[cnt++]=a[i];
}
for(i=0;ifor(j=i+1;jif(b[i]>b[j]){qw=b[i];b[i]=b[j];b[j]=qw;}
}
题目27(整数各位数字运算题)
已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:
求出千位数上的数减百位数上的数减十位数上的数减个位数上的数大于零的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序,最后调用写函数writeDat()把结果输出到out.dat文件。
例如:
9123,9-1-2-3>0,则该数满足条件存入数组b中,且个数cnt=cnt+1。
9812,9-8-1-2>0,则该数不满足条件忽略。
jsValue()
{inti,j,qw,bw,sw,gw;
for(i=0;i<300;i++)
{qw=a[i]/1000;bw=a[i]/100%10;
sw=a[i]%100/10;gw=a[i]%10;
if(qw-bw-sw-gw>0)b[cnt++]=a[i];
}
for(i=0;ifor(j=i+1;jif(b[i]>b[j]){qw=b[i];b[i]=b[j];b[j]=qw;}
}
☆题目19(单词个数统计题)
编写一个函数findStr(char*str,char*substr),该函数统计一个长度为2的子字符串在另一个字符串中出现的次数。
例如,假定输入的字符串为"asdasasdfgasdaszx67asdmklo",子字符串为"as",函数返回值是6。
(表明了返回值是整数型)
函数ReadWrite()实现从文件in.dat中读取两个字符串,并调用函数findStr(),最后把结果输出到文件out.dat中。
intfindStr(char*str,char*substr)
{inti,j,len1,len2,cnt=0,flag;
len1=strlen(str);
len2=strlen(substr);
for(i=0;i{for(j=0;jif(str[i+j]==substr[j])flag=1;
else{flag=0;break;}
if(flag==1)cnt++;
}
returncnt;
}
☆题目5(整数排序题)
在文件in.dat中有200个正整数,且每个数均在1000至9999之间。
函数ReadDat()读取这200个数存放到数组aa中。
请编制函数jsSort(),其函数的功能是:
要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10个数依次存入数组bb中,如果后三位的数值相等,则按原先的数值进行降序排列。
最后调用函数WriteDat()把结果bb输出到文件out.dat中。
例:
处理前60125099901270258088
处理后90126012702580885099
voidjsSort()
{
inti,j,data;
for(i=0;i<199;i++)
for(j=i+1;j<200;j++)if(aa[i]%1000>aa[j]%1000||aa[i]%1000==aa[j]%1000&&aa[i]for(i=0;i<10;i++)
bb[i]=aa[i];
}
★题目90(整数排序题)
下列程序的功能是:
将一正整数序列{K1,K2,...,K9}重新排列成一个新的序列。
新序列中,比K1小的数都在K1的前面(左面),比K1大的数都在K1的后面(右面)。
要求编写函数jsValue()实现此功能,最后调用writeDat()函数将新序列输出到文件out.dat中。
说明:
在程序中已给出了10个序列,每个序列有9个正整数,并存入数组a[10][9]中,分别求出这10个新序列。
例:
序列{6,8,9,1,2,5,4,7,3}
经重排后成为{3,4,5,2,1,6,8,9,7}
jsValue(inta[10][9])
{inti,j,k,val,num;
for(i=0;i<10;i++)
{val=a[i][0];
for(j=0;j<9;j++)
if(a[i][j]{num=a[i][j];
for(k=j;k>0;k--)
a[i][k]=a[i][k-1];
a[i][0]=num;
}
}
}
★☆题目28(整数各位打散组合运算题)
已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:
把千位数字和十位数字重新组成一个新的十位数ab(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的十位数cd(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字),如果新组成的两个十位数ab-cd>=0且ab-cd<=10且两个数均是奇数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt。
最后main()函数调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。
voidjsVal()
{inti,j,thou,hun,ten,data,ab,cd;
for(i=0;i<200;i++)
{thou=a[i]/1000;hun=a[i]%1000/100;
ten=a[i]%100/10;data=a[i]%10;
ab=10*thou+ten;cd=10*data+hun;
if((ab-cd)>=0&&(ab-cd)<=10&&ab%2==1&&cd%2==1&&ab>=10&&cd>=10)
b[cnt++]=a[i];
}
for(i=0;ifor(j=i+1;jif(b[i]
}
★☆题目26(整数统计运算题)
已知在文件IN.DAT中存有若干个(个数<200)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组xx中。
请编制函数CalValue(),其功能要求:
1、求出这文件中共有多少个正整数totNum;2、求这些数右移1位后,产生的新数是偶数的数的个数totCnt,以及满足此条件的这些数(右移前的值)的算术平均值totPjz,最后调用函数writeDat()把所求的结果输出到文件OUT.DAT中。
voidCalValue(void)
{inti,data;
for(i=0;iif(xx[i]>0)
{totNum++;
data=xx[i]>>1;
if(data%2==0){totCnt++;totPjz+=xx[i];}
}
if(totCnt==0)totPjz=0;
elsetotPjz/=totCnt;
}
题目70(整数统计运算题)
已知在文件IN.DAT中存有若干个(个数<200)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组xx中。
请编制函数CalValue(),其功能要求:
1、求出这文件中共有多少个正整数totNum;2、求这些数右移1位后,产生的新数是奇数的数的个数totCnt,以及满足此条件的这些数(右移前的值)的算术平均值totPjz,最后调用函数writeDat()把所求的结果输出到文件OUT.DAT中。
voidCalValue(void)
{inti,data;
for(i=0;iif(xx[i]>0)
{totNum++;
data=xx[i]>>1;
if(data%2){totCnt++;totPjz+=xx[i];}
}
if(totCnt==0)totPjz=0;
elsetotPjz/=totCnt;
}
题目91(整数统计运算题)
请编制程序prog1.c,从文件in.dat中读取200个整数至数组xx中,求出奇数的个数cnt1和偶数的个数cnt2以及数组xx下标为偶数的元素值的算术平均值pj(保留2位小数)。
/**********************/
sum=0;pj=0.0;cnt1=cnt2=0;
for(i=0;i{if(xx[i]%2)cnt1++;
elsecnt2++;
if(i%2==0){pj+=xx[i];sum++;}
}
pj/=sum;
题目94(整数统计运算题)
请编制程序prog1.c,从文件in.dat中读取200个整数至数组xx中,求出奇数的个数cnt1和偶数的个数cnt2以及数组xx中值为偶数的算术平均值pj(保留2位小数)。
结果cnt1,cnt2,pj输出到out.dat中。
/****************************/
cnt1=0;cnt2=0;pj=0.0;
for(m=0;mif(xx[m]%2)cnt1++;
else{cnt2++;pj+=xx[m];}
if(cnt2==0)pj=0;
elsepj/=cnt2;
☆题目92(整数统计运算题)
请编制程序prog1.c,从文件IN.DAT中读取200个整数至数组xx中,求出最大数max及最大数的个数cnt和数组xx中能被3整除或能被7整除的算术平均值pj(保留2位小数)。
/*********************/
cnt=0;max=xx[0];pj=0.0;n=0;
for(m=0;mif(maxfor(m=0;m{if(xx[m]==max)cnt++;
if(xx[m]%3==0||xx[m]%7==0)
{pj+=xx[m];n++;}
}
pj/=n;
}
★☆题目75(整数各位数运算及排序题)
在文件in.dat中有200组数据,每组有3个数,每个数均是三位数。
函数ReadDat()读取这200组数据存放到结构数组aa中,请编制函数jsSort(),其函数的功能是:
要求在200组数据中找出条件为每组中的第一个数大于第二个数加第三个数的和,其中满足条件的组数作为函数jsSort()的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第一个数加第三个之和的大小进行升序排列(第一个数加第三个数的和均不相等),排序后的结果仍重新存入结构数组bb中,最后调用函数writeDat()把结果bb输出到
文件out.dat中。
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;
}
☆题目1
请编写一个函数jsValue(intm,intk,intxx[]),该函数的功能是:
将大于整数m且紧靠m的k个素数存入数组xx传回。
最后调用函数writeDat()读取10组数据,分别得出结果且把结果输出到文件out.dat中。
部分源程序存在文件prog1.c中。
例如:
若输入175则应输出:
19,23,29,31,37。
请勿改动主函数main()和写函数writeDat()的内容。
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--;}
}
题目34(素数题)
无忧id102题提供了求素数isPrime()函数
程序prog1.c的功能是:
选出100以上1000之内所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数(如293)。
计算并输出上述这些素数的个数cnt以及这些素数值的和sum。
请考生编写函数countValue()实现程序要求,最后调用函数writeDAT()把结果cnt和sum输出到文件bc10.out中。
intisPrime(intm)
{
inti;
for(i=2;iif(m%i==0)return0;
return1;
}
voidcountValue()
{inti,j,bw,sw,gw;
for(i=100;i<1000;i++)
{bw=i/100;sw=i%100/10;gw=i%10;
if(isPrime(i)&&(gw+sw)%10==bw){cnt++;sum+=i;}
}
}
★☆题目64(素数题)
下列程序的功能是:
找出所有100以内(含100)满足I,I+4,I+10都是素数的整数I(I+10也在100以内)的个数cnt以及这些I之和sum。
请编写函数countValue()实现程序要求的功能,最后调用函数writeDat()把结果cnt和sum输出到文件out.dat中。
intisPrime(intm)
{
inti;
for(i=2;iif(m%i==0)return0;
return1;
}
voidcountValue()
{inti;
for(i=2;i<=90;i++)
if(isPrime(i)&&isPrime(i+4)&&isPrime(i+10))
{cnt++;sum+=i;}
}
运行结果为:
满足条件的整数的个数=7
满足条件的整数的和值=201
★题目66(素数题)
下列程序prog1.c的功能是:
计算500-800区间内素数的个数cnt,并按所求素数的值从大到小的顺序,再计算其间隔加、减之和,即第1个素数-第2个素数+第3个素数-第4个素数+第5个素数...的值sum。
请编写函数countValue()实现程序的要求,最后调用函数writeDat()把结果cnt和sum,输出到文件OUT11.DAT中。
intisP(intm)
{inti;
for(i=2;iif(m%i==0)return0;
return1;
}
voidcountValue()
{inti,j,k=1;
for(i=800;i>500;i--)
if(isP(i))
{
cnt++;
sum=sum+k*i;
k=k*(-1);}
}
}
★题目82(素数题)
已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:
求出所有这些四位数是素数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数writeDat()把结果cnt,pjz1,pjz2输
出到out.dat文件。
例如:
5591是素数,则该数满足条件计算平均值pjz1,且个数cnt=cnt+1。
9812是非素数,则该数不满足条件计算平均值pjz2。
intisP(intm)
{inti;
for(i=2;iif(m%i==0)return0;
return1;
}
jsValue()
{inti;
for(i=0;i<300;i++)
if(isP(a[i])){pjz1+=a[i];cnt++;}
elsepjz2+=a[i];
if(cnt==0)pjz1=0;
elsepjz1/=cnt;
if(300-cnt==0)pjz2=0;
elsepjz2/=(300-cnt);
}
★☆题目16(字符替换题)
函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数StrCharJR(),其函数的功能是:
以行为单位把字符串中所有字符的ASCII值右移4位,然后把右移后的字符ASCII值再加上原字符的ASCII值,得到新的字符仍存入原字符串对应的位置上。
最后把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT8.DAT中。
voidStrCharJR()
{inti,j;
for(i=0;ifor(j=0;jxx[i][j]+=(xx[i][j]>>4);(右移四位的表达方式)
}
★题目74(字符ASCII值移位替换题)
函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数StrCharJL(),其函数的功能是:
以行为单位把字符串中的所有字符的ASCII值左移4位,低位补0,如果左移后,其字符的ASCII值小于等于32或大于100,则原字符保持不变,否则就把左移后的字符ASCII值再加上原字符ASCII值,得到新的字符仍存入原字符串对应的位置上。
最后把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT7.DAT中。
charxx[50][80];
intmaxline=0;/*文章的总行数*/
intReadDat(void);
voidWriteDat(void);
voidStrCharJL(void)
{inti,j;
charc;
for(i=0;ifor(j=0;j{c=xx[i][j]<<4;
if(!
(c<=32||c>100))xx[i][j]+=c;
}
}
★☆题目100(字符替换题)
函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数CharConvA(),其函数的功能是:
以行为单位把字符串中的最后一个字符的ASCII值右移4位,高位补0后加最后第二个字符的ASCII值,得到最后一个新的字符,最后第二个字符的ASCII值右移4位,高位补0后加最后第三个字符的ASCII值,得到最后第二个新的字符,依此类推一直处理到第二个字符,第一个字符的ASCII值加原最后一个字符的ASCII值,得到第一个新的字符,得到的新字符分别存放在原字符串对应的位置上。
最后已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT10.DAT中。
voidCharConvA()
{inti,j;
charp,c;
for(i=0;i{p=xx[i][strlen(xx[i])-1];
c=xx[i][0];
for(j=strlen(xx[i])-1;j>0;j--)
xx[i][j]=(xx[i][j]>>4)+xx[i][j-1];
xx[i][0]=p+c;
}
}
★☆题目44(字符串左右排序交换题)
函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。
请编制函数jsSort(),其函数的功能是:
以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。
条件:
从字符串中间一分为二,左边部分按字符的ASCII值降序排序,排序后左边部分与右边部分进行交换。
如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。
例如:
位置 0 1 2 3 4 5 6 7