题目1:下列程序的功能是:将大于整数m且紧靠mk个素数存入数组xx。请编写函数num(int m,int k,int xx[])实现函数的要求 ,最后调用函数readwriteDAT()把结果输出到文件out.dat中。
    例如:若输入175,则应输出:1923293137
    注意:部分源程序已给出。
    请勿改动主函数main()和函数readwriteDAT()的内容。
--------------
类型:素数。
void num(int m,int k,int xx[])  /*标准答案*/
{int data=m+1;
int half,n=0,I;
  while(1)
  {half=data/2;for(I=2;I<=half;I++)
  if(data%I==0)break;
  if(I>half)
  {xx[n]=data;n++;}
  if(n>=k)break;
  data++;
  } }
    题目2:已知数据文件IN.DAT中存有200个四位数, 并已调用读函数readDat()把这些数存入数组a,请考生编制一函数jsVal(),其功能是: 如果四位数各位上的数字均是02468, 则统计出满足此条件的个数cnt, 并把这些四位数按从大到小的顺序存入数组b中。最后main()
函数调用写函数writeDat( )把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。
    注意: 部分源程序存在文件PROG1.C文件中。
    程序中已定义数组: a[200], b[200], 已定义变量: cnt
    请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。
-------------------------
void jsVal() /*标准答案*/
{int bb[4];
int I,j,k,flag;
for (I=0;I<200;I++)
{bb[0]=a[I]/1000;  bb[1]=a[I]%1000/100;
  bb[2]=a[I]%100/10;  bb[3]=a[I]%10;
  for (j=0;j<4;j++)
    {if (bb[j]%2==0)
      flag=1;
      else
      {flag=0;break;}
    }
    if (flag==1)
      { b[cnt]=a[I];
      cnt++;}  }
for(I=0;I<cnt-1;I++)
  for(j=I+1;j<cnt;j++)
    if (b[I]<b[j])
    {k=b[I];b[I]=b[j];b[j]=k;}
}
    题目3:函数READDAT()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组XX;请编制函数STROR(),其函数功能是:以行为单位把字符串中的所有小写字母O左边的字符串内容移到该串的右边存放,然后并把小写字母O删除,余下的字符串内容移到已处理字符串的左边存放.最后把已处理的字符串仍按行重新存入字符串数组XX,最后调用函数WRITEDAT()把结果XX输出到文件OUT.DAT.
例如:原文:You can create an index on any field.
          you have the correct record.
    结果: n any field.You can create an index
      rd.yu have the crrect rec
    原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格.
-------------------
类型:字符串(单词)的倒置和删除。
答案:
void StrOR(void) /*标准答案*/
{ int i,righto,j,k;
char tem[80];
for(i=0;i<maxline;i++)
{k=0;righto=0;memset(tem,0,80);
for(j=strlen(xx[i])-1;j>=0;j--)
  {if(xx[i][j]=='o') {righto=j;break;}  }
for(j=righto+1;j<strlen(xx[i]);j++) tem[k++]=xx[i][j];
for(j=0;j<righto;j++)
  {if(xx[i][j]!='o') tem[k++]=xx[i][j];}
strcpy(xx[i],tem);
}
}
    题目4:函数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个字符, 含标点符号和空格。
-----------------
类型:字符串(单词)的倒置和删除。
答案:
void StrOL(void) /*标准答案*/
{int I,j,k,strl,l;char c;
for(I=0;I<maxline;I++)
  for(j=0;j<strlen(xx[I]);j++)
    {c=xx[I][j];
    if ((c>='A'&&c<='Z')||(c>='a'&&c<='z')||c==' ') ;
    else xx[I][j]=' ';    }
for(l=0;l<maxline;l++)
{char ch[80]={0}; char pp[80]={0};
strl=strlen(xx[l]);
  I=strl-1;  k=1;
  while(1)
  {while (((xx[l][I]>='a'&&xx[l][I]<='z')||(xx[l][I]>='A'&&xx[l][I]<='z'))&&I>=0)
{for(j=k;j>=0;j--)
pp[j+1]=pp[j]; pp[0]=xx[l][I]; k++;I--; }
strcat(ch,pp);strcpy(pp, """");k=1;
if(I==-1)break;
    while((xx[l][I]<'A'||xx[l][I]>'z')&&I>=0)
  {for(j=k;j>=0;j--)
    pp[j+1]=pp[j];    pp[0]=xx[l][I];    k++;    I--;}
strcat(ch,pp); strcpy(pp,"""");
k=0;
if(I==-1)break;}
strcpy(xx[l],ch);
  }}
    题目5:在文件in.dat中有200个正整数,且每个数均在10009999之间。函数ReadDat()读取这200个数存放到数组aa中。请编制函数jsSort(),其函数的功能是:要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10个数依次存入数组b中,如果后三位的数值相等,则按原先的数值进行降序排列。最后调用函数WriteDat()把结果bb输出到文件out.dat中。
例:处理前 6012 5099 9012 7025 8088
    处理后 9012 6012 7025 8088 5099
    注意:部分源程序已给出。
  请勿改动主函数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]%1000>aa[j]%1000)
    {data=aa[I];aa[I]=aa[j];aa[j]=data;}
    else if(aa[I]%1000==aa[j]%1000)
      if(aa[I]<aa[j])用sort out
      {data=aa[I];aa[I]=aa[j];aa[j]=data;}
    }
for(I=0;I<10;I++)
  bb[I]=aa[I];
}
    题目6:在文件in.dat中有200个正整数,且每个数均在10009999之间。函数ReadDat()读取这200个数存放到数组aa中。请编制函数jsSort(),其函数的功能是:要求按每个数的后三位的大小进行降序排列,然后取出满足此条件的前10个数依次存入数组b中,如果后三位的数值相等,则按原先的数值进行升序排列。最后调用函数WriteDat()把结果bb输出到文件out.dat中。
例:处理前 9012 5099 6012 7025 8088
    处理后 5099 8088 7025 6012 9012
    注意:部分源程序已给出。
  请勿改动主函数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]%1000<aa[j]%1000)
      {data=aa[I];aa[I]=aa[j];aa[j]=data;}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。