| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 474 人关注过本帖
标题:这是一道计算机3J编程的题目
只看楼主 加入收藏
chenwenhao07
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2010-10-28
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:6 
这是一道计算机3J编程的题目
#include<stdio.h>
#include<memory.h>
#include<string.h>
#include<stdlib.h>
#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 temp;
 for(i=0;i<99;i++)
  for(j=i+1;j<100;j++)
   if(strcmp(sell[i].mc,sell[j].mc)>0)
   {
    temp=sell[i];
    sell[i]=sell[j];
    sell[j]=temp;
   }
   else if(strcmp(sell[i].mc,sell[j].mc)==0)
    if(sell[i].je>sell[j].je)
    {
     temp=sell[i];
    sell[i]=sell[j];
    sell[j]=temp;
    }
}
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);
  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("OUT.DAT","w");
 for(i=0;i<100;i++)
 {
  fprintf(fp,"%s %s %4d %5d %10ld\n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);

 }
 fclose(fp);

}

我用VC6.0运行,没有输出结果,这是为什么呢?怎么样才有输出结果?
搜索更多相关主题的帖子: 计算机 long 
2011-03-11 12:34
njkido
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:224
专家分:1184
注 册:2011-3-8
收藏
得分:7 
fp=fopen("IN.DAT","r");  工程目录下建IN.DAT 里面填数据
2011-03-11 12:39
逐渐学习
Rank: 6Rank: 6
等 级:侠之大者
帖 子:113
专家分:454
注 册:2010-9-26
收藏
得分:7 
增加了几句调试代码,可以大致查看下哪里出错,没有IN.DAT数据,你自己调试吧
程序代码:
#include<stdio.h>
#include<memory.h>
#include<string.h>
#include<stdlib.h>
#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 temp;
for(i=0;i<99;i++)
  for(j=i+1;j<100;j++)
   if(strcmp(sell[i].mc,sell[j].mc)>0)
   {
    temp=sell[i];
    sell[i]=sell[j];
    sell[j]=temp;
   }
   else if(strcmp(sell[i].mc,sell[j].mc)==0)
    if(sell[i].je>sell[j].je)
    {
     temp=sell[i];
    sell[i]=sell[j];
    sell[j]=temp;
    }
}
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");
if(fp==NULL)
{printf("open IN.DAT error.\n");exit(0);}//文件打开出错
for(i=0;i<100;i++);
{
  fgets(str,80,fp);
  memcpy(sell[i].dm,str,4);
  memcpy(sell[i].mc,str,4);
  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;
}
for(i=0;i<100;i++)//显示出信息,如果这里没信息,那写入文件就是空白
{
  printf("%s,%s,%d,%d,%ld\n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);
}
fclose(fp);
}
void WriteDat()
{
FILE *fp;
int i;
fp=fopen("OUT.DAT","w");
if(fp==NULL)
{printf("open OUT.DAT error.\n");exit(0);}//文件打开出错
for(i=0;i<100;i++)
{
  fprintf(fp,"%s %s %4d %5d %10ld\n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);

}
fclose(fp);

}


 

帮人《---》帮己
2011-03-11 15:26
chenwenhao07
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2010-10-28
收藏
得分:0 
回复 3楼 逐渐学习
这个我知道,我是直接从计算机3J考试的系统上打开的,考试系统里有那个文件。我就是问下 ,为什么没有运行的结果的...
2011-03-11 18:42
chenwenhao07
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2010-10-28
收藏
得分:0 
回复 2楼 njkido
这个我知道,我是直接从计算机3J考试的系统上打开的,考试系统里有那个文件。我就是问下 ,为什么没有输出运行的结果的...
2011-03-11 18:42
lucky563591
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:765
专家分:2103
注 册:2009-11-18
收藏
得分:7 
难道你不会看程序的编译结果窗口吗
2011-03-15 22:34
njkido
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:224
专家分:1184
注 册:2011-3-8
收藏
得分:0 
结果文件OUT.DAT 工程目录下有吗?内容是空白?
2011-03-15 23:49
快速回复:这是一道计算机3J编程的题目
数据加载中...
 
   



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

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