当前位置: 代码迷 >> C语言 >> 十万火急:我按题目的意思做,却错了,!!!!!!!!
  详细解决方案

十万火急:我按题目的意思做,却错了,!!!!!!!!

热度:290   发布时间:2008-04-09 16:04:01.0
十万火急:我按题目的意思做,却错了,!!!!!!!!
已知数据文件IN69.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal( ),其功能是:把一个4位数的千位数上的值减百位数上的值再减十位数上的值最后减个位数上的值,如果得出的值大于等于零且此4位数是奇数,则统计出满足此条件的数的个数cnt并把这些4位数存入数组b中,然后对数组b的4位数按从小到大的顺序进行排序,最后调用函数writeDat()把结果cnt及数组b中的符合条件的4位数输出到out69.dat文件中。
#include<stdio.h>
#define MAX 200
int a[MAX],b[MAX],cnt=0;

void jsVal()
{
    int i,j,ch,qw,bw,sw,gw;
    for(i=0;i<MAX;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&&a[i]%2)
        {
            b[cnt]=a[i];cnt++;
        }
    }
        for(i=0;i<cnt-1;i++)
            for(j=i+1;j<cnt;j++)
                if(b[i]>b[j])
                {
                    ch=b[i];b[i]=b[j];b[j]=ch;
                }
                
}

void readDat()
{
  int i;
  FILE *fp;
  fp=fopen("IN69.DAT","r");
  for(i=0;i<MAX;i++)
     fscanf(fp,"%d",&a[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();
}

writeDat()
{
  FILE *fp;
  int i;
  fp=fopen("out69.dat","w");
  fprintf(fp,"%d\n",cnt);
  for(i=0;i<cnt;i++)
     fprintf(fp,"%d\n",b[i]);
  fclose(fp);
}
如蓝色部分,我本来是写>=0,因为题目是写大于等于零,但是却做错了,答案如上,是写>0,,到底怎么回事?

[[it] 本帖最后由 cbullet 于 2008-4-9 16:24 编辑 [/it]]
搜索更多相关的解决方案: 位数  cnt  函数  位数  cnt  函数  

----------------解决方案--------------------------------------------------------
等待中,谢谢
----------------解决方案--------------------------------------------------------
答案不一定对阿
我测试应该是>=.
----------------解决方案--------------------------------------------------------
你确定答案是>0,而不是>=0?
那应该是答案本身的问题了。
----------------解决方案--------------------------------------------------------