C语言结构体累加的问题!请看一下,谢谢!
答案:1 悬赏:20
解决时间 2021-11-24 02:35
- 提问者网友:霸道又专情♚
- 2021-11-23 15:09
它的问题是:1个文本文件中存放着这样的信息:1 5
2 8
3 7
1 4
即第一项是id号 第二项是值 同一id有多个值。写一个程序,把这些数据存储到1个结构数组中,程序应该读到文件末尾,并且应该保存每个id的值的累积和,即最后显示结果是:id sum
1 5+4=9
2 8
3 7
-----------------
我已经写出把数据读到结构数组里面的代码了,可是求id的值的累积和不会写,希望大家帮帮我,谢谢!
---------
#include
#include
#define m 48
struct shuz{
int id;
int num;
};
int main(void)
{
int i=0;
struct shuz sum[m];
FILE *fp;
if((fp=fopen("a.txt","r"))==NULL)
{
fprintf(stderr,"file open error!");
exit(1);
}
while(fscanf(fp,"%d %d",&sum[i].id,&sum[i].num)!=EOF)
{
printf("%d %d\n",sum[i].id,sum[i].num);
i++;
if (ferror(fp))
{
fprintf(stderr,"读取数据有错误!\n");
exit(1);
}
}
return 0;
}
接下来就不会写了 我搞不清楚它是怎么累加的 希望大家能帮我解决!谢谢!!
回答采纳后把剩余的财富值全补上!
最佳答案
- 二级知识专家网友:陪衬角色
- 2021-11-23 16:03
不明白原理就在线聊
#include
#include
#include
#define m 48
struct shuz{
int id;
int num;
};
int main(void)
{
int i=0;
struct shuz sum[m];
FILE *fp;
if((fp=fopen("a.txt","r"))==NULL)
{
fprintf(stderr,"file open error!");
exit(1);
}
while(fscanf(fp,"%d %d",&sum[i].id,&sum[i].num)!=EOF)
{
printf("%d %d\n",sum[i].id,sum[i].num);
i++;
if (ferror(fp))
{
fprintf(stderr,"读取数据有错误!\n");
exit(1);
}
}
int k,j;
for(k=0;k
{
if(sum[k].id==-1)
continue;
int id=sum[k].id;
for(j=k+1;j
{
if(sum[j].id==-1)
continue;
if(sum[j].id==id)
{
sum[k].num+=sum[j].num;
sum[j].id=-1;
}
}
}
printf("%c",'\n');
for(j=0;j
{
if(sum[j].id!=-1)
printf("%d %d\n",sum[j].id,sum[j].num);
}
return 0;
}
我要举报
大家都在看
推荐资讯