C语言每日一练——第7题

一、题目要求

已知数据文件in.dat中存有200个四位数,把这些数存到数组a中,编写函数jsVal(),其功能是:把千位数字和十位数字重新组成一个新的含有两位数字的数ab(新数的十位数字是原四位数的千位数字,新数的个位数字是原四位数的十位数字),以及把各位数字和百位数字组成另一个新的含有两位数字的数cd(新数的十位数字是原四位数的各位数字,新数的个位数字是原四位数的百位数字),如果新组成的两个数ab-cd>=0且ab-cd<=10且两数均是奇数,同时两个新数的十位数字均不为零,则将满足题条件的四位数按大到小的顺序存入数组b中,并计算满足上述的四位数的个数cnt,最后把cnt,数组b的内容结果保存在out.dat文件中。

二、in.dat文件内容

6738 9058 2877 2946 8767 5024 2281 9068 5437 1846
1997 6820 6545 1494 4343 7781 1058 4520 1387 1493
9066 7524 1531 7711 1906 2686 2513 6201 5359 8245
2929 6924 8293 9805 6375 5080 6181 3575 7087 8761
7200 2624 9498 9880 3823 8946 5413 9064 5596 1149
7588 7186 6833 5311 2690 5494 2039 7996 8441 1808
9102 9861 9385 9892 5954 4488 9107 5990 3537 2484
1644 3708 2960 5293 1920 5481 4558 3576 4380 1886
6603 8275 4369 9848 2560 9851 7400 8174 2641 3487
9925 6332 8225 8593 1254 6981 8704 7712 3388 7728
7973 5746 8448 5569 2724 5460 8398 2438 9750 6722
5307 4449 9709 6781 9276 7683 6505 7093 3231 3897
4125 3525 2973 4627 8041 2035 5163 1619 4232 1046
2736 4285 9403 7722 8843 4142 2777 4951 3135 1249
5755 7569 4210 4595 2665 5012 5967 6323 5425 2042
1462 4492 4719 5224 4060 2168 3821 9971 8724 2884
8656 7718 8102 3071 7774 8970 8302 2033 2893 7888
8968 2311 2398 4395 3059 9809 2888 4152 7473 2420
7878 1979 6119 4144 6601 4173 5350 1578 7511 3241
7783 2362 4313 7807 2397 6770 6130 4430 2778 5983
View Code

三、程序代码

#include <stdio.h>
#define MAX  200  
int a[MAX], b[MAX], cnt = 0;  

void readDat()  
{
  int i;
  FILE *fp;
  fp = fopen("in.dat", "r");
  for(i = 0; i < MAX; i++)
  {
      fscanf(fp, "%d", &a[i]);
  }
  fclose(fp);
}

void jsVal()
{
    int i,j,ab,cd,temp;
    int qw,bw,sw,gw;
    for(i=0;i<MAX;i++)
    {
        qw=a[i]/1000;
        bw=(a[i]-qw*1000)/100;
        sw=(a[i]-qw*1000-bw*100)/10;
        gw=a[i]%10;
        //printf("数字:%d,千位:%d,百位:%d,十位:%d,个位:%d\n",a[i],qw,bw,sw,gw);
        if (gw==0)
        {
            continue;
        }
        ab=qw*10+sw;
        cd=gw*10+bw;
        if( (ab%2!=0) && (cd%2!=0) && (ab>=cd) && (ab-cd<=10) )
        {
            b[cnt++]=a[i];
        }
    }
    for(i=0;i<cnt;i++)
    {
        for(j=0;j<cnt-i-1;j++)
        {
            if(b[j]<b[j+1])
            {
                temp=b[j];
                b[j]=b[j+1];
                b[j+1]=temp;
            }
        }
    }
}

void writeDat()  
{
  FILE *fp;
  int i;
  fp = fopen("out.dat", "w");
  fprintf(fp, "%d\n", cnt);
  for(i = 0; i < cnt; i++) 
  {
      fprintf(fp, "%d\n", b[i]);
  }
  fclose(fp);
}

void main()
{
  int i;
  readDat();
  jsVal();  
  printf("满足条件的数=%d\n", cnt);
  for(i = 0; i < cnt; i++)
  {
      printf("%d ", b[i]);
  }
  printf("\n");
  writeDat();
}
View Code

四、程序运行结果

 

posted @ 2018-09-12 21:35  深巷老猫  阅读(264)  评论(0编辑  收藏  举报