全国计算机等级考试三级C语言上机题91-100

互联网 | 编辑: uker编辑2 2007-03-22 00:00:00转载

  题目91   请编制程序prog1.c,从文件in.dat中读取200个整数至数组xx中,求出奇数的个数cnt1和偶数的个数cnt2以及数组xx下标为偶数的元素值的算术平均值pj(保留2位小数)。   结果cnt1,cnt2,pj输出到out.dat中。

  题目91
  请编制程序prog1.c,从文件in.dat中读取200个整数至数组xx中,求出奇数的个数cnt1和偶数的个数cnt2以及数组xx下标为偶数的元素值的算术平均值pj(保留2位小数)。
  结果cnt1,cnt2,pj输出到out.dat中。
  部分程序、读数据函数read_dat(int xx[200])及输出格式已给出。
  #include
  #include
  #define N 200
  
  void read_dat(int xx[N])
  {
   int i,j;
   FILE *fp;
  
   fp=fopen("in.dat","r");
   for(i=0;i<20;i++){
   for(j=0;j<10;j++){
   fscanf(fp,"%d,",&xx[i*10+j]);
   printf("%d ",xx[i*10+j]);
   }
   printf("\n");
   }
   fclose(fp);
  }
  
  void main()
  {
   int i,j,sum;
   int cnt1,cnt2,xx[N];
   float pj;
   FILE *fw;
  
   clrscr();
   fw=fopen("out.dat","w");
   read_dat(xx);
  /
   sum=0; pj=0.0; cnt1=cnt2=0;
   for(i=0;i   { if(xx[i]%2) cnt1++;
   else cnt2++;
   if(i%2==0) {pj+=xx[i];sum++;}
   }
   pj/=sum;
  
  /
  
  printf("\n\ncnt1=%d,cnt2=%d,pj=%6.2f\n",cnt1,cnt2,pj);
  fprintf(fw,"%d\n%d\n%6.2f\n",cnt1,cnt2,pj);
  fclose(fw);
  }
  
  
  
  ☆题目92
  请编制程序prog1.c,从文件IN.DAT中读取200个整数至数组xx中,求出最大数max及最大数的个数cnt和数组xx中能被3整除或能被7整除的算术平均值pj(保留2位小数)。
   结果max,cnt,pj输出到OUT.DAT中。
   部分程序、读数据函数read_dat(int xx[200])及输出格式已给出。
  #include
  #include
  #define N 200
  
  void read_dat(int xx[N])
  {
   int i,j;
   FILE *fp;
  
   fp=fopen("in.dat","r");
   for(i=0;i<20;i++){
   for(j=0;j<10;j++){
   fscanf(fp,"%d,",&xx[i*10+j]);
   printf("%d",xx[i*10+j]);
   }
   printf("\n");
   }
   fclose(fp);
  }
  
  void main()
  {
   int m,temp,n,sum;
   int cnt,xx[N],max ;
   float pj;
   FILE *fw;
  
   clrscr();
   fw=fopen("out.dat","w");
   read_dat(xx);
  /
   cnt=0; max=xx[0]; pj=0.0; n=0;
   for(m=0;m   if(max   for(m=0;m   {if(xx[m]==max) cnt++;
   if(xx[m]%3==0||xx[m]%7==0)
   { pj+=xx[m]; n++; }
   }
   pj/=n;
  
  /
  
  printf("\n\nmax=%d,cnt=%d,pj=%6.2f\n",max,cnt,pj);
  fprintf(fw,"%d\n%d\n%6.2f\n",max,cnt,pj);
  fclose(fw);
  }
  
  
  ☆题目93
  请编制函数ReadDat()实现从文件IN.DAT中读取1000个十进制整数到数组xx中;请编制函数Compute(),分别计算出xx中奇数的个数odd,偶数的个数even,平均值aver以及方差totfc的值,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。
   计算方差的公式如下:
   N 2
   totfc=1/N ∑ (xx[i]-aver)
   i=1
   原始数据文件存放的格式是:每行存放10个数,并用逗号隔开。(每个数均大于0且小于等于2000)
   部分源程序存在文件prog1.c中。
   请勿改动主函数main()和输出数据函数writeDat()的内容。
  #include
  #include
  #include
  #define MAX 1000
  
  int xx[MAX],odd=0,even=0;
  double aver=0.0,totfc=0.0;
  void WriteDat(void);
  
  int ReadDat(void)
  {
   int i;
   FILE *fp;
  
   if((fp=fopen("IN.DAT","r"))==NULL) return 1;
  /编制函数ReadDat
   for(i=0;i   { fscanf(fp,"%d,",&xx[i]);
   if((i+1)%10==0)
   fscanf(fp,"\n");
   }
  /
   fclose(fp);
   return 0;
  }
  
  void Compute(void)
  { int i;
   for(i=0;i   { if(xx[i]%2) odd++;
   else even++;
   aver+=xx[i];
   }
   aver/=MAX;
   for(i=0;i   totfc+=(xx[i]-aver)*(xx[i]-aver);
   totfc/=MAX;
  }

 void main()
  {
   int i;
  
   for(i=0;i   if(ReadDat()){
   printf("数据文件IN.DAT不能打开!\007\n");
   return;
   }
   Compute();
   printf("ODD=%d\nOVEN=%d\nAVER=%f\nTOTFC=%f\n",odd,even,aver,totfc);
   WriteDat();
  }
  
  void WriteDat(void)
  {
   FILE *fp;
   int i;
  
   fp=fopen("OUT.DAT","w");
   fprintf(fp,"%d\n%d\n%f\n%f\n",odd,even,aver,totfc);
   fclose(fp);
  }
  
  
  
  题目94
  请编制程序prog1.c,从文件in.dat中读取200个整数至数组xx中,求出奇数的个数cnt1和偶数的个数cnt2以及数组xx中值为偶数的算术平均值pj(保留2位小数)。
   结果cnt1,cnt2,pj输出到out.dat中。
   部分程序、读数据函数read_dat(int xx[200])及输出格式已给出。
  #include
  #include
  #define N 200
  
  void read_dat(int xx[N])
  {
   int i,j;
   FILE *fp;
  
   fp=fopen("in.dat","r");
   for(i=0;i<20;i++){
   for(j=0;j<10;j++){
   fscanf(fp,"%d,",&xx[i*10+j]);
   printf("%d ",xx[i*10+j]);
   }
   printf("\n");
   }
   fclose(fp);
  }
  
  void main()
  {
   int m,sum;
   int cnt1,cnt2,xx[N];
   float pj;
   FILE *fw;
  
  
   fw=fopen("out.dat","w");
   clrscr();
   read_dat(xx);
  /
   cnt1=0; cnt2=0; pj=0.0;
   for(m=0;m   if(xx[m]%2) cnt1++;
   else { cnt2++; pj+=xx[m];}
   if(cnt2==0) pj=0;
   else pj/=cnt2;
  /
  printf("\n\ncnt1=%d,cnt2=%d,pj=%6.2f\n",cnt1,cnt2,pj);
  fprintf(fw,"%d\n%d\n%6.2f\n",cnt1,cnt2,pj);
  fclose(fw);
  }
  
  
  
  ☆题目95
  函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS4.DA中。
  替代关系:f(p)=p*11 mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或f(p)对应的字符是大写字母,则该字符不变,否则将f(p)所对应的字符进行替代。
  部分源程序存在文件prog1.c中。原始数据文件存放的格式是:每行的宽度均小于80个字符。
  请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
  #include
  #include
  #include
  #include
  
  unsigned char xx[50][80];
  int maxline=0;/*文章的总行数*/
  
  int ReadDat(void);
  void WriteDat(void);
  
  void encryptChar()
  { int i,j;
   for(i=0;i   for(j=0;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;
  }
  
  void main()
   {
   clrscr();
   if(ReadDat()){
   printf("数据文件ENG.IN不能打开!\n\007");
   return;
   }
   encryptChar();
   WriteDat();
  }
  
  int ReadDat(void)
  {
   FILE *fp;
   int i=0;
   unsigned char *p;
  
   if((fp=fopen("eng.in","r"))==NULL) return 1;
   while(fgets(xx[i],80,fp)!=NULL){
   p=strchr(xx[i],'\n');
   if(p)*p=0;
   i++;
  }
  maxline=i;
  fclose(fp);
  return 0;
  }
  
  void WriteDat(void)
  {
   FILE *fp;
   int i;
  
   fp=fopen("ps4.dat","w");
   for(i=0;i   printf("%s\n",xx[i]);
   fprintf(fp,"%s\n",xx[i]);
   }
   fclose(fp);
  }
  
  
  
  ☆题目96
  函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS5.DAT中。

 替代关系:f(p)=p*11mod 256 (p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符是小写字母或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。
  部分源程序存在文件prog1.c中。原始数据文件存放的格式是:每行的宽度均小于80个字符。
  请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
  #include
  #include
  #include
  #include
  
  unsigned char xx[50][80];
  int maxline=0;/*文章的总行数*/
  
  int ReadDat(void);
  void WriteDat(void);
  
  void encryptChar()
  { int i,j;
   for(i=0;i   for(j=0;j   if(xx[i][j]*11%256<=32||xx[i][j]>='a'&&xx[i][j]<='z') continue;
   else xx[i][j]=xx[i][j]*11%256;
  }
  
  void main()
   {
   clrscr();
   if(ReadDat()){
   printf("数据文件ENG.IN不能打开!\n\007");
   return;
   }
   encryptChar();
   WriteDat();
  }
  
  int ReadDat(void)
  {
   FILE *fp;
   int i=0;
   unsigned char *p;
  
   if((fp=fopen("eng.in","r"))==NULL) return 1;
   while(fgets(xx[i],80,fp)!=NULL){
   p=strchr(xx[i],'\n');
   if(p)*p=0;
   i++;
  }
  maxline=i;
  fclose(fp);
  return 0;
  }
  
  void WriteDat(void)
  {
   FILE *fp;
   int i;
  
   fp=fopen("ps5.dat","w");
   for(i=0;i   printf("%s\n",xx[i]);
   fprintf(fp,"%s\n",xx[i]);
   }
   fclose(fp);
  }
  
  
  
  ★题目97
  函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS9.DAT中。
  替代关系:f(p)=p*11 mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符是数字字符0至9或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。
  部分源程序存在文件prog1.c中。原始数据文件存放的格式是:每行的宽度均小于80个字符。
  请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
  #include
  #include
  #include
  #include
  
  unsigned char xx[50][80];
  int maxline=0;/*文章的总行数*/
  
  int ReadDat(void);
  void WriteDat(void);
  
  void encryptChar()
  { int i,j;
   for(i=0;i   for(j=0;j   if(xx[i][j]*11%256<=32||xx[i][j]>='0'&&xx[i][j]<='9') continue;
   else xx[i][j]=xx[i][j]*11%256;
  }
  
  void main()
   {
   clrscr();
   if(ReadDat()){
   printf("数据文件ENG.IN不能打开!\n\007");
   return;
   }
   encryptChar();
   WriteDat();
  }
  
  int ReadDat(void)
  {
   FILE *fp;
   int i=0;
   unsigned char *p;
  
   if((fp=fopen("eng.in","r"))==NULL) return 1;
   while(fgets(xx[i],80,fp)!=NULL){
   p=strchr(xx[i],'\n');
   if(p)*p=0;
   i++;
  }
  maxline=i;
  fclose(fp);
  return 0;
  }
  
  void WriteDat(void)
  {
   FILE *fp;
   int i;
  
   fp=fopen("ps9.dat","w");
   for(i=0;i   printf("%s\n",xx[i]);
   fprintf(fp,"%s\n",xx[i]);
   }
   fclose(fp);
  }
  
  
  
  ★题目98
  函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS3.DAT中。
  替代关系:f(p)=p*17 mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或其ASCII值是奇数,则该字符不变,否则将f(p)所对应的字符进行替代。

  部分源程序存在文件prog1.c中。原始数据文件存放的格式是:每行的宽度均小于80个字符。
  请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
  #include
  #include
  #include
  #include
  
  unsigned char xx[50][80];
  int maxline=0;/*文章的总行数*/
  
  int ReadDat(void);
  void WriteDat(void);
  
  void encryptChar()
  { int i,j;
   for(i=0;i   for(j=0;j   if(xx[i][j]*17%256<=32||(xx[i][j]*17%256)%2!=0) continue;
   else xx[i][j]=xx[i][j]*17%256;
  }
  
  void main()
   {
   clrscr();
   if(ReadDat()){
   printf("数据文件ENG.IN不能打开!\n\007");
   return;
   }
   encryptChar();
   WriteDat();
  }
  
  int ReadDat(void)
  {
   FILE *fp;
   int i=0;
   unsigned char *p;
  
   if((fp=fopen("eng.in","r"))==NULL) return 1;
   while(fgets(xx[i],80,fp)!=NULL){
   p=strchr(xx[i],'\n');
   if(p)*p=0;
   i++;
   }
  maxline=i;
  fclose(fp);
  return 0;
  }
  
  void WriteDat(void)
  {
   FILE *fp;
   int i;
  
   fp=fopen("ps3.dat","w");
   for(i=0;i   printf("%s\n",xx[i]);
   fprintf(fp,"%s\n",xx[i]);
   }
  fclose(fp);
  }
  
  
  题目99
  已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按金额从小到大进行排列,若金额相等,则按产品代码从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT1.DAT中。
  部分源程序存在文件prog1.c中。
  请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
  #include
  #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()
  {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;}
  }
  
  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("OUT1.DAT","w");
   for(i=0;i<100;i++){
   printf("%s %s %4d %5d %5d\n", sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);
   fprintf(fp,"%s %s %4d %5d %5d\n", sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);
   }
   fclose(fp);
  }
  
  
  ☆题目100
  函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数CharConvA(),其函数的功能是:以行为单位把字符串中的最后一个字符的ASCII值右移4位,高位补0后加最后第二个字符的ASCII值,得到最后一个新的字符,最后第二个字符的ASCII值右移4位,高位补0后加最后第三个字符的ASCII值,得到最后第二个新的字符,依此类推一直处理到第二个字符,第一个字符的ASCII值加原最后一个字符的ASCII值,得到第一个新的字符,得到的新字符分别存放在原字符串对应的位置上。最后已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT10.DAT中。

如果想了解更多相关信息以及详细咨询,欢迎点击中英网http://www.uker.net/,或发email至:echo@uker.net,UKer.net资深编辑将为您详细解答。

相关阅读

每日精选

点击查看更多

首页 手机 数码相机 笔记本 游戏 DIY硬件 硬件外设 办公中心 数字家电 平板电脑