计算机三级网络技术上机题电子版

  • 格式:doc
  • 大小:241.50 KB
  • 文档页数:13

1、已知数据文件IN.dat中存有300个四位数,并已调用读函数Rdata()把这些数存入数组a中,请编写函数primeCal(),其功能是:求出这些四位数中素数的个数count,再求出所有满足此条件的四位数的平均值Ave1以及不满足此条件的四位数Ave2。

int i;for(i=0;i<300;i++)if(isP(a[i])){Ave1+=a[i];count++;}else{Ave2+=a[i];}Ave1=Ave1/count;Ave2=Ave2/(300-count);2、著名的约瑟夫问题:设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人此人出圈,再从他的下一个人重新开始1到m报数,如此进行下去直到所有人都出圈为止。

现要求按出圈次序,每10人一组,给出这n个人的顺序表。

请编写函数Josegh()实现此功能,设n=100,s=1,m=10.条件如下:1、将1到n个人的序号存入一个数组p中2、若第i个人报数后出圈,则将p[i]置于数组的倒数第i个位置上,而原来第i+1个至倒数第i个元素依次向前移动一个人位置;3、重复第2步直至圈中只剩下p[1]为止。

void Josegh(void){int i, j, s1, w;s1 = s;for (i=1; i<=n; i++)p[i-1] = i;for (i=n; i>=2; i--){s1 = (s1+m-1)%i;if (s1 == 0)s1 = i;w = p[s1-1];for (j=s1; j<=i-1; j++)p[j-1] = p[j];p[i-1] = w;}}3、现有一个10个人的100行选票数据文件IN.dat,其数据存放的格式是每条记录的长度均为10位,第一位表示第1个人的选中情况,第二位表示第2个人的选中情况,以此类推;内容均为字符0或1,0表示此人未被选中,1则表示此人被选中。

若一张选票人数大于5个人时被认为无效。

给定函数Rdata()的功能是把选票数据读入到字符串数组string中。

请编写CountRs()函数。

其功能是实现:统计每个人的选票数并把得票数依次存入result[0]到result[9]中 ,把结果result输出到OUT.dat中。

void CountRs(void){int i,count,j;char *pf;for(i=0;i<10;i++)result[i]=0;for(i=0;i<100;i++){pf=string[i];count=0;while(*pf){if(*pf=='1')count++;pf++;}if(count<=5)for(j=0;j<10;j++)result[j]+=string[i][j]-'0';}}4、请编写一个函数findStr(),其功能是:统计一个长度为2的子字符串在另一个字符串中出现的次数。

int findStr(char *str, char *substr){int n;char *p, *r;n = 0;while (*str){p = str;r = substr;while (*r)if (*r == *p){r++;p++;}else{break;}if (*r == '\0')n++;str++;}return n;}5、函数readData()负责从文件IN.DAT中读取20行数据存放到字符串数组inBuf[]中(每行字符串的长度均小于80)。

请编制函数arrangeChar(),其功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组inBuf[]中。

void arrangeChar(){int i,j,n;int str,half;char temp;for(i=0;i<20;i++){str=strlen(inBuf[i]);half=str/2;for(j=0;j<half-1;j++)for(n=j+1;n<half;n++)if(inBuf[i][j]<inBuf[i][n]){temp=inBuf[i][j];inBuf[i][j]=inBuf[i][n];inBuf[i][n]=temp;}for(j=half-1,n=str-1;j>=0;j--,n--){temp=inBuf[i][j];inBuf[i][j]=inBuf[i][n];inBuf[i][n]=temp;}}}6、请编写函数C请编写函数CountValue(),其实现的功能是:求n 以内(不包括n),同时能被3与7整除的所有自然数之和的平方根,并作为函数值返回。

double countValue(int n){double xy = 0.0;int i;for (i=1; i<n; i++)if (i%3==0 && i%7==0)xy += i;xy = sqrt((double)xy);return xy;}7、已经数据文件in.dat中存有200个四位数,并已调用读函数RData()把这些数存入数组a中,请编写函数jsVal(),其功能是:依次从数组a中取出一个四位数,如果该四位数连续小于该四位数以后的5个数且都是偶数,则统计出满足此条件的个数count并把这些四位数从小到大排序存入数组b中。

void jsVal(){int i, j, flag = 0;for (i=0; i<MAX-5; i++){for (j=i+1; j<=i+5; j++)if (a[i] < a[j]){flag = 1;}else{flag = 0;break;}if (flag==1 && a[i]%2==0){b[cnt] = a[i];cnt++;}}for (i=0; i<cnt-1; i++)for (j=i+1; j<cnt; j++)if (b[i] > b[j]){flag = b[i];b[i] = b[j];b[j] = flag;}}8、请编制函数moveChar(char *s),其功能是:将该字符串中所有的字符左移一个位置,串中的第一个字符移到最后。

void moveChar(char *s){char temp;int i,len;len=strlen(s);temp=*s;for(i=0;i<len-1;i++) *(s+i)=*(s+i+1);*(s+len-1)=temp;}9、编写一个FibValue()函数,要求其功能是:求Fibonacci数列中大于t的最小的一个数,结果由函数返回。

其中Fibonacci数列F(n)的定义为: F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)int FibValue(int t){int f1=0,f2=1,fn;fn=f1+f2;while(fn<=t){f1=f2;f2=fn;fn=f1+f2;}return fn;}10、函数readData()的功能是实现从文件IN.DAT中读取一篇英文文章存入到字符串数组inBuf[]中。

请编制函数arrangeChar(),其功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。

最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组inBuf[]中。

void arrangeChar(){int i,j,m;char t[80],t1[80];for(i=0;i<maxline;i++){j=m=strlen(xx[i])-1;t[0]=t1[0]='\0';while(1){while(isalpha(xx[i][j])==0&&j>=0)m=--j;while(isalpha(xx[i][j])&&j>=0)j--;memcpy(t1,&xx[i][j+1],m-j);t1[m-j]='\0';strcat(t,t1);strcat(t," ");if(j<0)break;}strcpy(xx[i],t);}}11、文件IN.DAT中存有一篇英文文章,函数readData()负责将IN.DAT中的数据读到数组inBuf[]中。

请编制函数replaceChar(),该函数的功能是按照指定规则对字符进行替换。

替换规则为:先对字符的ASCII码值按公式y=a*11 mod 256进行运算(a为某一字符的ASCII码值,y为变换后的ASCII码值),_________________则字符保持不变,否则用y所对应的字符代替。

void replaceChar() {int i,j,len;char y;for(i=0;i<totleLine;i++){len=strlen(inBuf[i]);for(j=0;j<len;j++){y=inBuf[i][j]*11%256;__________________________else inBuf[i][j]=y;}}}如果计算后y的值小于等于32或大于130,if(y<=32||y>130) continue;如果原字符的ASCII码值是偶数或计算后y的值小于等于32,if(y<=32||inBuf[i][j]%2==0) continue;如果计算后y的值小于等于32或y对应的字符是数字0~9 if(y<=32||(y>='0'&&y<='9')) continue;如果计算后y的值小于等于32或y对应的字符是小写字母if(y<=32||(y>='a'&&y<='z'))如果原字符是大写字母或计算后y的值小于等于32if(y<=32||(inBuf[i][j]>='A'&&inBuf[i][j]<='Z')) continue; 如果计算后y的值小于等于32或其ASCII值是偶数if(y<=32||y%2==0) continue;如果计算后y的小于等于32或y对应的字符是大写字母if(y<=32||(y>='A'&&y<='Z')) continue;如果原字符是小写字母或计算后y的值小于等于32if(y<=32||(inBuf[i][j]>='a'&&inBuf[i][j]<='z')) continue; 如果原字符是数字字符0~9或计算后y的值小于等于32 if(y<=32||(inBuf[i][j]>='0'&&inBuf[i][j]<='9')) continue; 如果计算后y的值小于等于32或其ASCII值是奇数if(y<=32||y%2!=0) continue;21、文件IN.DAT中存有一篇英文文章, 函数readData()负责将IN.DAT中的数据读到数组inBuf[]中。