首页>计算机等级考试>历年真题>正文
全国计算机等级考试三级网络技术C语言上机南开100题

www.zige365.com 2010-7-20 18:08:14 点击:发送给好友 和学友门交流一下 收藏到我的会员中心

蓝色部分为解题答案

题目前加☆为20054月份根据给大论坛考生反馈的题号集中而来

题目前加★为20059月上机考试试题,题中难免有题型相同而题号增加的现象,此类标注仅供参考。

个别南开题如57100与书中有所不同,是按实际考试的题目而来,并对今年在实际上机出现的考题,用红色字体表示实际上机题中的注意事项。

******************************************************************************

 

☆题目40(整数统计运算题)

已知在文件IN.DAT中存有若干个(个数<200)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组xx中。请编制函数CalValue(),其功能要求:

1、求出这文件中共有多少个正整数totNum

2、求这些数中的各位数字之和是偶数的数的个数totCnt

以及满足此条件的这些数的算术平均值totPjz最后调用函数writeDat()把所求的结果输出到文件OUT.DAT中。

    部分源程序存在文件prog1.c中。

    请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。

void CalValue(void)

{ int i,qw,bw,sw,gw;

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

if(xx[i]>0)

{ totNum++;

       qw=xx[i]/1000;

       bw=xx[i]/100%10;

       sw=xx[i]%100/10;

       gw=xx[i]%10;

       if((qw+bw+sw+gw)%2==0) { totCnt++; totPjz+=xx[i];}

     }

  if(totCnt==0) totPjz=0;

  else totPjz/=totCnt;

}

**************************************************************************

☆题目41SIX/NINE问题)

下列程序prog1.c的功能是:计算出自然数SIXNINE,它们满足的条件是SIX+SIX+SIX=NINE+NINE的个数cnt以及满足此条件所有的SIXNINE的和SUM。请编写函数countValue()实现程序的要求,最后调用函数writeDat()把结果cntsum,输出到文件OUT15.DAT中。

    其中的SIXNE各代表一个十进制数字。

    部分源程序存在文件prog1.c中。

    请勿改动主函数main()和输出数据函数writeDat()的内容。

void countValue()

{ int s,i,x,n,e,six,nine;

  for(s=1;s<10;s++)

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

    for(x=0;x<10;x++)

     for(n=1;n<10;n++)

      for(e=0;e<10;e++)

       { six=s*100+i*10+x;

         nine=n*1000+i*100+n*10+e;

         if(3*six==2*nine)

          { cnt++;sum+=six+nine;}

       }

}

**************************************************************************

题目42 结构体运算题

已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4),产品名称mc(字符型10),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从大到小进行排列,若产品名称相等,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell,最后调用函数WriteDat()把结果输出到文件OUT5.DAT中。

    部分源程序存在文件prog1.c中。

  请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。

void SortDat()

{int i,j;

 PRO xy;

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

  for(j=i+1;j<100;j++)

    if(strcmp(sell[i].mc,sell[j].mc)<0||strcmp(sell[i].mc,sell[j].mc)==0&&sell[i].je<sell[j].je)

       {xy=sell[i];sell[i]=sell[j];sell[j]=xy;}

}

**************************************************************************

★题目43(字符排序题)

无忧id 82(只是将结果按从大到小排序)

函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串变量的下标为奇数的字符按其ASCII值从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx,最后调用函数WriteDat()把结果xx输出到文件out.dat中。

  例如:位置   0 1 2 3 4 5 6 7 

     源字符串 a  b  c  d  e  f  g  h

    则处理后字符串  a  h  c  f  e  d  g  b

  部分源程序存在文件prog1.c中。

  请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。

void jsSort()

{int i,j,k,strl;

 char ch;

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

  { strl=strlen(xx[i]);

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

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

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

  }

}

************************************************************************

★☆题目44(字符串左右排序交换题

函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx,最后调用函数WriteDat()把结果xx输出到文件out.dat中。

  条件:从字符串中间一分为二,左边部分按字符的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

    则处理后字符串  h  g  f  e  d  c  b  a

                   8  7  6  5  9  4  3  2  1

  部分源程序存在文件prog1.c中。

  请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。

void jsSort()

{ int i,j,k,strl,half;

  char temp;

  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])

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

     for(j=half-1,k=strl-1;j>=0;j--,k--)

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

   }

}

***********************************************************************

★题目45(数字统计排序题

已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:依次从数组a中取出一个四位数,如果该四位数连续大于该四位数以前的五个数且该数是偶数(该四位数以前不满五个数,则不统计),则统计出满足此条件的个数cnt并把这些四位数按从大到小的顺序存入数组b,最后调用写函数writeDat( )把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。

    注意:部分源程序存在文件prog1.c中。

    程序中已定义数组:a[200]b[200],已定义变量:cnt

    请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。

void jsVal()

{int i,j,flag;

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

  {for(j=i-5;j<i;j++)

     if(a[i]>a[j]&&a[i]%2==0) flag=1;

     else { flag=0; break;}

   if(flag==1) b[cnt++]=a[i];

  }

 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;}

}

***********************************************************************

☆题目46(数字统计排序题

已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:依次从数组a中取出一个四位数,如果该四位数连续大于该四位数以前的五个数且该数是奇数,且该数必须能被7整除(该四位数以前不满五个数,则不统计),则统计出满足此条件的个数cnt并把这些四位数按从大到小的顺序存入数组b,最后调用写函数writeDat( )把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。

    注意:部分源程序存在文件prog1.c中。

    程序中已定义数组:a[200]b[200],已定义变量:cnt

    请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。

void jsVal()

{ int i,j,flag;

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

   { for(j=i-5;j<i;j++)

       if(a[i]>a[j]&&a[i]%2&&a[i]%7==0) flag=1;

        else { flag=0;break;}

    if(flag==1) b[cnt++]=a[i];

   }

  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;}

}

****************************************************************************

题目47(结构体运算题

已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4),产品名称mc(字符型10),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按金额从大到小进行排列,若金额相等,则按产品代码从小到大进行排列,最终排列结果仍存入结构数组sell,最后调用函数WriteDat()把结果输出到文件OUT3.DAT中。

    部分源程序存在文件prog1.c中。

  请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。

void SortDat()

{int i,j;

 PRO xy;

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

  for(j=i+1;j<100;j++)

    if(sell[i].je<sell[j].je||sell[i].je==sell[j].je&&strcmp(sell[i].dm,sell[j].dm)>0)

       {xy=sell[i];sell[i]=sell[j];sell[j]=xy;}

}

**************************************************************************

☆题目48(整数各位数字运算题

已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序,最后调用写函数writeDat()把结果输出到out.dat文件。

    例如:67126+2=7+1,则该数满足条件存入数组b中,且个数cnt=cnt+1

          81298+9<>1+2,则该数不满足条件忽略。

    部分源程序存在文件prog1.c中。

    程序中已定义数组:a[300]b[300],已定义变量:cnt

    请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。

jsValue()

{int i,qw,bw,sw,gw,j;

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

 {qw=a[i]/1000;    bw=a[i]%1000/100;

  sw=a[i]%100/10;  gw=a[i]%10;

  if(qw+gw==bw+sw) b[cnt++]=a[i];

 }

 for(i=0;i<cnt-1;i++)

  for(j=i+1;j<cnt;j++)

   if(b[i]>b[j]) {qw=b[i]; b[i]=b[j]; b[j]=qw;}

}

*****************************************************************************

题目49(整数各位数字运算题

已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数减百位数减十位数上的数减个位数上的数大于零的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2最后调用写函数writeDat()把结果输出到out.dat文件。

   例如:9123,9-1-2-3>0,则该数满足条件计算平均值pjz1,且个数cnt=cnt+19812,9-8-1-2<0,则该数不满足条件计算平均值pjz2

    部分源程序存在文件prog1.c中。

    程序中已定义数组:a[300],已定义变量:cnt,pjz1,pjz2

    请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。

jsValue()

{int i,qw,bw,sw,gw,n=0;

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

   {qw=a[i]/1000;    bw=a[i]%1000/100;

    sw=a[i]%100/10;  gw=a[i]%10;

    if(qw-bw-sw-gw>0) {cnt++;pjz1+=a[i];}

    else {n++;pjz2+=a[i];}

   }

 if(cnt==0) pjz1=0;

 else pjz1/=cnt;

 if(n==0) pjz2=0;

 else pjz2/=n;

}

*******************************************************************************

题目50(字符串左右排序交换题

函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx,最后调用函数WriteDat()把结果xx输出到文件out.dat中。

  条件:从字符串中间一分为二,左边部分按字符的ASCII值升序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。

  例如:位置   0 1 2 3 4 5 6 7 8

     源字符串 d  c  b  a  h  g  f  e

                    4  3  2  1  9  8  7  6  5

    则处理后字符串  h  g  f  e  a  b  c  d

                    8  7  6  5  9  1  2  3  4

  部分源程序存在文件prog1.c中。

  请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。

void jsSort()

{ int i,j,k,strl,half;

  char temp;

  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])

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

     for(j=half-1,k=strl-1;j>=0;j--,k--)

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

   }

}

*************************************************************************

★☆题目51(整数各位打散组合运算题)

已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把千位数字和十位数字重新组成一个新的十位数(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的十位数(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字),如果新组成的两个十位数均是素数且新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt。最后main()函数调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。

    注意:部分源程序存在文件prog1.c中。

    程序中已定义数组:a[200]b[200],已定义变量:cnt

    请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。

void jsVal()

{int i,j,qw,bw,sw,gw;

 int ab,cd;

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

   {qw=a[i]/1000;     bw=a[i]%1000/100;

    sw=a[i]%100/10;  gw=a[i]%10;

    ab=10*qw+sw;   cd=10*gw+bw;

    if(isprime(ab)&&isprime(cd)&&ab>=10&&cd>=10) b[cnt++]=a[i];

   }

 for(i=0;i<cnt-1;i++)

   for(j=i+1;j<cnt;j++)

     if(b[i]<b[j]) {qw=b[i];b[i]=b[j];b[j]=qw;}

}

*************************************************************************

题目52(整数各位打散组合运算题)

已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把千位数字和个位数字重新组成一个新的十位数(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的个位数字),以及把百位数字和十位数字组成另一个新的十位数(新十位数的十位数字是原四位数的百位数字,新十位数的个位数字是原四位数的十位数字),如果新组成的两个十位数均是奇数并且两个十位数中至少有一个数能被5整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt最后main()函数调用写函数writeDat( )把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。

    注意:部分源程序存在文件prog1.c中。

    程序中已定义数组:a[200]b[200],已定义变量:cnt

    请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。

void jsVal()

{int i,thou,hun,ten,data,j;

 int ab,cd;

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

   {thou=a[i]/1000;    hun=a[i]%1000/100;

    ten=a[i]%100/10;   data=a[i]%10;

    ab=10*thou+data;    cd=10*hun+ten;

    if(ab%2&&cd%2&&(ab%5==0||cd%5==0)&&ab>=10&&cd>=10) b[cnt++]=a[i];

   }

  for(i=0;i<cnt-1;i++)

    for(j=i+1;j<cnt;j++)

       if(b[i]<b[j])  {data=b[i];b[i]=b[j];b[j]=data;}

}

***************************************************************************

☆题目53(整数各位数字运算题)

已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数减百位数上的数减十位数上的数减个位数上的数大于零的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序,最后调用写函数writeDat()把结果输出到out.dat文件。

    例如:91239-1-2-3>0,则该数满足条件存入数组b中,且个数cnt=cnt+1

          98129-8-1-2>0,则该数不满足条件忽略。

    部分源程序存在文件prog1.c中。

    程序中已定义数组:a[300]b[300],已定义变量:cnt

    请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。

jsValue()

{ int i,j,qw,bw,sw,gw;

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

   { qw=a[i]/1000; bw=a[i]/100%10;

     sw=a[i]%100/10; gw=a[i]%10;

     if((qw-bw-sw-gw)>0) b[cnt++]=a[i];

   }

  for(i=0;i<cnt-1;i++)

    for(j=i+1;j<cnt;j++)

      if(b[i]>b[j]) { qw=b[i];b[i]=b[j];b[j]=qw;}

}

*******************************************************************************

题目54(整数各位数运算排序题)

已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从大到小的顺序进行排序,最后调用写函数writeDat()把结果输出到out.dat文件。

    例如:71537+1=5+3,则该数满足条件存入数组b中,且个数cnt=cnt+1

          81298+1<>2+9,则该数不满足条件忽略。

    部分源程序存在文件prog1.c中。

    程序中已定义数组:a[300]b[300],已定义变量:cnt

    请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。

jsValue()

{ int i,j,qw,bw,sw,gw;

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

   { qw=a[i]/1000;   bw=a[i]/100%10;

     sw=a[i]%100/10; gw=a[i]%10;

     if(qw+bw==sw+gw) b[cnt++]=a[i];

   }

  for(i=0;i<cnt-1;i++)

    for(j=i+1;j<cnt;j++)

      if(b[i]<b[j]) { qw=b[i];b[i]=b[j];b[j]=qw;}

}

**************************************************************************

题目55(素数统计排序题)

已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出所有这些四位数是素数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序,最后调用写函数writeDat()把结果输出到out.dat文件。

    例如:5591是素数,则该数满足条件存入数组b中,且个数cnt=cnt+19812是非素数,则该数不满足条件忽略

    部分源程序存在文件prog1.c中。

    程序中已定义数组:a[300]b[300],已定义变量:cnt

    请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。

jsValue()

{int i,j,value;

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

   if(isP(a[i])) b[cnt++]=a[i];

 for(i=0;i<cnt-1;i++)

   for(j=i+1;j<cnt;j++)

     if(b[i]>b[j])  {value=b[i]; b[i]=b[j]; b[j]=value;}

}

****************************************************************************

题目56(字符替换题)

  函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS5.DAT中。

  替代关系:f(p)=p*11mod 256 p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32f(p)对应的字符是小写字母,则该字符不变,否则将f(p)所对应的字符进行替代。

  部分源程序存在文件prog1.c中。原始数据文件存放的格式是:每行的宽度均小于80个字符。

  请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。

void encryptChar()

{ int i,j;

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

    for(j=0;j<strlen(xx[i]);j++)

      if(xx[i][j]*11%256<=32||xx[i][j]*11%256>='a'&&xx[i][j]*11%256<='z') continue;

      else xx[i][j]=xx[i][j]*11%256;

}

***********************************************************************

★题目57(出圈题)

 设有n个人围坐一圈并按顺时针方向从1n编号,从第s个人开始进行1m的报数, 报数到第m个人, 此人出圈, 再从他的下一个人重新开始1m的报数,如此进行下去直到所有的人都出圈为止。现要求按出圈次序,给出这n个人的顺序表p请考生编制函数Josegh()实现此功能并调用函数WriteDat()把编号按照出圈的顺序输出到OUT.DAT文件中。
注意:第1个出圈的编号存放在p[0],2个出圈的编号存放在p[1],直至第n个出圈的编号存放在p[n-1]中。
     n = 100, s = 1, m = 10进行编程。
    
注意: 部分源程序存放在PROG1.C中。
    
请勿改动主函数main()和输出数据函数WriteDat()的内容。
void Josegh(void)
{ int i,j,s1,w,q[100];
  for(i=0;i<n;i++)  q[i]=0;
  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; j++)  p[j-1]=p[j];
     p[i-1]=w;
   }
   for(i=0,j=n-1;i<n,j>=0;i++,j--)     q[j]=p[i];
   for(i=0;i<n;i++)
     p[i]=q[i];
}

题目58(选票问题)

现有一个10个人100行的选票数据文件IN.DAT,其数据存放的格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推:内容均为字符011表示此人被选中,0表示此人未被选中,若一张选票人数小于等于5个人时被认为无效的选票。给定函数ReadDat()的功能是把选票数据读入到字符串数组xx中。请编制函数CountRs()来统计每个人的选票数并把得票数依次存入yy[0]yy[9]中。把结果yy输出到文件OUT.DAT中。

   部分源程序存在文件prog1.c中。

   请勿改动主函数main()、读数据函数ReadDat()和输出数据函数writeDat()的内容。

void CountRs(void)

{ int i,j,count;

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

   { count=0;

     for(j=0;j<10;j++)

       if(xx[i][j]=='1') count++;

     if(count<=5) continue;

     for(j=0;j<10;j++)

        if(xx[i][j]=='1') yy[j]++;

   }

}

****************************************************************************

★题目59(整数各位打散组合运算题题)

已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把千位数字和十位数字重新组成一个新的十位数ab新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的十位数cd新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字),如果新组成的两个十位数ab<cdab必须是奇数且不能被5整除,cd必须是偶数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt最后main()函数调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。

    注意:部分源程序存在文件prog1.c中。

    程序中已定义数组:a[200]b[200],已定义变量:cnt

    请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。

void jsVal()

{int i,thou,hun,ten,data,j;

 int ab,cd;

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

  {thou=a[i]/1000;  hun=a[i]/100%10;

   ten=a[i]%100/10; data=a[i]%10;

   ab=10*thou+ten;  cd=10*data+hun;

   if(((ab-cd)<0&&ab%2==1&&ab%5!=0)&&cd%2!=1&&ab>=10&&cd>=10)

     {b[cnt]=a[i];cnt++;}

  }

 for(i=0;i<cnt-1;i++)

   for(j=i+1;j<cnt;j++)

     if(b[i]<b[j]) {data=b[i];b[i]=b[j];b[j]=data;}

}

我要投稿 新闻来源: 编辑: 作者:
相关新闻