就业数据资源平台
当前位置:首页 > 网络技术
2012年计算机三级网络技术考试上机练习题16

题目58(字符串排序题)


函数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;i<maxline;i++)


  {strl=strlen(xx[i]);


   for(j=0;j<strl-1;j++)


    for(k=j+1;k<strl;k++) 


      if(xx[i][j]>xx[i][k])


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


  }


}


★题目59(字符串左右排序题)


函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组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;j<half-1;j++)


     for(k=j+1;k<half;k++)


       if(xx[i][j]<xx[i][k]) { ch=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=ch;}


    if(strl%2) half++;


    for(j=half;j<strl-1;j++)


      for(k=j+1;k<strl;k++)


        if(xx[i][j]>xx[i][k]) {ch=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=ch;}转自:考试网 - [Examw.Com]


   }


}


★题目60(字符ASCII值移位替换题)


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


    char xx[50][80];


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(xx[i]);j++)


      { c=xx[i][j]<<4;


        if(!(c<=32||c>100)) xx[i][j]+=c;  


      }


}


★☆题目61(方差运算题) 


请编制函数ReadDat()实现从文件IN.DAT中读取1000个十进制整数到数组xx中;请编制函数Compute()分别计算出xx中偶数的个数even,奇数的平均值ave1,偶数的平均值ave2以及方差totfc的值,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。


    计算方差的公式如下:


             N             2


    totfc=1/N∑  (xx[i]-ave2)


             i=1


    设N为偶数的个数,xx[i]为偶数,ave2为偶数的平均值。


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


    


/*********编制函数ReadDat()的部分************/


for(i=0;i<MAX;i++)


{ fscanf(fp,"%d,",&xx[i]);


  if((i+1)%10==0)


  fscanf(fp,"\n");  }


/*******************************************/



void Compute(void)


{ int i,yy[MAX];


  for(i=0;i<MAX;i++)


     yy[i]=0;


  for(i=0;i<MAX;i++)


     if(xx[i]%2==0) { yy[even++]=xx[i];  ave2+=xx[i];}


     else { odd++;   ave1+=xx[i];}


  if(odd==0) ave1=0;中华考试


  else ave1/=odd;


  if(even==0) ave2=0;


  else ave2/=even;


  for(i=0;i<even;i++)


    totfc+=(yy[i]-ave2)*(yy[i]-ave2)/even;


}


☆题目62(方差运算题)


请编制函数ReadDat()实现从文件IN.DAT中读取1000个十进制整数到数组xx中;请编制函数Compute()分别计算出xx中奇数的个数odd,奇数的平均值ave1,偶数的平均值ave2以及所有奇数的方差totfc的值,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。


    计算方差的公式如下:


             N        2


    totfc=1/N ∑ (xx[i]-ave1)


             i=1


    设N为奇数的个数,xx[i]为奇数,ave1为奇数的平均值。


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


   /*********编制函数ReadDat()的部分************/


for(i=0;i<MAX;i++)


 {fscanf(fp,"%d,",&xx[i]);


  if((i+1)%10==0)


    fscanf(fp,"\n");


 }


/*******************************************/



 void Compute(void)


{ int i,yy[MAX];


  for(i=0;i<MAX;i++)


     yy[i]=0;


  for(i=0;i<MAX;i++)


     if(xx[i]%2) { yy[odd++]=xx[i];  ave1+=xx[i];}


     else { even++;   ave2+=xx[i];}


  if(odd==0) ave1=0;


  else ave1/=odd;


  if(even==0) ave2=0;


  else ave2/=even;


  for(i=0;i<odd;i++)


    totfc+=(yy[i]-ave1)*(yy[i]-ave1)/odd;


}

就业数据资源平台