就业数据资源平台
当前位置:首页 > 网络技术
2013年计算机等级考试三级网络技术上机考试精选题2

★题目1(出圈题)


(本题采用实际上机题,05年9月和04年9月实际上机题与下面相同)


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


☆题目99(SIX/NINE问题)


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


    其中的S,I,X,N,E各代表一个十进制数字。


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


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


#include 


int cnt,sum;


 


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


       }


}


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


注意:部分源程序已给出。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。


【试题程序】


#include 


#include 


#include 


#include 


#define MAX 100


typedef struct 


{


  char dm[5];   /*产品代码 */


  char mc[11];    /* 产品名称 */


  int dj;    /* 单价 */


  int sl;    /*  数量 */


  long je;    /* 金额*/


} PRO;


PRO sell [MAX];


void ReadDat();


void WriteDat();



void SortDat()


{



}


void main()


{


  memset(sell,0,sizeof(sell));


  ReadDat();


  SortDat();


  WriteDat();


}



void ReadDat()


{


  FILE *fp;


  char str[80], ch[11];


  int i;


  fp = fopen("IN.DAT", "r");


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


  {


   fgets(str, 80, fp);


   memcpy(sell[i].dm, str, 4);


   memcpy(sell[i].mc, str+4, 10);


   memcpy(ch, str+14, 4); ch[4] = 0;


   sell[i].dj = atoi(ch);


   memcpy(ch, str+18, 5); ch[5] = 0;


   sell[i].sl = atoi(ch);


   sell[i].je = (long)sell[i].dj * sell[i].sl;


  }


  fclose(fp);


}


void WriteDat()


{


  FILE *fp;


  int i;


  fp = fopen("OUT.DAT", "w");


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


  {


    fprintf(fp, "%s %s M ] ld\n", sell[i].dm, sell[i].mc, sell[i].dj,sell[i].sl, sell[i].je);


  }


  fclose(fp);


}



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


注意:部分源程序已给出。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。


   【试题程序】



#include 


#include 


#include 


#include 


#define MAX 100


typedef struct 


{


  char dm[5];  /* 产品代码 */


  char mc[11];  /* 产品名称 */


  int dj;  /* 单价 */


  int sl;  /* 数量 */


  long je;  /* 金额 */


} PRO;


PRO sell [MAX];


void ReadDat();


void WriteDat();



void SortDat()


{



}


void main()


{


  memset(sell, 0, sizeof(sell));


  ReadDat();


  SortDat();


  WriteDat();


}



void ReadDat()


{


  FILE *fp;


  char str[80], ch[11];


  int  i;


  fp = fopen("IN.DAT", "r");


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


  {


    fgets(str, 80, fp);


    memcpy(sell[i].dm, str, 4);


    memcpy(sell[i].mc, str+4, 10);


    memcpy(ch, str+14, 4);


    ch[4] = 0;


    sell[i] .dj = atoi(ch);


    memcpy(ch, str+18, 5);


    ch[5] = 0;


    sell[i].sl = atoi(ch);


    sell[i].je = (long)sell[i].dj * sell[i].sl;


  }


  fclose(fp);


}



void WriteDat()


{


  FILE *fp;


  int i;


  fp = fopen("OUT.DAT", "w");


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


  {


  fprintf(fp, "%s %s M ] ld\n", sell[i].dm, sell[i].mc, sell[i].dj, sell[i].sl, sell[i].je);


  }


  fclose(fp);


}



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


注意:部分源程序已给出。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。


【试题程序】


#include 


#include 


#include 


#include 


#define MAX 100


typedef struct 


{


  char dm[5];  /* 产品代码 */


  char mc[11];  /* 产品名称 */


  int dj;  /* 单价 */


  int sl;  /* 数量 */


  long je;  /* 金额 */


} PRO;


PRO sell [MAX];


void ReadDat();


void WriteDat();


void SortDat()


{



}



void main()


{


  memset(sell, 0, sizeof(sell));


  ReadDat();


  SortDat();


  WriteDat();


}



void ReadDat()


{


  FILE *fp;


  char str[80], ch[11];


  int  i;


  fp = fopen("IN.DAT", "r");


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


  {


    fgets(str, 80, fp);


    memcpy(sell[i].dm, str, 4);


    memcpy(sell[i].mc, str+4, 10);


    memcpy(ch, str+14, 4);


    ch[4] = 0;


    sell[i] .dj = atoi(ch);


    memcpy(ch, str+18, 5);


    ch[5] = 0;


    sell[i].sl = atoi(ch);


    sell[i].je = (long)sell[i].dj * sell[i].sl;


  }


  fclose(fp);


}



void WriteDat()


{


  FILE *fp;


  int i;


  fp = fopen("OUT.DAT", "w");


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


  {


    fprintf(fp, "%s %s M ] ld\n", sell[i].dm, sell[i].mc, sell[i].dj, sell[i].sl, sell[i].je);


  }


  fclose(fp);


}

就业数据资源平台