| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 435 人关注过本帖
标题:求助:求高手解决简单c语言问题
只看楼主 加入收藏
duanchen930
Rank: 1
等 级:新手上路
帖 子:9
专家分:1
注 册:2009-8-24
结帖率:100%
收藏
 问题点数:0 回复次数:4 
求助:求高手解决简单c语言问题
    问题:为什么编译连接运行时会出现应用程序错误???(电脑和c语言程序没有问题)

    已知IN.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数 jsVal(),其功能是:依次从数组a中取出一个数,如果该4位数连续大于该4位数以后的5个数且该数是奇数,则统计出满足此条件的数的个数cnt,并把这些4位数按从小到大的顺序存入数组b中,最后调用写函数 writeDat() 把结果cnt及数组b中符合条件的4位数输出到 OUT.DAT文件中。
    注意:部分源程序已给出。程序中已定义数组:a[200],b[200],已定义变量:cnt。请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。

我的答案(红色部分):
#include <stdio.h>
#define MAX 200
int a[MAX], b[MAX], cnt = 0 ;
void writeDat();
void jsVal()
{
    int cnt,ans=0;
    int e,r,t,w=0;
    int i,j;
    for ( e=0; e<MAX; e++ )
    {
        ans=5;
        r=e+1;
        if( a[e]>a[r++] )
            ans--;
        if( a[e]>a[r++] )
            ans--;
        if( a[e]>a[r++] )
            ans--;
        if( a[e]>a[r++] )
            ans--;
        if( a[e]>a[r++] )
            ans--;
        if (ans==0 && a[e]%2==1)
        {
            cnt++;
            b[cnt]=a[e];
        }
    }
        for( i=0; i<MAX; i++)
            for( j=i+1; j<MAX; j++)
            {
                if (b[i]>b[j])
                {
                    w=b[i]; b[i]=b[j]; b[j]=w;
                }
            }
}

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 main()
{
  int i ;
  readDat() ;
  jsVal() ;
  printf("满足条件的数=%d\n", cnt) ;
  for(i = 0 ; i < cnt ; i++) printf("%d ", b[i]) ;
  printf("\n") ;
  writeDat() ;
}
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) ;
}

问题:为什么编译连接运行时会出现应用程序错误???(电脑和c语言程序没有问题)
搜索更多相关主题的帖子: c语言 
2010-03-09 22:39
yjsdlg
Rank: 1
等 级:新手上路
帖 子:18
专家分:7
注 册:2010-3-6
收藏
得分:0 
如果该4位数连续大于该4位数以后的5个数且该数是奇数.是什么意思。。我没看懂题目呢?
2010-03-09 22:53
mywaylgh
Rank: 8Rank: 8
来 自:厨房
等 级:蝙蝠侠
威 望:5
帖 子:188
专家分:729
注 册:2010-3-10
收藏
得分:0 
for ( e=0; e<MAX; e++ )


改为 for ( e=0; e<MAX-5; e++ )

原因:越界访问

人生就像茶几 上面放着许多杯具

人生也像厨房 里面总有一些洗具
2010-03-10 14:55
duanchen930
Rank: 1
等 级:新手上路
帖 子:9
专家分:1
注 册:2009-8-24
收藏
得分:0 
回复 3楼 mywaylgh
谢谢,我知道了
但为什么还是会弹出 PROG-应用程序错误哦
2010-03-12 13:59
duanchen930
Rank: 1
等 级:新手上路
帖 子:9
专家分:1
注 册:2009-8-24
收藏
得分:0 
回复 2楼 yjsdlg
就是满足 “ 该数连续大于后面的5个数 ” &&  “ 该数是奇数 ” 两个条件的数
2010-03-12 14:03
快速回复:求助:求高手解决简单c语言问题
数据加载中...
 
   



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

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