首页 > 精品范文库 > 14号文库
2012年最新全国计算机等级考试三级网络技术上机试题100套(名师总结)
编辑:尘埃落定 识别码:23-506966 14号文库 发布时间: 2023-06-05 15:55:03 来源:网络

第一篇:2012年最新全国计算机等级考试三级网络技术上机试题100套(名师总结)

全国计算机等级考试三级网络技术上机试题

壹、ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。条件:从字符串中间一分为二,左边部分按字符的ASCII升序排列,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。例如: 位置 0 1 2 3 4 5 6 7 8 原字符串 d c b a h g f e

3 2 1 9 8 7 6 5 则处理后的字符串 h g f d a b c d 8 7 6 5 9 1 2 3 4 注意:部分源程序给出。

请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。#include #include #include void readDat();void writeDat();char xx[20][80];void jsSort(){ int i,j,k,str,half;char ch;for(i=0;i<20;i++)/*遍历所有行*/ {

str=strlen(xx[i]);

half=str/2;

for(j=0;j

for(k=j+1;k

if(xx[i][j]>xx[i][k])/*如果存在顺序,交换两个元素*/ {ch=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=ch;}

for(j=half-1;k=str-1;j>=0;j--,k--)

{ch=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=ch;}

} } void main(){ readDat();jsSort();

writeDat();} void readDat(){

FILE *in;int i=0;char *p;in=fopen(”in.dat”,”r”);while(i<20&&fgets(xx[i],80,in)!=NULL){

} fclose(in);p=strchr(xx[i],’n’);if(p)*p=0;i++;} void writeDat(){

FILE *out;int I;clrscr();out=fopen(“out.dat”,”w”);for(i=0;i<20;i++){

} fclose(out);} printf(“%sn”,xx[i]);fprintf(out,”%sn”,xx[i]);运算 排序 出现次数

☆题目19(单词个数统计题)编写一个函数findStr(char *str,char *substr),该函数统计一个长度为2的子字符串在另一个字符串中出现的次数。例如,假定输入的字符串为“asd asasdfg asd as zx67 asd mklo”,子字符串为“as”,函数返回值是6。

函数ReadWrite()实现从文件in.dat中读取两个字符串,并调用函数findStr(),最后把结果输出到文件out.dat中。

int findStr(char *str,char *substr){ int i,j,len1,len2,cnt=0,flag;len1=strlen(str);len2=strlen(substr);for(i=0;i

在文件in.dat中有200组数据,每组有3个数,每个数均是三位数。其函数的功能是:要求在200组数据中找出条件为每组中的第二个数大于第一个数加第三个数的之和,其中满足条件的组数作为函数jsSort()的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第二个数加第三个之和的大小进行降序排列(第二个数加第三个数的和均不相等),排序后的结果仍重新存入结构数组bb中,最后调用函数WriteDat()把结果bb输出到文件out.dat中。int jsSort(){int i, j, cnt=0;data ch;for(i=0;i<200;i++)if(aa[i].x2>aa[i].x1+aa[i].x3)bb[cnt++]=aa[i];for(i=0;i(aa[i].x2+aa[i].x3))bb[cnt++]=aa[i];for(i=0;ibb[j].x1+bb[j].x3){ xy=bb[i];bb[i]=bb[j];bb[j]=xy;} return cnt;}

★题目79(数字运算题)请编写函数void countValue(int *a,int *n),它的功能是:求出1到1000之内能被7或11整除但不能同时被7或11整除的所有整数放在数组a中,并通过n返回这些数的个数。void countValue(int *a,int *n){ int i;*n=0;for(i=1;i<=1000;i++)if(i%7==0&&i%11||i%7&&i%11==0)a[(*n)++]=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(int a[10][9]){ int i,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;} } ★题目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;m

★题目3函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数StrOR(),其函数的功能是:以行为单位依次把字符串中所有小写字母o左边的字符串内容移到该串的右边存放,然后把小写字母o删除,余下的字符串内容移到已处理字符串的左边存放,之后把已处理的字符串仍按行重新存入字符串数组xx中。最后main()函数调用函数WriteDat()把结果xx输出到文件OUT5.DAT中。

原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。void StrOR(void){int i,righto,j,s,k;char tem[80];for(i=0;i=0;j--){ k=0;memset(tem,0,80);if(xx[i][j]=='o'){righto=j;for(s=righto+1;s

例如:原文:You He Me I am a student.结果:Me He You student a am I 原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。void StrOL(void){ int i,j,k,s,m,strl;char str[80];for(i=0;i=0;j--){ if(isalpha(xx[i][j]))k++;else { for(m=1;m<=k;m++)str[s++]=xx[i][j+m];k=0;if(!isalpha(xx[i][j]))} str[s++]=' ';} for(m=1;m<=k;m++)str[s++]=xx[i][j+m];str[s]='';strcpy(xx[i],str);} } ☆题目9(字符串排序题)函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数SortCharD(),其函数的功能是:以行为单位对字符按从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT2.DAT中。

例:原文:dAe,BfC.CCbbAA 结果:fedCBA.bbCCAA void SortCharD(void){int i,j,k,strl;char ch;for(i=0;i

例:原文:Adb.Bcdza abck.LLhj 结果:Aec.Bdeab bcdl.LLik void ConvertCharA(void){ int i,j;for(i=0;i='a'&&xx[i][j]<='y')xx[i][j]+=1;} } ☆题目11(字符串字母移位题)程序prog1.c的功能是:把 s 字符串中的所有字母改写成该字母的下一个字母,字母z改写成字母a。要求大写字母仍为大写字母,小写字母仍为小写字母,其它字符不做改变。

请考生编写函数chg(char *s)实现程序要求,最后调用函数readwriteDAT()把结果输出到文件bc1.out中。

例如:s 字符串中原有的内容为:Mn.123Zxy,则调用该函数后,结果为:No.123Ayz。void chg(char *s){int I;for(I=0;I='a'&&s[i]<='y'||s[i] >='A'&&s[i]<='Y')s[i]+=1;} ★题目63(字符串移位题)程序prog1.c的功能是:把 s 字符串中的所有字符左移一个位置,串中的第一个字符移到最后。请考生编写函数chg(char *s)实现程序要求,最后调用函数readwriteDAT()把结果输出到bc2.out文件中。

例如:s字符串中原有内容为:Mn.123xyZ,则调用该函数后,结果为:n.123xyZM。void chg(char *s){ int i;char ch=*s;for(i=0;i>4);} ☆题目17(字符替换题)函数READDAT()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组XX中;请编制函数CHA(),其函数功能是:以行为单位把字符串中的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个亲朋字符,第二个字符的ASCII值加第三个字符的ASCII值,得到第二个新字符,依此类推一直处理到最后第二个字符,最后一个字符的ASCII值加原第一个字符的ASCII值,得到最后一个新的字符,得到的新字符分别存放在原字符串对应的位置上。最后把已处理的字符串逆转后按行重新存入字符串数组XX中,最后调用函数WRITEDAT()把结果XX输出到文件OUT9.DAT中.原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格.void ChA(void){ int i,j;char ch;for(i=0;i

例:原文:Adb.Bcdza abck.LLhj 结果:Aca.Bbcyz zabj.LLgi void ConvertCharD(void){ int i,j;for(i=0;i='b'&&xx[i][j]<='z')xx[i][j]-=1;} } ★题目74(字符ASCII值移位替换题)函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数StrCharJL(),其函数的功能是:以行为单位把字符串中的所有字符的ASCII值左移4位,低位补0,如果左移后,其字符的ASCII值小于等于32或大于100,则原字符保持不变,否则就把左移后的字符ASCII值再加上原字符ASCII值,得到新的字符仍存入原字符串对应的位置上。最后把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT7.DAT中。char xx[50][80];void StrCharJL(void){ int i,j;char c;for(i=0;i100))xx[i][j]+=c;} } 题目88(字符串排序题)函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数SortCharA(),其函数的功能是:以行为单位对字符按从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT1.DAT中。例:原文:dAe,BfC.CCbbAA 结果:,.ABCdef AACCbb void SortCharA(void){int i,j,k,strl;char ch;for(i=0;ixx[i][k]){ch=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=ch;} } } ☆题目100(字符替换题)函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数CharConvA(),其函数的功能是:以行为单位把字符串中的最后一个字符的ASCII值右移4位,高位补0后加最后第二个字符的ASCII值,得到最后一个新的字符,最后第二个字符的ASCII值右移4位,高位补0后加最后第三个字符的ASCII值,得到最后第二个新的字符,依此类推一直处理到第二个字符,第一个字符的ASCII值加原最后一个字符的ASCII值,得到第一个新的字符,得到的新字符分别存放在原字符串对应的位置上。最后已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT10.DAT中。void CharConvA(){ int i,j;char p,c;for(i=0;i0;j--)xx[i][j]=(xx[i][j]>>4)+xx[i][j-1];xx[i][0]=p+c;} } 选票问题

☆题目39(选票问题)现有一个10个人100行的选票数据文件IN.DAT,其数据存放的格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推 :内容均为字符0和1,1表示此人被选中,0表示此人未被选中,全选或不选均为无效的选票。给定函数ReadDat()的功能是把选票数据读入到字符串数组xx中。请编制函数CountRs()来统计每个人的选票数并把得票数依次存入yy[0]到yy[9]中。把结果yy输出到文件OUT.DAT中。

void CountRs(void){ int i,j,count;for(i=0;i<100;i++){ count=0;for(j=0;j<10;j++)if(xx[i][j]=='1')count++;if(count==0||count==10)continue;for(j=0;j<10;j++)if(xx[i][j]=='1')yy[j]++;} } 题目58(选票问题)现有一个10个人100行的选票数据文件IN.DAT,其数据存放的格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推:内容均为字符0和1,1表示此人被选中,0表示此人未被选中,若一张选票人数小于等于5个人时被认为无效的选票。给定函数ReadDat()的功能是把选票数据读入到字符串数组xx中。请编制函数CountRs()来统计每个人的选票数并把得票数依次存入yy[0]到yy[9]中。把结果yy输出到文件OUT.DAT中。void CountRs(void){ int i,j,count;for(i=0;i<100;i++){ count=0;for(j=0;j<10;j++)if(xx[i][j]=='1')count++;if(count<=5)continue;for(j=0;j<10;j++)if(xx[i][j]=='1')yy[j]++;} } ☆题目84(选票问题)现有一个10个人100行的选票数据文件IN.DAT,其数据存放的格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推 :内容均为字符0和1,1表示此人被选中,0表示此人未被选中,若一张选票人数大于5个人时被认为无效的选票。给定函数ReadDat()的功能是把选票数据读入到字符串数组xx中。请编制函数CountRs()来统计每个人的选票数并把得票数依次存入yy[0]到yy[9]中。把结果yy输出到文件OUT.DAT中。void CountRs(void){ int i,j,count;for(i=0;i<100;i++){ count=0;for(j=0;j<10;j++)if(xx[i][j]=='1')count++;if(count>5)continue;for(j=0;j<10;j++)if(xx[i][j]=='1')yy[j]++;} } 素数问题

01112***819题目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(){ int i,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;ib[j]){ qw=b[i];b[i]=b[j];b[j]=qw;} } ☆题目48(整数各位数字运算题)已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序,最后调用写函数writeDat()把结果输出到out.dat文件。

例如:6712,6+2=7+1,则该数满足条件存入数组b中,且个数cnt=cnt+1。8129,8+9<>1+2,则该数不满足条件忽略。jsValue(){int i,qw,bw,sw,gw,j;for(i=0;i<300;i++){qw=a[i]/1000;bw=a[i]%1000/100;sw=a[i]%100/10;gw=a[i]%10;if(qw+gw==bw+sw)b[cnt++]=a[i];} for(i=0;ib[j]){qw=b[i];b[i]=b[j];b[j]=qw;} } 题目49(整数各位数字运算题)已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数减百位数减十位数上的数减个位数上的数大于零的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数writeDat()把结果输出到out.dat文件。

例如:9123,9-1-2-3>0,则该数满足条件计算平均值pjz1,且个数cnt=cnt+1。9812,9-8-1-2<0,则该数不满足条件计算平均值pjz2。jsValue(){int i,qw,bw,sw,gw,n=0;for(i=0;i<300;i++){qw=a[i]/1000;bw=a[i]%1000/100;sw=a[i]%100/10;gw=a[i]%10;if(qw-bw-sw-gw>0){cnt++;pjz1+=a[i];} else {n++;pjz2+=a[i];} } if(cnt==0)pjz1=0;else pjz1/=cnt;if(n==0)pjz2=0;else pjz2/=n;} ☆题目53(整数各位数字运算题)已知数据文件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,则该数不满足条件忽略。

部分源程序存在文件prog1.c中。

程序中已定义数组:a[300],b[300],已定义变量:cnt 请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。#include int a[300],b[300],cnt=0;jsValue(){ int i,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;ib[j]){ qw=b[i];b[i]=b[j];b[j]=qw;} } 题目54(整数各位数运算排序题)已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从大到小的顺序进行排序,最后调用写函数writeDat()把结果输出到out.dat文件。

例如:7153,7+1=5+3,则该数满足条件存入数组b中,且个数cnt=cnt+1。8129,8+1<>2+9,则该数不满足条件忽略。jsValue(){ int i,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)b[cnt++]=a[i];} for(i=0;i

例如:5591是素数,则该数满足条件存入数组b中,且个数cnt=cnt+1。9812是非素数,则该数不满足条件忽略。int isP(int m){ int i;for(i=2;i

jsValue(){int i,j,value;for(i=0;i<300;i++)if(isP(a[i]))b[cnt++]=a[i];for(i=0;ib[j]){value=b[i];b[i]=b[j];b[j]=value;} } 题目80(整数各位数运算题)已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数writeDat()把结果输出到out.dat文件。

例如:1239,9-1-2-3>0,则该数满足条件计算平均值pjz1,且个数cnt=cnt+1。8129,9-8-1-2<0,则该数不满足条件计算平均值pjz2。jsValue(){int i,j,thou,hun,ten,data,n=0;for(i=0;i<300;i++){thou=a[i]/1000;hun=a[i]/100%10;ten=a[i]%100/10;data=a[i]%10;if(data-thou-hun-ten>0){ cnt++;pjz1+=a[i];} else { n++;pjz2+=a[i];} } if(cnt==0)pjz1=0;else pjz1/=cnt;if(n==0)pjz2=0;else pjz2/=n;} ☆题目81(整数各位数运算题)已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数加百位数等于十位数上的数加个位数上的数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数writeDat()把结果输出到out.dat文件。

例如:7153,7+1=5+3,则该数满足条件计算平均值pjz1,且个数cnt=cnt+1。8129,8+1<>2+9,则该数不满足条件计算平均值pjz2。jsValue(){int i,thou,hun,ten,data,n=0;for(i=0;i<300;i++){thou=a[i]/1000;hun=a[i]%1000/100;ten=a[i]%100/10;data=a[i]%10;if(thou+hun==ten+data){cnt++;pjz1+=a[i];} else {n++;pjz2+=a[i];} } if(cnt==0)pjz1=0;else pjz1/=cnt;if(n==0)pjz2=0;else pjz2/=n;} ★题目82(素数题)已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出所有这些四位数是素数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数writeDat()把结果cnt,pjz1,pjz2输 出到out.dat文件。

例如:5591是素数,则该数满足条件计算平均值pjz1,且个数cnt=cnt+1。9812是非素数,则该数不满足条件计算平均值pjz2。int isP(int m){int i;for(i=2;i

例如:6712,6+2=7+1,则该数满足条件计算平均值pjz1,且个数cnt=cnt+1。8129,8+9<>1+2,则该数不满足条件计算平均值pjz2。jsValue(){ int i,gw,sw,bw,qw,cnt2=0;for(i=0;i<300;i++){gw=a[i]%10;sw=a[i]/10%10;bw=a[i]/100%10;qw=a[i]/1000;if((qw+gw)==(sw+bw)){ cnt++;pjz1+=a[i];} else { cnt2++;pjz2+=a[i];} } if(cnt==0)pjz1=0;else pjz1/=cnt;if(cnt2==0)pjz2=0;else pjz2/=cnt2;} 200个整数 小于200 ☆题目5(整数排序题)在文件in.dat中有200个正整数,且每个数均在1000至9999之间。函数ReadDat()读取这200个数存放到数组aa中。请编制函数jsSort(),其函数的功能是:要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10个数依次存入数组bb中,如果后三位的数值相等,则按原先的数值进行降序排列。最后调用函数WriteDat()把结果bb输出到文件out.dat中。

例:处理前 6012 5099 9012 7025 8088 处理后 9012 6012 7025 8088 5099 void jsSort(){ int i,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]

请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。void jsSort(){ int i,j,data;for(i=0;i<199;i++)for(j=i+1;j<200;j++)if(aa[i]%1000aa[j]){data=aa[i];aa[i]=aa[j];aa[j]=data;} for(i=0;i<10;i++)bb[i]=aa[i];} 题目91(整数统计运算题)请编制程序prog1.c,从文件in.dat中读取200个整数至数组xx中,求出奇数的个数cnt1和偶数的个数cnt2以及数组xx下标为偶数的元素值的算术平均值pj(保留2位小数)。sum=0;pj=0.0;cnt1=cnt2=0;for(i=0;i

1、求出这N个实数的平均值aver;

2、分别求出这N个实数的整数部分之和sumint以及小数部分之和sumdec,最后调用函数writedat()把所求的结果输出到文件out.dat中。void CalValue(void){ int i;

} double x, sum = 0;for(i=0;i

} aver = sum/MAXNUM;sumint = sumint+(int)xx[i];x = xx[i]-(int)xx[i];sumdec = sumdec+x;sum = sum+xx[i];☆题目26(整数统计运算题)已知在文件IN.DAT中存有若干个(个数<200)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组xx中。请编制函数CalValue(),其功能要求:

1、求出这文件中共有多少个正整数totNum;

2、求这些数右移1位后,产生的新数是偶数的数的个数totCnt,以及满足此条件的这些数(右移前的值)的算术平均值totPjz,最后调用函数writeDat()把所求的结果输出到文件OUT.DAT中。void CalValue(void){int i,data;for(i=0;i0){ totNum++;data=xx[i]>>1;if(data%2==0){totCnt++;totPjz+=xx[i];} } if(totCnt==0)totPjz=0;else totPjz/=totCnt;} ☆题目40(整数统计运算题)已知在文件IN.DAT中存有若干个(个数<200)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组xx中。请编制函数CalValue(),其功能要求:

1、求出这文件中共有多少个正整数totNum;

2、求这些数中的各位数字之和是偶数的数的个数totCnt,以及满足此条件的这些数的算术平均值totPjz,最后调用函数writeDat()把所求的结果输出到文件OUT.DAT中。void CalValue(void){ int i,qw,bw,sw,gw;for(i=0;i0){ totNum++;qw=xx[i]/1000;bw=xx[i]/100%10;sw=xx[i]%100/10;gw=xx[i]%10;if((qw+bw+sw+gw)%2==0){ totCnt++;totPjz+=xx[i];} } if(totCnt==0)totPjz=0;else totPjz/=totCnt;} ☆题目65(整数统计运算题)已知在文件IN.DAT中存有若干个(个数<200)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组xx中。请编制函数CalValue(),其功能要求:

1、求出这文件中共有多少个正整数totNum;

2、求这些数中的各位数字之和是奇数的数的个数totCnt,以及满足此条件的这些数的算术平均值totPjz,最后调用函数writeDat()把所求的结果输出到文件OUT.DAT中。void CalValue(void){ int i ,qw,bw,sw,gw;for(i=0;i0){ totNum++;qw=xx[i]/1000;bw=xx[i]/100%10;sw=xx[i]%100/10;gw=xx[i]%10;if((qw+bw+sw+gw)%2){ totCnt++;totPjz+=xx[i];} } if(totCnt==0)totPjz=0;else totPjz/=totCnt;} 题目70(整数统计运算题)已知在文件IN.DAT中存有若干个(个数<200)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组xx中。请编制函数CalValue(),其功能要求:

1、求出这文件中共有多少个正整数totNum;

2、求这些数右移1位后,产生的新数是奇数的数的个数totCnt,以及满足此条件的这些数(右移前的值)的算术平均值totPjz,最后调用函数writeDat()把所求的结果输出到文件OUT.DAT中。void CalValue(void){int i,data;for(i=0;i0){ totNum++;data=xx[i]>>1;if(data%2){totCnt++;totPjz+=xx[i];} } if(totCnt==0)totPjz=0;else totPjz/=totCnt;} 200个四位数

☆ 题目2已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:如果四位数各位上的数字均是0或2或4或6或8,则统计出满足此条件的个数cnt,并把这些四位数按从大到小的顺序存入数组b中。最后main()函数调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。

程序中已定义数组:a[200],b[200],已定义变量:cnt void jsVal(){ int i,j,qw,bw,sw,gw;for(i=0;ia[j]&&a[i]%2)flag=1;else {flag=0;break;} if(flag==1)b[cnt++]=a[i];} for(i=0;ib[j]){flag=b[i];b[i]=b[j];b[j]=flag;} } ★题目15(整数各位数字运算排序题)已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:若一个四位数的千位数字上的值小于等于百位数字上的值,百位数字上的值小于等于十位数字上的值,以及十位数字上的值小于等于个位数字上的值,并且原四位数是偶数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。void jsVal(){int i,j;int qw,bw,sw,gw;for(i=0;ib[j]){qw=b[i];b[i]=b[j];b[j]=qw;} } ☆题目28(整数各位打散组合运算题)已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把千位数字和十位数字重新组成一个新的十位数ab(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的十位数cd(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字),如果新组成的两个十位数ab-cd>=0且ab-cd<=10且两个数均是奇数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt。最后main()函数调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。void jsVal(){int i,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;i=10且ab-cd<=20且两个数均是偶数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt。

最后main()函数调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。

void jsVal(){ int i,j,qw,bw,sw,gw,ab,cd;for(i=0;i=10&&ab-cd<=20&&ab%2==0&&cd%2==0&&qw!=0&&gw!=0)b[cnt++]=a[i];} for(i=0;ia[j]&&a[i]%2==0)flag=1;else { flag=0;break;} if(flag==1)b[cnt++]=a[i];} for(i=0;ia[j]&&a[i]%2&&a[i]%7==0)flag=1;else { flag=0;break;} if(flag==1)b[cnt++]=a[i];} for(i=0;i=10&&cd>=10)b[cnt++]=a[i];} for(i=0;i=10&&cd>=10)b[cnt++]=a[i];} for(i=0;i=10&&cd>=10){b[cnt]=a[i];cnt++;} } for(i=0;i=0&&a[i]%2)b[cnt++]=a[i];} for(i=0;ib[j]){thou=b[i];b[i]=b[j];b[j]=thou;} } 题目72(整数各位打散组合运算题)已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把个位数字和千位数字重新组成一个新的十位数(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的千位数字),以及把百位数字和十位数字组成另一个新的十位数(新十位数的十位数字是原四位数的百位数字,新十位数的个位数字是原四位数的十位数字),如果新组成的两个十位数均是偶数并且两个十位数中至少有一个数能被9整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt。最后main()函数调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。void jsVal(){int i,j,thou,hun,ten,data,ab,cd;for(i=0;i<200;i++){thou=a[i]/1000;hun=a[i]/100%10;ten=a[i]%100/10;data=a[i]%10;ab=10*data+thou;cd=10*hun+ten;if((ab%9==0||cd%9==0)&&ab%2==0&&cd%2==0&&hun!=0&&data!=0){b[cnt]=a[i];cnt++;} } for(i=0;i=10&&cd>=10))b[cnt++]=a[i];} for(i=0;i=hun&&hun>=ten&&ten>=data&&a[i]%2)b[cnt++]=a[i];} for(i=0;ib[j]){thou=b[i];b[i]=b[j];b[j]=thou;} } ☆题目85(整数各位数运算题)已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把一个四位数的个位数字上的值减去千位数字上的值再减去百位数字上的值最后减去十位数字上的值,如果得出的值大于等于零且原四位数是偶数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。void jsVal(){int i,j,thou,hun,ten,data;for(i=0;i=0&&a[i]%2==0)b[cnt++]=a[i];} for(i=0;ib[j]){thou=b[i];b[i]=b[j];b[j]=thou;} } 题目86(整数各位打散组合运算题)已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把千位数字和十位数字重新组成一个新的十位数ab(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的十位数cd(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字),如果新组成的两个十位数ab>cd,ab必须是偶数且能被5整除,cd必须是奇数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt。最后main()函数调用写函数writeDat()void jsVal(){int i,j,thou,hun,ten,data,ab,cd;for(i=0;i0&&(ab%2!=1&&ab%5==0)&&cd%2==1&&ab>=10&&cd>=10){b[cnt]=a[i];cnt++;} } for(i=0;ib[j]){ qw=b[i];b[i]=b[j];b[j]=qw;} } ☆题目77(整数各位运算题)已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把一个四位数的千位数字上的值加上十位数字上的值恰好等于百位数字上的值加上个位数字上的值,并且原四位数是偶数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。void jsVal(){int i,j,thou,hun,ten,data;for(i=0;ib[j]){thou=b[i];b[i]=b[j];b[j]=thou;} } 100个产品

☆题目7(结构体操作题)已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT6.DAT中。

void SortDat(){int i,j;PRO xy;for(i=0;i<100;i++)for(j=i+1;j<100;j++)

if((strcmp(sell[i].dm,sell[j].dm)<0||strcmp(sell[i].dm,sell[j].dm)==0)&&sell[i].je

按产品名称从小到大进行排列,若产品名称相等,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT5.DAT中。void SortDat(){int i,j;PRO xy;for(i=0;i<99;i++)for(j=i+1;j<100;j++)if(strcmp(sell[i].mc,sell[j].mc)>0||strcmp(sell[i].mc,sell[j].mc)==0&&sell[i].je>sell[j].je){xy=sell[i];sell[i]=sell[j];sell[j]=xy;} 题目13(结构体运算题)已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能

要求:按产品代码从小到大进行排列,若产品代码相等,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT9.DAT中。void SortDat(){int i,j;PRO xy;for(i=0;i<99;i++)for(j=i+1;j<100;j++)

if(strcmp(sell[i].dm,sell[j].dm)>0||strcmp(sell[i].dm,sell[j].dm)==0&&sell[i].je

void SortDat(){int i,j;PRO xy;for(i=0;i<99;i++)for(j=i+1;j<100;j++)if(sell[i].jesell[j].je){xy=sell[i];sell[i]=sell[j];sell[j]=xy;} } 题目38(结构体运算题)已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT6.DAT中。

void SortDat(){int i,j;PRO xy;for(i=0;i<99;i++)for(j=i+1;j<100;j++)if(strcmp(sell[i].dm,sell[j].dm)>0||strcmp(sell[i].dm,sell[j].dm)==0&&sell[i].je>sell[j].je){xy=sell[i];sell[i]=sell[j];sell[j]=xy;} } 题目42 结构体运算题已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从大到小进行排列,若产品名称相等,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT5.DAT中。void SortDat(){int i,j;PRO xy;for(i=0;i<99;i++)for(j=i+1;j<100;j++)

if(strcmp(sell[i].mc,sell[j].mc)<0||strcmp(sell[i].mc,sell[j].mc)==0&&sell[i].je0){xy=sell[i];sell[i]=sell[j];sell[j]=xy;} } ★题目61结构体运算题)已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按金额从小到大进行排列,若金额相同,则按产品代码从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT2.DAT中。void SortDat(){int i,j;PRO xy;for(i=0;i<99;i++)for(j=i+1;j<100;j++)if(sell[i].je>sell[j].je||sell[i].je==sell[j].je&&strcmp(sell[i].dm,sell[j].dm)<0){xy=sell[i];sell[i]=sell[j];sell[j]=xy;} } 题目99(结构体排列题)已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按金额从小到大进行排列,若金额相等,则按产品代码从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT1.DAT中。void SortDat(){int i,j;PRO xy;for(i=0;i<99;i++)for(j=i+1;j<100;j++)if(sell[i].je>sell[j].je||sell[i].je==sell[j].je&&strcmp(sell[i].dm,sell[j].dm)>0){xy=sell[i];sell [i]=sell[j];sell[j]=xy;} } 20行数据

★题目43(字符排序题)无忧id 82题(只是将结果按“从大到小”排序)函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串变量的下标为奇数的字符按其ASCII值从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。

例如:位置

0 1 2 3 4 5 6 7

源字符串 a b c d e f g h 则处理后字符串 a h c f e d g b void jsSort(){int i,j,k,strl;char ch;for(i=0;i<20;i++){ strl=strlen(xx[i]);for(j=1;jxx[i][k]){ ch=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=ch;} 数组xx中(每行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。

条件:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。

例如:位置

0 1 2 3 4 5 6 7 8

源字符串 a b c d h g f e 1 2 3 4 9 8 7 6 5 则处理后字符串 h g f e d c b a 8 7 6 5 9 4 3 2 1 void jsSort(){ int i,j,k,strl,half;char temp;for(i=0;i<20;i++){ strl=strlen(xx[i]);half=strl/2;for(j=0;j=0;j--,k--){ temp=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=temp;} } } 题目50(字符串左右排序交换题)函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。

条件:从字符串中间一分为二,左边部分按字符的ASCII值升序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。

例如:位置

0 1 2 3 4 5 6 7 8

源字符串 d c b a h g f e 4 3 2 1 9 8 7 6 5 则处理后字符串 h g f e a b c d 8 7 6 5 9 1 2 3 4 void jsSort(){ int i,j,k,strl,half;char temp;for(i=0;i<20;i++){ strl=strlen(xx[i]);half=strl/2;for(j=0;jxx[i][k]){ temp=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=temp;} for(j=half-1,k=strl-1;j>=0;j--,k--){ temp=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=temp;} } } ★题目71(字符串左右排序题)函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。

条件:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,右边部分按字符的ASCII值升序排序。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上。

例如:位置

0 1 2 3 4 5 6 7 8

源字符串 a b c d h g f e 1 2 3 4 9 8 7 6 5 则处理后字符串 d c b a e f g h 4 3 2 1 9 5 6 7 8 void jsSort(){int i,j,k,strl,half;char ch;for(i=0;i<20;i++){ strl=strlen(xx[i]);half=strl/2;for(j=0;jxx[i][k]){ch=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=ch;} } }

第二篇:2018全国计算机等级考试三级网络技术知识点总结

全国计算机等级考试三级网络技术知识点

看书第一遍:仔细认真,不放过任何一个字;结果:知道大纲就行。第二遍:详细,理解,标出自己认为重要的知识点,解决所有课后题。

第三遍:理解所有内容,熟悉课本→做历年真题前4套→结合真题看课本→做剩下几套真题→看书、真题→过关。自2018年3月的全国计算机三级网络技术考试采用16年版新版笔试教材,部分内容有改动;上机考试采用在xp操作系统下VisualC++环境的C语言编程,您可以认为无变化;另,考试大纲没有变化,虽然称16年新大纲,但继续采用的13年版(您也可以认为是08年版)考试大纲。笔试教材部分变动主要如下:

1、删除第七章电子商务电子政务(但大纲上明确表示有这一章,不敢保证不考,所以您应该有保留旧版本教材的必要);

2、拆分第五章因特网基础为第五章第六章;

3、原来第六章网络安全顺延到第七章,部分内容有更新;

4、改动第八章网络技术展望为网络应用技术(组播技术、P2P网络、即时通信系统、IPTV、VoIP、网络搜索技术);

5、其他章节部分有改动,比例约为20%;不影响以前的知识点。

6、笔试教材习题改动较大(新版习题也将是09年3月考试的重要题目);

7、虽然新教材部分变动,如您能保证自02年笔试历年真题都会做且理解,保证您2018年9月及格,但更好成绩需要您努力。

第一章计算机基础

分析:考试形式:选择题和填空题,6个的选择题和2个填空题共10分,都是基本概念。

1、计算机的四特点:有信息处理的特性,有广泛适应的特性,有灵活选择的特性。有正确应用的特性。(此条不需要知道)

2、计算机的发展阶段:经历了以下5个阶段(它们是并行关系):大型机阶段(58、59年103、104机)、小型机阶段、微型机阶段、客户机/服务器阶段(对等网络与非对等网络的概念)和互联网阶段(Arpanet是1969年美国国防部运营,在1983年正式使用TCP/IP协议;在1991年6月我国第一条与国际互联网连接的专线建成,它从中国科学院高能物理研究所接到美国斯坦福大学的直线加速器中心;在1994年实现4大主干网互连,即全功能连接或正式连接;1993年www.teniu.cc等形式。电子邮件应用程序在向邮件服务器传送邮件时及邮件服务器间互相传输时采用SMTP协议,从邮件服务器读取时候可以使用POP3协议或IMAP协议。报文格式须符合RFC822或MIME协议。

7、WWW服务采用C/S模式,以超文本标记语言HTML和超文本传输协议HTTP为基础。第一个浏览器是Mosaic。HTTP会话过程包括以下4个步骤:连接、请求、应答、关闭。URL(统一资源定位符)由三部分组成:协议类型,主机名、路径及文件名。WWW服务器所存储的页面是一种结构化的文档,采用超文本标记语言HTML书写而成。HTML主要特点是可以包含指向其他文档的链接项,即其他页面的URL;可以将声音,图象,视频等多媒体信息集合在一起,一般这些信息不集合在网页上,而在服务器或其他位置。WWW浏览器由客户、解释、控制单元组成;控制单元是浏览器中心,接收键盘或鼠标输入后,协调管理客户单元和解释单元。

8、WWW的安全性:浏览器的安全性、Web服务器的安全性(IP地址限制、用户验证、Web权限、NTFS权限)

第七章网络管理与网络安全分析:

这部分是次重点,一般6道选择题和2~3道填空题,约10-12分。注意问题:

1、网络管理的五大功能:配置管理、故障管理、性能管理、计费管理和安全管理,及其各管理的作用。

2、信息安全等级,美国国防部安全准则中的A1级是最高安全级。

3、网络安全的基本要素:机密性、完整性、可用性和合法性,及相应的四个基本威胁,以及常见的可实现的威胁:渗入威胁和植入威胁的相关知识。

4、安全攻击是安全威胁的具体表现,中断、截取、修改和捏造。

5、加密技术相关知识的介绍。

6、认证技术中的数字签名的原理,及它与消息认证的区别。

7、防火墙只能防止外部网队内部网的侵犯。

1、网络管理包括五个功能:配置管理,故障管理,性能管理,计费管理和安全管理。配置管理的负责网络的建立、业务的展开及配置数据的维护,功能:清单管理、资源开通、业务开通;故障管理一般步骤:发现故障、判断故障、隔离故障、修复故障、记录故障;目前是:检测、隔离、纠正故障;计费管理的目标是跟踪个人和团体用户对网络资源的使用情况,对其收取合理的费用。性能管理的目标是维护网络服务质量和网络运营效率。性能管理包括性能检测、性能分析、性能管理控制功能。安全管理的目标是按照一定策略控制对网络资源的访问,保证重要的信息不被未授权用户访问,并防止网络遭到恶意或是无意的攻击。

2、网络管理的目标与网络管理员的职责:目标:a、减少停机时间,缩短响应时间,提高设备利用率;b、减少运行费用,提高效率;c、减少或消除网络瓶颈;d、使网络更容易使用;e、使网络安全可靠。职责:规划、建设、维护、扩展、优化和故障检修。不包括编写应用程序,那是程序员的职责。

3、管理者/代理模型:管理者实质上是运行在计算机操作系统之上的一组应用程序,管理者从各代理处收集信息,进行处理,获取有价值的管理信息,达到管理的目的。代理位于被管理的设备内部,它把来自管理者的命令或信息请求转换为本设备特有的指令,完成管理者的指示,或返回它所在设备的信息。管理者和代理之间的信息交换可以分为两种:从管理者到代理的管理操作;从代理到管理者的事件通知。

4、网络管理协议(1)概念:是网络管理者和代理之间进行信息的规范。(2)网络管理协议是高层网络应用协议,它建立在具体物理网络及其基础通信协议基础上,为网络管理平台服务。网络管理协议包括:简单网络管理协议SNMP,公共管理信息服务/协议CMIS/CMIP(电信管理网常用)管理节点一般是面向工程应用的工作站级计算机,拥有很强的处理能力。代理节点可以是网络上任何类型的节点。SNMP是一个应用层协议,它使用传输层和网络层的服务向其对等层传输信息;SNMP采用轮循监控方式。CMIP的优点是安全性高,功能强大,不仅可用于传输管理数据,还可以执行一定的任务。

5、信息安全包括3个方面:物理安全、安全控制、安全服务,实现真实性、保密性、完整性、可用性等目标;

6、信息安全性等级:(1)美国国防部橘皮书准则(_STD):(D1级计算机系统标准规定对用户没有验证,例如DOS、Windows3.X、Windows95(不在工作组方式中)、Apple的System7.X;C1级提供自主式安全保护,它通过将用户和数据分离,满足自主需求。C2级为处理敏感信息所需要的最低安全级别,进一步限制用户执

行一些命令或访问某些文件的权限,而且还加入了身份验证级别,例如UNIX系统、XENIX、NovellNetWare3.0或更高版本、WindowsNT;B1级是第一种需要大量访问控制支持的级别,安全级别存在保密,绝密级别。B2级要求计算机系统中的所有对象都要加上标签,而且给设备分配安全级别。B3级要求用户工作站或终端通过可信任途径连接到网络系统,而且这一级采用硬件来保护安全系统的存储区,B3级系统的关键安全部件必须理解所有客体到主体的访问。A1级最高安全级别,表明系统提供了最全面的安全。)(2)我国计算机信息安全等级:自主保护级、指导保护级、监督保护级、强制保护级、专控保护级。

8、网络安全(1)目的:信息的存储安全和信息的传输安全;基本要素是实现信息的机密性、完整性、可用性和合法性。(2)安全威胁是某个人、物、事或概念对某个资源的机密性、完整性、可用性或合法性所造成的危害。(3)安全威胁分为故意的和偶然的两类。故意威胁又可以分为被动和主动两类。基本威胁:信息泄露或丢失-机密性、破坏数据完整性-完整性、拒绝服务-可用性、非授权访问-合法性;渗入威胁:假冒、旁路控制、授权侵犯;植入威胁:特洛伊木马、陷门;潜在威胁:窃听、通信量分析、人员疏忽、媒体清理。(4)安全攻击:截取是未授权的实体得到

了资源的访问权,是对机密性的攻击;修改是未授权的实体不仅得到了访问权,而且还篡改了资源,是对完整性的攻击;中断是系统资源遭到破坏或变得不能使用,是对可用性的攻击;捏造是未授权的实体向系统中插入伪造的对象,是对合法性的攻击。(5)主动攻击和被动攻击:被动攻击的特点是监听或监测。其目的是获得正在传送的信息。被动攻击有:泄露信息内容和通信量分析等。主动攻击涉及修改数据流或创建错误的数据流,它包括伪装,重放,修改信息、拒绝服务、分布式拒绝服务等。从网络高层协议角度看,攻击方法可以概括为:服务攻击与非服务攻击。服务攻击是针对某种特定网络服务(如E-mail(邮件炸弹)、telnet、FTP、HTTP等)的攻击。非服务攻击不针对某项具体应用服务,而是基于网络层等低层协议进行的。非服务攻击利用协议或操作系统实现协议时的漏洞来达到攻击的目的,是一种更有效的攻击手段,如源路由攻击和地址欺骗、NetXBay等。(9)安全策略的组成:威严的法律、先进的技术、严格的管理(10)安全管理原则:多人负责原则、任期有限原则、职责分离原则

9、加密技术(1)几个相关概念:需要隐藏的消息叫做明文。明文被变换成另一种隐藏形式被称为密文,这种变换叫做加密,加密的逆过程称为解密;对明文进行加密所采用的一组规则称为加密算法,对密文解密时采用的一组规则称为解密算法;加密算法和解密算法通常是在一组密钥控制下进行的,加密算法所采用的密钥成为加密密钥,解密算法所使用的密钥叫做解密密钥;密码编码学是加密所用,密码分析学(分析、穷举一般要尝试所有可能的一半)是解密所用,都是密码学范畴。(4)密码系统分类:按将明文转化为密文的操作类型分为:代换或置换密码和易位密码。按密钥的使用个数分为:对称密码体制和非对称密码体制。(5)数据加密技术可以分为3类:对称型加密,不对称型加密和不可逆加密。对称加密使用单个密钥对数据进行加密或解密,又称单密钥加密、常规密码加密、或保密密钥加密,如DES算法。不对称加密算法其特点是有两个密钥,只有两者搭配使用才能完成加密和解密的全过程。不对称加密的另一用法称为“数字签名”,常用的是RSA算法和数字签名算法DSA。不可逆加密算法即单向散列算法,特征是加密过程不需要密钥,并且经过加密的数据无法被解密,只有同样输入的输入数据经过同样的不可逆算法才能得到同样的加密数据。(6)加密方案是安全的两种情形:一是破译密文的成本超过了加密信息本身的价值;二是破译秘闻所要的时间超过了信息的有效期。(7)对称加密体制的模型的组成部分:明文、加密算法、密钥、密文、解密算法。对称加密又称为常规加密、单密钥加密、保密密钥加密,有两个安全要求:①需要强大的加密算法;②发送方和接受方必须用安全的方式来获得保密密钥的副本,必须保证密钥的安全。其安全性取决于密钥的保密性,而不是算法的保密性。数据加密标准:DES,算法本身被称为数据加密算法DEA,密钥长度56位(106次/秒,10h可破),分组长度64位;其他常见对称加密算法:三重DES:密钥长度128位;AES:密钥128/192/256位,分组长度128位;Blowfish算法:可变密钥长度分组算法;RC-5:参数可变的分组算法;(8)公钥加密又叫做非对称加密,是建立在数学函数基础上的一种加密方法,而不是建立在位方式的操作上的。公钥加密算法的适用公钥密码体制有两个密钥:公钥和私钥。常规加密使用的密钥叫做保密密钥。公钥加密使用的密钥对叫做公钥或私钥,私钥总是保密的。RSA算法基于大因数分解;第一个用于数据加密和数字签名的算法,但安全性未能在理论上证明;其他公钥加密算法:ElGamal算法(基于离散对数)、背包加密算法;公钥加密涉及高次幂运算,加密速度一般较慢,占空间大。(9)密钥分发技术:通常KDC技术用于保密密钥分发,CA用于公钥和保密密钥的分发。

10、认证是防止主动攻击的重要技术,是验证一个最终用户或设备的声明身份的过程。认证主要目的:验证信息的发送者是真正的,而不是冒充的,这称为信源识别;验证信息的完整性,认证使用的技术主要有:消息认证,身份认证和数字签名。(1)消息认证是意定的接收者能够检验收到的消息是否真实的方法,又称完整性校验。消息认证的内容包括为:①证实消息的信源和信宿;②消息内容是否完整,是否曾受到偶然或有意的篡改;③消息的序号和时间性是否正确。消息认证模式:单向认证、双向认证;认证函数:信息加密函数、信息认证码、散列函数(MD5,SHA-1等)(2)数字签名应该满足:收方能确认发方签名但不能伪造;发方发出后就不能否认发过;收方收到后不能否认,即收报认证;第三者可以确认收发双方的消息传送但不能伪造。数字签名没有提供消息内容的机密性,最常用的数字签名算法有RSA算法和数字签名标准算法DSS。(3)身份认证大致分为3类:①口令认证;②持证认证;③生物识别。账户名/口令认证方法是被广泛使用的一种身份验证方法,比如一次性口令方案,常见的有S/Key和令牌口令认证方案。持证是个人所有物,比如磁卡等;生物识别指指纹、虹膜、脸像、掌纹、声音、签名、笔迹、手纹步态等生物特征。常用的身份认证协议:一次一密机制;X.509认证协议;Kerberos协议。

11、安全技术应用:(1)电子邮件的安全:PGP、S/MIME;(2)网络层安全:IPSec,包括身份认证头AH协议和ESP协议;(3)Web安全:网络级(IP安全,IPSec)、传输级(SSL安全套接层,运输层安全)、应用级(SET)

12、两大最广泛的安全威胁:入侵者和病毒。

13、防火墙:为了保障网络安全,防止外部网对内部网的侵犯,常在内外网间设置防火墙。(1)分类:数据包过滤,应用级网关、电路级网关、堡垒主机。(2)防火墙的设计目标是:进出内部

网的通信量必须通过防火墙,只有那些在内部网安全策略中定义了的合法的通信量才能进出防火墙,防火墙自身应该能够防止渗透。(3)防火墙的优缺点:优点:保护脆弱的服务、控制对系统的访问、集中的安全管理、增强的保密性、记录和统计网络使用数据以及非法使用数据、策略执行。缺点:无法阻止绕过防火墙的攻击;无法阻止来自内部的威胁;无法防止病毒感染程序或文件的传输。(4)防火墙通常有两种设计策略:允许所有服务除非被明确禁止;禁止所有服务除非被明确允许。(5)防火墙实现站点安全策略的技术:服务控制、方向控制、用户控制、行为控制

14、病毒:共性:破坏、可自我复制;常见病毒分类:宏病毒、电子邮件病毒、特洛伊木马、计算机蠕虫。病毒防治:检测、标识、清除。

第八章网络技术展望

分析:这部分主要讨论网络技术的展望。一般会有3道选择和1-2道填空约5-7分。

注意基本概念:

1、IP组播技术:允许一个或多个发送方发送单一数据包到多个接收方的网络传输方式,不论组成员多少,数据源只发一次,采用组播地址寻址,只向需要的主机和网络发包。(1)特点:使用组地址,组播网中拥有惟一的组播地址;动态组成员;低层硬件支持;(2)技术基础:D类IP,前四位为1110,后面28位为组播地址;(2)相关协议:IP组播组管理协议(IGMP)、IP组播路由协议(域内(密集模式、稀疏模式)或域间组播路由协议)。

2、P2P网络:(PeertoPeer)通过直接交换来共享资源和服务、采用非集中式,各结点地位平等,兼作服务器和客户机;(1)分类:集中式拓扑结构的P2P网络,以Napster为代表,有中心服务器,只保留索引信息,包括服务器的各实体对等;分布式非结构化拓扑结构的P2P网络:以Gnutella等为代表,无中心服务器,都是对等点,扩展性差;分布式结构化拓扑结构的P2P网络:以Pastry等为代表,基于分布式散列表(DHT)的分布式发现和路由算法;混合式结构的P2P网络:以Skype、Kazaa、eDonkey、BitTorent、PPlive为代表;(2)应用:分布式科学计算;文件共享;协同工作;分布式搜索引擎;流媒体直播(PPlive、PPStream等)。

3、即时通信(IM)系统:实时信息交互和用户状态追踪(1)附加功能:音视频聊天、应用共享、文件传输、文件共享、游戏邀请、远程助理、白板等;(2)基础通信模式:P2P通信模式、中转通信模式等;(3)代表性软件:腾讯QQ、网易泡泡、新浪UC、MSNNMessenger、YahooMessnger等;(4)通信协议:SIP(由用户代理、代理服务器、重定向服务器、注册服务器组成,请求消息包含请求行,响应消息包含状态行)、SIMPLE(对SIP协议的扩展)、XMPP(C/S通信模式、分布式网络、简单的客户端、XMl的数据格式);

4、IPTV系统:互联网协议电视或网络电视,交互性和实时性;(1)基本业务:视频点播VOD、直播电视(组播方式)、时移电视(点播方式);(2)基本技术形态:视频数字化、传输IP化、播放流媒体化;(3)系统组成:节目采集、存储与服务、节目传送、用户终端设备、相关软件;(4)关键技术:媒体内容分发技术、数字版权管理技术(数据加密、版权保护、数字水印)、IPTV运营支撑管理系统。

5、VoIP:即IP电话,利用IP网络实现语音通信,基于IP网络的语音传输技术;(1)实现方法:PC-to-PC、PC-to-Phone、Phone-to-Phone等;(2)系统组成:终端设备、网关、多点控制单元、网守;(3)代表软件:Kazaa公司的Skype,其融合了VoIP和P2P技术。

6、网络搜索技术:(1)搜索引擎组成部分:搜索器、索引器、检索器、用户接口;(2)Google:成立于98年;主要技术:①网页采集技术-分布式爬行系统;②页面等级技术;③超文本匹配分析技术(3)百度:成立于99年,主要技术:①智能化可扩展搜索技术;②超级链接分析技术;③智能化中文语言处理技术;④分布式结构优先化算法技术等

通过分析历年考试题,三级网络笔试课本有个知识点属于笔试必考……(1)奔腾芯片的技术特点(2)主机板的分类(3)城域网的特点

(4)网络拓扑结构的定义

(5)数据传输率和误码率(6)OSI与TCP/IP的对比(7)OSI七层结构技术细节(8)局域网的特点(9)802.3、4、5(10)虚拟局域网(11)局域网交换机

(12)网络操作系统的功能(13)NetWare三级容错技术(14)因特网的四大组成

(15)IP地址判定A,B,C类(16)IP地址掩码技术(17)路由选择(18)TCP协议特点(19)域名

(20)电子邮件传输协议:SMTP,POP3,IMAP,MIME(21)网络管理协议SNMP(22)安全等级A--D(22)渗入威胁和植入威胁(24)服务攻击和非服务攻击

(25)给你一种具体加密技术,问是对称还是非对称、(26)数字签名

(27)Web服务器的安全

(28)防火墙的技术三个缺点四个技术(29)域名解析(P121)

(30)TCP和UDP的端口号(31)顶级域名分配(表)(32)书上的课后习题每年都要考原题,占20分左右

(33)历年真题重复率在50%左右三级网络教材书中的一些计算题总结

1、B、KB、MB、GB、TB之间的换算:1TB=1024GB≈103GB≈106MB≈109KB≈1012B

2、目的子网地址=子网屏蔽码“中的1对应的”目的IP地址(几乎每次都考)

3、数据传输速率:S=1/T(bps)(T为发送1比特所需时间)

4、唇同步要求偏移在+-80ms传输延迟的典型植:540msATM信元长度:53B(5B信头;48B信息)

5、关于数据传输所需时间的计算:

如果网络的传输速率为28.8kbps,要传输2M字节的数据大约需要的时间为:时间=传输数据位数/数据传输速率 计算可得:时间=(2*1024*1024*8)/(28.8*1024)=568.9秒=约9.48分钟。

第三篇:全国计算机等考试三级网络技术上机试题总结

100个产品销售记录排序(此类共10题)

code: /* 已知在文件IN.DAT中存有100个产品销售记录, 每个产品销售记录由产品代码dm(字符型4位), 产品名称mc(字符型10位), 单价dj(整型), 数量sl(整型), 金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat()读取这100个销售记录

并存入结构数组sell中。请编制函数SortDat(), 其功能要求:按金额从小到大进行排列, 若金额相等, 则按产品代码从小到大进行排列, 最终排列结果仍存入结构数组sell中。最后main()函 数调用函数WriteDat()把结果输出到文件OUT1.DAT中。注意: 部分源程序存放在PROG1.C中。

请勿改动主函数main()、读数据函数ReadDat()和输出数据函 数WriteDat()的内容。*/ #include #include #include #include #include #define MAX 100 typedef struct { char dm[5];/* 产品代码 */ char mc[11];/* 产品名称 */ int dj;/* 单价 */ int sl;/* 数量 */ long je;/* 金额 */ } PRO;PRO sell[MAX];void ReadDat();void WriteDat();void SortDat(){/**/ int i,j,k;PRO tt;for(i=0;i < MAX-1;i++){ k=i;for(j=i+1;j < MAX;j++)if((sell[k].je>sell[j].je)||(sell[k].je==sell[j].je)&&(strcmp(sell[k].dm, sell[j].dm)>0))k=j;if(k!=i){ tt=sell[k];sell[k]=sell[i];sell[i]=tt;} } /**/ } void main(){ memset(sell, 0, sizeof(sell));ReadDat();SortDat();WriteDat();} void ReadDat(){ FILE *fp;char str[80], ch[11];int i;fp = fopen(“IN.DAT”, “r”);for(i = 0;i < 100;i++){ fgets(str, 80, fp);memcpy(sell[i].dm, str, 4);memcpy(sell[i].mc, str + 4, 10);memcpy(ch, str + 14, 4);ch[4] = 0;sell[i].dj = atoi(ch);memcpy(ch, str + 18, 5);ch[5] = 0;sell[i].sl = atoi(ch);sell[i].je =(long)sell[i].dj * sell[i].sl;} fclose(fp);} void WriteDat(){ FILE *fp;int i;fp = fopen(“OUT1.DAT”, “w”);for(i = 0;i < 100;i++){ fprintf(fp, “%s %s %4d %5d %10ldn”, sell[i].dm, sell[i].mc, sell[i].dj, sell[i].sl, sell[i].je);} fclose(fp);} 100个产品销售记录排序其余9题说明

1)in.dat 内容完全相同。

2)程序也基本雷同,仅排序的要求不一样。

3)考生应熟悉 strcmp()函数,否则有的题相当不好处理。

之二

排序要求:

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

进行排列

相应语句:

if(sell[k].je>sell[j].je||(sell[k].je==sell[j].je)&&(strcmp(sell[k].dm, sell[j].dm)< 0))之三

排序要求:

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

相应语句:

if((sell[k].je <

sell[j].je)||(sell[k].je==sell[j].je)&&(strcmp(sell[k].dm, sell[j].dm)>0))之四

排序要求:

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

进行排列

相应语句:

if((sell[k].je <

sell[j].je)||(sell[k].je==sell[j].je)&&(strcmp(sell[k].dm,sell[j].dm)<0))

之五

排序要求:

按产品名称从小到大进行排列, 若产品名称相同, 则按金额从小

到大进行排列

相应语句:

if((strcmp(sell[k].mc,sell[j].mc)>0)||(strcmp(sell[k].mc,sell[j].mc)==0)&&(sell[k].je>sell[j].je))

之六

排序要求:

按产品名称从小到大进行排列, 若产品名称相同, 则按金额从大

到小进行排列

相应语句:

if(strcmp(sell[i].mc, sell[j].mc)>0 ||(strcmp(sell[i].mc, sell[j].mc)==0)&&(sell[i].je < sell[j].je))

之七

排序要求:

按产品名称从大到小进行排列, 若产品名称相同, 则按金额从小

到大进行排列

相应语句:

if((strcmp(sell[k].mc, sell[j].mc)< 0)||

(strcmp(sell[k].mc,sell[j].mc)==0)&&(sell[k].je>sell[j].je))

之八

排序要求:

按产品名称从大到小进行排列, 若产品名称相同, 则按金额从大

到小进行排列

相应语句:

if((strcmp(sell[k].mc, sell[j].mc)< 0)||(strcmp(sell[k].mc, sell[j].mc)==0)&&(sell[k].je < sell[j].je))

之九 排序要求:

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

到大进行排列

相应语句:

if((strcmp(sell[k].dm,sell[j].dm)>0)||(strcmp(sell[k].dm,sell[j].dm)==0)&&(sell[k].je>sell[j].je

code: /* 已知在文件IN.DAT中存有100个产品销售记录, 每个产品销售记录由产品代码dm(字符型4位), 产品名称mc(字符型10位), 单价dj(整型), 数量sl(整型), 金额je(长整型)五部分组成。其中: 金额=单价*数量计算得出。函数ReadDat()读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(), 其功能要求:按产品代码从大到小进行排列, 若产品代码相同, 则按金额从大 到小进行排列, 最终排列结果仍存入结构数组sell中。最后main()函数调用函数WriteDat()把结果输出到文件OUT10.DAT中。注意: 部分源程序存放在PROG1.C中。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。*/ #include #include #include #include #include #define MAX 100 typedef struct { char dm[5];/* 产品代码 */ char mc[11];/* 产品名称 */ int dj;/* 单价 */ int sl;/* 数量 */ long je;/* 金额 */ } PRO;PRO sell[MAX];void ReadDat();void WriteDat();void SortDat(){/**/ int i,j;PRO tt;for(i=0;i < MAX-1;i++)for(j=i+1;j < MAX;j++){ if(strcmp(sell[i].dm, sell[j].dm)< 0){ tt=sell[i];sell[i]=sell[j];sell[j]=tt;} if((strcmp(sell[i].dm, sell[j].dm)==0)&&(sell[i].je < sell[j].je)){ tt=sell[i];sell[i]=sell[j];sell[j]=tt;} } /**/ } void main(){ memset(sell, 0, sizeof(sell));ReadDat();SortDat();WriteDat();} void ReadDat(){ FILE *fp;char str[80], ch[11];int i;fp = fopen(“IN.DAT”, “r”);for(i = 0;i < 100;i++){ fgets(str, 80, fp);memcpy(sell[i].dm, str, 4);memcpy(sell[i].mc, str + 4, 10);memcpy(ch, str + 14, 4);ch[4] = 0;sell[i].dj = atoi(ch);memcpy(ch, str + 18, 5);ch[5] = 0;sell[i].sl = atoi(ch);sell[i].je =(long)sell[i].dj * sell[i].sl;} fclose(fp);} void WriteDat(){ FILE *fp;int i;fp = fopen(“OUT10.DAT”, “w”);for(i = 0;i < 100;i++){ fprintf(fp, “%s %s %4d %5d %10ldn”, sell[i].dm, sell[i].mc, sell[i].dj, sell[i].sl, sell[i].je);} fclose(fp);} 老枪

300个四位数问题(此类共10题)

本类10题中,五题产生数组B,并对B按一定要求排序; 其余五题是求平均值。我把它们分成两组五题来讨论。

以下为产生数组B之题一:

code: /* 已知数据文件IN.DAT中存有300个四位数, 并已调用读函数readDat()把这些数存入数组a中, 请编制一函数jsvalue(),其功能是: 求出个位数上的数减千位数上的数减百位数上的数减十位

数上的数大于零的个数cnt,再把所有满足此条件的四位数依次存入数组b中, 然后对数组b的四位数按从大到小的顺序进行排序。最后main()函数调用写函数writeDat()把数组b中的数输出到文件OUT.DAT。例如: 1239, 9-1-2-3>0, 则该数满足条件存入数组b中, 且 个数cnt=cnt+1。

8129, 9-8-1-2<0, 则该数不满足条件忽略。

注意: 部分源程序存在文件PROG1.C文件中。程序中已定义数组: a[300], b[300], 已定义变量: cnt 请勿改动数据文件IN.DAT中的任何数据、主函数main()、读 函数readDat()和写函数writeDat()的内容。*/ #include int a[300], b[300], cnt=0;jsvalue(){/**/ int i,j,k,t;for(i=0;i < 300;i++)if(a[i]%10-a[i]/1000-a[i]/100%10-a[i]/10%10>0)b[cnt++]=a[i];for(i=0;i < cnt-1;i++){ k=i;for(j=i+1;j < cnt;j++)if(b[k] < b[j])k=j;if(k!=i){ t=b[k];b[k]=b[i];b[i]=t;} } /**/ } main(){ int i;readDat();jsvalue();writeDat();printf(“cnt=%dn”, cnt);for(i = 0;i < cnt;i++)printf(“b[%d]=%dn”, i, b[i]);} readDat(){ FILE *fp;int i;fp = fopen(“in.dat”,“r”);for(i = 0;i < 300;i++)fscanf(fp, “%d,”, &a[i]);fclose(fp);} writeDat(){ FILE *fp;int i;fp = fopen(“out.dat”,“w”);fprintf(fp, “%dn”, cnt);for(i = 0;i < cnt;i++)fprintf(fp, “%dn”, b[i]);fclose(fp);} 要求:

求出所有这些四位数是素数的个数cnt,再把所有满足此

条件的四位数依次存入数组b中, 然后对数组b的四位数按从小到

大的顺序进行排序。

out.dat 文件内容应当为: 1231 1277 1283 1319 2543 2609 3793 3911 4013 4549 4817 4933 5591 5843 5939 6733 6791 6841 6871 6917 7297 7369 7703 8101 8221 8941 9013 9461 9689 9887 之四

要求:

求出千位数上的数减百位数上的数减十位数上的数减个位

数上的数大于零的个数cnt,再把所有满足此条件的四位数依次

存入数组b中, 然后对数组b的四位数按从小到大的顺序进行排序。

out.dat 文件内容应当为: 20 4002 4102 5111 5400 6014 6302 7050 7105 7113 8101 8130 8203 8221 8303 8700 9013 9016 9052 9053 9800

之五

要求:

求出千位数上的数加百位数上的数等于十位数上的数加个 位数上的数的个数cnt,条件的四位数依次存入 数组b中, 然后对数组b的四位数按从大到小的顺序进行排序。out.dat 文件内容应当为: 7795 7429 7328 7153 6978 6767 6556 6226 5591 5555 5427 4509 4013 3672 3663 3205 3131 2855

再把所有满足此

2763 2543 2507 1625 __________________ 老枪

求满足条件的数的个数、平均值……

求满足条件的数的个数、平均值及不满足条件的数的平均 值等,此类也是五题。本处仅给出一个全题,其余题只给出不同 之处。

code: /* 已知数据文件IN.DAT中存有300个四位数, 并已调用读函数readDat()把这些数存入数组a中, 请编制一函数jsvalue(),其功能是: 求出千位数上的数减百位数上的数减十位数上的数减个位

数上的数大于零的个数cnt,再求出所有满足此条件的四位数平均值pjz1, 以及所有不满足此条件的四位数平均值pjz2。最后main()函数调用写函数writeDat()把结果cnt,pjz1,pjz2输出到 OUT.DAT文件。

例如: 9123, 9-1-2-3>0, 则该数满足条件计算平均值pjz1, 且个数cnt=cnt+1。

9812, 9-8-1-2<0, 则该数不满足条件计算平均值pjz2。注意: 部分源程序存在文件PROG1.C文件中。

程序中已定义数组: a[300], 已定义变量: cnt,pjz1,pjz2 请勿改动数据文件IN.DAT中的任何数据、主函数main()、读 函数readDat()和写函数writeDat()的内容。*/ #include

int a[300], cnt=0;double pjz1=0.0, pjz2=0.0;jsvalue(){/**/ int i;for(i=0;i < 300;i++)if(a[i]/1000-a[i]/100%10-a[i]/10%10-a[i]%10>0){ cnt++;pjz1+=a[i];} else pjz2+=a[i];if(cnt)pjz1/=cnt;if(cnt<300)pjz2/=300-cnt;/**/ } main(){ int i;readDat();jsvalue();writeDat();printf(“cnt=%dn满足条件的平均值pzj1=%7.2lfn不满足条件的平均值pzj2=%7.2lfn”, cnt,pjz1,pjz2);} readDat(){ FILE *fp;int i;fp = fopen(“in.dat”,“r”);for(i = 0;i < 300;i++)fscanf(fp, “%d,”, &a[i]);fclose(fp);} writeDat(){ FILE *fp;int i;fp = fopen(“out.dat”,“w”);fprintf(fp, “%dn%7.2lfn%7.2lfn”, cnt, pjz1, pjz2);fclose(fp);} in.dat 与前面给出的完全相同,out.dat 内容应当如下:

7389.55 5524.03 __________________ 满足条件数的平均数……四题之说明

之二

要求:

求出千位数上的数加百位数上的数等于十位数上的数加个 位数上的数的个数cnt,再求出所有满足此条件的四位数平均值 pjz1, 以及所有不满足此条件的四位数平均值pjz2。

正确程序生成的 out.dat 文件内容应当如下:

4876.86 5709.46

之三

要求:

求出个位数上的数减千位数上的数减百位数上的数减十位 数上的数大于零的个数cnt,再求出所有满足此条件的四位数平均值pjz1, 以及所有不满足此条件的四位数平均值pjz2。

正确程序生成的 out.dat 文件内容应当如下:

2926.08 5761.83

之四

要求:

求出所有这些四位数是素数的个数cnt,再求出所有满足 此条件的四位数平均值pjz1, 以及所有不满足此条件的四位数平均值pjz2。

正确程序生成的 out.dat 文件内容应当如下: 5782.87 5633.46

之五

要求:

求出千位数上的数加个位数上的数等于百位数上的数加十 位数上的数的个数cnt,再求出所有满足此条件的四位数平均值 pjz1, 以及所有不满足此条件的四位数平均值pjz2。

正确程序生成的 out.dat 文件内容应当如下:

6681.22 5582.48 __________________ 老枪

200个四位数(此类共10题)此部分题与300个数的题有相似之处。

之一

code: /* 已知数据文件IN.DAT中存有200个四位数, 并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是: 把千位数字和十位数字重新组成一个新的十位数ab(新

十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字), 以及把个位数字和百位数字组成另一个新的十位数cd(新十位数的十位数字是原四位数的个位数字, 新十位数的个位数字是原四位数的百位数字), 如果新组成的两个十位数ab>cd, ab必须是偶数且能被5整除, cd必须是奇数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从

大到小的顺序存入数组b中, 并要计算满足上述条件的四位数的个数cnt。最后main()函数调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。

注意: 部分源程序存在文件PROG1.C文件中。程序中已定义数组: a[200], b[200], 已定义变量: cnt请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。*/ #include #define MAX 200 int a[MAX], b[MAX], cnt = 0;void jsVal(){/**/ int i,j,k,A,B,C,D;for(i=0;i < MAX;i++){ A=a[i]/1000;B=a[i]/10%10;C=a[i]%10;D=a[i]/100%10;if(A&&C&&(B==0)&&(D%2)&&(10*A>10*C+D))b[cnt++]=a[i];} for(i=0;i < cnt-1;i++){ k=i;for(j=i+1;j < cnt;j++)if(b[k] < b[j])k=j;if(k!=i){A=b[k];b[k]=b[i];b[i]=A;} } /**/ } void readDat(){ int i;FILE *fp;fp = fopen(“in.dat”, “r”);for(i = 0;i < MAX;i++)fscanf(fp, “%d”, &a[i]);fclose(fp);} void main(){ int i;readDat();jsVal();printf(“满足条件的数=%dn”, cnt);for(i = 0;i < cnt;i++)printf(“%d ”, b[i]);printf(“n”);writeDat();} writeDat(){ FILE *fp;int i;fp = fopen(“out.dat”, “w”);fprintf(fp, “%dn”, cnt);for(i = 0;i < cnt;i++)fprintf(fp, “%dn”, b[i]);fclose(fp);200个四位数题之其余九题说明

之二

要求:

把千位数字和十位数字重新组成一个新的十位数(新十 位数的十位数字是原四位数的千位数字,新十位数的个位数字是 原四位数的十位数字), 以及把个位数字和百位数字组成另一个 新的十位数(新十位数的十位数字是原四位数的个位数字, 新十 位数的个位数字是原四位数的百位数字), 如果新组成的两个十 位数均是素数且新数的十位数字均不为零,则将满足此条件的四

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

out.dat 的内容应当为: 9971 8398 7711 6375 4719 4173 2736 2398 2397 1997

之三

要求:

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

新的十位数(新十位数的十位数字是原四位数的百位数字, 新十 位数的个位数字是原四位数的十位数字), 如果新组成的两个十 位数必须是一个奇数,另一个为偶数并且两个十位数中至少有一

个数能被17整除,同时两个新数的十位数字均不为零, 则将满足 此条件的四位数按从大到小的顺序存入数组b中, 并要计算满足 上述条件的四位数的个数cnt。

out.dat 的内容应当为: 8656 8174 7781 7683 4313 4173 2513

之四

要求:)把这些数存入数组a中,请考生编制一函数jsVal(),其 功能是: 把千位数字和十位数字重新组成一个新的十位数ab(新 十位数的十位数字是原四位数的千位数字,新十位数的个位数字

是原四位数的十位数字), 以及把个位数字和百位数字组成另一 个新的十位数cd(新十位数的十位数字是原四位数的个位数字, 新十位数的个位数字是原四位数的百位数字), 如果新组成的两

个十位数ab-cd>=10且ab-cd<=20且两个数均是偶数,同时两个新 数的十位数字均不为零,则将满足此条件的四位数按从大到小的

顺序存入数组b中, 并要计算满足上述条件的四位数的个数cnt。

out.dat 的内容应当为: 9068 5224 5024 3821 2281

之五

要求:

如果四位数各位上的数字均是0或2或4或6或8, 则统计 出满足此条件的个数cnt, 并把这些四位数按从大到小的顺序存 入数组b中。

out.dat 的内容应当为: 8448 6820 4488 4060 2888 2884 2686 2624 2484 2420 2042

之六

要求:

把千位数字和个位数字重新组成一个新的十位数(新十 位数的十位数字是原四位数的千位数字,新十位数的个位数字是 原四位数的个位数字), 以及把百位数字和十位数字组成另一个 新的十位数(新十位数的十位数字是原四位数的百位数字, 新十 位数的个位数字是原四位数的十位数字), 如果新组成的两个十 位数均是奇数并且两个十位数中至少有一个数能被5整除, 同时

两个新数的十位数字均不为零,则将满足此条件的四位数按从大 到小的顺序存入数组b中, 并要计算满足上述条件的四位数的个 数cnt。

out.dat 的内容应当为: 9851 8275 6375 5755 5359 4951 4595 4395 3575 3135

之七

要求:

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

新的十位数(新十位数的十位数字是原四位数的百位数字, 新十 位数的个位数字是原四位数的十位数字), 如果新组成的两个十 位数均是偶数并且两个十位数中至少有一个数能被9整除, 同时 两个新数的十位数字均不为零,则将满足此条件的四位数按从大 到小的顺序存入数组b中, 并要计算满足上述条件的四位数的个 数cnt。

out.dat 的内容应当为: 8761 8724 8441 6722 6603 6545 6323 6181 4369 4285 4125 2724 2362

之八

要求:

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

个新的十位数cd(新十位数的十位数字是原四位数的个位数字, 新十位数的个位数字是原四位数的百位数字), 如果新组成的两 个十位数ab 同时两个新数的十位数字均不为零,则将满足此条件的四位数按 从大到小的顺序存入数组b中, 并要计算满足上述条件的四位数 的个数cnt。

out.dat 的内容应当为: 7878 5437 3897 2893 2877 2438 2039 2035 2033 1619 1494 1493

之九

要求:

如果四位数各位上的数字均是奇数,则统计出满足此条 件的个数cnt并把这些四位数按从大到小的顺序存入数组b中。

out.dat 的内容应当为: 9971 7973 7711 7511 5755 5359 5311 3575 3537 3135 1997 1979 1531 之十

要求:

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

个新的十位数cd(新十位数的十位数字是原四位数的个位数字, 新十位数的个位数字是原四位数的百位数字), 如果新组成的两 个十位数ab-cd>=0且ab-cd<=10且两个数均是奇数, 同时两个新 数的十位数字均不为零,则将满足此条件的四位数按从大到小的 顺序存入数组b中, 并要计算满足上述条件的四位数的个数cnt。

out.dat 的内容应当为: 8398 7996 5954 4313 2311 __________________ 老枪

小于200个四位数之一(共四题)code: /* 已知在文件IN.DAT中存有若干个(个数<200)四位数字的正整数, 函数ReadDat()读取这若干个正整数并存入数组xx中。请编制函数Calvalue(), 其功能要求: 1.求出这文件中共有多少个正整数totNum;2.求出这些数中的各位数字之和是奇数的数的个数totCnt, 以及满足此条件的这些的算术平均值totPjz。最后main()函数调用函数WriteDat()把所求的结果输出到OUT.DAT文 件中。

注意: 部分源程序存放在PROG1.C中。请勿改动数据文件IN.DAT中的任何数据,主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。*/ #include #include #define MAXNUM 200 int xx[MAXNUM];int totNum = 0;/* 文件IN.DAT中共有多少个正整数 */ int totCnt = 0;/* 符合条件的正整数的个数 */ double totPjz = 0.0;/*平均值 */ int ReadDat(void);void WriteDat(void);void Calvalue(void){/**/ while(xx[totNum]){ if((xx[totNum]/1000+xx[totNum]/100%10+xx[totNum]/10%10+xx[totNum])%2){ totCnt++;totPjz+=xx[totNum];} totNum++;} if(totCnt)totPjz/=totCnt;/**/ } void main(){ int i;clrscr();for(i = 0;i < MAXNUM;i++)xx[i] = 0;if(ReadDat()){ printf(“数据文件IN.DAT不能打开!07n”);return;} Calvalue();printf(“文件IN.DAT中共有正整数=%d个n”, totNum);printf(“符合条件的正整数的个数=%d个n”, totCnt);printf(“平均值=%.2lfn”, totPjz);WriteDat();} int ReadDat(void){ FILE *fp;int i = 0;if((fp = fopen(“in.dat”, “r”))== NULL)return 1;while(!feof(fp)){ fscanf(fp, “%d,”, &xx[i++]);} fclose(fp);return 0;} void WriteDat(void){ FILE *fp;fp = fopen(“OUT.DAT”, “w”);fprintf(fp, “%dn%dn%.2lfn”, totNum, totCnt, totPjz);fclose(fp);} in.dat 文件内容如下:

6045,6192,1885,3580,8544,6826,5493,8415,3132,5841, 6561,3173,9157,2895,2851,6082,5510,9610,5398,5273, 3438,1800,6364,6892,9591,3120,8813,2106,5505,1085, 5835,7295,6131,9405,6756,2413,6274,9262,5728,2650, 6266,5285,7703,1353,1510,2350,4325,4392,7573,8204, 7358,6365,3135,9903,3055,3219,3955,7313,6206,1631, 5869,5893,4569,1251,2542,5740,2073,9805,1189,7550, 4362,6214,5680,8753,8443,3636,4495,9643,3782,5556, 1018,9729,8588,2797,4321,4714,9658,8997,2080,5912, 9968,5558,9311,7047,6138,7618,5448,1466,7075,2166, 4025,3572,9605,1291,6027,2358,1911,2747,7068,1716, 9661,5849,3210,2554,8604,8010,7947,3685,2945,4224, 7014,9058,6259,9503,1615,1060,7787,8983,3822,2471, 5146,7066,1029,1777,7788,2941,3538,2912,3096,7421, 9175,6099,2930,4685,8465,8633,2628,7155,4307,9535, 4274,2857,6829,6226,8268,9377,9415,9059,4872,6072, out.dat 文件内容应当如下:

160 69 5460.51 __________________ 老枪

小于200个四位数之二(共四题)code:/* 已知在文件IN.DAT中存有若干个(个数<200)四位数字的正整数, 函数ReadDat()读取这若干个正整数并存入数组xx中。请编制函数Calvalue(), 其功能要求: 1.求出这文件中共有多少个

正整数totNum;2.求出这些数中的各位数字之和是偶数的数的个数totCnt, 以及满足此条件的这些数的算术平均值totPjz。最后main()函数调用函数WriteDat()把所求的结果输出到OUT.DAT文 件中。注意: 部分源程序存放在PROG1.C中。请勿改动数据文件IN.DAT中的任何数据,主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。*/ #include #include

#define MAXNUM 200 int xx[MAXNUM];int totNum = 0;/* 文件IN.DAT中共有多少个正整数 */ int totCnt = 0;/* 符合条件的正整数的个数 */ double totPjz = 0.0;/*平均值 */ int ReadDat(void);void WriteDat(void);void Calvalue(void){/**/ for(;xx[totNum];totNum++)if((xx[totNum]/1000+xx[totNum]/100%10+xx[totNum]/10%10+xx[totNum]%10)%2==0){ totCnt++;totPjz+=xx[totNum];} if(totCnt)totPjz/=totCnt;/**/ } void main(){ int i;clrscr();for(i = 0;i < MAXNUM;i++)xx[i] = 0;if(ReadDat()){ printf(“数据文件IN.DAT不能打开!07n”);return;} Calvalue();printf(“文件IN.DAT中共有正整数=%d个n”, totNum);printf(“符合条件的正整数的个数=%d个n”, totCnt);printf(“平均值=%.2lfn”, totPjz);WriteDat();} int ReadDat(void){ FILE *fp;int i = 0;if((fp = fopen(“in.dat”, “r”))== NULL)return 1;while(!feof(fp)){fscanf(fp, “%d,”, &xx[i++]);} fclose(fp);return 0;} void WriteDat(void){ FILE *fp;fp = fopen(“OUT.DAT”, “w”);fprintf(fp, “%dn%dn%.2lfn”, totNum, totCnt, totPjz);fclose(fp);} out.dat 文件内容应当如下:

160 91

5517.1200个四位数之三(共四题)code:/* 已知在文件IN.DAT中存有若干个(个数<200)四位数字的正整数, 函数ReadDat()读取这若干个正整数并存入数组xx中。请编制函数Calvalue(), 其功能要求: 1.求出这文件中共有多少个

正整数totNum;2.求这些数右移1位后, 产生的新数是奇数的数的个数totCnt, 以及满足此条件的这些数(右移前的值)的算术平均值totPjz。最后main()函数调用函数WriteDat()把所求的结果 输出到文件OUT.DAT中。注意: 部分源程序存放在PROG1.C中。请勿改动数据文件IN.DAT中的任何数据,主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。*/ #include #include

#define MAXNUM 200 int xx[MAXNUM];int totNum = 0;/* 文件IN.DAT中共有多少个正整数 */ int totCnt = 0;/* 符合条件的正整数的个数 */double totPjz = 0.0;/*平均值 */ int ReadDat(void);void WriteDat(void);void Calvalue(void){/**/ for(;xx[totNum];totNum++)if((xx[totNum]>>1)%2){ totCnt++;totPjz+=xx[totNum];} if(totCnt)totPjz/=totCnt;/**/ } void main(){int i;clrscr();for(i = 0;i < MAXNUM;i++)xx[i] = 0;if(ReadDat()){ printf(“数据文件IN.DAT不能打开!07n”);return;} Calvalue();printf(“文件IN.DAT中共有正整数=%d个n”, totNum);printf(“符合条件的正整数的个数=%d个n”, totCnt);printf(“平均值=%.2lfn”, totPjz);WriteDat();} int ReadDat(void){ FILE *fp;int i = 0;if((fp = fopen(“in.dat”, “r”))== NULL)return 1;while(!feof(fp)){ fscanf(fp, “%d,”, &xx[i++]);} fclose(fp);return 0;} void WriteDat(void){ FILE *fp;fp = fopen(“OUT.DAT”, “w”);fprintf(fp, “%dn%dn%.2lfn”, totNum, totCnt, totPjz);fclose(fp)} out.dat 文件内容应当如下:

160 80 5537.54 __________________ 老枪

小于200个四位数之四(共四题)code: /* 已知在文件IN.DAT中存有若干个(个数<200)四位数字的正整数, 函数ReadDat()读取这若干个正整数并存入数组xx中。请编

制函数Calvalue(), 其功能要求: 1.求出这文件中共有多少个 正整数totNum;2.求这些数右移1位后, 产生的新数是偶数的数 的个数totCnt, 以及满足此条件的这些数(右移前的值)的算术平均值totPjz。最后main()函数调用函数WriteDat()把所求的结果 输出到文件OUT.DAT中。

注意: 部分源程序存放在PROG1.C中。

请勿改动数据文件IN.DAT中的任何数据,主函数main()、读 数据函数ReadDat()和输出数据函数WriteDat()的内容。*/ #include #include

#define MAXNUM 200 int xx[MAXNUM];int totNum = 0;/* 文件IN.DAT中共有多少个正整数 */ int totCnt = 0;/* 符合条件的正整数的个数 */ double totPjz = 0.0;/*平均值 */ int ReadDat(void);void WriteDat(void);void Calvalue(void){/**/ for(;xx[totNum]>0;totNum++)if((xx[totNum]>>1)%2==0){ totCnt++;totPjz+=xx[totNum];} if(totCnt)totPjz/=totCnt;/**/ } void main(){ int i;clrscr();for(i = 0;i < MAXNUM;i++)xx[i] = 0;if(ReadDat()){ printf(“数据文件IN.DAT不能打开!07n”);return;} Calvalue();printf(“文件IN.DAT中共有正整数=%d个n”, totNum);printf(“符合条件的正整数的个数=%d个n”, totCnt);printf(“平均值=%.2lfn”, totPjz);WriteDat();} int ReadDat(void){ FILE *fp;int i = 0;if((fp = fopen(“in.dat”, “r”))== NULL)return 1;while(!feof(fp)){ fscanf(fp, “%d,”, &xx[i++]);} fclose(fp);return 0;} void WriteDat(void){ FILE *fp;fp = fopen(“OUT.DAT”, “w”);fprintf(fp, “%dn%dn%.2lfn”, totNum, totCnt, totPjz);fclose(fp);} out.dat 文件内容应当如下:

160 80 5447.93 __________________ 老枪

英文文章——字符串处理(共10题)

之一

code: /* 函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到 字符串数组xx中;请编制函数SortCharD(), 其函数的功能是: 以 行为单位对字符按从大到小的顺序进行排序, 排序后的结果仍按行 重新存入字符串数组xx中。最后main()函数调用函数WriteDat()把 结果xx输出到文件OUT2.DAT中。例: 原文: dAe,BfC.CCbbAA 结果: fedCBA., bbCCAA 原始数据文件存放的格式是: 每行的宽度均小于80个字符, 含 标点符号和空格。

注意: 部分源程序存放在PROG1.C中。

请勿改动主函数main()、读数据函数ReadDat()和输出数据函 数WriteDat()的内容。*/ #include #include #include char xx[50][80];int maxline = 0;/* 文章的总行数 */ int ReadDat(void);void WriteDat(void);void SortCharD(void){/**/ int i,j,k,m,n;char ch;for(i=0;i < maxline;i++){ j=strlen(xx[i]);for(m=0;m < j-1;m++){ k=m;for(n=m+1;n < j;n++)if(xx[i][k] < xx[i][n])k=n;if(k!=m){ ch=xx[i][k];xx[i][k]=xx[i][m];xx[i][m]=ch;} } } /**/ } void main(){ clrscr();if(ReadDat()){ printf(“数据文件IN.DAT不能打开!n07”);return;} SortCharD();WriteDat();} int ReadDat(void){ FILE *fp;int i = 0;char *p;if((fp = fopen(“IN.DAT”, “r”))== NULL)return 1;while(fgets(xx[i], 80, fp)!= NULL){ p = strchr(xx[i], 'n');if(p)*p = 0;i++;} maxline = i;fclose(fp);return 0;} void WriteDat(void){ FILE *fp;int i;clrscr();fp = fopen(“OUT2.DAT”, “w”);for(i = 0;i < maxline;i++){ printf(“%sn”, xx[i]);fprintf(fp, “%sn”, xx[i]);} fclose(fp);}

in.dat 文件内容为:

You can create an index on any field, on several fields to be used

together, or on parts thereof, that you want to use as a key.The

keys in indexes allow you quick access to specific records and define

orders for sequential processing of a ISAM file.After you no longer

need an index, you can delete it.Addition and indexes have no effect

on the data records or on other indexes.You may want a field in field in each record to uniquely identify that

record from all other records in the file.For example, the Employee

Number field is unique if you do not assign the same number to two

different employees, and you never reassign these numbers to other

employees.If you wish to find or modify the record belonging to a

specific employee, this unique field saves the thouble of determining

whether you have the correct record.If you do not have a unique field, you must find the first record

the matches your key and determine whether the record is the one you

want.If it is not the correct one, you must search again to find others.If you know that you have a unique field within your records, you

can include this fact in the key description, and ISAM will allow only

unique keys.For example, if you specify that the employee numbers are

unique, ISAM only lets you add records to the file for, or change

numbers to, employee numbers that do not alreadly exist int file.out2.dat 文件内容应当为:

yxvuuttsssrroooonnnnnnllliiiffeeeeeeeeeddddccbaaaaaY, yywuuttttttttsssrrrrpoooooonnkhhhhgfeeeeeeeaaaaaT.,,yyxwuutssssssrrqpoooonnnnllkkiiiiiiffeeeeeeeeddddccccccaaa yuuttssssrrrrrrqpooooooonnnnllliiiggffffeeeeeeedcaaSMIAA.yxxvuttttsooonnnnnnnnliiiiihffeeeeeeeeeeedddddddccaaaaA., xtttssrrrrooooonnnihheeeeedddcaa.yyywuuutttttrrqooonnnnnmllliiiiiiihhfffeeeeeeddddccaaaaaY yxtttsrrrrrrrppoooooonmmmllllliihhhffeeeeeeeeeeddccaaFE., ywuuuuuttttssssrrqooooonnnnmmmliiiiihgffeeeeeeddbbaaN yyvuuttttsssssrrrrrpoooonnnnnmmliihhgffeeeeeeeeeeeeddbaa, yyywutttssrrrpoooooooonnnmmlliiiihhggfffeeeeeedddcbaI.yvuuuttttssssrqppooonnnmmllliiiiiiihhhgfffeeeeeeeeeeeddccba, ywvutttrrrrrooohhhheeeeeedccca.yyvuuuuuttttssrrrqooooonnnmliiiihhffffeeeeeddddcaaI,yyywuuttttttssrrrrroooonnnmmkiihhhhhheeeeeeeeeeeedddccaa ywuuttttttttssssrrrroooooonnnnnmiiiihhhgffeeeeedcccaaaaI.., yyyywwvuuuuuutttsrrrqoooooonnnlkiiiihhhffeeeeddcaaaI, yywwuttttssrpooonnnnnnllllllkiiiiiihhfeeeedddccccaaaaSMIA, yyyyxuuuutttsssrrrqpppooonnmmmllkiiihhffeeeeeeeeeeecbaaaF., yyuuutttssrrrrqoooooonnnllliihhgffeeeeeedddccaaSMIA, yyxuuttttttsssrrrpoooonnnnmmmlllliiihfeeeeeeeeddbbaaa., __________________ 字符串处理之二

code: /* 函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入 到字符串数组xx中;请编制函数ConvertCharA(), 其函数的功能 是: 以行为单位把字符串中的所有小写字母改写成该字母的下一 个字母, 如果是字母z, 则改写成字母a,大写字母和其它字符保 持不变。把已处理的字符串仍按行重新存入字符串数组xx中。最 后main()函数调用函数WriteDat()把结果xx输出到文件OUT3.DAT 中。

例: 原文: Adb.Bcdza abck.LLhj 结果: Aec.Bdeab bcdl.LLik 原始数据文件存放的格式是: 每行的宽度均小于80个字符, 含 标点符号和空格。

注意: 部分源程序存放在PROG1.C中。

请勿改动主函数main()、读数据函数ReadDat()和输出数据函 数WriteDat()的内容。*/ #include #include #include

char xx[50][80];int maxline = 0;/* 文章的总行数 */ int ReadDat(void);void WriteDat(void);void ConvertCharA(void){/**/ int i,j;for(i=0;i < maxline;i++)for(j=0;j < strlen(xx[i]);j++)if(xx[i][j]=='z')xx[i][j]='a';else if((xx[i][j]>='a')&&(xx[i][j]<'z'))xx[i][j]++;/**/ } void main(){ clrscr();if(ReadDat()){ printf(“数据文件IN.DAT不能打开!n07”);return;} ConvertCharA();WriteDat();} int ReadDat(void){ FILE *fp;int i = 0;char *p;if((fp = fopen(“IN.DAT”, “r”))== NULL)return 1;while(fgets(xx[i], 80, fp)!= NULL){ p = strchr(xx[i], 'n');if(p)*p = 0;i++;} maxline = i;fclose(fp);return 0;} void WriteDat(void){ FILE *fp;int i;clrscr();fp = fopen(“OUT3.DAT”, “w”);for(i = 0;i < maxline;i++){ printf(“%sn”, xx[i]);fprintf(fp, “%sn”, xx[i]);} fclose(fp);}

out3.dat文件内容应当如下:

Ypv dbo dsfbuf bo joefy po boz gjfme, po tfwfsbm gjfmet up cf vtfe

uphfuifs, ps po qbsut uifsfpg, uibu zpv xbou up vtf bt b lfz.Tif

lfzt jo joefyft bmmpx zpv rvjdl bddftt up tqfdjgjd sfdpset boe efgjof

psefst gps tfrvfoujbm qspdfttjoh pg b ISAM gjmf.Agufs zpv op mpohfs

offe bo joefy, zpv dbo efmfuf ju.Aeejujpo boe joefyft ibwf op fggfdu

po uif ebub sfdpset ps po puifs joefyft.Ypv nbz xbou b gjfme jo gjfme jo fbdi sfdpse up vojrvfmz jefoujgz uibu

sfdpse gspn bmm puifs sfdpset jo uif gjmf.Fps fybnqmf, uif Enqmpzff

Nvncfs gjfme jt vojrvf jg zpv ep opu bttjho uif tbnf ovncfs up uxp

ejggfsfou fnqmpzfft, boe zpv ofwfs sfbttjho uiftf ovncfst up puifs

fnqmpzfft.Ig zpv xjti up gjoe ps npejgz uif sfdpse cfmpohjoh up b

tqfdjgjd fnqmpzff, uijt vojrvf gjfme tbwft uif uipvcmf pg efufsnjojoh

xifuifs zpv ibwf uif dpssfdu sfdpse.Ig zpv ep opu ibwf b vojrvf gjfme, zpv nvtu gjoe uif gjstu sfdpse

uif nbudift zpvs lfz boe efufsnjof xifuifs uif sfdpse jt uif pof zpv

xbou.Ig ju jt opu uif dpssfdu pof, zpv nvtu tfbsdi bhbjo up gjoe puifst.Ig zpv lopx uibu zpv ibwf b vojrvf gjfme xjuijo zpvs sfdpset, zpv

dbo jodmvef uijt gbdu jo uif lfz eftdsjqujpo, boe ISAM xjmm bmmpx pomz

vojrvf lfzt.Fps fybnqmf, jg zpv tqfdjgz uibu uif fnqmpzff ovncfst bsf

vojrvf, ISAM pomz mfut zpv bee sfdpset up uif gjmf gps, ps dibohf

ovncfst up, fnqmpzff ovncfst uibu ep opu bmsfbemz fyjtu jou gjmf.__________________ 老枪

字符串处理之三

code: /* 函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到 字符串数组xx中;请编制函数SortCharA(), 其函数的功能是: 以 行为单位对字符按从小到大的顺序进行排序, 排序后的结果仍按行 重新存入字符串数组xx中。最后main()函数调用函数WriteDat()把 结果xx输出到文件OUT1.DAT中。例: 原文: dAe,BfC.CCbbAA 结果: ,.ABCdef AACCbb 原始数据文件存放的格式是: 每行的宽度均小于80个字符, 含 标点符号和空格。

注意: 部分源程序存放在PROG1.C中。

请勿改动主函数main()、读数据函数ReadDat()和输出数据函 数WriteDat()的内容。*/ #include #include #include

char xx[50][80];int maxline = 0;/* 文章的总行数 */ int ReadDat(void);void WriteDat(void);void SortCharA(void){/**/ int i,j,k,m,n;char ch;for(i=0;i < maxline;i++){ j=strlen(xx[i]);for(m=0;m < j-1;m++){ k=m;for(n=m+1;n < j;n++)if(xx[i][k] > xx[i][n])k=n;if(k!=m){ ch=xx[i][k];xx[i][k]=xx[i][m];xx[i][m]=ch;} } } /**/ } void main(){ clrscr();if(ReadDat()){ printf(“数据文件IN.DAT不能打开!n07”);return;} SortCharA();WriteDat();} int ReadDat(void){ FILE *fp;int i = 0;char *p;if((fp = fopen(“IN.DAT”, “r”))== NULL)return 1;while(fgets(xx[i], 80, fp)!= NULL){ p = strchr(xx[i], 'n');if(p)*p = 0;i++;} maxline = i;fclose(fp);return 0;} void WriteDat(void){ FILE *fp;int i;clrscr();fp = fopen(“OUT1.DAT”, “w”);for(i = 0;i < maxline;i++){ printf(“%sn”, xx[i]);fprintf(fp, “%sn”, xx[i]);} fclose(fp);}

out1.dat 文件内容如下(注意每行的前面有若干空格):,Yaaaaabccddddeeeeeeeeeffiiilllnnnnnnoooorrsssttuuvxy ,.Taaaaaeeeeeeefghhhhknnooooooprrrrsssttttttttuuwyy

aaaccccccddddeeeeeeeeffiiiiiikkllnnnnoooopqrrsssssstuuwxyy.AAIMSaacdeeeeeeeffffggiiilllnnnnooooooopqrrrrrrssssttuuy ,.Aaaaaccdddddddeeeeeeeeeeeffhiiiiilnnnnnnnnooosttttuvxxy.aacdddeeeeehhinnnooooorrrrsstttx

Yaaaaaccddddeeeeeefffhhiiiiiiilllmnnnnnoooqrrtttttuuuwyyy ,.EFaaccddeeeeeeeeeeffhhhiilllllmmmnoooooopprrrrrrrstttxy Naabbddeeeeeeffghiiiiilmmmnnnnoooooqrrssssttttuuuuuwy ,aabddeeeeeeeeeeeeffghhiilmmnnnnnooooprrrrrsssssttttuuvyy.Iabcdddeeeeeefffgghhiiiillmmnnnooooooooprrrsstttuwyyy ,abccddeeeeeeeeeeefffghhhiiiiiiilllmmnnnoooppqrssssttttuuuvy.acccdeeeeeehhhhooorrrrrtttuvwy ,Iaacddddeeeeeffffhhiiiilmnnnoooooqrrrssttttuuuuuvyy

aaccdddeeeeeeeeeeeehhhhhhiikmmnnnoooorrrrrssttttttuuwyyy ,..Iaaaacccdeeeeeffghhhiiiimnnnnnoooooorrrrssssttttttttuuwy ,Iaaacddeeeeffhhhiiiiklnnnooooooqrrrstttuuuuuuvwwyyyy ,AIMSaaaaccccdddeeeefhhiiiiiikllllllnnnnnnoooprssttttuwwyy ,.Faaabceeeeeeeeeeeffhhiiikllmmmnnooopppqrrrssstttuuuuxyyyy ,AIMSaaccdddeeeeeeffghhiilllnnnooooooqrrrrsstttuuuyy ,.aaabbddeeeeeeeefhiiillllmmmnnnnooooprrrsssttttttuuxyy __________________ 老枪

字符串处理之四

code: /* 函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到 字符串数组xx中;请编制函数StrCharJL(), 其函数的功能是: 以 行为单位把字符串中的所有字符的ASCII值左移4位, 如果左移后, 其字符的ASCII值小于等于32或大于100, 则原字符保持不变, 否则 就把左移后的字符ASCII值再加上原字符的ASCII值, 得到新的字符 仍存入原字符串对应的位置上,之后把已处理的字符串仍按行重新 存入字符串数组xx中。最后main()函数调用函数WriteDat()把结果 xx输出到OUT7.DAT文件中。

原始数据文件存放的格式是: 每行的宽度均小于80个字符, 含 标点符号和空格。

注意: 部分源程序存放在PROG1.C中。

请勿改动主函数main()、读数据函数ReadDat()和输出数据函 数WriteDat()的内容。*/ #include #include #include

char xx[50][80];int maxline = 0;/* 文章的总行数 */ int ReadDat(void);void WriteDat(void);void StrCharJL(void){/**/ int i,j;char m;/****老王注:此题的关键是定义 char m。记得往年的考试类似题可以不必定义,如果要定义的话,则必须定义为 int 结果才能正确。看来理解出题 者的意图是机试的难点之一。****/ for(i=0;i < maxline;i++)for(j=0;j < strlen(xx[i]);j++){ m=xx[i][j]<<4;if((m>32)&&(m<=100))xx[i][j]+=m;} /**/ } void main(){ clrscr();if(ReadDat()){ printf(“数据文件IN.DAT不能打开!n07”);return;} StrCharJL();WriteDat();} int ReadDat(void){ FILE *fp;int i = 0;char *p;if((fp = fopen(“IN.DAT”, “r”))== NULL)return 1;while(fgets(xx[i], 80, fp)!= NULL){ p = strchr(xx[i], 'n');if(p)*p = 0;i++;} maxline = i;fclose(fp);return 0;} void WriteDat(void){ FILE *fp;int i;clrscr();fp = fopen(“OUT7.DAT”, “w”);for(i = 0;i < maxline;i++){ printf(“%sn”, xx[i]);fprintf(fp, “%sn”, xx[i]);} fclose(fp);}

字符串处理之五

code: /* 函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到 字符串数组xx中;请编制函数StrCharJR(), 其函数的功能是: 以 行为单位把字符串中的所有字符的ASCII值右移4位, 然后把右移后 的字符ASCII值再加上原字符的ASCII值, 得到新的字符仍存入原字 符串对应的位置上,之后把已处理的字符串仍按行重新存入字符串 数组xx中。最后main()函数调用函数WriteDat()把结果xx输出到文 件OUT8.DAT中。

原始数据文件存放的格式是: 每行的宽度均小于80个字符, 含 标点符号和空格。

注意: 部分源程序存放在PROG1.C中。

请勿改动主函数main()、读数据函数ReadDat()和输出数据函 数WriteDat()的内容。*/ #include #include #include

char xx[50][80];int maxline = 0;/* 文章的总行数 */ int ReadDat(void);void WriteDat(void);void StrCharJR(void){/**/ int i,j;for(i=0;i for(j=0;j xx[i][j]+=xx[i][j]>>4;/**/ } void main(){ clrscr();if(ReadDat()){ printf(“数据文件IN.DAT不能打开!n07”);return;} StrCharJR();WriteDat();} int ReadDat(void){ FILE *fp;int i = 0;char *p;if((fp = fopen(“IN.DAT”, “r”))== NULL)return 1;

while(fgets(xx[i], 80, fp)!= NULL){ p = strchr(xx[i], 'n');if(p)*p = 0;i++;} maxline = i;fclose(fp);return 0;} void WriteDat(void){ FILE *fp;int i;clrscr();fp = fopen(“OUT8.DAT”, “w”);for(i = 0;i < maxline;i++){ printf(“%sn”, xx[i]);fprintf(fp, “%sn”, xx[i]);} fclose(fp);}

out8.dat 文件内容应当如下:

^u|“igt”iykg{k“gt”otjk•“ut”gt?“lokrj.”ut“zk}kygr”lokrjz“{u”hk“|zkj

{umk{nky.”uy“ut”wgy{z“{nkykul.”{ng{“?u|”~gt{“{u”|zk“gz”g“qk?0”Ynk qk?z“ot”otjk•kz“grru~”?u|“x|oiq”giikzz“{u”zwkioloi“ykiuyjz”gtj“jklotk

uyjkyz”luy“zkx|kt{ogr”wyuikzzotm“ul”g“MXEQ”lork0“El{ky”?u|“tu”rutmky tkkj“gt”otjk•.“?u|”igt“jkrk{k”o{0“Ejjo{out”gtj“otjk•kz”ng}k“tu”kllki{ ut“{nk”jg{g“ykiuyjz”uy“ut”u{nky“otjk•kz0

^u|”sg?“~gt{”g“lokrj”ot“lokrj”ot“kgin”ykiuyj“{u”|tox|kr?“ojkt{ol?”{ng{ ykiuyj“lyus”grr“u{nky”ykiuyjz“ot”{nk“lork0”Juy“k•gswrk.”{nk“Iswru?kk R|shky”lokrj“oz”|tox|k“ol”?u|“ju”tu{“gzzomt”{nk“zgsk”t|shky“{u”{~u jollkykt{“kswru?kkz.”gtj“?u|”tk}ky“ykgzzomt”{nkzk“t|shkyz”{u“u{nky kswru?kkz0”Ml“?u|”~ozn“{u”lotj“uy”sujol?“{nk”ykiuyj“hkrutmotm”{u“g zwkioloi”kswru?kk.“{noz”|tox|k“lokrj”zg}kz“{nk”{nu|hrk“ul”jk{kysototm ~nk{nky“?u|”ng}k“{nk”iuyyki{“ykiuyj0

Ml”?u|“ju”tu{“ng}k”g“|tox|k”lokrj.“?u|”s|z{“lotj”{nk“loyz{”ykiuyj

{nk“sg{inkz”?u|y“qk?”gtj“jk{kysotk”~nk{nky“{nk”ykiuyj“oz”{nk“utk”?u|

~gt{0“Ml”o{“oz”tu{“{nk”iuyyki{“utk.”?u|“s|z{”zkgyin“gmgot”{u“lotj”u{nkyz0 Ml“?u|”qtu~“{ng{”?u|“ng}k”g“|tox|k”lokrj“~o{not”?u|y“ykiuyjz.”?u|

igt“otir|jk”{noz“lgi{”ot“{nk”qk?“jkziyow{out.”gtj“MXEQ”~orr“grru~”utr? |tox|k“qk?z0”Juy“k•gswrk.”ol“?u|”zwkiol?“{ng{”{nk“kswru?kk”t|shkyz“gyk |tox|k.”MXEQ“utr?”rk{z“?u|”gjj“ykiuyjz”{u“{nk”lork“luy.”uy“ingtmk t|shkyz”{u.“kswru?kk”t|shkyz“{ng{”ju“tu{”grykgjr?“k•oz{”ot{“lork0 __________________ 老枪

字符串处理之六

code: /* 函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到 字符串数组xx中;请编制函数StrOL(), 其函数的功能是: 以行为 单位对行中以空格或标点符号为分隔的所有单词进行倒排,同时去 除标点符号,之后把已处理的字符串(应不含标点符号)仍按行重新 存入字符串数组xx中。最后main()函数调用函数WriteDat()把结果 xx输出到文件OUT6.DAT中。例如: 原文: You He Me I am a student.结果: Me He You student a am I 原始数据文件存放的格式是: 每行的宽度均小于80个字符, 含 标点符号和空格。

注意: 部分源程序存放在PROG1.C中。

请勿改动主函数main()、读数据函数ReadDat()和输出数据函 数WriteDat()的内容。

**** 同1998年3B第六题 **** */ #include #include #include #include char xx[50][80];int maxline = 0;/* 文章的总行数 */ int ReadDat(void);void WriteDat(void);void StrOL(void){/**/ int i,j,k,m,n,ll;char yy[80];for(i=0;i < maxline;i++){ ll=strlen(xx[i]);k=n=0;for(j=ll-1;j>=0;j--){ if(isalpha(xx[i][j]))k++;else { for(m=1;m<=k;m++)yy[n++]=xx[i][j+m];k=0;} if(xx[i][j]==' ')yy[n++]=' ';} for(m=1;m<=k;m++)yy[n++]=xx[i][j+m];/* 上面两行处理每行的第一个单词。

如果漏写,结果显然不正确,但并不影响得分。*/ yy[n]=0;strcpy(xx[i],yy);} /* 标准答案与此法结果相比,每行后面多一个空格。*/ } void main(){ clrscr();if(ReadDat()){ printf(”数据文件IN.DAT不能打开!n07“);return;} StrOL();WriteDat();} int ReadDat(void){ FILE *fp;int i = 0;char *p;if((fp = fopen(”IN.DAT“, ”r“))== NULL)return 1;while(fgets(xx[i], 80, fp)!= NULL){ p = strchr(xx[i], 'n');if(p)*p = 0;i++;} maxline = i;fclose(fp);return 0;} void WriteDat(void){ FILE *fp;int i;clrscr();fp = fopen(”OUT6.DAT“, ”w“);for(i = 0;i < maxline;i++){ printf(”%sn“, xx[i]);fprintf(fp, ”%sn“, xx[i]);} fclose(fp);} out6.dat 内容应当如下:

used be to fields several on field any on index an create can You

The key a as use to want you that thereof parts on or together define and records specific to access quick you allow indexes in keys

longer no you After file ISAM a of processing sequential for orders

effect no have indexes and Addition it delete can you index an need

indexes other on or records data the on

that identify uniquely to record each in field in field a want may You

Employee the example For file the in records other all from record

two to number same the assign not do you if unique is field Number

other to numbers these reassign never you and employees different

a to belonging record the modify or find to wish you If employees

determining of thouble the saves field unique this employee specific

record correct the have you whether

record first the find must you field unique a have not do you If

you one the is record the whether determine and key your matches the

others find to again search must you one correct the not is it If want

you records your within field unique a have you that know you If

only allow will ISAM and description key the in fact this include can

are numbers employee the that specify you if example For keys unique

change or for file the to records add you lets only ISAM unique

file int exist alreadly not do that numbers employee to numbers 字符串处理之七

code: /* 函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入 到字符串数组xx中;请编制函数ConvertCharD(), 其函数的功能 是: 以行为单位把字符串中的所有小写字母改写成该字母的上一 个字母, 如果是字母a, 则改写成字母z,大写字母和其它字符保 持不变。把已处理的字符串仍按行重新存入字符串数组xx中。最 后main()函数调用函数WriteDat()把结果xx输出到文件OUT4.DAT

中。

例: 原文: Adb.Bcdza abck.LLhj 结果: Aca.Bbcyz zabj.LLgi 原始数据文件存放的格式是: 每行的宽度均小于80个字符, 含 标点符号和空格。

注意: 部分源程序存放在PROG1.C中。

请勿改动主函数main()、读数据函数ReadDat()和输出数据函 数WriteDat()的内容。*/ #include #include #include char xx[50][80];int maxline = 0;/* 文章的总行数 */ int ReadDat(void);void WriteDat(void);void ConvertCharD(void){/**/ int i,j;for(i=0;i < maxline;i++)for(j=0;j < strlen(xx[i]);j++)if(xx[i][j]=='a')xx[i][j]='z';else if(islower(xx[i][j]))xx[i][j]-=1;/**/ } void main(){ clrscr();if(ReadDat()){ printf(”数据文件IN.DAT不能打开!n07“);return;} ConvertCharD();WriteDat();} int ReadDat(void){ FILE *fp;int i = 0;char *p;if((fp = fopen(”IN.DAT“, ”r“))== NULL)return 1;while(fgets(xx[i], 80, fp)!= NULL){ p = strchr(xx[i], 'n');if(p)*p = 0;

i++;} maxline = i;fclose(fp);return 0;} void WriteDat(void){ FILE *fp;int i;clrscr();fp = fopen(”OUT4.DAT“, ”w“);for(i = 0;i < maxline;i++){ printf(”%sn“, xx[i]);fprintf(fp, ”%sn“, xx[i]);} fclose(fp);} out4.dat 文件内容应当如下:

Ynt bzm bqdzsd zm hmcdw nm zmx ehdkc, nm rdudqzk ehdkcr sn ad trdc

snfdsgdq, nq nm ozqsr sgdqdne, sgzs xnt vzms sn trd zr z jdx.Tgd

jdxr hm hmcdwdr zkknv xnt pthbj zbbdrr sn rodbhehb qdbnqcr zmc cdehmd

nqcdqr enq rdptdmshzk oqnbdrrhmf ne z ISAM ehkd.Aesdq xnt mn knmfdq

mddc zm hmcdw, xnt bzm cdkdsd hs.Acchshnm zmc hmcdwdr gzud mn deedbs

nm sgd czsz qdbnqcr nq nm nsgdq hmcdwdr.Ynt lzx vzms z ehdkc hm ehdkc hm dzbg qdbnqc sn tmhptdkx hcdmshex sgzs

qdbnqc eqnl zkk nsgdq qdbnqcr hm sgd ehkd.Fnq dwzlokd, sgd Eloknxdd

Ntladq ehdkc hr tmhptd he xnt cn mns zrrhfm sgd rzld mtladq sn svn

cheedqdms dloknxddr, zmc xnt mdudq qdzrrhfm sgdrd mtladqr sn nsgdq

dloknxddr.Ie xnt vhrg sn ehmc nq lnchex sgd qdbnqc adknmfhmf sn z

rodbhehb dloknxdd, sghr tmhptd ehdkc rzudr sgd sgntakd ne cdsdqlhmhmf

vgdsgdq xnt gzud sgd bnqqdbs qdbnqc.Ie xnt cn mns gzud z tmhptd ehdkc, xnt ltrs ehmc sgd ehqrs qdbnqc

sgd lzsbgdr xntq jdx zmc cdsdqlhmd vgdsgdq sgd qdbnqc hr sgd

nmd xnt

vzms.Ie hs hr mns sgd bnqqdbs nmd, xnt ltrs rdzqbg zfzhm sn ehmc nsgdqr.Ie xnt jmnv sgzs xnt gzud z tmhptd ehdkc vhsghm xntq qdbnqcr, xnt

bzm hmbktcd sghr ezbs hm sgd jdx cdrbqhoshnm, zmc ISAM vhkk zkknv nmkx

tmhptd jdxr.Fnq dwzlokd, he xnt rodbhex sgzs sgd dloknxdd mtladqr zqd

tmhptd, ISAM nmkx kdsr xnt zcc qdbnqcr sn sgd ehkd enq, nq bgzmfd

mtladqr sn, dloknxdd mtladqr sgzs cn mns zkqdzckx dwhrs hms ehkd.__________________ 老枪

字符串处理之八

code: /* 函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到 字符串数组xx中;请编制函数CharConvA(), 其函数的功能是: 以 行为单位把字符串中的最后一个字符的ASCII值右移4位后加最后第 二个字符的ASCII值, 得到最后一个新的字符, 最后第二个字符的 ASCII值右移4位后加最后第三个字符的ASCII值,得到最后第二个新 的字符, 以此类推一直处理到第二个字符, 第一个字符的ASCII值 加原最后一个字符的ASCII值, 得到第一个新的字符, 得到的新字 符分别存放在原字符串对应的位置上,之后把已处理的字符串仍按 行重新存入字符串数组xx中。最后main()函数调用函数WriteDat()把结果xx输出到文件OUT10.DAT中。

原始数据文件存放的格式是: 每行的宽度均小于80个字符, 含 标点符号和空格。

注意: 部分源程序存放在PROG1.C中。

请勿改动主函数main()、读数据函数ReadDat()和输出数据函 数WriteDat()的内容。*/ #include #include #include char xx[50][80];int maxline = 0;/* 文章的总行数 */ int ReadDat(void);void WriteDat(void);void CharConvA(void){/**/ int i,j,ll;char ch;for(i=0;i < maxline;i++){ ll=strlen(xx[i]);ch=xx[i][ll-1];

for(j=ll-1;j;j--)xx[i][j]=(xx[i][j]>>4)+xx[i][j-1];xx[i][0]+=ch;} /**/ } void main(){ clrscr();if(ReadDat()){ printf(”数据文件IN.DAT不能打开!n07“);return;} CharConvA();WriteDat();} int ReadDat(void){ FILE *fp;int i = 0;char *p;if((fp = fopen(”IN.DAT“, ”r“))== NULL)return 1;while(fgets(xx[i], 80, fp)!= NULL){ p = strchr(xx[i], 'n');if(p)*p = 0;i++;} maxline = i;fclose(fp);return 0;} void WriteDat(void){ FILE *fp;int i;clrscr();fp = fopen(”OUT10.DAT“, ”w“);for(i = 0;i < maxline;i++){ printf(”%sn“, xx[i]);fprintf(fp, ”%sn“, xx[i]);} fclose(fp);} 字符串处理之九

code: /*

函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到 字符串数组xx中;请编制函数StrOR(), 其函数的功能是: 以行为 单位依次把字符串中所有小写字母o 左边的字符串内容移到该串的 右边存放, 然后并把小写字母o删除,余下的字符串内容移到已处理 字符串的左边存放,之后把已处理的字符串仍按行重新存入字符串 数组xx中。最后main()函数调用函数WriteDat()把结果xx输出到文 件OUT5.DAT中。

例如: 原文: You can create an index on any field.you have the correct record.结果: n any field.Yu can create an index rd.yu have the crrect rec 原始数据文件存放的格式是: 每行的宽度均小于80个字符, 含 标点符号和空格。

注意: 部分源程序存放在PROG1.C中。

请勿改动主函数main()、读数据函数ReadDat()和输出数据函 数WriteDat()的内容。*/ #include #include #include char xx[50][80];int maxline = 0;/* 文章的总行数 */ int ReadDat(void);void WriteDat(void);void StrOR(void){/**/ int i,j;char yy[80],*p;for(i=0;i for(j=0;j if(xx[i][j]=='o'){ p=&xx[i][j+1];strcpy(yy,p);strncat(yy,xx[i],j);strcpy(xx[i],yy);j=0;} /**/ } void main(){ clrscr();if(ReadDat()){ printf(”数据文件IN.DAT不能打开!n07“);return;} StrOR();

WriteDat();} int ReadDat(void){ FILE *fp;int i = 0;char *p;if((fp = fopen(”IN.DAT“, ”r“))== NULL)return 1;while(fgets(xx[i], 80, fp)!= NULL){ p = strchr(xx[i], 'n');if(p)*p = 0;i++;} maxline = i;fclose(fp);return 0;} void WriteDat(void){ FILE *fp;int i;clrscr();fp = fopen(”OUT5.DAT“, ”w“);for(i = 0;i < maxline;i++){ printf(”%sn“, xx[i]);fprintf(fp, ”%sn“, xx[i]);} fclose(fp);}

out5.dat 文件内容应当如下:

be usedYu can create an index n any field, n several fields t use as a key.Thetgether, r n parts theref, that yu want t

rds and definekeys in indexes allw yu quick access t specific rec

ngerrders fr sequential prcessing f a ISAM file.After yu n l effectneed an index, yu can delete it.Additin and indexes have n

ther indexes.n the data recrds r n

uniquely identify thatYu may want a field in field in each recrd t

yeerecrd frm all ther recrds in the file.Fr example, the Empl Number field is unique if yu d nt assign the same number t tw therdifferent emplyees, and yu never reassign these numbers t aemplyees.If yu wish t find r mdify the recrd belnging t f determiningspecific emplyee, this unique field saves the

thuble

rd.whether yu have the crrect rec

rdIf yu d nt have a unique field, yu must find the first rec

uthe matches yur key and determine whether the recrd is the ne y

thers.want.If it is nt the crrect ne, yu must search again t find

uIf yu knw that yu have a unique field within yur recrds, y nlycan include this fact in the key descriptin, and ISAM will allw

yee numbers areunique keys.Fr example, if yu specify that the empl

r changeunique, ISAM nly lets yu add recrds t the file fr, t alreadly exist int file.numbers t, emplyee numbers that d n __________________ 老枪

字符串处理之10 code: /* 函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到 字符串数组xx中;请编制函数ChA(), 其函数的功能是: 以行为单 位把字符串中的第一个字符的ASCII值加第二个字符的ASCII值, 得 到第一个新的字符, 第二个字符的ASCII值加第三个字符的ASCII值, 得到第二个新的字符, 以此类推一直处理到最后第二个字符, 最后 一个字符的ASCII值加原第一个字符的ASCII值, 得到最后一个新的 字符, 得到的新字符分别存放在原字符串对应的位置上,之后把已 处理的字符串逆转后仍按行重新存入字符串数组xx中。最后main()函数调用函数WriteDat()把结果xx输出到文件OUT9.DAT中。原始数据文件存放的格式是: 每行的宽度均小于80个字符, 含 标点符号和空格。

注意: 部分源程序存放在PROG1.C中。

请勿改动主函数main()、读数据函数ReadDat()和输出数据函 数WriteDat()的内容。*/ #include #include #include char xx[50][80];int maxline = 0;/* 文章的总行数 */ int ReadDat(void);void WriteDat(void);void ChA(void){/**/ int i,j;char ch;for(i=0;i < maxline;i++){ ch=xx[i][0];

for(j=0;j < strlen(xx[i])-1;j++)xx[i][j]+=xx[i][j+1];xx[i][j]+=ch;strrev(xx[i]);} /**/ } void main(){ clrscr();if(ReadDat()){ printf(”数据文件IN.DAT不能打开!n07“);return;} ChA();WriteDat();} int ReadDat(void){ FILE *fp;int i = 0;char *p;if((fp = fopen(”IN.DAT“, ”r“))== NULL)return 1;while(fgets(xx[i], 80, fp)!= NULL){ p = strchr(xx[i], 'n');if(p)*p = 0;i++;} maxline = i;fclose(fp);return 0;} void WriteDat(void){ FILE *fp;int i;clrscr();fp = fopen(”OUT9.DAT“, ”w“);for(i = 0;i < maxline;i++){ printf(”%sn“, xx[i]);fprintf(fp, ”%sn", xx[i]);} fclose(fp);}

第四篇:全国计算机等级考试三级网络技术考试大纲(2013年版)

全国计算机等级考试三级网络技术考试大

纲(2013年版)

基本要求

1.了解大型网络系统规划、管理方法;2.具备中小型网络系统规划、设计的基本能力

;3.掌握中小型网络系统组建、设备配置调试的基本技术

;4.掌握企事业单位中小型网络系统现场维护与管理基本技术

;5.了解网络技术的发展。考试内容

一、网络规划与设计 1.网络需求分析。2.网络规划设计。3.网络设备及选型。

4.网络综合布线方案设计。5.接入技术方案设计。

6.IP地址规划与路由设计。7.网络系统安全设计。

二、网络构建

1.局域网组网技术。(1)网线制作方法。

(2)交换机配置与使用方法。(3)交换机端口的基本配置。(4)交换机VLAN配置。(5)交换机STP配置。2.路由器配置与使用。

(1)路由器基本操作与配置方法。(2)路由器接口配置。

(3)路由器静态路由配置。(4)RIP动态路由配置。(5)OSPF动态路由配置。3.路由器高级功能。

(1)设置路由器为DHCP服务器。(2)访问控制列表的配置。(3)配置GRE协议。(4)配置IPSec协议。(5)配置MPLS协议。

4.无线网络设备安装与调试。

三、网络环境与应用系统的安装调试1.网络环境配置。

2.WWW服务器安装调试。3.E-mail服务器安装调试。4.FTP服务器安装调试。5.DNS服务器安装调试。

四、网络安全技术与网络管理 网络安全。

(1)网络防病毒软件与防火墙的安装与使用。(2)网站系统管理与维护。(3)网络攻击防护与漏洞查找。

(4)网络数据备份与恢复设备的安装与使用。(5)其他网络安全软件的安装与使用。2.网络管理。

(1)管理与维护网络用户账户。

(2)利用工具软件监控和管理网络系统。(3)查找与排除网络设备故障。

(4)常用网络管理软件的安装与使用。

五、上机操作在仿真网络环境下完成以下考核内容:

1.交换机配置与使用。

2.路由器基本操作与配置方法。

3.网络环境与应用系统安装调试的基本方法。4.网络管理与安全设备、软件安装、调试的基本方法。考试方法

上机考试,120分钟,总分100分。

第五篇:计算机等级考试三级C语言上机试题总结

计算机等级考试三级C语言上机试题总结

一、替换字符。

形如这样:函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS10.DAT中。

替代关系:f(p)=p*11 mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符的ASCII值是偶数或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。

二、字符串左右排序和比较。

形如这样:函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(第行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。

条件:从字符串中间一分为二,左边部分按字符的ASCII值升序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。

三、正整数排序求平均值(包括将数拆散、求最大最小值)。

形如这样:在文件中有200个正整数,且每个数均在1000至9999之间。函数ReadDat()读取这200个数存放到数组aa中。请编制函数jsSort(),其函数的功能是:要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10个数依次存入数组b中,如果后三位的数值相等,则按原先的数值进行降序排列。最后调用函数WriteDat()把结果bb输出到文件out.dat中。

四、产品五个因素的比较排列,是结构体操作问题。

形如这样:已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)四部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT10.DAT中。

五、素数。

形如这样:请编写一个函数jsValue(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入数组xx传回。

最后调用函数writeDat()读取10组数据,分别得出结果且把结果输出到文件out.dat中。

六、数字排序。

形如这样:在文件in.dat中有200组数据,每组有3个数,每个数均是三位数。函数ReadDat()读取这200组数据存放到结构数组aa中,请编制函数jsSort(),其函数的功能是:要求在200组数据中找出条件为每组中的第一个数大于第二个数加第三个数的之和,其中满足条件的个数作为函数jsSort()的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第一个数加第三个之和的大小进行升序排列(第一个数加第三个数的和均不相等),排序后的结果仍重新存入结构数组bb中,最后调用函数WriteDat()把结果bb输出到文件out.dat中。

部分源程序已给出。

七、其他数学计算。

形如这样:某级数的前两项A1=1,A2=1,以后各项具有如下关系:

An=An-2+2An-1 下列程序的功能是:要求依次对于整数M=100,1000和10000求出对应的n值,使其满足:Sn=M,这里

Sn=A1+A2+...+An,并依次把n值存入数组单元b[0],b[1]和b[2]中,请编制jsValue()函数来实现此功能,最后调用函数writeDat()把数组b[]中的值输出到out.dat文件中。

八、数字或字符移位后的计算。

形如这样:函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数StrCharJR(),其函数的功能是:以行为单位把字符串中所有字符的ASCII值右移4位,然后把右移后的字符ASCII值再加上原字符的ASCII值,得到新的字符仍存入原字符串对应的位置上。最后把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT8.DAT中。

九、学生成绩,结构体问题。

形如这样:下列程序的功能是:已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a数组中。找出成绩最低的学生记录(假定最低成绩的记录是唯一的),通过形参返回。请编写函数mm(STU a[],STU *s)实现程序要求,最后调用函数reawriteDAT()把结果输出到文件out.dat中。

例如: KS01 87 KS09 67

KS11 97

则调用该函数后,输出The lowest:KS19,67

十、字符串(单词)的倒置和删除。

形如这样:函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数StrOL(),其函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT6.DAT中。

例如:原文: You He Me I am a student.结果:Me He You

student a am I

原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。

十一、选票问题。

形如这样:现有一个10个人100行的选票数据文件IN.DAT,其数据存放的格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推 :内容均为字符0和1,1表示此人被选中,0表示此人未被选中,若一张选票人数小于等于5个人时被认为无效的选票。给定函数ReadDat()的功能是把选票数据读入到字符串数组xx中。请编制函数CountRs()来统计每个人的选票数并把得票数依次存入yy[0]到yy[9]中。把结果yy输出到文件OUT.DAT中。

部分源程序已给出。

十二、出圈问题。

形如这样:设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第个m人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止。现要求按出圈次序,每10人一组,给出这n个人的顺序表。请考生编制函数Josegh()实现此功能并调用函数WriteDat()把结果p输出到文件OUT.DAT中。

设n=100,c=1,m=10.(1)将1到n个人的序号存入一维数组p中;

(2)若第i个人报数后出圈,则将p[i]置于数组的倒数第i个位置上,而原来第i+1个至倒数第i个元素依次向前移动一个位置;

(3)重复第(2)步直至圈中只剩下p[1]为止。

部分源程序已给出。

十三、进制转换。

形如这样:请编制函数readdat()实现从文件in.dat中读取100个十六进制数到字符串数组xx中

;再编制函数h16to2(),将xx中的十六进制数转换成二进制数并把已转换的二进制数仍

存放在字符串数组xx,最后调用函数writedat()把结果输出到out.dat文件中。

原始数据文件存放的格式是:每行存放10个数,并用逗号隔开。(每个数均大于0且小于

等于2000)

部分源程序已给出。

2012年最新全国计算机等级考试三级网络技术上机试题100套(名师总结)
TOP