| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 577 人关注过本帖
标题:请找出此C程序的毛病,谢谢!
只看楼主 加入收藏
初学者0001
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-5-7
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
请找出此C程序的毛病,谢谢!
求救!!新手求救!请找出此程序的毛病,谢谢! (主要是红色部门的!)在机器上运行,答案是正确的,但本人编写的程序就有错误,请高手们指出!

第一个程序(本人编写的)如下:
#include <stdio.h>
int a[300], b[300], cnt=0;
void readDat();
void writeDat();

void jsValue()
{
    int i,j;
    int a1,a2,a3,a4;
    int t;
    for(i=0;i<300;i++)
    {
    a1=a[i]/1000;
    a2=a[i]%1000/100;
    a3=a[i]%100/10;
    a4=a[i]%10;
    if(a1+a4==a2+a3)
    {
    b[cnt]=a[i];
    cnt++;
    }
    }
    for(i=0;i<cnt-1;i++)
      for(j=i+1;i<cnt;j++)
        if(b[i]>b[j])
        {t=b[i];b[i]=b[j];b[j]=t;}
}

void main()
{
  int i;
  readDat();
  jsValue();
  writeDat();
  printf("cnt=%d\n", cnt);
  for(i=0; i<cnt; i++)
     printf("b[%d]=%d\n", i, b[i]);
}
void readDat()
{
  FILE *fp;
  int i;
  fp = fopen("IN12.DAT", "r");
  for(i=0; i<300; i++)
     fscanf(fp, "%d,", &a[i]);
  fclose(fp);
}
void writeDat()
{
  FILE *fp;
  int i;
  fp = fopen("OUT12.DAT", "w");
  fprintf (fp, "%d\n",cnt);
  for(i=0; i<cnt; i++)
     fprintf(fp, "%d,\n", b[i]);
  fclose(fp);
}



第二个程序(答案):
#include <stdio.h>
int a[300], b[300], cnt=0;
void readDat();
void writeDat();

void jsValue()
{
  int i,j;   
    int a1,a2,a3,a4;
    int temp;      
    for(i=0;i<300;i++)  
    {
      a4=a[i]/1000;  
      a3=a[i]%1000/100;
      a2=a[i]%100/10;  
      a1=a[i]%10;  
      if(a4+a1==a3+a2)
      {
        b[cnt]=a[i];   
        cnt++;      
      }
    }
    for(i=0;i<cnt-1;i++)   
      for(j=i+1;j<cnt;j++)
      if(b[i]>b[j])
      {
        temp=b[i];
        b[i]=b[j];
        b[j]=temp;
      }


}
void main()
{
  int i;
  readDat();
  jsValue();
  writeDat();
  printf("cnt=%d\n", cnt);
  for(i=0; i<cnt; i++)
     printf("b[%d]=%d\n", i, b[i]);
}
void readDat()
{
  FILE *fp;
  int i;
  fp = fopen("IN12.DAT", "r");
  for(i=0; i<300; i++)
     fscanf(fp, "%d,", &a[i]);
  fclose(fp);
}
void writeDat()
{
  FILE *fp;
  int i;
  fp = fopen("OUT12.DAT", "w");
  fprintf (fp, "%d\n",cnt);
  for(i=0; i<cnt; i++)
     fprintf(fp, "%d,\n", b[i]);
  fclose(fp);
}


本人,看了答案,也不知道自己错在哪里了? 请各位高手指点!!  在机器上运行,答案是正确的,但本人编写的程序就有错误,请高手们指出! 谢谢!  本人使用VIsual C++6.0


[[it] 本帖最后由 初学者0001 于 2009-8-4 22:13 编辑 [/it]]
搜索更多相关主题的帖子: 毛病 
2009-08-04 22:10
ouyang1981
Rank: 2
等 级:论坛游民
帖 子:10
专家分:16
注 册:2009-8-5
收藏
得分:1 
可以当我师父
2009-08-05 07:14
ft1223ccc
Rank: 2
等 级:论坛游民
帖 子:15
专家分:30
注 册:2009-7-2
收藏
得分:1 
这个程序是用来干什么的?
有点看不明白啊

我是新手我怕谁~~~~
要想成高手唯有多编程!!
2009-08-05 11:17
葡萄树
Rank: 2
等 级:论坛游民
帖 子:23
专家分:64
注 册:2009-8-3
收藏
得分:17 
这里面有两个错误,都出现在你红色的代码中。
    for(i=0;i<cnt-1;i++)
       for(j=i+1;i<cnt;j++)
        if(b[i]>b[j])
        {t=b[i];b[i]=b[j];b[j]=t;}
这一部分。。

首先,第二个for,中的第二个i要改成j。
第二个错误我找了半天。
发现,第一个for 和第二个for 的空白处夹杂了一个多余的字符,这个字符是无法识别的。
而且你看不见。
我用win-tc 将空白部分删除,则编译成功。

那个字符的位置我发附件你看下。

[[it] 本帖最后由 葡萄树 于 2009-8-5 12:13 编辑 [/it]]

未命名.jpg (12.49 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
2009-08-05 12:06
godbless
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:216
专家分:950
注 册:2009-7-24
收藏
得分:1 
以下是引用葡萄树在2009-8-5 12:06的发言:

这里面有两个错误,都出现在你红色的代码中。
    for(i=0;i<cnt-1;i++)
       for(j=i+1;i<cnt;j++)
        if(b>b[j])
        {t=b;b=b[j];b[j]=t;}
这一部分。。

首先,第二个for,中的第二个i要改成j ...



这问题解答的,够专业...
2009-08-05 13:09
初学者0001
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-5-7
收藏
得分:0 
感谢各位高手!!!  

初学者,初来报到!
2009-08-05 20:47
jhjx704
Rank: 1
等 级:新手上路
帖 子:13
专家分:1
注 册:2008-1-5
收藏
得分:0 
2009-08-06 14:19
wlsj
Rank: 2
等 级:论坛游民
帖 子:49
专家分:28
注 册:2009-5-18
收藏
得分:0 
菜鸟,学习了
2009-08-06 16:24
快速回复:请找出此C程序的毛病,谢谢!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018329 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved