计算机三级网络技术上机部分(南开100题题库)(共21页).doc
精选优质文档-倾情为你奉上一、 素数题:题目1.请编写一个函数jsValue(int m,int k,int xx),该函数的功能是:将大于整数m且紧靠m的k个素数存入数组xx传回。 例如:若输入17 5 则应输出:19,23,29,31,37。 int isP(int m) int i; for(i=2;i<m;i+) if(m % i=0)return 0; return 1;void num(int m,int k,int xx) int s=0; for(m=m+1;k>0;m+) if(isP(m) xxs+=m; k-;题目34.程序prog1.c的功能是:选出100以上1000之内所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数(如293)。计算并输出上述这些素数的个数cnt以及这些素数值的和sum。 请考生编写函数countValue( )实现程序要求void countValue() int i,j,bw,sw,gw; for(i=100;i<1000;i+) bw=i/100; sw=i%100/10; gw=i%10; for(j=2;j<i;j+) if(i%j=0) break; if(i=j) &&(gw+sw)%10=bw) cnt+; sum+=i; 55、已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出所有这些四位数是素数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序,最后调用写函数writeDat()把结果输出到out.dat文件。 例如:5591是素数,则该数满足条件存入数组b中,且个数cnt=cnt+1。9812是非素数,则该数不满足条件忽略。#include <stdio.h>int a300,b300,cnt=0;int isP(int m) int i; for(i=2;i<m;i+) if(m%i=0)return 0; return 1;jsValue()int i,j,value; for(i=0;i<300;i+) if(isP(ai) bcnt+=ai; for(i=0;i<cnt-1;i+) for(j=i+1;j<cnt;j+) if(bi>bj) value=bi; bi=bj; bj=value;题目64下列程序的功能是:找出所有100以内(含100)满足I,I+4,I+10都是素数的整数I(I+10也在100以内)的个数cnt以及这些I之和sum。请编写函数countValue()实现程序要求的功能 int isPrime(int number)int i,tag=1; for(i=2;tag&& i<=number / 2; i+) if(number % i =0) tag =0; return tag;void countValue()int i; for(i=2;i<=90;i+) if(isPrime(i)&&isPrime(i+4)&&isPrime(i+10) cnt+;sum+=i;题目66、下列程序prog1.c的功能是:计算500-800区间内素数的个数cnt,并按所求素数的值从大到小的顺序,再计算其间隔加、减之和,即第1个素数-第2个素数+第3个素数-第4个素数+第5个素数.的值sum。请编写函数countValue()实现程序的要求 void countValue()int i,j,k=1; for(i=800;i>500;i-) for(j=2;j<i;j+) if(i%j=0) break; if(j=i)cnt+; sum=sum+k*i; k=k*(-1); 题目82.已知数据文件in.dat中存有300个四位数,请编制一函数jsValue(),其功能是:求出所有这些四位数是素数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2。 例如:5591是素数,则该数满足条件计算平均值pjz1,且个数cnt=cnt+1。 9812是非素数,则该数不满足条件计算平均值pjz2。 程序中已定义数组:a300,已定义变量:cnt,pjz1,pjz2。#include <stdio.h>int a300,cnt=0;double pjz1=0.0,pjz2=0.0;int isP(int m)int i; for(i=2;i<m;i+) if(m%i=0)return 0; return 1;jsValue()int i; for(i=0;i<300;i+) if(isP(ai) pjz1+=ai;cnt+; else pjz2+=ai; if(cnt=0) pjz1=0; else pjz1/=cnt; if(300-cnt=0) pjz2=0; else pjz2/=(300-cnt);二、 结构体题目7已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。请编制函数SortDat(),其功能要求:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中void SortDat()int i,j; PRO xy; for(i=0;i<99;i+) for(j=i+1;j<100;j+)if(strcmp(selli.dm,sellj.dm)<0|strcmp(selli.dm,sellj.dm)=0&&selli.je<sellj.je) xy=selli;sell i=sellj; sellj=xy;题目13每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。编制函数SortDat(),其功能要求:按产品代码从小到大进行排列,若产品代码相等,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中: void SortDat()int i,j; PRO xy; for(i=0;i<99;i+) for(j=i+1;j<100;j+) if(strcmp(selli.dm,sellj.dm)>0|strcmp(selli.dm,sellj.dm)=0&&selli.je<sellj.je) xy=selli;selli=sellj;sellj=xy;题目38编制函数SortDat(),其功能要求:按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中void SortDat()int i,j; PRO xy; for(i=0;i<99;i+) for(j=i+1;j<100;j+) if(strcmp(selli.dm,sellj.dm)>0|strcmp(selli.dm,sellj.dm)=0&&selli.je>sellj.je) xy=selli;selli=sellj;sellj=xy;题目12编制函数SortDat(),其功能要求:按产品名称从小到大进行排列,若产品名称相等,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中void SortDat()int i,j; PRO xy; for(i=0;i<99;i+) for(j=i+1;j<100;j+) if(strcmp(selli.mc,sellj.mc)>0|strcmp(selli.mc,sellj.mc)=0&&selli.je>sellj.je) xy=selli;selli=sellj;sellj=xy;题目32 SortDat(),其功能要求:按产品名称从大到小进行排列,若产品名称相等,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中void SortDat()int i,j; PRO xy; for(i=0;i<99;i+) for(j=i+1;j<100;j+) if(strcmp(selli.mc,sellj.mc)<0|strcmp(selli.mc,sellj.mc)=0&&selli.je>sellj.je) xy=selli;selli=sellj;sellj=xy;题目42 SortDat(),其功能要求:按产品名称从大到小进行排列,若产品名称相等,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中void SortDat()int i,j; PRO xy; for(i=0;i<99;i+) for(j=i+1;j<100;j+) if(strcmp(selli.mc,sellj.mc)<0|strcmp(selli.mc,sellj.mc)=0&&selli.je<sellj.je) xy=selli;selli=sellj;sellj=xy;题目31函数SortDat(),其功能要求:按金额从大到小进行排列,若金额相同,则按产品代码从大到小进行排列, 最终排列结果仍存入结构数组sell中void SortDat()int i,j; PRO xy; for(i=0;i<99;i+) for(j=i+1;j<100;j+) if(selli.je<sellj.je|selli.je=sellj.je&&strcmp(selli.dm,sellj.dm)<0) xy=selli;selli=sellj;sellj=xy;题目47函数SortDat(),其功能要求:按金额从大到小进行排列,若金额相等,则按产品代码从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT3.DAT中。 void SortDat()int i,j; PRO xy; for(i=0;i<99;i+) for(j=i+1;j<100;j+) if(selli.je<sellj.je|selli.je=sellj.je&&strcmp(selli.dm,sellj.dm)>0) xy=selli;selli=sellj;sellj=xy;题目61函数SortDat(),其功能要求:按金额从小到大进行排列,若金额相同,则按产品代码从大到小进行排列,最终排列结果仍存入结构数组sell中void SortDat()int i,j; PRO xy; for(i=0;i<99;i+) for(j=i+1;j<100;j+) if(selli.je>sellj.je|selli.je=sellj.je&&strcmp(selli.dm,sellj.dm)<0) xy=selli; selli=sellj; sellj=xy;题目99函数SortDat(),其功能要求:按金额从小到大进行排列,若金额相等,则按产品代码从小到大进行排列,最终排列结果仍存入结构数组sell中void SortDat()int i,j; PRO xy; for(i=0;i<99;i+) for(j=i+1;j<100;j+) if(selli.je>sellj.je|selli.je=sellj.je&&strcmp(selli.dm,sellj.dm)>0) xy=selli;selli=sellj;sellj=xy;三、字符替换与移位题目8请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,替代关系:f(p)=p*11 mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或大于130,则该字符不变,否则将f(p)所对应的字符进行替代。void encryptChar() int i,j; for(i=0;i<maxline;i+) for(j=0;j<strlen(xxi);j+) if(xxij*11%256<=32|xxij*11%256>130) continue; else xxij=xxij*11%256;题目36函数encryptChar(),替代关系:f(p)=p*11 mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或f(p)对应的字符是数字0至9,则该字符不变,否则将f(p)所对应的字符进行替代。void encryptChar() int i,j; for(i=0;i<maxline;i+) for(j=0;j<strlen(xxi);j+) if(xxij*11%256<=32|xxij*11%256>='0'&&xxij*11%256<='9') continue; else xxij=xxij*11%256;题目56encryptChar(),替代关系:f(p)=p*11mod 256 (p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或f(p)对应的字符是小写字母,则该字符不变,否则将f(p)所对应的字符进行替代。void encryptChar() int i,j; for(i=0;i<maxline;i+) for(j=0;j<strlen(xxi);j+) if(xxij*11%256<=32|xxij*11%256>='a'&&xxij*11%256<='z') continue; else xxij=xxij*11%256;题目62(字符替换题)编制函数encryptChar(), 替代关系:f(p)=p*13 mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或其ASCII值是偶数,则该字符不变,否则将f(p)所对应的字符进行替代。void encryptChar() int i,j; for(i=0;i<maxline;i+) for(j=0;j<strlen(xxi);j+) if(xxij*13%256<=32|(xxij*13%256)%2=0) continue; else xxij=xxij*13%256;题目95替代关系:f(p)=p*11 mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或f(p)对应的字符是大写字母,则该字符不变,否则将f(p)所对应的字符进行替代。void encryptChar() int i,j; for(i=0;i<maxline;i+) for(j=0;j<strlen(xxi);j+) if(xxij*11%256<=32|xxij*11%256>='A'&&xxij*11%256<='Z') continue; else xxij=xxij*11%256;题目98替代关系:f(p)=p*17 mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或其ASCII值是奇数,则该字符不变,否则将f(p)所对应的字符进行替代。void encryptChar() int i,j; for(i=0;i<maxline;i+) for(j=0;j<strlen(xxi);j+) if(xxij*17%256<=32|(xxij*17%256)%2!=0) continue; else xxij=xxij*17%256;题目96(字符替换题)请编制函数encryptChar()替代关系:f(p)=p*11mod 256 (p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或f(p)对应的字符是小写字母,则该字符不变,否则将f(p)所对应的字符进行替代。void encryptChar() int i,j; for(i=0;i<maxline;i+) for(j=0;j<strlen(xxi);j+) if(xxij*11%256<=32|xxij*11%256>='a'&&xxij*11%256<='z') continue; else xxij=xxij*11%256;题目18编制函数encryptChar(), 替代关系:f(p)=p*11 mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符的ASCII值是偶数或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。 void encryptChar() int i,j; for(i=0;i<maxline;i+) for(j=0;j<strlen(xxi);j+) if(xxij*11%256<=32|xxij%2=0) continue; else xxij=xxij*11%256;题目37替代关系:f(p)=p*11 mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符是大写字母或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。void encryptChar() int i,j; for(i=0;i<maxline;i+) for(j=0;j<strlen(xxi);j+) if(xxij*11%256<=32|xxij>='A'&&xxij<='Z') continue; else xxij=xxij*11%256;题目97编制函数encryptChar(), 替代关系:f(p)=p*11 mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符是数字字符0至9或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。void encryptChar() int i,j; for(i=0;i<maxline;i+) for(j=0;j<strlen(xxi);j+) if(xxij*11%256<=32|xxij>='0'&&xxij<='9') continue; else xxij=xxij*11%256;题目10编制函数ConvertCharA(),其函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的下一个字母,如果是字母z,则改写成字母a。大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变。 例:原文:Adb.Bcdza abck.LLhj 结果:Aec.Bdeab bcdl.LLik 原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。void ConvertCharA(void) int i,j; for(i=0;i<maxline;i+) for(j=0;j<strlen(xxi);j+)if(xxij='z') xxij='a' else if(xxij>='a'&&xxij<='y') xxij+=1; 题目73编制函数ConverCharD(),其函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的上一个字母,如果是字母a,则改写成字母z。大写字母仍为大写字母,小写字母仍为小写字母,其它字符不变。 例:原文:Adb.Bcdza abck.LLhj 结果:Aca.Bbcyz zabj.LLgi void ConvertCharD(void) int i,j; for(i=0;i<maxline;i+) for(j=0;j<strlen(xxi);j+)if(xxij='a') xxij='z' else if(xxij>='b'&&xxij<='z') xxij-=1; 题目11(字符串字母移位题)程序prog1.c的功能是:把 s 字符串中的所有字母改写成该字母的下一个字母,字母z改写成字母a。要求大写字母仍为大写字母,小写字母仍为小写字母,其它字符不做改变。 请编写函数chg(char *s)实现程序要求 例如:s 字符串中原有的内容为:Mn.123Zxy,则调用该函数后,结果为:No.123Ayz。 void chg(char *s)int I;for(I=0;I<strlen(s);I+) if(si='z'|si='Z') si-=25; else if(si>='a'&&si<='y'|si >='A'&&si<='Y') si+=1; 题目16编制函数StrCharJR(),其函数的功能是:以行为单位把字符串中所有字符的ASCII值右移4位,然后把右移后的字符ASCII值再加上原字符的ASCII值,得到新的字符仍存入原字符串对应的位置上。最后把已处理的字符串仍按行重新存入字符串数组xx中void StrCharJR()int i,j; for(i=0;i<maxline;i+) for(j=0;j<strlen(xxi);j+) xxij+=(xxij>>4);题目63(字符串移位题)程序prog1.c的功能是:把 s 字符串中的所有字符左移一个位置,串中的第一个字符移到最后。编写函数chg(char *s)实现程序要求 例如:s字符串中原有内容为:Mn.123xyZ,则调用该函数后,结果为:n.123xyZM。 void chg(char *s) int i; char ch=*s; for(i=0;i<strlen(s)-1;i+) si=si+1; sstrlen(s)-1=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;i<maxline;i+) p=xxistrlen(xxi)-1; c=xxi0; for(j=strlen(xxi)-1;j>0;j-) xxij=(xxij>>4)+xxij-1; xxi0=p+c; 题目74(字符ASCII值移位替换题)请编制函数StrCharJL(),其函数的功能是:以行为单位把字符串中的所有字符的ASCII值左移4位,如果左移后,其字符的ASCII值小于等于32或大于100,则原字符保持不变,否则就把左移后的字符ASCII值再加上原字符ASCII值,得到新的字符仍存入原字符串对应的位置上。最后把已处理的字符串仍按行重新存入字符串数组xx中, char xx5080;int maxline=0;/*文章的总行数*/int ReadDat(void);void WriteDat(void);void StrCharJL(void) int i,j; char c; for(i=0;i<maxline;i+) for(j=0;j<strlen(xxi);j+) c=xxij<<4; if(!(c<=32|c>100) xxij+=c; 题目17 (亲朋字符替换题)编制函数CHA(),其函数功能是:以行为单位把字符串中的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个亲朋字符,第二个字符的ASCII值加第三个字符的ASCII值,得到第二个新字符,依此类推一直处理到最后第二个字符,最后一个字符的ASCII值加原第一个字符的ASCII值,得到最后一个新的字符,得到的新字符分别存放在原字符串对应的位置上。最后把已处理的字符串逆转后按行重新存入字符串数组XX中,void ChA(void) int i,j; char ch; for(i=0;i<maxline;i+) ch=xxi0; for(j=0;j<strlen(xxi)-1;j+) xxij+=xxij+1; xxistrlen(xxi)-1+=ch; strrev(xxi); 四、字符串单词位置倒置题目3请编制函数StrOR( ),其函数的功能是:以行为单位依次把字符串中所有小写字母o左边的字符串内容移到该串的右边存放,然后把小写字母o删除,余下的字符串内容移到已处理字符串的左边存放,之后把已处理的字符串仍按行重新存入字符串数组xx中。void StrOR(void)int i,righto,j,s,k; char tem80; for(i=0;i<maxline;i+) for(j=strlen(xxi)-1;j>=0;j-) k=0; memset(tem,0,80); if(xxij='o') righto=j; for(s=righto+1;s<strlen(xxi);s+) temk+=xxis; for(s=0;s<righto;s+) if(xxis!='o') temk+=xxis; strcpy(xxi,tem); else continue; 题目4函数StrOL(),其函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中, 例如:原文:You He Me I am a student.结果:Me He You student a am I void StrOL(void) int i,j,k,s,m,strl; char str80; for(i=0;i<maxline;i+) strl=strlen(xxi); memset(str,0,80); s=k=0; for(j=strl-1;j>=0;j-) if(isalpha(xxij) k+; else for(m=1;m<=k;m+) strs+=xxij+m; k=0; if(!isalpha(xxij) strs+=' ' for(m=1;m<=k;m+) strs+=xxij+m;strs='0' strcpy(xxi,str); 五、字符串排序题目9(字符串排序题)编制函数SortCharD(),其函数的功能是:以行为单位对字符按从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中, 例:原文:dAe,BfC. CCbbAA 结果:fedCBA. bbCCAA void SortCharD(void)int i,j,k,strl; char ch; for(i=0;i<maxline;i+) strl=strlen(xxi); for(j=0;j<strl-1;j+) for(k=j+1;k<strl;k+) if(xxij<xxik) ch=xxij; xxij=xxik; xxik=ch; 题目88(字符串排序题)编制函数SortCharA(),其函数的功能是:以行为单位对字符按从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中, 例:原文:dAe,BfC. CCbbAA 结果:,.ABCdef void SortCharA(void)int i,j,k,strl; char ch; for(i=0;i<maxline;i+) strl=strlen(xxi); for(j=0;j<strl-1;j+) for(k=j+1;k<strl;k+) if(xxij>xxik) ch=xxij; xxij=xxik; xxik=ch; 题目43(字符排序题)请编制函数jsSort(),其函数的功能是:以行为单位对字符串变量的下标为奇数的字符按其ASCII值从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,例:位置01234567源字符串a b c d e f g h则处理后字符串 a h c f e d g bvoid jsSort()int i,j,k,strl; char ch; for(i=0;i<20;i+) strl=strlen(xxi); for(j=1;j<strl;j=j+2) for(k=j+2;k<strl;k=k+2) if(xxij>xxik) ch=xxij;xxij=xxik;xxik=ch; 字符串左右排序交换题目44请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,条件:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。例如:位置0123