| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 486 人关注过本帖, 1 人收藏
标题:哪位大神帮下指正下是哪出问题的,小弟不甚感激!!
只看楼主 加入收藏
落花巷
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-6-2
结帖率:0
收藏(1)
已结贴  问题点数:20 回复次数:4 
哪位大神帮下指正下是哪出问题的,小弟不甚感激!!
我用的是windows 7系统,C++兼容性不是很好,老出错。
以下是我写的,模仿书上的“数据块读、写函数”加上自己理解的一些皮毛,编成如下结果,哪位大神帮下指正下是哪出问题的,小弟不甚感激!!(忙了快整整两天,又是看课本又是上网了解基本信息,头都大了)

/*已知在文件in.dat(这里我直接是将数据输入文件中)中存有若干个(个数<20)四位数字的正整数,
一、函数readdat()读取这若干个正整数并存入数组xx中。
二、函数calvalue(),其功能要求:
1、求出这文件中共有多少个正整数totnum;
2、求出这些数中的各位数字之和是偶数的数的个数totcnt,
3、满足此条件的这些数的算术平均值totpjz
三、调用函数writedat()把所求的结果输出。*/
#include "stdlib.h"
#include "stdio.h"
#define N 20
struct date
{
int num;
}dat[20];
void scanfmun (int filename[],int n) //将数据写入文件中
{
FILE *fp;
int i;
if((fp=fopen(filename,"wb"))==NULL)
{
printf("Cant' open this file!");
exit(0);
}
for(i=0;i<n;i++)
if(fwrite(&dat[i],sizeof(struct date),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}
void readdat(int filename[],int n) //函数readdat()读取这若干个正整数并存入数组xx中
{
FILE *fp;
int i;
if((fp=fopen(filename, "rb"))==NULL)
{
printf("Can't open this file!");
exit(0);
}
fread(dat,sizeof(struct date),n,fp);
for(i=0;i<n;i++)
printf("%d\n",dat[i].num);
fclose(fp);
}
void calvalue()
{
int t,p,n,i,totpjz,a=0,b=0,c=0,d=0,totcnt=0,q=0;
printf("the count of these number is:%d",n); //1、求出这文件中共有多少个正整数totnum;
for(i=0;i<n;i++)
{
a=dat[i] % 10; dat[i]= dat[i] / 10;   
b=dat[i] % 10; dat[i]= dat[i] / 10;
c=dat[i] % 10; dat[i]= dat[i] / 10;
d=dat[i] % 10; dat[i]= dat[i] / 10;        //这里出现错误,是说"%"和“/除号”不符合struct格式之类的
t=(a+b+c+d)%2;
if(t=0)
{ totcnt++;
p=a+b*10+c*100+d*1000;
q=q+p;
}

}
totpjz=q/totcnt;
printf("The number of totcnt is:%d",totcnt); //求出这些数中的各位数字之和是偶数的数的个数totcnt
printf("The average is:%f.2",totpjz) ; //满足此条件的这些数的算术平均值totpjz

} void main()
{
int i,n;
char filename[20];
printf("print the count of number:");
scanf("%d",&n);
printf("please print the name of file:");
scanf("%s",filename);
printf("print the number:\n");
for(i=0;i<n;i++);
{
scanf("%d\n",&dat[i].num);
}
scanfmun(filename,n);
printnum(filename,n);
calvalue(); }
搜索更多相关主题的帖子: 正整数 兼容性 
2013-06-02 12:53
初级学子
Rank: 1
来 自:山东青岛
等 级:新手上路
帖 子:3
专家分:7
注 册:2013-5-30
收藏
得分:7 
把dat[i] 改成dat[i].num就行了,结构体struct date里面只有一个数据,完全没有必要建立结构体,直接定义一个数组进行了。
2013-06-02 20:51
YJ_Hao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:215
专家分:609
注 册:2013-3-22
收藏
得分:7 
a=dat[i] % 10; dat[i]= dat[i] / 10;
结构体能运算?
2013-06-02 21:47
apull
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:三体星系
等 级:版主
威 望:216
帖 子:1488
专家分:9082
注 册:2010-3-16
收藏
得分:7 
a=dat[i].num % 10;
dat[i]是结构,不能直接做+ - * / % 运算。

还有,win7和c++兼容性没什么。升级下你的IDE。
2013-06-02 23:50
落花巷
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-6-2
收藏
得分:0 
回复 4楼 apull
谢谢各位!我是初学,所以只能模仿者写,慢慢来......
现在不是知道了结构体的基本使用方法,我再去找找资料!
2013-06-03 07:31
快速回复:哪位大神帮下指正下是哪出问题的,小弟不甚感激!!
数据加载中...
 
   



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

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