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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

for(n=j+1;n

if(inBuf[i][j]

{

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

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

{

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

for (j=i+1; 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

*(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)

相关文档
最新文档